先说结论:claudex-loop 让 Claude Code 和 Codex 一起用:你在一边写计划,另一边独立评审,通过后再动手写代码,写完再换对方检查一遍。两端都接同一个 AICodeWith Key 就能跑,不需要额外的 Key。
我们在 Claude Code 2.1.303 + Codex CLI 0.163.0 上,用同一个 Key 跑了两遍完整流程:
- 小任务(加一个
remove命令,Claude 写代码):全程 125 秒,Codex 评审计划 14 秒、检查代码 15 秒,都直接通过 - 稍大的任务(加 CSV 导入导出,Codex 写代码):全程 314 秒,Codex 第一轮评审 22 秒,提了 3 条修改意见,其中一条是「导出到数据库文件会把数据库覆盖掉」;改完第二轮通过
- 最后由 Claude 检查 Codex 写的代码,指出 3 个低风险问题,其中「CSV 第一行是空行会被当成缺表头」我们手动复现成功
适合谁用
- 改动有一定风险的需求:数据格式、迁移、删除操作这类,一旦计划想错,返工成本高。让另一家模型先挑一遍,比写完再查便宜
- 已经两边都在用的人:Claude Code 和 Codex 都装好了,想让它们分工,而不是来回复制粘贴
- 想要留痕的团队:每一轮评审意见、采纳还是拒绝、谁写的代码谁检查的,都会记进日志文件
一行就能改完的小事不用开这个流程,技能说明里也写明了它不用于琐碎修改。只想让模型帮你看一遍代码,可以看 AI 代码审查的用法,或者我们写过的 Claude Code 用 REVIEW.md 做代码审查。
第一步:两端都接上同一个 Key
claudex-loop 不直接调用模型接口,它是在本机启动另一个 CLI 去干活。所以两个 CLI 都要能单独跑通,用全局配置最省事。
Claude Code:编辑 ~/.claude/settings.json,在 env 里填上:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "sk-你的Key"
}
}
详细步骤见 Claude Code 接入第三方 API 教程。
Codex:编辑 ~/.codex/config.toml,写入:
model_provider = "aicodewith"
model = "gpt-6.1-sol"
[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "sk-你的Key"
详细步骤见 Codex 接入 AICodeWith 教程,每一项的含义见 Codex config.toml 配置指南。
配好后各跑一句确认能通。我们实测 Claude Code 2 秒左右返回,Codex 2.4 秒返回:
claude -p "只回复 OK"
codex exec --skip-git-repo-check "只回复 OK"
最后确认 Python 版本不低于 3.10,claudex-loop 的调度脚本要用:
python3 --version
用experimental_bearer_token的话,codex login status会显示 Not logged in,这不影响使用。我们实测在这个状态下整套流程照常跑完。判断 Codex 能不能用,以上面codex exec能不能返回为准。
第二步:安装 claudex-loop
claudex-loop 是 Chase AI 开源的技能包(MIT 许可),我们测试时的版本是 2.1.0。里面有 4 个技能:
| 技能 | 用来做什么 |
|---|---|
| claudex-loop | 完整流程:理清需求、写计划、对方评审、写代码、对方检查 |
| claudex-route | 推荐这件事该交给谁做,需要时帮你做一次交接 |
| codex-review | 明确指定让 Codex 评审一份现成的计划 |
| codex-build | 明确指定让 Codex 写代码,再由 Claude 检查 |
后两个是兼容老用法的入口,依赖 claudex-loop 里的共享脚本,不能单独装。
在 Claude Code 里装(插件方式),在 Claude Code 里输入:
/plugin marketplace add chaseai-yt/claudex-loop
/plugin install claudex-loop@claudex-loop
我们实测加插件市场 1.6 秒,安装 0.3 秒。装好后用 /claudex-loop:claudex-loop 调用完整流程。
在 Codex 里用(手动复制),按 README 的做法,在仓库目录里执行。这样两边都装上了,Codex 里用 $claudex-loop 调用,开一个新会话才会生效:
git clone https://github.com/chaseai-yt/claudex-loop
cd claudex-loop
mkdir -p ~/.agents/skills ~/.claude/skills
cp -R skills/. ~/.agents/skills/
cp -R skills/. ~/.claude/skills/
4 个技能要一起复制。只复制codex-review或codex-build会因为找不到共享脚本而跑不起来。只有claudex-route可以单独装。
实测:在 Claude Code 里跑完整流程
测试仓库是一个极简的待办清单 todo.py,数据存在 todos.json,带 2 个单元测试。整个流程由 Claude Code 调度,Codex 由脚本在后台以只读模式启动来评审。
第一遍:builder=claude,加 remove 命令
在 Claude Code 里输入:
/claudex-loop:claudex-loop 给 todo.py 加一个 remove <id> 命令:删除指定 id 的待办,找不到时输出 not found,并补上对应的单元测试。证明命令用 python3 -m unittest。我授权你计划并实现,rounds=3,builder=claude。不要 git commit。
| 阶段 | 谁做 | 用时 | 结果 |
|---|---|---|---|
| 看代码、写 PLAN.md | Claude | 约 54 秒 | 自己发现了原来 len(items)+1 分配 id 删除后会重复,写进计划 |
| 计划评审 | Codex | 14 秒 | APPROVED,0 条意见 |
| 写代码、跑测试 | Claude | 约 27 秒 | 新增 4 个测试,6 个测试全过 |
| 代码检查(新会话) | Codex | 15 秒 | APPROVED,0 条意见 |
| 汇总 | Claude | 约 14 秒 | 输出改动、验证和评审记录 |
全程 125 秒。计划存在 PLAN.md,每一轮的评审结果、采纳情况记在 PLAN-REVIEW-LOG.md。
我们是用 claude -p 无头运行的,所以实际提示词里还多写了一句「不要停下来问我问题,需要决定的地方按你的推荐处理并记录在日志里」。在交互界面里用不需要加,它会在需要你拍板的地方停下来问。第二遍:builder=codex,加 CSV 导入导出
第二遍我们换成 Codex 写代码,任务稍复杂一点:
/claudex-loop:claudex-loop 给 todo.py 加两个命令:export <文件.csv> 把所有待办导出成 CSV;import <文件.csv> 从 CSV 导入待办,追加到现有清单里。补上单元测试,证明命令用 python3 -m unittest。我授权你计划并实现,rounds=3,builder=codex。不要 git commit。
| 阶段 | 谁做 | 用时 | 结果 |
|---|---|---|---|
| 看代码、写计划 | Claude | 约 78 秒 | 列了 10 条决定,比如 CSV 表头、编码、导入时忽略原 id |
| 计划评审第 1 轮 | Codex | 22 秒 | REVISE,3 条意见(1 高 2 中) |
| 按意见改计划 | Claude | 约 48 秒 | 3 条全部采纳 |
| 计划评审第 2 轮 | Codex | 11 秒 | APPROVED |
| 写代码 | Codex | 60 秒 | 改了 todo.py 和测试文件 |
| 跑测试 | Claude | 约 23 秒 | 14 个测试全过 |
| 代码检查(新会话) | Claude | 37 秒 | APPROVED,附 3 条低风险意见 |
| 汇总 | Claude | 约 26 秒 |
全程 314 秒。Codex 第一轮提的 3 条意见是这样的:

claudex-loop-codex-plan-review
翻译过来:
- R1(高):计划允许导出到任意文件,没排除数据库本身。如果有人执行
export todos.json,JSON 数据库会被 CSV 覆盖,之后所有命令都会报错。建议拒绝导出到数据库文件,包括指向它的软链接、硬链接 - R2(中):计划说「用现有最大 id + 1,删除后 id 不会复用」,这不对。加了 1、2 再删掉 2,最大值变回 1,下一个还是 2。要么真的记录历史最大值,要么把说法改成「当前清单里唯一」
- R3(中):计划一边说导入时跳过空文本,一边又承诺导出再导入能原样还原。现有的
add本来就能存空文本,这样导出再导入会悄悄丢数据
R2 说的正是第一遍留下的 max + 1 写法:它能保证当前清单里 id 不重复,但删掉最大的那条后,这个 id 会被再次用上。第一遍的计划只承诺了「不重复」,所以没被挑出来;第二遍计划写成了「不会复用」,Codex 就用具体例子指了出来。Claude 最后选择把说法改成「当前清单内唯一」,没有改动 add 的现有行为。
我们按最终代码手动验证了 R1 的修复:执行 export todos.json 输出「错误: 不能导出到数据库文件」并返回 1,数据库内容不变。
最后的代码检查抓到 bug 了吗
第一遍没有。第二遍 Claude 检查 Codex 写的代码,提了 3 条低风险意见,Claude 作为调度方决定都先不修,记进日志:
- 在 Python 3.13 以下,导出到一个循环软链接会直接打出报错堆栈(我们的环境是 3.13.5,不受影响)
- CSV 第一行如果是空行,会被当成缺少表头
- 导出写目标 CSV 不是原子操作,写到一半失败会留下残缺文件
第二条我们手动复现了:在表头前加一个空行再导入,输出「错误: CSV 缺少 text 列」。这是一个真实的小 bug,只是没严重到要返工。
builder 怎么选
builder 决定谁写代码,检查代码的永远是另一方。写计划的永远是你当前所在的那个工具。
| 你在哪里启动 | 写计划 | 评审计划 | 默认写代码 | 检查代码 |
|---|---|---|---|---|
| Claude Code | Claude | Codex | Claude | Codex(新会话) |
| Codex | Codex | Claude | Codex | Claude(新会话) |
- builder=claude(在 Claude Code 里的默认值):Claude 直接用自己的工具改代码,少一次交接,第一遍我们 125 秒就跑完了
- builder=codex:Claude 调度,Codex 在后台写代码。要求工作区是干净的,我们实测 Claude 把计划和日志放到了仓库外面,就是为了让 Codex 看到干净的目录。有未提交的改动时,先提交或用 git worktree 隔离
想换「谁写计划」,就换到另一个工具里启动。
两边的模型在哪改
你在 Claude Code 界面里选的模型,不会同步给 Codex,反过来也一样。两边各用各的配置:
- Claude 这边:会话里用
/model切换,或在~/.claude/settings.json的env里加ANTHROPIC_MODEL - Codex 这边:改
~/.codex/config.toml里的model - 只改这一次:在命令里加
reviewer_model=、builder_model=、inspector_model=,分别指定评审、写代码、检查用的模型
我们两遍都没指定模型,日志里记录的是 Codex 用了 gpt-6.1-sol,Claude 检查时用了 claude-opus-5-5。
常见问题
claudex-route 和 handoff.md 交接有什么区别?
handoff.md 交接是你手动让一边把进度写进文件、停下,再让另一边读文件接着干,适合任务做到一半换工具。claudex-route 是一个技能:它先建议这件事该谁做、用什么模型,你要求的话它会直接启动另一个 CLI 完成一次有边界的任务,再把结果拿回来检查。前者靠文件,什么工具都能接;后者自动启动、自动收结果,但只做一次,不会进入多轮评审。要多轮评审就用 claudex-loop。
需要两个 Key 吗?
不需要。claudex-loop 不直接调用模型接口,也不需要额外的 Key,它用的是两个 CLI 各自的配置。两边填同一个 AICodeWith Key 即可,我们两遍测试都是这样跑的。
Codex 报 401,但 Key 明明没错?
我们测试时遇到过:Key 用 curl 直接调能通,Codex 却报 401 Unauthorized: {"error":"请在请求中提供有效的 API Key。"}。原因是环境里设了 CODEX_HOME,Codex 读的是那个目录下的另一份 config.toml,里面的 Key 是占位符。用 echo $CODEX_HOME 检查一下,取消它或指向 ~/.codex 后就好了。
评审会改我的代码吗?
不会。按 README 的说明,Codex 评审时用只读沙箱,Claude 评审时只开放读文件和搜索工具,也不加载 MCP。真正改代码的只有 builder。
会自动 git commit 吗?
不会主动提交,提交和推送按你原本的要求来。我们在提示词里写了「不要 git commit」,两遍跑完改动都留在工作区等你确认。
立即注册,让 Claude Code 和 Codex 一起干活 →



