☰
CC Switch 本地路由:Codex 接入 Claude 网关
2026/10/2 8:17:57 网站建设 项目流程

CC Switch 本地路由:Codex 接入 Claude 网关

【免费下载链接】cc-switchA cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io项目地址: https://gitcode.com/GitHub_Trending/cc/cc-switch

适用场景与解决路径

面向持有 Claude 网关密钥(仅开放/v1/messages端点)、希望用 Codex 运行 Claude 模型的开发者。阻塞点:新版 Codex 只讲 OpenAI Responses API,直连 Anthropic Messages 端点只能得到 404。解决路径:CC Switch 本地路由接管 Codex,完成两种协议的请求与响应互转,让 Codex 接入 Claude 网关。

请求在 Codex、本地路由与上游之间如何流转

Codex CLI │ Responses 请求(wire_api = "responses") ▼ 本地路由 127.0.0.1:15721/v1(CC Switch) │ 端点重写为 /v1/messages,请求体转为 Anthropic Messages ▼ 上游网关 /v1/messages ▲ Anthropic JSON / SSE │ 转回 Responses JSON / SSE(含推理、工具调用、图片) ▲ Codex CLI

转换实现位于 transform_codex_anthropic.rs,方向与transform_responses.rs互为镜像;调用入口在 forwarder.rs 的codex_responses_to_anthropic分支。

环境与版本要求

项目要求说明
CC Switch3.17.0 或更高Anthropic Messages 上游支持自 3.17.0 引入
Codex CLI已安装并至少运行过一次保证~/.codex/目录结构存在
API 密钥可访问/v1/messages端点来自 Claude 家族中转网关或企业 Claude 网关;标注"仅限 Claude Code"的密钥经由 Codex 调用可能报错
模型 id网关文档中可识别的 Claude 模型名如claude-sonnet-5;模型映射行同样以网关文档为准

供应商表单、路由开关与生效验证

表单字段怎么填

Codex 页签没有内置 Anthropic 预设,新增供应商时保持Custom Configuration,填写以下字段:

  • Provider Name:任意名称。
  • API Key:网关密钥。密钥只保存在 CC Switch,转发时由本地路由注入,Codex 的 live 配置(auth.json)中只有占位符。
  • API Request URL:只填服务根地址(如https://claude-gateway.example.com),带不带尾部/v1均可,不要自行拼/v1/messages;网关文档给的是完整 messages URL 时,打开Full URL开关原样粘贴。
  • Default Model:网关可识别的模型 id。

上游格式在哪里切换

展开Advanced Options,把Upstream Format从Responses (native)改为Anthropic Messages (routing required),随后出现三个配套字段:

  • Auth field:决定密钥以哪种请求头注入上游,两者只发其一。默认ANTHROPIC_AUTH_TOKEN (Authorization),发送Authorization: Bearer <key>;部分遵循 Anthropic 原生头约定的网关要求ANTHROPIC_API_KEY (x-api-key)。选错通常表现为 401 / 403。
  • Emulate Claude Code client:默认关闭。开启后仿造 User-Agent、anthropic-beta、x-app请求头,并在系统提示第一行注入 Claude Code 身份标识——对应 forwarder.rs 中codex_impersonate_claude_code为真时调用prepend_claude_code_system_prompt改写请求体。
  • Max output tokens:Anthropic 协议要求max_tokens必填。路由在请求体缺省该值时注入常量DEFAULT_CODEX_ANTHROPIC_MAX_TOKENS:8192,可在供应商表单的Max output tokens中覆盖;供应商 meta 中max_output_tokens > 0时优先级最高,会先注入请求体,覆盖请求自带值与默认值,thinking 预算的钳制也据此计算余量。

同区域Model Mapping可选:每行一个模型 id,CC Switch 据此生成模型目录供 Codex 的/model菜单列出;留空时 Codex 只用默认模型。

保存后供应商卡片出现Needs Routing标记——此类供应商仅在本地路由运行时可用。

路由开关与端口怎么改

设置页Routing→Local Routing,完成两个开关:

  1. 打开Routing Master Switch启动本地服务,默认地址127.0.0.1:15721;端口可在代理面板修改,见用户手册 4.1。
  2. 在Routing Enabled下打开Codex;Claude、Gemini 路由互不影响,见用户手册 4.2。

接管后,codex_config.rs 中的update_codex_toml_field以toml_edit语法保持地改写config.toml:base_url与wire_api写入当前model_provider对应的[model_providers.<current>]段并强制保留wire_api = "responses",测试用例base_url_writes_into_correct_model_provider_section覆盖该行为——接管后 Codex 仍以 Responses 协议对话。

如何验证已生效

  1. 回到供应商列表点击Enable。若路由未启动,CC Switch 提示 "This provider uses Anthropic Messages API format, requires the routing service to work properly. Start routing first."
  2. 重启当前 Codex 终端会话:config.toml与模型目录在进程启动时读取,运行中的进程不热加载。
  3. 验证顺序:/model查看映射模型是否列出;发送请求后,Routing 页 "Current Provider" 从 "Waiting for first request..." 变为该供应商、"Total Requests" 增长;用量面板中模型名如实显示为claude-*。

高级选项与能力边界

选项 / 行为何时调整 / 是否支持
Auth field:默认Authorization头,可切x-api-key上游 401 / 403 时按网关文档切换
Emulate Claude Code client:默认关闭网关限定 Claude Code 客户端时开启,普通网关保持关闭
Max output tokens:覆盖缺省时的 8192 上限回答被截断(stop_reason=max_tokens)时调大,勿超模型真实上限,否则上游 400
Model Mapping:生成/model模型目录需要多模型切换时逐行添加
Prompt 缓存:✅ 转换完成后自动注入标准 5 分钟缓存标记(system、工具定义、对话历史)无需调整
推理与工具:✅ extended thinking 原样往返,多轮工具调用、图片、PDF 输入均完整转换无需调整
[1m]长上下文:✅ 剥离模型名后缀并加context-1m-2025-08-07beta 头(上游模型名回写后会在最终请求体上再剥离一次)网关支持 1M 上下文时
Web search:⚠️ Anthropic 上游下被禁用,避免向模型展示必然失败的工具需要联网搜索时切回 Responses / Chat 格式供应商

补充机制:

  • Codex 的reasoning.effort经effort_to_thinking_budget映射为 thinking token 预算:minimal/low → 2048、medium → 8192、high → 16384、xhigh/max/ultra → 24576;未识别值返回None,不启用 extended thinking(避免误吞 temperature/top_p)。
  • Anthropic 带签名的 thinking / redacted-thinking 块经 Base64 编码后存入 Responses 的reasoning.encrypted_content(前缀ccswitch-anthropic-thinking-v1:),Codex 在下一轮工具请求中原样回放。
  • 上游在输出上限处停止或流中断时,Codex 收到的是 "incomplete" 而非成功,便于定位并调大输出上限。

故障排查、合规与致谢

现象原因动作
上游 401 / 403Auth field 与网关鉴权头不匹配,或密钥失效、无余额在Authorization与x-api-key之间切换重试;核对密钥
Codex 报 404 或找不到/responses本地路由接管未开启,或网关地址被直接写入 Codex 配置检查~/.codex/config.toml当前供应商base_url是否为http://127.0.0.1:15721/v1
路由已开启仍 404API Request URL 带了其他协议路径(如/chat/completions)只填服务根地址,或用Full URL开关粘贴完整 messages 端点
回答被截断默认 8192 输出上限生效表单Max output tokens调大后重试
/model不显示 Claude 模型模型目录随进程启动加载,未重启或未配置映射保存供应商后重启 Codex;默认模型不在映射中时菜单不列出但直接请求仍可用

在"组织禁用客户端但保留网关"的场景启用本方案前,确认被禁用的是特定客户端还是某类使用方式,以所在组织政策为准;使用第三方中转网关时,阅读其计费、合规与数据留存条款。

该功能源自社区贡献(PR #5071,@yeeyzy)。

相关文档与源码:

  • 用户手册:Proxy Service
  • 用户手册:App Routing
  • v3.17.0 发布说明
  • 核心转换实现:transform_codex_anthropic.rs、forwarder.rs、codex_config.rs

【免费下载链接】cc-switchA cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io项目地址: https://gitcode.com/GitHub_Trending/cc/cc-switch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询