Skip to main content
build 阶段把设计变成代码。它会先写实施计划,让你在停顿点做决策(plan-ready 暂停 + 四种工作模式一次性选定 + 分支名确认),然后逐任务执行、审查、提交。从你的角度看,这是动手实现的阶段——但 Comet 会把执行方式的选择权交给你,并在过程中处理 spec 增量更新和异常调试。
正常情况下你只需要 /comet。 配置选择 Classic 后,内部 /comet-classic 会读取状态,并在 design 完成后自动调用 /comet-build。本文描述的是内部阶段 Skill;只有想手动控制 时才需要直接输入。详见本阶段如何触发

本阶段如何触发

/comet-build 通常不是你手敲的命令,而是 /comet-classic 自动衔接的结果。

默认:用 /comet 自动衔接

design 阶段退出后(phase: build),/comet-classic 会自动衔接调用 /comet-build。下一次调用 /comet-classic 时,如果检测到 phase: build 或有 Design Doc 但执行未完成,也会路由到 build——hotfix 走 /comet-hotfix、tweak 走 /comet-tweak、full 走 /comet-build。详见自动推进机制

手动:什么时候才需要直接 /comet-build

  • 关闭了自动衔接(auto_transition: false)——design 完成后 /comet-classic 会停下并打印 HINT。
  • 只想单独跑 build(恢复一个 phase: build 的 change 继续执行)。
  • verify 失败后通过 comet-state transition verify-fail 回滚,需要重新进入 build 修复。
正常使用统一入口 /comet;只有手动控制阶段时才直接调用阶段命令。

你会经历什么

build 阶段有 4 个停顿点(全局编号 6-9,整个五阶段工作流共 13 个,见五阶段停顿点和用户选择点)。下面按发生顺序讲。

小鱼在 build 阶段把计划卡片推进到逐任务执行、debug 和提交证据

build 阶段把计划拆成任务卡片,逐张执行、排错、勾选并留下提交证据

Step 0:入口状态验证

读取 plan 头部的 base-refgrep 找第一个未完成任务。幂等:已提交的任务不会重复提交。

Step 1:创建实施计划

Comet 派子代理加载 writing-plans 写计划(这样不占主会话上下文),子代理失败时回退到主会话内联加载。计划 frontmatter 必须含:

停顿点 6:plan-ready 暂停

计划写好后,Comet 暂停等你选
选项 B 的用途是换模型——比如用一个模型写计划、换一个更强的编码模型执行。恢复时 Comet 会检测到 build_pause: plan-ready 且 plan 存在,告诉你停在 plan-ready,你确认继续后清除暂停标志,不会重新生成 plan,直接进入工作模式选择。

停顿点 7:一次性选定四种工作模式

确认继续后,Comet 一次性问你四个选择(不是分四次问):

1. 隔离方式(isolation)

选择 branch 时,Comet 在同一联合决策里让你确认或覆盖分支名,命名规则:feature/YYYYMMDD/<name>(full)、hotfix/...(hotfix)、tweak/...(tweak)。三种隔离方式都适用于 full、hotfix 和 tweak;选择结果会写入 isolation,并把实际执行目录的当前分支记录为 bound_branch,后续入口检查会阻止意外切换分支。

2. 执行方式(build_mode)

subagent-driven-development 需要平台有真实后台调度能力——否则 Comet 会暂停让你改选 executing-plans。full workflow 默认不能用 direct,除非你显式设 direct_override: true

3. TDD 模式(tdd_mode)

4. 审查模式(review_mode)

详见代码审查机制

Step 3:逐任务执行

选定后,按 build_mode 执行。两种执行方式的体验不同
subagent-driven-development 下,每个 task 通过验收并被勾选后会 立即派发下一个 task ,不会停下来总结或问你。只有四种情况会停:审查修复轮数耗尽(BLOCKED)、遇到真实歧义、平台无后台调度、你明确要停。审查强度由 review_mode 决定(thorough=每任务审查;standard=仅风险任务审查)。
子代理(implementer)不能自己勾选任务 ——只有主会话在双阶段验收通过后才勾选。审查者拿到的是完整任务 + 实现 commit/diff + RED/GREEN 证据(TDD 时),不能只看实现者摘要就下结论

Step 3b:异常调试协议(强制)

执行中出现崩溃、测试失败、构建失败或异常行为时,Comet 强制加载 systematic-debugging
  1. 先定位根因——读完整错误、查最近改动、追数据流。根因调查完成前不得提任何修复。
  2. 根因是源码 bug 时,先加一个最小失败测试复现,再修源码。
  3. 修完跑失败测试、相关测试、项目构建/验证命令确认全过。
  4. 失败测试、源码修复和 tasks.md 勾选都保留在当前 change 内,不要另开”写测试用例”change 替代当前验证循环。

多失败的并行排查

进入四阶段流程前,先做一个失败独立性评估,决定串行还是并行: 满足并行条件时:
  1. 用 Skill 工具加载 Superpowers dispatching-parallel-agents
  2. 每个独立失败派一个后台排查 agent(按问题域分组,全部派发放在同一条响应里并发执行)。每个 prompt 自包含(具体失败、错误信息、允许排查范围、禁止动其他问题域代码)。
  3. 所有 agent 仍受”根因定位前不得改源码”约束——它们只定位根因并返回发现,不直接提交修复。
  4. 所有排查返回后,主会话串行汇总发现并修复;修复仍走当前 review_mode 的验证和审查循环。
并行只用于排查,不用于修复。修复始终串行,避免多个 agent 同时改同一批文件冲突——这与 subagent-driven-development “不要并行派发多个实现子代理”的红线一致。即使 review_mode: off,异常调试协议也 不跳过——off 只跳过代码审查,不跳过真实问题的调试。

Step 4:spec 增量更新

执行中发现需要改 spec 时,按规模处理:

Step 5:勾选 + 提交

每个任务:按 build_mode 执行 → 按 review_mode 审查(如适用)→ 主会话勾选 tasks.md → 提交。勾选用定向验证:
任务文本必须唯一出现且已勾选,验证失败不得进入下一个任务。可用 grep -c '\- \[ \]' tasks.md 查剩余未勾选数。

退出

推进到 phase: verify,设 verify_result: pending

调用的 skill

产物

退出条件(guard 检查)

  • tasks.md 全部勾选
  • 代码已提交
  • 显式运行项目 build/test 命令并通过(不要只依赖 guard 自动猜测)
  • isolationcurrentbranchworktree,且当前 Git 分支与 bound_branch 一致
  • build_mode 已选(subagent 模式需 subagent_dispatch: confirmed
  • tdd_mode 已选
  • review_mode 已选(按 executing-plans review gate 完成:standard/thorough 已请求审查并修复 CRITICAL 或记录非 CRITICAL 接受原因;off 已记录跳过原因)
guard 会自动探测项目构建入口(例如 npm run build、Maven 或 Cargo)并把失败输出作为证据。build_command / verify_command 已移除,不再能写在 .comet.yaml 或仓库根配置里;如果需要固定团队级验证流程,请把它放进项目自己的构建脚本。

恢复

build 阶段幂等。恢复时 grep -n '\- \[ \]' tasks.md | head -1 找第一个未完成任务继续。build_pause: plan-ready 的恢复见停顿点 6。上下文压缩后用 comet-state check <name> build --recover 拿恢复上下文;subagent 模式重读 .comet/subagent-progress.md 恢复当前任务和审查轮数,不能在主会话直接执行任务full workflow 如果停在 plan-ready,恢复动作必须补齐或确认四个选择:isolationbuild_modetdd_modereview_mode。不要只补前两个就进入执行。

推荐路径

多人协作或高风险改动优先用 worktree + review_mode: thorough。小型明确改动用 branch + standard

下一步

最后修改于 2026年7月22日