用途
Codex Mission Control 是一个编排工作流技能,用于协调一个较大的 Codex 任务。它让当前线程充当“轻量管理器”,只关注决策、路由、状态和最终集成,把深度探索、长日志和有边界的实现切片移交给聚焦的子代理或独立 Codex 线程——前提是用户已授权这种执行方式。
核心模型
管理器拥有任务目标、约束、工作流地图、交接、线程登记、集成和最终答案。
- 子代理适合当前回合内并行、有边界的工作。
- 独立 Codex 线程适合上下文隔离、较长工作、不同分支、不同工作树或多轮后续跟进。
- 每个任务必须使用带运行作用域的账本路径,不能使用一个全局共享文件名。
- 每个工作单元必须按 Worker Prompt Pattern 返回紧凑报告。
- 该技能是编排工作流,必须发现并使用宿主提供的子代理工具;仅靠描述无法创建工作者。
第一步
在委派有意义的工作前,先按“开始任务”创建任务账本,并运行原生运行时预检并记录到账本:
- 检查 Codex 子代理工具是否已可见。
- 若不可见且存在 tool_search,用类似 multi agent spawn_agent wait_agent subagents 的查询调用它。
- 若工具可用,使用 multi_agent_v1.spawn_agent、wait_agent、send_input 和 close_agent。
- 若没有可用的子代理工具,则串行继续,说明未生成子代理,且不得暗示发生了并行执行。
随后识别管理器本地要做的关键路径任务,以及可在管理器继续本地工作时并行运行的独立侧车工作流。只生成有用的侧车代理,然后继续本地推进,直到集成屏障需要它们的结果。
开始任务
优先使用辅助脚本(从该技能目录运行):
python3 <skill_dir>/scripts/start_mission.py --title "short task title"
该辅助脚本默认在 work/codex-missions/<task-slug>/<timestamp>-<suffix>/ 下创建唯一目录,并在其中写入唯一命名的账本文件。若当前工作区不应接收支持文件,可传入操作系统临时根目录:
python3 <skill_dir>/scripts/start_mission.py --title "short task title" --root /tmp/codex-missions
若脚本不可用,可手工复刻其结构:阅读 scripts/start_mission.py 获取确切的账本模板和目录布局(唯一运行目录,以及同级的 handoffs 和 worker reports 目录)。
任务工作流
- 用一句话记录目标。
- 记录来自用户、仓库说明、安全边界和脏工作树状态的约束。
- 仅当拆分能降低上下文负载或实现真正并行进展时,才把工作拆成工作流。
- 将每个工作流标记为本地、子代理或独立线程。
- 关键路径保留在本地;可并行的侧车工作委派出去。
- 对独立线程,用紧凑交接而非完整管理器上下文来初始化。
- 对子代理,给出具体归属和有边界的输出契约。
- 用摘要和链接把工作单元结果集成到账本,不要粘贴日志。
- 从管理器线程验证最终行为。
- 以最终答案收尾,并注明线程 id、变更文件、测试和未解决风险。
委派规则
使用子代理需同时满足:用户明确要求子代理、委派、并行代理工作或任务控制行为;子任务具体、有边界且实质推进任务;子任务运行不会阻塞管理器下一步;代码编辑的写入范围与其他活动工作不相交。
使用独立 Codex 线程的情形:该切片需要多轮;需要全新工作树、分支或仓库作用域环境;是需要保留自身上下文的后续审计或实现项;管理器线程过于拥挤,下一工作流可从紧凑交接开始。
默认不要分叉臃肿的管理器上下文,优先用紧凑提示初始化干净线程。
原生子代理运行时
在 Codex 中,当工具已暴露时优先使用原生子代理而非 CLI 运行器回退方案。
- 用 multi_agent_v1.spawn_agent 创建新子代理。
- 针对具体代码库问题使用 agent_type="explorer"。
- 针对有明确写入范围的有边界实现使用 agent_type="worker"。
- 除非用户明确要求或工作有明确需要,否则省略 model、reasoning_effort 和 service_tier,让工作者继承父级默认值。
- 默认设置 fork_context=false 并传入紧凑简报;仅当工作者确实需要完整对话历史时才用 fork_context=true。
- 代码编辑时分配不相交的文件或模块,并告知每个工作者其他代理可能并行编辑,不得回退无关更改。
- 仅在真正的屏障处使用 wait_agent;代理运行期间做不重叠的管理器工作。
- 工作者完成后,先检查其报告和变更文件,再集成或呈现结果。
- 关闭不再需要的代理。
- 在账本中记录每个生成的代理 id、角色、范围和最终状态。
独立线程的现实
不要假设技能文件能直接打开新的 Codex UI 线程。若宿主暴露显式线程创建工具,使用它并记录返回的线程 id;若没有,则创建紧凑交接文件和精确的种子提示。管理器线程仍负责独立线程回报后的集成。当工作需要长上下文隔离、全新工作树或未来多轮时,优先独立线程而非子代理。
配置现实
原生 Codex 子代理的可用性由宿主运行时和配置控制,例如 ~/.codex/config.toml 是否启用多代理功能。Codex 原生子代理不需要项目 routing.toml;TOML 路由文件仅对显式解析它的技能有用。agents/openai.yaml 用于 Codex UI 元数据、默认提示和调用策略,它不是子代理运行时本身。若运行时预检无法暴露 multi_agent_v1,在本技能内修补 TOML 不会为当前回合创建子代理工具。
交接契约
每份交接应尽量一屏可容纳,包含:任务 id 和源账本路径;本工作流目标;相关文件、路由、命令、文档或 issue 链接;约束和非目标;预期交付物;所需验证;工作者最终输出的输出契约。交接保存在当前任务的 handoffs 目录下,文件名包含任务 id、工作流 slug 以及时间戳或线程 id。
Worker Prompt Pattern
用于子代理或新线程的结构:
You are working inside mission <mission_id>.
Goal: <specific workstream goal> Source ledger: <absolute path> Runtime target: <subagent role or separate thread> Write scope: <files or modules, or read only> Constraints: <important user and repo constraints> Do not revert unrelated changes. Other agents may be working in parallel.
Return a compact final with:
- result
- files changed
- tests run
- risks
- recommended next handoff
账本纪律
在每个有意义的事件后更新任务账本:运行时预检完成、工作流启动、线程创建/交接写入/子代理生成、工作者完成、做出决策、文件变更、验证通过或失败、最终集成完成。保持证据紧凑,链接到文件、线程 id、命令和报告;除非需要确切错误文本,不要粘贴长终端日志。
注意事项
- 要求深度不等于要求子代理。仅当用户要求任务控制、子代理、并行执行、独立线程或上下文保留时使用本技能。
- 单一固定交接文件会在重复运行间产生冲突,始终使用带时间戳或唯一后缀的任务作用域路径。
- 管理器不应重做已委派的工作,而应集成、验证和解决冲突。
- 除非用户明确要求在审计上下文中修改代码,否则将只读审计与变更实现线程分开。
- 不要把 TOML 路由文件当作子代理的魔法开关,先证明原生子代理工具是否已暴露。