Skip to main content
design 阶段做深度技术设计。它先用脚本把 open 阶段的 OpenSpec 产物打包成交接包,再交给 Superpowers brainstorming,带你做多轮方案探讨,最后产出 Design Doc。你会经历一段真正的头脑风暴。Comet 会反复和你探讨实现方案、权衡、风险,确认方案后才会写文档。
正常使用时只要运行 /comet。 配置选择 Classic 后,内部 /comet-classic 会读取状态,并在 open 完成后自动调用 /comet-design。 本文介绍的是内部阶段 Skill。只有你想手动控制 阶段时,才需要直接输入。详见本阶段如何触发

本阶段如何触发

/comet-design 通常由 /comet-classic 自动衔接。

默认:用 /comet 自动衔接

open 阶段退出后(comet-guard <name> open --apply 推进 phase: design),/comet-classic 会自动衔接调用 /comet-design。你不需要在 open 完成后手动输入下一个阶段命令。下一次调用 /comet-classic 时,如果检测到 phase: design 或有 change 但缺 Design Doc,也会路由到 design。详见自动推进机制

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

  • 关闭了自动衔接(auto_transition: false)时,open 完成后 /comet-classic 会停下并打印 HINT。你需要手动调用 /comet-design
  • 只想单独跑 design(恢复一个已有 change 但缺 Design Doc,或想重新做技术设计)。
  • hotfix/tweak 命中质变升级信号,回退到 design 补完整设计。
正常使用统一入口 /comet。只有手动控制阶段时才直接调用阶段命令。

你会经历什么

design 阶段的核心是一段基于真实上下文的 brainstorming。brainstorming 直接使用脚本从 open 阶段产物生成的交接包,设计依据因此来自真实需求和项目文件。

Step 0:入口状态验证

如果 handoff_contexthandoff_hash 已存在,先确认它们是否匹配当前产物,再决定是否重新生成。

Step 1a:生成 handoff 交接包

必须由脚本生成,不允许 agent 临场手写摘要代替。 这是 design 阶段可靠性的核心。
交接包形态取决于 context_compression 配置: 同时把 handoff_contexthandoff_hash 写入 .comet.yaml。需要完整上下文时加 --full 交接包的来源是 open 阶段的四个产物文件:proposal.md(目标动机范围)、design.md(高层架构)、tasks.md(任务边界)、specs/*/spec.md(delta spec)。

小鱼用脚本夹板把真实 OpenSpec 产物压成带 sha256 标记的 handoff 交接包

handoff 交接包由脚本直接读取真实产物生成

Step 1b:执行 brainstorming(带真实上下文)

加载 Superpowers brainstorming,以交接包为上下文做深度技术设计。Comet 不会因为“上下文冗余”就跳过 brainstorming 的澄清流程。它会:
  • 探讨实现方案、技术风险、测试策略、边界条件
  • 如果目标/范围/非目标/验收场景/关键约束还不清楚,继续提问
  • 不得只做一轮 Q&A 就创建 Design Doc。要走完澄清 → 2-3 个候选方案 → 逐步确认的完整流程
  • 设计过程中会增量更新 brainstorm-summary.md(恢复检查点,不是 Design Doc),把确认的事实、约束、候选方案、权衡、Spec Patch 候选记下来,未确认项标“待确认”或“候选”
Comet 不能在 Design Doc 里写第二份需求 spec。如果 delta spec 缺验收场景,只能写 Spec Patch(回写到 OpenSpec delta spec),仅限补充验收场景、修正模糊措辞、加边界条件。结构或范围的实质性变更必须回到 brainstorming 重新确认。
如果 brainstorming skill 不可用,Comet 会停下提示你安装/启用 Superpowers, 不会用普通对话代替。

停顿点 5:确认设计方案

brainstorming 产出方案后,Comet 暂停等你明确确认。确认前不会创建 Design Doc、不会写 design_doc、不会跑 design guard、不会进 /comet-build。它展示的摘要包括:
  • 采用的技术方案
  • 关键取舍与风险
  • 测试策略
  • 如有 Spec Patch,列出将回写的 delta spec 变更
你确认后就继续。 如果你要调整,就回到 1b 继续探讨,直到你确认。

Step 1d:定稿 brainstorm-summary.md

确认后、创建 Design Doc 前,Comet 把已确认的方案写入 brainstorm-summary.md,结构是:确认的技术方案 / 关键取舍与风险 / 测试策略 / Spec Patch。这是上下文压缩后的恢复检查点

Step 1e:主动式上下文压缩(非阻塞)

Design Doc、状态和 handoff 全部落盘后、进入 build 前,Comet 会主动触发一次上下文压缩
  • 平台有原生压缩机制(compact/compaction 命令或 UI)时,Comet 触发它一次,不会用 shell 脚本假装压缩。
  • 平台不支持自动触发压缩时,Comet 给出一条压缩建议并直接继续,不会为此增加停顿点。

Step 2:创建 Design Doc

在主会话用完整 brainstorming 上下文创建 Design Doc,带最小 frontmatter:
写在 docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md。如果有 Spec Patch,编辑对应 specs/*/spec.md

Step 3:更新状态 + 推进

如果没改 delta spec,跳过 handoff 重新生成。推进到 phase: build

调用的 skill

design 阶段不调用 OpenSpec skill。OpenSpec 产物已在 open 阶段创建。

产物

退出条件(guard 检查)

guard 在离开 design 时检查:
  • Design Doc 已创建
  • frontmatter 含 comet_changerole: technical-designcanonical_spec: openspec
  • handoff_contexthandoff_hash 已写入 .comet.yaml
  • handoff_hash 匹配当前 OpenSpec 产物(不一致会直接中止)
  • markdown 交接包带可追溯标记(源路径、mode、sha256)
  • beta 模式下 spec-context.json 结构有效

何时进入

正常情况下由 /comet-classic 在 open 完成后自动衔接进入(见本阶段如何触发)。手动场景:hotfix/tweak 命中质变升级信号需要补完整设计,或恢复时发现已有 change 但缺 Design Doc。
full workflow 不应跳过 design。hotfix 和 tweak 可以跳过,但一旦范围变质,就应升级回 full。

恢复

design 阶段幂等,可安全重复。brainstorm-summary.md 是持久化恢复检查点。上下文压缩后,重载它和两个交接包文件就能继续。如果还没确认设计方案,回到 1b/1c。已确认就创建 Design Doc。

下一步

最后修改于 2026年9月4日