1. 为什么要在 Claude Code 里跑 Codex:双代理协同的真实场景
如果你同时用 Claude Code 和 Codex,大概率遇到过这种别扭:Claude Code 里聊了半小时上下文,想换个视角让 Codex 审一遍,结果得手动复制 diff、重新交代背景,来回切窗口。codex-plugin-cc 这个桥接插件解决的就是这件事——它把本机的 Codex CLI 接进 Claude Code,让 Claude 当主窗口,Codex 作为第二个编码代理被调用,专门做代码审查、方案挑战、任务接手和会话迁移。
说白了,它不是让你二选一,而是让两个工具在同一个工作现场里分工。Claude Code 负责主对话和实现,Codex 负责第二视角。插件本身不联网、不代理,调用的是你机器上已经装好的全局codex命令和 Codex app-server,所以前提是本机 Codex CLI 能正常跑。
适合谁?已经在用 Claude Code 做日常开发、同时装了 Codex CLI、并且希望把「AI 写完再让另一个 AI 审一遍」变成固定动作的开发者。如果你只用一个工具,或者本机没有 Codex CLI,这篇的配置步骤会卡在第一步,建议先把 Codex CLI 装好再回来。
下面按安装、配置、验证、排障的顺序走一遍,所有命令和配置片段都可以直接复制。涉及模型调用统一走 TaoToken 的 Key,这样 Claude Code 和 Codex 两边不用各维护一套凭证。
2. TaoToken 前置准备:统一 Key 与 Base URL 怎么拿
在装插件之前,先把两边的模型访问入口统一到 TaoToken,不然后面 auth.json 和 Claude Code 的配置会各写各的,排障时很难定位是插件问题还是 Key 问题。
第一步,登录 TaoToken 控制台创建 API Key。打开 https://taotoken.net/api-keys ,新建一个 Key,复制出来先存到本地临时文件里。这个 Key 后面会同时填进 Codex 的 auth.json 和 Claude Code 的环境变量。
第二步,确认 Base URL。TaoToken 的 API 入口是 https://taotoken.net/api ,注意这里不带任何查询参数,配置里就写这个地址。Codex 和 Claude Code 都支持自定义 Base URL,所以两边指向同一个入口即可。
第三步,确认你要用的 Model ID。Codex 侧一般用gpt-5-codex这类编码模型,Claude Code 侧用claude-sonnet-4-5之类的模型 ID。具体可用列表在 https://taotoken.net/models 查,别凭记忆写,模型 ID 写错会直接报 404 或 model not found。
这里有个容易踩的坑:Codex 的 auth.json 里 Base URL 和 Key 是分开的字段,而 Claude Code 是通过环境变量注入。两边格式不一样,但指向同一个 TaoToken 入口。我试过只配一边,结果 Claude Code 能跑、Codex 调用时报 401,排查了半天才发现是 auth.json 没更新。
如果你还没决定用哪种计费方式,长期做编码和 Agent 任务的话可以看下 Coding Plan( https://taotoken.net/coding-plan ),按量或包月按自己调用频率选。短期验证模型连通性,直接用模型对话页( https://taotoken.net/chat )发一条消息最快。
准备好 Key、Base URL、Model ID 这三样,再往下走插件安装。
3. 可复制配置:插件安装 + auth.json + settings 片段
这一节是全文的核心,所有片段都能直接复制。先装插件,再配 Codex 的 auth.json,最后确认 Claude Code 侧的 settings。
3.1 安装 codex-plugin-cc 插件
在 Claude Code 输入框里执行:
/plugin marketplace add openai/codex-plugin-cc弹出 Add Marketplace 窗口后填入openai/codex-plugin-cc,确认添加。然后回到输入框重载插件:
/reload-plugins最后跑一次初始化:
/codex:setup/codex:setup会检查本机codex命令是否可用、app-server 能否启动。如果这一步报codex: command not found,说明本机 Codex CLI 没装或没进 PATH,先解决这个再继续。
3.2 配置 Codex 的 auth.json
Codex CLI 的凭证文件在用户目录下的.codex/auth.json。Windows 是C:\Users\你的用户名\.codex\auth.json,macOS/Linux 是~/.codex/auth.json。内容按下面这个结构写:
{ "OPENAI_API_KEY": "sk-你的TaoTokenKey", "OPENAI_BASE_URL": "https://taotoken.net/api" }注意两点:Key 填 TaoToken 控制台创建的那串,Base URL 就是https://taotoken.net/api,不要加斜杠后缀,也不要带 UTM 参数。改完保存,Codex CLI 下次启动会读这个文件。
3.3 Claude Code 侧的环境变量
Claude Code 通过环境变量指向同一个入口。在 shell 配置文件里加:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的TaoTokenKey"Windows PowerShell 用户用:
$env:ANTHROPIC_BASE_URL="https://taotoken.net/api" $env:ANTHROPIC_API_KEY="sk-你的TaoTokenKey"改完重开终端让变量生效。这样 Claude Code 和 Codex 两边都指向 TaoToken,Key 也是同一个,后面出问题只需要查一个入口。
3.4 三件套对照表
| 项目 | Codex 侧 | Claude Code 侧 |
|---|---|---|
| Base URL | https://taotoken.net/api | https://taotoken.net/api |
| Key 字段 | OPENAI_API_KEY | ANTHROPIC_API_KEY |
| Model ID | gpt-5-codex | claude-sonnet-4-5 |
| 配置文件 | ~/.codex/auth.json | shell 环境变量 |
三件套缺一不可,尤其是 Model ID,写错不会报「配置缺失」,而是直接请求失败,很容易误判成网络问题。
4. 验证桥接是否生效:从 /codex:review 到结果回读
配完不等于通了,得实际跑一次桥接调用。最直接的验证是让 Codex 审一段代码。
4.1 触发一次后台审查
在 Claude Code 里对当前改动发起审查:
/codex:review --background如果要审当前分支相对 main 的全部改动:
/codex:review --base main --background--background表示放后台跑,不阻塞主对话。执行后 Claude Code 会返回一个任务标识。
4.2 查进度和读结果
/codex:status这条看审查进度。任务完成后:
/codex:result正常情况你会看到 Codex 给出的问题列表,比如权限配置问题、边界条件遗漏、测试缺口。如果/codex:result返回空或者报reading choices相关错误,说明桥接调到了 Codex 但响应解析失败,多半是 Base URL 或 Model ID 不对,回到第 3 节核对。
4.3 验证会话迁移
再验一个跨工具的能力:
/codex:transfer它会返回一个会话 ID。拿到 ID 后在终端里:
codex resume 019f402e-3ff0-7d42-975d-c88c8bf1e45f把 ID 换成你实际拿到的。如果能在 Codex 里看到刚才 Claude Code 的对话上下文,说明桥接链路完全打通。这一步成功,基本可以确认插件、auth.json、Base URL 三处配置都对了。
4.4 成功结果的判断标准
桥接生效有三个可观察信号:/codex:status能返回进度而不是报错;/codex:result能拿到结构化的审查意见;/codex:transfer给出的会话 ID 能在 Codex CLI 里 resume。三个都过,配置就算完成。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
这一节按真实报错对照排查,每条都给出定位方向。
5.1 401 Unauthorized
最常见。表现是/codex:review一执行就返回 401。原因通常是 auth.json 里的 Key 没更新,或者 Claude Code 环境变量里的 Key 和 Codex 用的不是同一个。排查顺序:先确认~/.codex/auth.json里的OPENAI_API_KEY是 TaoToken 控制台新建的那串;再确认 shell 里ANTHROPIC_API_KEY一致;最后确认两个 Key 都没过期。改完 auth.json 要重启 Claude Code,环境变量要重开终端。
5.2 local proxy failed
报local proxy failed或类似连接失败,一般是 Base URL 写错。检查OPENAI_BASE_URL和ANTHROPIC_BASE_URL是否都是https://taotoken.net/api,有没有多写斜杠、少写协议头、或者误加了查询参数。Base URL 必须是纯入口地址。
5.3 reading choices 相关错误
reading choices或cannot read property choices这类,说明请求发出去了、也返回了,但响应结构不符合 Codex 预期。多数是 Model ID 写错,或者用了一个不支持当前调用方式的模型。回到 https://taotoken.net/models 核对 Model ID,确认 Codex 侧用的是编码类模型。
5.4 OAuth 相关报错
如果 Codex CLI 之前登录过官方账号,本地可能残留 OAuth 凭证,和 auth.json 里的 Key 冲突。表现是提示 OAuth token 无效或要求重新登录。处理方式是清掉旧的 OAuth 缓存,让 Codex 只读 auth.json。具体缓存路径在~/.codex/下,删掉旧的凭证文件后重启 Codex。
5.5 排障速查表
| 报错 | 最可能原因 | 处理 |
|---|---|---|
| 401 | Key 不一致或过期 | 核对 auth.json 与环境变量 |
| local proxy failed | Base URL 写错 | 改为https://taotoken.net/api |
| reading choices | Model ID 错误 | 查模型列表核对 |
| OAuth 报错 | 旧凭证冲突 | 清理~/.codex/旧凭证 |
排查时记住一个原则:先确认单边能通,再确认桥接能通。单独跑codex命令能出结果,说明 Codex 侧没问题;单独跑 Claude Code 能对话,说明 Claude 侧没问题;两边都通但桥接失败,问题就在插件配置或会话传递上。
6. 把双工具协同固定成日常流程
配置跑通之后,真正有价值的是把它变成习惯动作。我的做法是:Claude Code 写完一个功能,先不急着提交,直接/codex:review --background,等结果出来再决定改不改。方案类改动用/codex:adversarial-review,让 Codex 专门挑设计取舍和边界条件。遇到构建失败或测试挂了,/codex:rescue把问题丢过去,让它给最小修复补丁。上下文太长想换工具,/codex:transfer拿会话 ID 去 Codex 继续。
这套流程的关键不是多装一个工具,而是让「写完再审」变成默认动作。Codex 作为第二视角,专门看 Claude Code 容易忽略的测试缺口和隐藏假设。两边都指向 TaoToken 同一个入口,Key 和 Base URL 只维护一份,出问题排查范围也小。
如果你还没配 Key,先去 https://taotoken.net/api-keys 建一个,再按第 3 节的片段填 auth.json 和环境变量。接入文档在 https://taotoken.net/doc 有更细的字段说明。长期跑编码和 Agent 任务,Coding Plan( https://taotoken.net/coding-plan )比按量更省心。验证模型连通性直接用模型对话页( https://taotoken.net/chat )发一条消息最快。