这篇是 Codex Plugin CC Rescue 原理 专题入口。原来的长文已经拆成学习地图:先看全景,再逐层拆桥接设计、Claude 入口、Node companion、Codex app-server、任务状态机和知识盲区。本文基于
openai/codex-plugin-cc的公开仓库结构和已确认源码入口整理。
学习地图
先给结论
/codex:rescue 的精妙点不在“它会调用 Codex”,而在于它把一个跨 runtime 的复杂协作拆成了几条清晰边界:
flowchart LR U["用户在 Claude Code 输入 /codex:rescue"] --> C[Claude Slash Command] C --> A[Claude Subagent: codex-rescue] A --> N[Node Companion] N --> S[Job Store] N --> X[Codex App Server] X --> T[Codex Thread / Turn] T --> W[本地 Workspace] W --> X X --> N N --> C
每一层都只做一类事:
| 层级 | 做什么 | 不做什么 |
|---|---|---|
| Slash command | 把 /codex:rescue 路由到 subagent | 不分析代码,不管理 job |
| Subagent | 把请求转给 Node 脚本 | 不自己解决任务 |
| Node companion | 参数解析、任务协议、状态管理、前后台 | 不直接模拟 Codex agent |
| Codex app-server | thread/turn、模型调用、工具执行 | 不关心 Claude 命令语义 |
| Job store | 保存 jobId、log、threadId、结果 | 不执行任务 |
为什么原来的长文不够好?
原来的写法把所有层混在一篇里,看起来像一条长流水账。真正该学的是边界设计:
- Claude 插件层如何把“用户命令”变成“可转发任务”。
- Node companion 如何把“命令行参数”变成“可追踪 job”。
- Codex app-server 如何把“job 请求”变成“thread/turn 执行”。
- job store 如何让后台、恢复、查询、取消这些能力不用污染 Claude 层。
如果要复用这套思路做自己的工具,最值得抄的是“每层只翻译一个边界”,不是具体的
/codex:rescue命令。
源码入口
- GitHub 仓库:https://github.com/openai/codex-plugin-cc
- Slash command:https://github.com/openai/codex-plugin-cc/blob/main/plugins/codex/commands/rescue.md
- Rescue subagent:https://github.com/openai/codex-plugin-cc/blob/main/plugins/codex/agents/codex-rescue.md
- Companion 脚本:https://github.com/openai/codex-plugin-cc/blob/main/plugins/codex/scripts/codex-companion.mjs
- Codex app-server 封装:https://github.com/openai/codex-plugin-cc/blob/main/plugins/codex/scripts/lib/codex.mjs
相关笔记
- Claude Code Plugin 完全指南
- Codex config 配置说明
- Agent Skills 完全指南