Skip to content
雲里
里雾
YoYo / 分析报告

Claude Code + Codex 协作实践:openai-codex-cc 插件的设计哲学与用法

瑶瑶
YoYo
Updated:

1. 主题概述(What)

openai-codex-cc 是一个为 Claude Code CLI 定制的插件,将 Codex CLI(OpenAI 的代码专项 AI 代理)嵌入 Claude Code 的工作流中,使其成为 Claude 的协作编程者。Codex 不是一个独立工具,而是以插件方式挂载在 Claude Code 会话中,通过 codex-companion.mjs 脚本桥接本地 Claude Code 和远程 Codex 运行时。这个方案值得研究的原因在于:它提供了一种”双 AI 分工”的工程实践范式——Claude 负责编排、分析和 review,Codex 负责具体的代码实现和深度 rescue 调查——并围绕这一分工构建了完整的接口协议和操作规范。

2. 架构/结构分析

插件目录结构

插件安装于 ~/.claude/plugins/marketplaces/openai-codex/plugins/codex/,核心组成:

companion 脚本子命令

子命令用途输出格式
task "<prompt>"委托 Codex 实现/调查任务stdout 原文
review [args]代码 review渲染文本
review --json [args]代码 review(结构化)JSON(verdict/findings/severity/confidence)
adversarial-review --json [args]对抗性 review(结构化)JSON
setup --json检测 Codex 是否就绪{"ready": true/false, ...}
task-resume-candidate --json检测是否有可续接 thread{"available": true/false}
status [job-id]查询 job 状态文本

Thread/Session 模型

每次 task 调用创建一个 Codex thread。--resume-last 续接 session 内最近一次 task thread(非全局历史);不带该参数则开启全新 thread。通过 task-resume-candidate --json 可在调用前检测是否有可续接 thread,由此实现交互式询问(Continue / Start new)。

3. 设计哲学 / 核心思想(重点)

原则一:薄转发器(Thin Forwarder)

codex-rescue subagent 的设计原则是”一个 Bash 调用,返回 stdout 原文”。subagent 不读文件、不分析问题、不做任何独立工作——仅将用户请求转发给 companion 脚本,并把输出原样返回。这与传统 AI agent 的”工具调用 + 综合分析”范式完全相反。

为什么这样设计:Codex 本身具备强大的推理能力和工具调用能力(含内部 spawn_agentmulti_tool_use.parallel),它不需要 Claude 帮它拆解任务或做预处理分析。Claude 的过度介入只会稀释上下文、引入误解。薄转发器让 Codex 在自己的运行时中保持完整的上下文和自主性。

原则二:接口契约高于实现细节

公开 skill 接口(/codex:rescue/codex:review)是规范合约,而 codex-companion.mjs 是实现细节。所有外部集成应通过公开接口,不直接调用 companion 脚本。

为什么重要:companion 是私有 API,未来可能变更。直接依赖私有 API 相当于依赖实现而非合约——当插件升级时,调用方会静默失效。在 HAT-259 实践中,task-end 执行阶段曾直接调用 companion.mjs,被识别为架构违规并记录为偏差(见 final.md Problems Encountered)。

原则三:角色分离——Claude 编排,Codex 实现

在 codex-execute 模式中,“Claude 永远不直接修改目标代码”是核心约束。Claude 的职责:给出清晰的任务描述(what,不要 how)、review Codex 的输出、对每条 finding 独立评估(applied/deferred/disputed)。Codex 的职责:按 plan.md 实现代码、决定是否启用内部并行(spawn_agent)。

可迁移的思想:这是”决策与执行分离”的系统设计原则——决策者(Claude)负责规格和验收标准,执行者(Codex)负责实现路径。(主观解读:类比微服务中的 orchestrator/worker 模式。)

原则四:评估独立性——disputed findings 是 review 的核心价值

多轮 review 中,Claude 对每条 Codex finding 的正确回应是三选一:applied(同意并修复)、deferred(同意但暂缓)、disputed(不同意,给出反驳)。Codex 可以回应反驳、坚持 finding 或撤回。

为什么重要:盲目接受所有 finding 会让 Claude 退化为”被动转录员”,无法发挥判断力。Codex 也会出错,尤其在理解业务约束和上下文方面。独立评估使两个 AI 的推理形成真正的交叉验证。

原则五:努力等级与成本的显式权衡

--effort none/minimal/low/medium/high/xhigh 是对”推理深度 vs 成本”的显式控制。[已核实:来自 codex-cli-runtime SKILL.md] 建议:document review Round 1 用 high(彻底分析),fix pass 用 medium(已知问题范围,无需重新探索)。

4. 核心机制详解

三层可用性检测(Availability Check)

以下检测适用于 codex-reviewer skill;codex-execute skill 仅含前两层(不含 setup —json 检测)。[已核实:来自各 skill SKILL.md]

# 层 1:插件安装(codex-reviewer 和 codex-execute 均有)
test -f "$PLUGIN_ROOT/scripts/codex-companion.mjs" || echo "FALLBACK: plugin not installed"

# 层 2:Node.js 可用(codex-reviewer 和 codex-execute 均有)
which node > /dev/null 2>&1 || echo "FALLBACK: node not available"

# 层 3:Codex 认证就绪(仅 codex-reviewer)
# 区分"插件存在"和"Codex 已登录"两个前置条件
node "$COMPANION" setup --json 2>/dev/null | grep -q '"ready":true' \
  || echo "FALLBACK: codex not ready (run /codex:setup)"

任一层失败 → 输出以 FALLBACK: 开头 → 调用方立即降级到 Claude reviewer,不重试 Codex 路径。

三种使用模式(HAT 系统集成)

模式触发场景接口路径输出格式
documentdesign.md / plan.md review/codex:rescue --fresh/--resume自由文本([HIGH]/[MEDIUM]/[LOW] 前缀)
codePhase 4 代码变更 reviewcompanion review --json 直接调用结构化 JSON(verdict/findings/severity/confidence)
code-adversarial质疑实现方式和设计假设companion adversarial-review --json结构化 JSON

关键设计说明:code 和 code-adversarial 模式直接调用 companion --json,而非通过公开的 /codex:review 技能——这是 codex-reviewer skill 的设计决策,因为公开命令只返回渲染文本,不暴露 JSON 结构;而 severity/confidence 映射需要结构化数据。[已核实:来自 review.md 命令文档和 codex-reviewer SKILL.md]

多轮对话协议(document 模式)

  1. Round 1:/codex:rescue --wait --fresh --effort high(全新 thread,彻底分析)
  2. Claude 评估每条 finding → applied / deferred / disputed
  3. Round N+1:/codex:rescue --wait --resume --effort medium(续接 thread,发送 Claude 响应摘要)
  4. 终止条件:Critical = 0 且 Important = 0(不以 verdict: approve 为准,Codex 可能在问题未解决时给出 approve)
  5. 最大轮次:5 轮(含 Round 1)

轮次计数规则:document 模式每次调用算 1 轮;code 模式 + code-adversarial 模式合计算 1 轮(见 codex-reviewer SKILL.md Multi-Round Dialogue Protocol)。[已核实]

每轮结束后追加到 {task-folder}/codex-dialogue.md,格式:

---
## {YYYY-MM-DD} Round {N} — {mode}
**Verdict**: approve / needs-attention
**Codex Job ID**: {UUID}(从 companion stdout `[codex] Thread ready (UUID)` 解析)
**Findings**: Critical N, Important N, Suggestion N
**Claude Response**:
- Applied: [title] → [what changed]
- Deferred: [title] → [reason]
- Disputed: [title] → [rebuttal]

jobId 出现在 companion 的 stdout(格式 [codex] Thread ready (UUID)),而非 Codex 的回复内容中。[已核实:来自 codex-reviewer SKILL.md]

Codex 内部并行能力

Codex 具备自己的并行执行机制,Claude 不需要替它拆分任务。[来源:codex-execute SKILL.md Codex Internal Parallelism 章节]

内部工具说明
spawn_agent(agent_type, message)创建 worker 子 agent 处理独立子任务
multi_tool_use.parallel(tool_uses[])并发调用多个工具(读文件、搜索等)
wait_agent / send_input等待子 agent 结果 / 与其通信

Claude 的职责是给出清晰的 what(“实现哪些功能,按照这个 plan”),而不是拆解 how(“先读文件 A,再写文件 B”)。

5. 对 hatcloud 的启示

启示一:在 Phase 4 代码实现场景中,可以将整批 task 委托给 Codex,Claude 专注于编排与 review。
具体做法:在 task-execute 执行循环中,当 task 满足 codex-execute 条件时,通过 Skill("codex:rescue", "--wait --fresh --effort medium ...") 委托实现;Codex 完成后 Claude 做 code review;发现 Critical/Important 问题则通过 --resume 发起 fix pass。(主观解读:Codex 在自己的运行时中维护完整上下文,Claude 主 context 不被实现细节污染;注:此路径端到端验收尚未完成,见第 6 段局限。)

启示二:在 design/plan review 场景中,可以使用 Codex 的 document review 模式做多轮”对话式 review”。
具体做法:Round 1 --fresh --effort high 彻底分析,Claude 评估每条 finding 后通过 --resume 续接,将 applied/deferred/disputed 响应反馈给 Codex,Codex 对被 disputed 的 finding 进行回应和仲裁。(主观解读:对话式 review 能发现孤立 review pass 容易忽视的接口契约不一致和边界条件,因为 Claude 对 finding 的反驳本身也会暴露新的盲区。)

启示三:在长时间任务场景中,可以使用 --background 标志将 Codex 任务放入后台,Claude 继续响应用户。
具体做法:Bash({ run_in_background: true }) 启动 Codex subagent 后,Claude Code 后台 task 完成后可在会话中查看结果(具体通知机制依赖 Claude Code runtime 的后台 task 完成回调)。适合 design review、大型实现任务等耗时操作。

6. 局限与不足

Thread Identity 的并发风险--resume-last 绑定的是”session 内最近一次 rescue thread”,而非特定 jobId。如果在多轮 review 进行中穿插执行了另一个 rescue 调用,--resume 会续接错误的 thread。多轮期间必须序列化所有 rescue 调用,限制了并发效率。

公开 skill 输出契约限制/codex:review/codex:adversarial-review 只返回渲染文本,不提供结构化 JSON。code 模式集成必须直接调用 companion --json,产生对私有 API 的隐式依赖。插件未来版本若修改 companion 接口,code 模式的集成会悄然失效。

端到端验收尚未完成:codex-execute skill 集成到 task-execute 的完整执行路径在 HAT-259 中延至后续任务,结论基于局部 dogfooding 实验。第 5 段启示一中的优势描述为预期推断,而非已验证的实测结论。

依赖外部服务:Codex 需要 OpenAI 认证(codex login),网络中断或 API 配额耗尽会触发 FALLBACK 降级。降级到 Claude reviewer 能保证任务不中断,但失去多轮对话和结构化 JSON 输出能力。

参考


分享这篇文章:
分享到微博 分享到 QQ 分享到 X

Previous
Agent 不是魔法,验证才是分水岭
Next
研究报告:代码领域多 Agent 协作的涌现风险与防护