
GitHub: https://github.com/openai/codex-plugin-cc
OpenAI 官方把自家 Codex CLI 作为「补位 subagent」上架到 Anthropic Claude Code 插件市场,让 Claude 和 Codex 在同一个工作流里互审、互救、互相接管任务——这是一次罕见的「跨厂商」CLI 复用工程范例。
/codex:rescue 调用的工程能力,对双模型重度用户是立刻可用的杠杆README 和官网均无展示性图片/视频(纯 JS/JSON 插件脚手架,无 hero 图)。
维度 | 数据 |
|---|---|
GitHub | https://github.com/openai/codex-plugin-cc |
Star / Fork | 22,589 / 1,376(72 watchers) |
代码行数 | 8,491 行(JavaScript 96.6% / JSON 2.6% / TypeScript 0.8%) |
项目年龄 | 3.1 个月(首发 2026-03-30) |
开发阶段 | 稳定维护(首发冲刺期已过,按需修 bug) |
贡献模式 | 核心少数 + 社区(12 人,主作者 Dominik Kundel 60%) |
热度定位 | 大众热门(3 个月内爆发,近 200 star 采样跨度 < 1 天,公告驱动型脉冲) |
质量评级 | 代码[优秀] 文档[优秀] 测试[基本] |
OpenAI 官方组织账号(10.7 年建号,261 个公开仓库,125k 粉丝),主作者 Dominik Kundel 是 OpenAI DX 团队工程师——典型 OpenAI Developer Experience 出品路径(与 openai/openai-agents-python 同一作者群)。仓库在 OpenAI 旗下按 stars 排第 3,仅次于 openai-agents-python(27.6k)与 codex(95k)。
Dominik 团队观察到 Claude Code 生态的 Agent tool 抽象(subagent + skills + hooks)非常成熟,而自家 Codex CLI 的 app-server 又恰好是长驻 JSON-RPC——但这两套体系之间没有官方桥接,导致用户在 Claude Code 里只能「复制粘贴」用 Codex,错失了 Codex 作为 subagent 接管重活 / review 的机会。时机刚好踩在两个生态都开放 plugin marketplace 的窗口期。
薄壳 + 进程代理:不重写 Codex 也不魔改 Claude Code——把 Codex app-server 通过 Unix socket(Windows 用 named pipe)包装成一个 Broker,让 Claude Code 的 Agent tool 用一个 subagent (codex:codex-rescue) 当 forwarder,单次 Bash 调用转发到 codex-companion.mjs task。整条链路最小可信内核:Markdown agent/command + Node glue + JSON-RPC。
明确不做什么: - 不替换 Claude Code 主代理(plugin 只在 review / rescue / transfer 三个边界场景出现) - 不重写 Codex 协议(用 JSON-RPC 透传 + unknown variant/method 白名单降级) - 不引运行时依赖(package.json runtime deps = 0)
OpenAI 不与 Anthropic Claude Code 正面竞争,而是把 Codex 当作「补位 subagent」上架到 Claude Code 商店——典型的「跨厂商交叉上架」策略: - 用 gpt-5.4-mini/spark 等差异化模型做钩子,把 Claude Code 重度用户引流回 Codex CLI - 增加 Codex 在 Anthropic 生态里的曝光(Plugin 商店自带 SEO) - 用 Apache-2.0 拉拢社区(贡献者中已有 VOIDXAI / xiaolai 等外部人)
Issue #211 中
disable-model-invocation与 slash-command 张力的争议,正是这种「跨厂商借用宿主抽象」带来的不可避免的设计摩擦。
schemas/review-output.schema.json + prompts/adversarial-review.md 强制 Codex 返回合规 JSON(verdict/summary/findings/next_steps),render.mjs 校验/排序/脱敏再渲染——下游 plugin 输出契约的范本pendingCollaborations/activeSubagentTurns 是否清空再 finalize——避免漏收子代理输出/codex:transfer 把 Claude Code 的 .jsonl transcript 通过 Codex externalAgentConfig/import 注入为可 resume 的 Codex thread,按 ~/.codex/external_agent_session_imports.json ledger 去重AppServerClientBase 提供 pending map / lineBuffer / 通知 handler / close 协议;两个子类只实现 sendMessage。任何「CLI stdio JSONL → 多调用复用」的胶水层都适用codex-rescue.md + codex-cli-runtime skill 用文档级硬约束把 subagent 锁死成「单 Bash 调用 + 原样返回 stdout」。适用:需要保证输出确定性的 subagent 包装session-lifecycle-hook.mjs 在 SessionStart 把 CODEX_COMPANION_SESSION_ID / CODEX_COMPANION_TRANSCRIPT_PATH 注入,让任意子进程都能按 session 过滤 jobs。适用:session-scoped 持久化状态--background 通过 spawnDetachedTaskWorker 拉起独立 Node 进程,pid 入 job record,/codex:status 通过 poll + logFile 探活。适用:plugin 内长任务调度,绕开宿主超时prebuild 用 codex app-server generate-ts 生成 .d.ts 给 tsconfig 做编译期校验。适用:任何对接外部 app-server 的项目都应生成 client stubsBROKER_BUSY → 直连重试):多调用并发时 broker 单槽争抢,自动 fallback 到直连模式——比硬塞队列简单也比硬失败友好决策 | 方案 | Trade-off |
|---|---|---|
独立 broker 进程托管 Codex app-server | ensureBrokerSession() 启动长驻 app-server-broker.mjs,withAppServer() 默认走 broker | 跨 session 资源泄漏(Issue #108 无 idle timeout);broker 单并发(activeRequestSocket 单槽) |
codex:codex-rescue 子代理做薄 forwarder | commands/rescue.md 用 subagent_type: "codex:codex-rescue" 不用 Skill(...),防 Issue #234 递归 | 失去 subagent 内嵌智能;换来 single-shot 契约 + 输出 verbatim |
状态走「本地 STATE_DIR + 每 job 一 JSON 文件」 | resolveStateDir() 用 CLAUDE_PLUGIN_DATA 落点,jobs/{id}.json + pruneJobs(MAX_JOBS=50) 自动 GC | 无并发原子写;换来零依赖、跨平台、git-friendly、调试可见 |
Stop hook 实现「Review Gate」 | hooks.json 注册 Stop: stop-review-gate-hook.mjs,按首行 ALLOW:/BLOCK: 决定放行 | 开了就可能形成 Claude⇄Codex 死循环;默认关闭 |
JSON-RPC 错误白名单降级 | startThread() catch 后检查 unknown variant/unknown method 才吞,其他重抛 | 静默降级可能掩盖真实 bug;换来对老版本 Codex 宽容 |
本仓库是「跨厂商交叉上架」产物,无直接对标。下表用相邻形态项目作参照。
维度 | openai/codex-plugin-cc | openai/codex | openai/codex-action | Anthropic 官方 subagents |
|---|---|---|---|---|
形态 | Claude Code plugin | CLI (Rust) | GitHub Action | Claude Code 内置 |
宿主 | Claude Code | 终端 | GitHub Actions | Claude Code |
跨模型能力 | Claude⇄Codex 互审 | 单模型(Codex) | 单模型(Codex) | 单模型(Claude) |
Star 数 | 22.6k | 95k | 1.1k | — |
维护方 | OpenAI DX 团队 | OpenAI | OpenAI | Anthropic |
unknown variant/method 白名单只能缓解不能根治——目前 PR 节奏(v1.0.0 → v1.0.5 3 个月内 6 个 release)显示紧跟上游压力大工具型 + 互操作型——不抢 Claude Code 主控,只在 review / rescue / transfer 三个边界场景出现。在「双模型 IDE 协作」这个新兴细分里,OpenAI 是唯一把 Anthropic 生态当作渠道的厂商。
无明显竞品(直接对手几乎为零),属于「跨厂商上架」这个新兴细分。
fake-codex-fixture.mjs 写好但未广泛使用,RPC 模拟测试缺位scripts/bump-version.mjs 存在但 CI 未调用,marketplace.json version 字段靠手动维护disable-model-invocation 等易错,但缺少自动化校验/codex:rescue(救场)和 Stop-time Review Gate;/codex:transfer 适合跨模型调试接力。风险提醒:开启 Review Gate 前先设好 Codex 配额预警plugins/codex/scripts/lib/app-server.mjs(RPC 双传输)+ app-server-broker.mjs(Broker 进程)+ agents/codex-rescue.md(Forwarder 契约);次读 state.mjs(零依赖持久化)codex.mjs RPC 路径测试bump-version.mjs 串进 CI资源 | 链接 |
|---|---|
DeepWiki | https://deepwiki.com/openai/codex-plugin-cc(已收录) |
Zread.ai | 未收录 |
关联论文 | 无 |
在线 Demo | 无(需本地 Claude Code + Codex CLI 环境) |