用 cc-router 接入 Codex CLI 与 Codex Desktop:一个 Token 调度多家模型订阅
Codex CLI 和 Codex Desktop 默认走 OpenAI 官方账号,但我手里同时有 Claude、DeepSeek、Kimi、GLM 这些订阅,想在 Codex 客户端里直接选用它们 —— 一家一家配 base URL 和 API key 又烦又乱。把 cc-router 当本地代理,再用 cc-switch 作为 Codex 的多供应商切换器,就能把所有上游订阅聚合成三个虚拟槽位(opus/sonnet/haiku),在 Codex 里用一个 token 调度全部。整条链路六步就能跑通,本文按截图一步步走。
项目地址: GitHub - finch-xu/cc-router | 下载客户端 | 官方 Codex 集成文档
cc-switch: Codex 客户端的多供应商切换器,安装入口见上方官方 Codex 集成文档页
工作架构
1 | Codex CLI / Codex Desktop cc-switch cc-router (本地) 上游 Provider |
这条链路里两层职责分得很清:
- cc-switch 负责”我现在让 Codex 走哪个供应商” —— 在 OpenAI 官方账号、cc-router、其他自定义 OpenAI 兼容端点之间一键切换,配置写入
~/.codex/config.toml - cc-router 负责”我这条请求最终落到哪家上游” —— 接受 Codex 通过 cc-switch 转过来的 HTTP 请求,按虚拟模型槽位(opus/sonnet/haiku)路由到具体厂商,并处理限流降级
也就是说:在 cc-switch 这一步告诉 Codex “请求发到 cc-router 的本地端口”,在 cc-router 这一步告诉它”opus 槽位用 DeepSeek、sonnet 槽位用 Kimi”,二者合在一起就把整个调度链拉通了。
前置准备
- cc-router 已安装并至少绑定一个虚拟模型(opus / sonnet / haiku 任选其一)。还没装的看 入门文档 或本博客 cc-router 系列前几篇
- cc-switch 已安装。下载入口见 官方 Codex 集成文档
- Codex CLI 或 Codex Desktop 至少装好一个,二者配置共享同一份
~/.codex/config.toml - 从 cc-router 设置页提前复制好 API Key(后面要粘进 cc-switch)
步骤一:打开 cc-switch,切到 Codex 供应商
cc-switch 同时管 Claude 和 Codex 两套供应商,第一步先把界面切到 Codex 那一侧。点顶部工具栏的 Codex 图标(GPT 标志),下方面板会切换到当前已配置的 Codex 供应商列表 —— 一般这里会有 OpenAI 官方账号(如果之前登录过)。

步骤二:新增一个自定义 Codex 供应商
cc-router 不在 cc-switch 内置厂商列表里,需要走”自定义配置”入口手动添加。
点右上角的 橙色 + 号 按钮 → 保持在「Codex 供应商」标签页 → 选左上角第一个蓝色 tile 「自定义配置」。

步骤三:填写 cc-router 的接口信息
这一步是全文最关键的一步,填错任何一项都会导致后面 Codex 报 404 或 401。
| 字段 | 值 |
|---|---|
| 供应商名称 | cc-router(可任意命名,建议保持识别度) |
| API Key | 从 cc-router → 设置页复制的 token |
| API 请求地址 | http://127.0.0.1:23456/v1(本机) 或 http://<内网IP>:23456/v1(局域网) |
| 模型名称 | gpt-5.5、gpt-5.4、gpt-5.4-mini 任选一个先填进去,后面还能切 |
API 请求地址末尾必须带
/v1。 cc-switch 默认按相对路径在末尾拼接/responses,如果你填成http://127.0.0.1:23456(缺/v1),实际请求路径会变成/responses,cc-router 找不到这个路由直接返回 404。这是初次接入最容易踩的坑。
模型名映射到 cc-router 的虚拟槽位如下:
| cc-switch 中填写 | 对应 cc-router 虚拟槽位 | 适用场景 |
|---|---|---|
gpt-5.5 |
model-opus |
规划、长上下文推理、复杂代码任务 |
gpt-5.4 |
model-sonnet |
日常主力写代码 |
gpt-5.4-mini |
model-haiku |
工具调用、轻量任务、subagent 高频小请求 |
模型名用的是 OpenAI 风格的别名,而不是 Anthropic 的 claude-opus-4-7 —— 因为 Codex 那边只认 OpenAI 协议的模型名,cc-router 在网关层做了别名映射。
填完点保存。

步骤四:在 Codex CLI 里验证
cc-switch 保存后会立刻把配置写进 ~/.codex/config.toml,CLI 这边再启动就能读到新供应商。
打开终端跑 codex 进入 CLI,先确认顶部状态栏里的 模型名是刚才填的 gpt-5.5 / gpt-5.4 / gpt-5.4-mini 之一,而不是 OpenAI 官方的 gpt-5 或 o5 这类原始模型名。然后发一条测试消息,比如「你好,请简单介绍下自己,并告诉我你是什么模型」。
正常情况下应该几秒钟内开始流式返回内容,下面这张截图就是 CLI 跑通时的状态。

如果模型回的是 OpenAI 风格的自我介绍,那说明请求其实没走到 cc-router,而是落到了 OpenAI 官方 —— 这种情况回 cc-switch 检查当前激活的供应商是不是「cc-router」那一项。
步骤五:在 Codex Desktop 里验证
Codex Desktop 和 CLI 共享同一份 ~/.codex/config.toml,但有一个坑要注意。
如果你之前登录过 OpenAI 账号,Codex Desktop 进程内会缓存旧的供应商配置,cc-switch 的改动不会立刻生效。 解决办法:完全退出 Codex Desktop(macOS 上 Cmd+Q,不是只关闭窗口),重新打开。
重启后在对话窗口的模型选择器里点开,应该能看到刚才在 cc-switch 里配置的模型名(gpt-5.5 / gpt-5.4 / gpt-5.4-mini),选一个,发条测试消息,成功的样子如下图。

步骤六:回到 cc-router 看请求日志
闭环验证:回到 cc-router 主界面,切到 请求日志 页面,能看到刚才从 Codex CLI / Codex Desktop 发的那两条请求 —— 每条记录会显示:
- 客户端字段:
Codex CLI或Codex Desktop(说明 cc-router 正确识别了请求来源) - 请求模型:你在 cc-switch 里填的
gpt-5.5/gpt-5.4/gpt-5.4-mini - 路由到的虚拟槽位:
model-opus/model-sonnet/model-haiku - 真实上游:DeepSeek / Kimi / GLM / Claude 之类(取决于你给虚拟槽位绑了哪家)
- 耗时与 token 数

看到日志里出现刚发的请求,整条链路就跑通了 —— Codex 客户端 → cc-switch 选 cc-router → cc-router 按槽位路由 → 真实上游 provider。
请求链路时序
发完一条消息后整条链路是这样跑的:
1 | Codex CLI/Desktop cc-switch cc-router :23456 上游 provider |
如果某家 provider 返回 429 或 5xx,cc-router 会自动在同一槽位内 fallback 到下一家,对 Codex 端透明。
排错速查
| 报错信息 / 现象 | 原因 | 解决办法 |
|---|---|---|
connection refused |
cc-router 没启动 / 端口被改 | 打开 cc-router 设置页,确认”实际监听端口”是 23456,必要时改回来或同步到 cc-switch |
404 Not Found |
API 请求地址少了 /v1 |
cc-switch 里改成 http://127.0.0.1:23456/v1 |
401 Unauthorized |
token 不对或已轮换 | 回 cc-router 设置页重新复制 API Key,粘回 cc-switch |
model_not_found |
模型名拼错或填了 Anthropic 短名 | 用 gpt-5.5 / gpt-5.4 / gpt-5.4-mini 这类 OpenAI 别名,不要填 opus / sonnet |
| Codex Desktop 还在用旧账号 | 配置未生效 | 完全退出 Codex Desktop(不是关闭窗口)再重开 |
| 局域网另一台机器连不上 | 防火墙 / 路由问题 | 在 cc-router 主机用 curl http://127.0.0.1:23456/v1/models 测本机,再从远端用 curl http://<IP>:23456/v1/models 测网络,分段定位 |
| cc-router 日志里没记录请求 | 请求根本没走到 cc-router | 检查 cc-switch 里当前激活的供应商是不是 cc-router(OpenAI 官方账号没切走的话请求是直接发到 OpenAI 的) |
安全提醒
- API Key 等同于你所有上游 provider 的访问权 —— 泄漏意味着别人能消耗你 Claude、DeepSeek、Kimi 等所有厂商的额度,请勿截图、勿提交到 git、勿粘到聊天群
~/.codex/config.toml里 API Key 是明文存储 —— 用云盘同步或备份系统时注意排除这个文件,或单独加密- 局域网开放需谨慎 ——
:23456默认只监听127.0.0.1,跨机器使用前确认你处在受信任的局域网;公网暴露请配反向代理 + IP 白名单 + 鉴权
参考链接
- cc-router GitHub 仓库:finch-xu/cc-router
- 下载客户端:GitHub Releases
- 官方主页:ccrouter.app
- 官方 Codex 集成文档:ccrouter.app/docs/codex-integration
- 入门文档:ccrouter.app/docs/getting-started