Skip to main content
Supervisor Change 是 Native 为大型任务提供的并行交付模式。它按照验收要求,将整体目标拆成可以独立实现和验证的子任务。Runtime 负责管理依赖、隔离工作区、记录执行状态、集成结果并完成最终验收。 无论拆成多少个子任务,最终交付仍然只有一个。所有结果集成后,主任务必须对完整目标重新 Verify。单个 Agent 报告完成、某个子任务通过验证,或者代码已经进入集成分支,都不能代表整个任务已经完成。

子任务统一管理与交付

例如,一个权限管理目标可以拆成权限 API、权限配置页面和审计日志。三个结果可以独立实现和验证,但仍属于同一个产品目标,需要统一集成和最终验收。这类任务适合使用 Supervisor Change。

按照可交付结果拆分任务

Comet 会在最终 Shape 确认前检查是否值得拆分。只有同时满足以下条件,才会建议使用 Supervisor Change:
  • 至少有两个结果可以独立实现和验证;
  • 整体目标中的每个验收项都能明确分配给某个子任务;
  • 子任务之间的依赖可以明确表达;
  • 并行执行或分阶段交付确实能降低整体等待时间。
需求文字很长、任务条目很多,并不代表适合拆分。如果多个部分需要反复修改同一核心区域,或者拆分后增加的沟通与集成成本高于并行收益,继续使用单个 Native Change 更合适。没有共同最终验收的目标,则应创建多个独立 Change。 拆分草案记录在 children.yaml。RC1 使用 comet.native.children.v2acceptance_index 保存从 brief.md 派生的整体目标验收 ID、来源和完整文字,每个子任务只声明唯一名称、依赖项和自己覆盖的验收 ID。Runtime 会检查名称重复、未知依赖、依赖环和验收遗漏。

用户选择拆分方案与推进方式

确认前,Comet 会展示整体目标、子任务列表、依赖关系和验收映射。用户可以调整拆分、继续使用单个 Native Change,或者选择一种推进方式: 推进方式只决定子任务在哪里执行,不会改变拆分结果、依赖、验收标准或集成规则。确认 Supervisor 拆分时,Runtime 会把选择作为 coordination_mode 写入 comet-state.yaml。恢复流程或因需求变化重新进入 Shape 时会沿用这个选择,不重复询问。只有出现新的用户可见决定时,流程才会返回 Shape,请用户重新确认。 确认之前,Runtime 不会创建子任务、worktree 或外部会话。包含两个或更多子任务时,普通的“确认”也不能代替推进方式选择。

每个子任务都有独立工作区

Shape 确认后,Runtime 会先为主任务创建专用的集成分支和集成 worktree,再以集成分支的当前提交为起点,为各个子任务准备独立 worktree 和任务包。 每份任务包包含:
  • 子任务的角色和验收范围;
  • 唯一的工作目录;
  • 当前集成基线提交;
  • 用于绑定任务回报的 runId
  • 依赖条件和停止条件。
Runtime 通过 readyChildren 告诉主会话哪些子任务现在可以开始。多会话模式默认最多同时启动两个互不依赖的子任务;单会话模式按顺序执行。需要临时改为串行推进时,可以使用:
这个参数只限制同时执行的任务数量,不会改变任务依赖或验收范围。

在Codex中采用多会话并行推进

在 Codex 中选择多会话协作后,当前会话成为主会话。它负责分配任务、持续检查进度、处理阻塞、让 Runtime 集成已经验证的结果,并完成主任务的最终 Verify。主会话不直接进入子任务 worktree 修改代码。 readyChildren 中的每个子任务都会交给一个用户可见的独立任务。独立任务沿用当前项目,并直接进入 Runtime 已经准备好的子任务目录,无需另外创建 worktree。任务完成后,主会话仍要等待子任务 Verify 和 Runtime 集成,不能把独立任务的完成消息当作交付结果。

在Claude Code中采用Agent Teams 并行推进

在 Claude Code 的交互式会话中,可以使用 Agent Teams 运行不同子任务。PowerShell 中可通过以下环境变量启用:
当前会话作为 team lead,为 readyChildren 中的每个子任务分配一个有明确名称的 teammate。teammate 只在 Runtime 指定的子任务 worktree 中工作,不能自行创建新的工作区、领取依赖尚未满足的子任务、集成主任务分支或创建嵌套团队。 Agent Teams 负责运行多个会话,Native Runtime 仍然负责工作区、任务状态、验证和集成。团队成员的消息不能覆盖 Runtime 状态,也不能代替主任务的最终验收。

先验证,再集成

每个子任务都必须经过 active → verified → integrated
  1. Builder 在子任务 worktree 中完成候选实现,并提交绑定当前 runId 的结果;
  2. 独立 Verifier 检查候选提交和子任务验收范围;
  3. Runtime 只接受角色、runId 和当前任务状态都匹配的回报;
  4. 验证通过后,Runtime 把已验证提交集成到 Supervisor 的集成 worktree,并运行必要的集成检查。
子任务不单独执行 Archive,也不能自行合并主任务分支。Agent 声称“已经完成”不能作为集成依据;worktree 中存在未提交修改时,也说明结果尚未准备好。只有 Runtime 将状态记录为 integrated,依赖它的后续子任务才会进入 readyChildren

集成完成后统一验收

所有子任务进入 integrated 后,Runtime 会立即推进主任务的最终 Verify,不需要用户再次发送“继续”。最终 Verify 在集成 worktree 中运行至少一项集成检查,并覆盖整体目标的完整验收范围。 最终 Verify 通过后,Supervisor Change 才能进入 Archive。用户仍按 Native 的正常交付选项决定保留工作区、本地合并、推送或创建 PR,目标分支在最终交付前不会被提前修改。 如果最终 Verify 失败,Runtime 会保留集成现场,不会重新打开已经完成集成的子任务。流程会根据实际失败的验收项追加一个名称唯一的修复子任务,补充整体目标的验收映射,并返回 Shape 让用户确认新增修复范围。

可恢复的任务进度

主会话可以通过以下命令查看子任务汇总、readyChildren、集成状态和下一步:
恢复任务时,Comet 以 Runtime 持久化的 coordination_mode 为准,不重复创建已有子任务或 worktree。multi-session 继续使用多会话协作,single-session 继续由当前会话按顺序推进。 如果原来的 Codex 独立会话或 Claude Code Agent Team 已经不存在,Comet 会重新读取 Runtime,并在 multi-session 下自动改用 subagent。已经派发但丢失的任务会先通过 supervisor-cancel 使旧 runId 失效,再使用新的任务包和 runId 重新派发;旧执行的迟到结果会被拒绝。subagent 也不可用时,Comet 会报告真实阻塞,不会自动切换为单会话推进。 继续阅读 Native Loop,了解主任务和子任务共用的验收机制。阅读 多 Change 与规格冲突恢复手册,了解并发冲突与中断恢复。
最后修改于 2026年8月31日