codex-plugin-cc 教程 – 把 Claude Code 接入 Codex 的桥接插件01. 项目简介02. 项目实测03. 挖一挖

codex-plugin-cc 教程 – 把 Claude Code 接入 Codex 的桥接插件01. 项目简介02. 项目实测03. 挖一挖

今天发点适合双剑合璧的东西。

在Claude Code 和 Codex 之间一直存在谁更好用的争议,但是都成年人了还做什么选择,我都要。

这个 GitHub 的 codex-plugin-cc 项目就是为了解决这个争议而生的,装上可以在 Claude Code 内部运行 Codex 了。

 

01. 项目简介

 

codex-plugin-cc 可以理解成:把 OpenAI Codex 接进 Claude Code 的桥接插件。

项目地址:https://github.com/openai/codex-plugin-cc

使用过程中 Claude Code 还是主窗口,Codex 作为第二个编码代理被 Claude 调用,用来做代码审查、挑战式审查、任务委托、会话迁移。

插件调用的是你机器上的全局 codex 命令,也就是本机 Codex CLI 和 Codex app-server。

核心功能

/codex:review:让 Codex 做代码审查

最常用的审查流程是三步:

/codex:review --background  /codex:status  /codex:result

第一条命令会启动 Codex 代码审查,并放到后台运行。

/codex:status 用来查看审查进度。

任务完成后,再用 /codex:result 查看结果。

如果要审查当前分支相对 main 的全部改动,可以输入:

/codex:review --base main --background
  • /codex:adversarial-review:让 Codex 挑战方案

适合检查方案是否站得住。Codex 会重点检查设计取舍、隐藏假设、边界条件和失败模式。

  • /codex:rescue:把任务交给 Codex 调查或修复

把一个具体问题交给 Codex 接手。适合处理排查类任务:构建失败、测试失败、复杂 bug、旧任务继续推进。

  •  /codex:transfer:把 Claude 会话转到 Codex 继续

适合已经在 Claude Code 里聊了很多上下文,后面想切到 Codex App 或 Codex CLI 继续。

02. 项目实测

 

安装起来很简单,大家先在 Claude Code 输入框输入:

/plugin marketplace add

出现 Add Marketplace 弹窗后,然后填:

openai/codex-plugin-cc

添加成功后,再回到 Claude Code 输入框,输入:

/reload-plugins

最后输入:

/codex:setup

case 1 代码审查

先让 Claude Code 做一个新功能:

提示词:给当前登录页增加功能:连续认证失败 3 次后禁用登录按钮 30 秒,并显示剩余秒数。只有用户名或密码错误才计入失败次数,网络错误和服务器错误不能计入。要求补测试。只修改必要文件,先不要提交。

然后我们运行:

/codex:review --background

Codex审查出两条问题:

1.claude/settings.local.json 权限问题

.claude/settings.local.json:11Bash(node *) 授予了任意 Node 脚本的无审批执行权限

2.登录锁定倒计时问题

src/components/LoginForm.tsx:14第三次认证失败前页面已打开一段时间,now 仍保持挂载时的值,第一次锁定渲染可能显示虚高倒计时。

我们可以让 Claude Code 继续改:

提示词:

根据 Codex review 修复下面的问题。只改必要文件,补充或调整测试,修完后运行 npm test 和 npm run build,不要提交。

 

不要把 .claude/settings.local.json 作为本次功能改动提交。如果只是本地权限设置,请恢复该文件到本次任务前状态。

 

修复 src/components/LoginForm.tsx 的锁定倒计时问题:触发第三次认证失败并设置 lockoutUntil 时,要同步刷新 now,确保锁定开始后的首次渲染倒计时从 30 秒开始,而不是使用页面挂载时的旧 now 值。

然后再 review 一次:

改完又审查出代码可能会把最后一次认证失败算成第 3 次连续认证失败。

继续再让 Claude Code 改:

提示词:

根据 Codex review 修复下面的问题。只改必要文件,补充或调整测试,修完后运行 npm test 和 npm run build,不要提交。

[P2] 非认证错误后应重置计数器 — src/components/LoginForm.tsx:55

当前 network 或 server 错误分支不会重置 failCount。序列 auth → auth → network → auth 会错误触发锁定,尽管这四次认证失败并非连续。如果需求是“连续认证失败 3 次”,则应在非认证错误时重置计数器,打断连续链条。

再 review 一次:

好的,代码审查过关!

case 2 挑战方案

我们先让Claude Code做个给登录页增加记住用户名功能:

提示词:给当前登录页增加“记住用户名”功能:用户勾选后,下次打开页面自动填充上次成功登录的用户名;取消勾选后清除已保存用户名。要求考虑 localStorage 不可用的情况,补测试。只修改必要文件,先不要提交。

然后让 Codex 挑战方案,看方案是否靠谱:

/codex:adversarial-review

Codex 对于Claude Code 的方案挑战性审查出了这些问题:

  • safeRemoveStorage 吞掉删除失败
  • 用户名长期保存在 localStorage
  • claude/settings.local.json 混进功能改动
  • 初始化时读取 localStorage 两次
  • safeSetStorage 的保存失败被忽略
  • 纯空格用户名会通过校验
  • saved_username 这个 key 太通用
  • 没测 removeItem 抛异常时的行为
  • 没测 setItem 保存失败时是否给用户反馈
  • 没测“勾选记住用户名 + 登录失败”时不应保存用户名
  • 没测存储值是纯空格时不应初始化为已记住用户名
  • vi.stubGlobal(‘localStorage’, …) 没有在 afterEach 清理,可能污染其他测试

我们可以就这些问题继续让 Claude Code 改进:

提示词:

根据 Codex 挑战式审查结果修复明确问题。只改必要文件,补充或调整测试,修完后运行 npm test 和 npm run build,不要提交。

需要修复:

  1. 不要把 .claude/settings.local.json 混入本次 feature diff。如果只是本地权限变化,请恢复该文件到本次任务前状态。
  2. 修复取消“记住用户名”时的隐私问题:safeRemoveStorage 不要吞掉 removeItem 失败。removeItem 失败时,界面不能假装已经清除成功;需要向用户展示明确错误状态,或保持记住用户名勾选状态。
  3. 修复保存失败的问题:safeSetStorage 不要被忽略。用户勾选“记住用户名”并成功登录,但 localStorage.setItem 失败时,要有用户可见反馈。
  4. 初始化读取 localStorage 时只读一次,让 username 初始值和 rememberUsername 状态都从同一个读取结果派生,避免不一致。
  5. 存储里的用户名需要 trim 后校验。纯空格不应该初始化为已记住用户名。
  6. 把 localStorage key 从 saved_username 改成应用内命名空间,例如 codex_login_lab.saved_username。
  7. 给“记住用户名”增加过期时间,例如 7 天 TTL。保存时写入 { value, expiresAt },读取时过期就清除并视为无保存值。
  8. 补测试覆盖:

– removeItem 抛异常时的行为

– setItem 失败时的用户可见反馈

– 勾选记住用户名但登录失败时,不应保存尝试的用户名

– localStorage 存储纯空格时,不应初始化为已记住用户名

– localStorage mock/stub 需要 afterEach 清理,避免污染其他测试

完美解决,12个问题全修复了。

case 3 问题交付

当 Claude Code 写的代码有问题时也可以交给 Codex来修复。

我们让 Claude Code 制作一个小 bug 来体现这个功能:

提示词:为了测试 Codex rescue 流程,请在当前登录页里故意制造一个小 bug:让登录成功后不再清空密码输入框。只改业务代码,不改测试,不要提交。

bug已经制造好了,我们补个测试给他测出来:

为"登录成功后清空密码输入框"补一个测试。只加测试,不改业务代码,不要提交。

接下来让 Codex 来修复:

1  /codex:rescue --background fix the failing test with the smallest safe patch

Codex 做了正确的最小修复,很不错:

const result = await login(username.trim(), password);  setPassword('');  setSuccessMessage(`欢迎回来,${result.displayName}`);

case 4 会话转移

我们刚才在 Claude Code 里做了很多事,正好适合 transfer,在 Claude Code 里输入:

/codex:transfer

会给我们一个会话 ID ,我们可以直接在 Codex 里继续这个对话,在PowerShell 里输入:

codex resume 019f402e-3ff0-7d42-975d-c88c8bf1e45f

可以看到,我们与 Claude Code 的对话全都传过来了,接下来就可以用 Codex 来继续这个项目了。

03. 挖一挖

 

AI 编程不会收敛成一个 all-in-one 工具。

因为真实开发更像一条业务流:审查、修复、上线,每一步都可能适合不同 AI。

GitLab 2026 AI Accountability Report:91% 组织已经同时使用 2 个以上 AI 编码工具,54% 使用 3 个以上。

说明使用痛点已经从有没有 AI 工具用,变成能不能串起来用。

Claude Code 和 Codex 串起来用,不是为了炫技,而是为了 AI 写完,再由另一个 AI 审一遍。

codex-plugin-cc 让Claude Code 负责主对话和实现,Codex 负责第二视角审查、方案挑战、问题接手和会话延续。这个组合能减少很多真实开发里的隐性成本:反复切工具、重复交代上下文、人工补审查、测试失败后重新定位问题。

对我们来说,codex-plugin-cc 可以当成一个随叫随到的代码 reviewer。写完功能后,让 Codex 看一遍边界条件、测试缺口和隐藏风险,比自己盯着 diff 硬看更容易发现问题。

codex-plugin-cc 不是让开发者再多装一个工具,而是把两个 AI 编程助手接进同一个工作现场。

未来 AI 写代码会越来越常见,真正拉开差距的,会是怎么组织这些 AI 助手,让代码更稳、审查更早、交付更快。

原文链接:GitHub 狂揽 27K Stars,把Claude Code 和 Codex 串起来用

购物车
滚动至顶部