与 Codex 集成

Codex 通过 cc-router 的 POST /v1/responses 入口调用你在 cc-router 里配置的全部模型:上游无论是 Anthropic 协议还是 OpenAI 协议,cc-router 都会自动翻译,并按虚拟模型调度。

Codex CLI 与 Codex Desktop 共用同一份 ~/.codex/ 配置,改一次两端都生效。按下面三步手动修改两个文件即可。

cc-router 应用里的 接入指南 → Codex 标签有同样的三步教程,配置片段已经按你当前的端口和令牌生成好,直接复制最省事。

备选方案:如果你已经在用 cc-switch 管理多个 Codex 供应商,也可以走 与 Codex 集成(cc-switch) 那条路。

前置要求

  • 已按 快速开始 安装并配置好 cc-router,至少绑定了一个虚拟模型
  • 已安装 Codex CLI 或 Codex Desktop(任一个即可)
  • 与 Claude Desktop 接入不同,Codex 这条线只用 HTTP 端口(默认 23456),不需要 HTTPS,也不需要 CA 证书

第一步:修改 config.toml

把下面的内容加进 ~/.codex/config.toml(文件不存在就新建)。它注册一个名为 cc-router 的自定义 provider(走 OpenAI Responses 协议),并建一个同名 profile:

# cc-router 推荐配置 — 由 cc-router 接入指南生成
# 使用: codex -p cc-router "你的问题"
# 修改后保存即可, codex 下次启动时读取此文件

[model_providers.cc-router]
name = "cc-router"
base_url = "http://127.0.0.1:23456/v1"
wire_api = "responses"
env_key = "OPENAI_API_KEY"

[profiles.cc-router]
model_provider = "cc-router"
model = "model-sonnet"
  • 文件里已有其他配置时,把这两段追加到末尾即可。如果之前加过 [model_providers.cc-router] 或 [profiles.cc-router],先删掉旧的同名段,TOML 不允许重复的表。
  • base_url 必须以 /v1 结尾,Codex 会在后面拼上 /responses。端口以 cc-router 设置页显示的实际端口为准。

第二步:修改 auth.json

用下面的内容替换 ~/.codex/auth.json 的全部内容(文件不存在就新建):

{
  "OPENAI_API_KEY": "<cc-router 令牌>"
}
  • OPENAI_API_KEY 就是 cc-router 的令牌,与 Claude Code 用的是同一个,在 cc-router 设置页可以找到。config.toml 里的 env_key = "OPENAI_API_KEY" 让 Codex 用这个字段鉴权;cc-router 关闭鉴权时这里填任意值都可以。
  • 先备份:如果之前用 ChatGPT 账号登录过 Codex,auth.json 里存着官方登录凭据,替换前先把原文件复制一份。以后想切回官方登录,把备份改回原名即可。
  • 在 cc-router 设置里重新生成令牌后,要回来更新这个文件。

第三步:启动 Codex

在终端用 -p cc-router 指定 profile 启动 Codex CLI:

codex -p cc-router "你的问题"

Codex Desktop 读的是同一份配置:改完后重启一次 Codex Desktop,在模型选择器里选 cc-router profile 即可。

换用其他虚拟模型

config.toml 中 [profiles.cc-router] 的 model 决定走哪个虚拟模型,改成下面任意一个,保存后 Codex 下次启动生效:

model 填适合做
model-fable最难的任务
model-opus规划、长上下文推理
model-sonnet主力写代码(默认)
model-haiku工具调用、轻量任务

这里直接填 cc-router 的虚拟模型名,也可以写 gpt-5.5、gpt-5.4 这类别名,映射规则见 接口总览 → 虚拟模型与别名。

局域网共享

Codex 和 cc-router 不在同一台机器时,先在 cc-router 设置里把监听地址改为局域网(0.0.0.0),再把 base_url 里的 127.0.0.1 换成 cc-router 所在机器的局域网 IP,路径后缀 /v1 必须保留:

base_url = "http://192.168.1.50:23456/v1"

验证

跑一次 Codex 对话,然后打开 cc-router 的 请求日志:客户端 列应显示 Codex CLI 或 Codex Desktop,虚拟模型 列显示对应槽位,真实模型 列显示最终路由到的上游模型。

实时路由 页的「客户端接入」表也会把 Codex 标为已接入。

排错

  • 404 Not Found —— base_url 末尾少了 /v1,cc-router 的 Responses 入口在 /v1/responses。
  • 401 Unauthorized —— auth.json 里的令牌与 cc-router 当前令牌不一致(比如重新生成过),按第二步重新填一次。
  • 请求没有经过 cc-router —— CLI 启动时漏了 -p cc-router,或 Codex Desktop 改完配置后没有重启。
  • 模型不对或报 model_not_found —— model 字段拼错了。拼错的名字会落到 fallback 虚拟模型,按上表填写虚拟模型名。
  • 连接被拒绝 —— cc-router 代理没有运行,或 base_url 里的端口与实际端口不一致。

安全提示

  • auth.json 里的令牌等同于调用你全部上游订阅的凭据,而且是明文保存的,勿外泄、勿提交到代码仓库。
  • 仅在受信任的局域网中暴露 cc-router 端口;公网暴露需自行评估风险,并配合反向代理和鉴权层加固。