Skip to main content
调用 /comet 且项目配置为 Classic 时,/comet-classic 会检测当前阶段、推进状态并选择下一阶段 Skill。本页说明其判断顺序和恢复行为。

阶段推进 vs 自动衔接

自动推进包含两个不同动作:
阶段推进一定发生。guard 的 —apply 总是更新 phase。 auto_transition 只控制是否自动调用下一个 Skill,不影响 phase 推进。用户决策点无论 auto_transition 取何值都必须阻塞。

小鱼用 guard 推动阶段珠子,同时用 auto_transition 开关控制下一步衔接

阶段推进负责更新状态,自动衔接只决定下一张 Skill 卡片是否继续递出去

自动检测怎么工作

每次调用 /comet 并进入 Classic 后,内部 /comet-classic 都会重新读取文件状态来判断当前阶段,而不是依赖对话历史。

Step 0:发现活跃 change

  1. 预设检测(优先级最高):命中 hotfix/tweak 时直接调用对应预设 Skill
  2. 未命中预设时运行 openspec list --json 获取所有活跃 change
  3. 按 change 数量和用户输入决定行为:

Step 1:读取状态

优先读取当前 Classic OpenSpec 根目录下的 changes/<name>/.comet.yaml。 新项目默认路径是 docs/openspec/changes/<name>/.comet.yaml,保留旧布局的项目是 openspec/changes/<name>/.comet.yaml。 如果文件不存在,会回退到 openspec status、tasks.md 和 docs/superpowers/ 做文件检查。根目录由 classic.artifact_layout 决定,详见项目文件结构。

Step 2:阶段判定

按以下顺序判断,命中即停(以文件状态为准,冲突时修正 .comet.yaml):

状态转换

阶段推进通过 guard --apply 或 comet-state transition 完成:
转换链:

自动衔接:next 命令

阶段推进后,运行 next 解析下一步:
输出格式:

Skill 路由

next 根据 phase 和 workflow 决定下一个 Skill: verify 和 archive 阶段不受 workflow 类型影响,始终返回标准 Skill。

连续执行

单次 /comet 调用进入 Classic 后,会从检测到的阶段开始。退出条件满足后,自动推进到后续阶段。
自动推进只适用于没有用户决策的衔接点。 遇到停顿点时必须暂停并等待用户确认,不能用推荐规则、默认值或历史偏好代替。 支持结构化提问的平台会优先展示可点击的单选或多选。如果平台没有这类工具,或第一次调用失败,本会话后续停顿点会直接退回编号文本选项。

auto_transition 配置

auto_transition 控制是否自动调用下一个 Skill。配置优先级:

什么时候用 false

  • 想在阶段之间插入人工审核
  • 每个阶段完成后需要换模型或换人
  • CI/CD 场景需要逐步控制

预设升级

hotfix 或 tweak 执行过程中命中升级信号时,会暂停,并提供两个选项: preset-escalate 是预设到 full 升级的唯一合法通道。 它会一次性设置 workflow/classic_profile 为 full、把 phase 回退到 design 并清除 design_doc。这三个动作要么全部生效,要么都不执行。

断点恢复

上下文压缩或会话中断后,重新调用 /comet。配置进入 Classic 后,内部路由会重新读取文件状态并恢复: 断点恢复不依赖对话历史。每次都重新执行 Step 0 和 Step 1。

红旗清单

Comet 的自动推进有明确的边界。以下想法出现时必须停下检查:

下一步

最后修改于 2026年9月4日