feat(codex): 为 Codex 添加 GitHub Copilot 供应商支持 - #6763
Conversation
后端: - CodexAdapter::extract_auth 增加 github_copilot 占位符分支,真实 token 由 forwarder 经 CopilotAuthManager 按请求注入(与 Claude 侧同款托管路由) - CodexAdapter::get_auth_headers 增加 Copilot 指纹头分支 (editor-version / copilot-integration-id / x-request-id 等) - forwarder 为 Codex/GrokBuild 下的 Copilot 请求直拼上游 URL: CodexAdapter::build_url 会给纯 origin 自动补 /v1,而 Copilot 的 chat 端点无 /v1 前缀(…/chat/completions) 前端: - codexProviderPresets 新增 GitHub Copilot 预设(providerType: github_copilot / requiresOAuth / apiFormat: openai_chat,model 留空 由用户拉取账号模型后选择) - ProviderForm 的 isCopilotProvider 放宽至 codex 应用,OAuth 登录校验 与账号绑定 meta 自动生效;新增空模型保存拦截 - CodexFormFields 挂载 CopilotAuthSection 账号选择、隐藏 API Key 输入、 「获取模型」走托管账号 token 拉取 - useProviderActions 切换提示文案分支同步放宽;proxyReasonCopilot 文案通用化;新增 copilot.modelRequired 词条(zh/zh-TW/ja/en) 流量路径:Codex CLI (Responses) → 本地代理 Responses→Chat 转换层 → api.githubcopilot.com/chat/completions,统一走转换层,兼容性问题 后续仅需在转换层修复。
托管认证(CopilotAuthManager 按请求注入 token)的供应商 auth.json 无需填写 API Key。与 claude 分支的既有豁免对齐,codex 软校验 端点 / API Key 两处条件补充 isCopilotProvider 判断;新增用例覆盖 空 key 保存不弹软校验确认框。
|
@farion1231 你好,PR 里 Backend Checks (Windows + WSL2 home) 两次 run 都挂在 LNK1327,调查后确认不是本 PR 代码的问题,是 CI 本身的一个隐患,报告如下: 现象:Run Windows-to-WSL2 filesystem contract 步骤中出现 Compiling cc-switch → 在 WSL UNC TEMP 下重新链接 → mt.exe 报 c1010070 → LNK1327。 根因链:
修复建议:运行步骤绕开 cargo 的编译判定,直接执行 --no-run 已产出的测试二进制,从机制上杜绝在 UNC TEMP 下触发链接的可能:
此问题不阻塞本 PR 的功能代码 |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fc3712199f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
full-URL 分支优先于 Copilot URL builder,开启后请求直接发往 base_url 而非 /chat/completions,且跳过账号派生 endpoint 解析,用户可编辑的 base_url 会使托管 bearer token 发往任意主机。 三层修复(与 xAI OAuth 对齐): - forwarder: is_full_url 排除 is_copilot(兜底已有脏数据) - 表单: Claude/Codex 的 full-URL 开关对 Copilot 预设隐藏 - 持久化: meta.isFullUrl 不再对 Copilot 预设写盘
|
@codex please help me review the latest changes. |
|
To use Codex here, create a Codex account and connect to github. |
Summary / 概述
为 Codex 应用新增 GitHub Copilot 供应商预设与托管认证支持。
后端
CodexAdapter::extract_auth增加github_copilot占位符分支,真实 token 由 forwarder 经CopilotAuthManager按请求注入(与 Claude 侧同款托管路由)CodexAdapter::get_auth_headers增加 Copilot 指纹头分支(editor-version / copilot-integration-id/ x-request-id 等)
前端
openai_chat,模型留空由用户拉取账号模型后选择)
isCopilotProvider 至 codex 应用;新增空模型保存拦截
流量路径:Codex CLI (Responses) → 本地代理 Responses→Chat 转换层 →
api.githubcopilot.com/chat/completions
Related Issue / 关联 Issue
Fixes #
Checklist / 检查清单
pnpm typecheckpasses / 通过 TypeScript 类型检查pnpm format:checkpasses / 通过代码格式检查cargo clippypasses (if Rust code changed) / 通过 Clippy 检查(如修改了 Rust 代码)