Skip to main content
review_mode 控制 Classic 在 build 阶段何时派发任务级代码审查、允许多少轮修复,并决定 verify 阶段最终综合审查的强度。build 内:off 不派 reviewer;standard 只审查风险任务;thorough 审查每个任务。整个变更的最终综合代码审查只发生在 verify 阶段,build 完成全部任务后不再追加 reviewer。
review_mode 只管流程内的自动审查。你也可以随时手动调用 /comet-review,对当前 change 做一次只读按需审查;它独立于 review_mode,也不推进工作流。它只报告实现 diff 中的正确性、安全、边界和覆盖问题,不修改文件、更新状态或替代 Verify。

怎么选 review_mode

选哪一档,先看变更的风险面,再确认你能接受的时间与 token 开销。hotfix / tweak 默认 off,新建 full workflow change 默认 standard;具体设置与生效范围见「怎么设置」。 三种模式的总对比:

三档模式的成本差异

三档的成本差异是结构性的。off 的 N 个任务一个任务级 reviewer都不派,最快也最省 token。standard 只给命中风险信号的任务派 reviewer,每个此类任务最多 1 轮自动修复。thorough 的开销是结构性的:N 个任务就会派 N 个任务级 reviewer,每个 reviewer都可能触发最多 2 轮修复。对 12 个任务的变更,standard 可能只给少数风险任务派 reviewer,而 thorough 会跑 12 次逐任务审查,审查 + 修复的 agent 数量是 standard 的数倍。

小鱼把 off、standard 和 thorough 三个量杯按审查强度和成本从低到高摆好

off、standard 和 thorough 对应不同的审查次数与 token 成本

不确定时选 standard。它只给风险任务派任务级 reviewer,开销可控。

一次任务会经历什么

review_mode 决定的是 build 阶段每个任务是否、在何时拿到任务级 reviewer,以及审查发现问题后能自动修几轮。三个模式共享同一个任务基线:实现者自测、提交、报告证据(包括主动上报的风险信号),coordinator 核验通过后勾选任务并派发下一个。下面按 subagent-driven-development 的流程描述;executing-plans 由主会话直接执行任务,审查形态不同,见「最终综合审查(verify 阶段)」与后文「与 build_mode 的配合」。

standard:命中风险信号才审查

选 standard 的任务默认不派发任务级 reviewer。coordinator 读完实现者主动上报的内容并审查 diff 后,只有当上报内容命中风险信号,或 diff 审查发现风险信号时,才给这个任务派 1 个任务级 reviewer,审查范围是 spec 合规 + 代码质量(风险信号清单见后文)。审查没有 CRITICAL/IMPORTANT 发现时,任务核验通过后直接勾选、进入下一个;发现 CRITICAL/IMPORTANT 则进入 review-fix,最多 1 轮,每轮修复后复审。复审仍未通过 → 标记 BLOCKED,暂停并交给你处理。

thorough:每个任务都审查

thorough 下每个任务都会被派一个全新的后台任务级 reviewer,审查范围同样是 spec 合规 + 代码质量。它不做按批次的合并审查。高风险变更需要对每个任务做即时、聚焦的审查,把问题拖到批次边界再抓代价太大。CRITICAL/IMPORTANT 发现进入 review-fix,最多 2 轮;复审仍未通过 → 标记 BLOCKED,暂停并交给你处理。

off:没有自动审查,靠实现证据

off 在 build 阶段不派发任何自动 spec reviewer、代码质量 reviewer或审查修复 agent。任务是否完成,由实现者的自测、构建/测试证据、当前 worktree 确认和勾选前的核验决定。off 模式必须在持久化产物(tasks.md、commit body、验证报告草稿等)里记录跳过自动代码审查的原因。
  • hotfix 和 tweak 预设默认 off。
  • full workflow 也可以显式选 off,但离开 build 前必须确认这个选择并记录原因。
off 只跳过自动代码审查,不跳过 构建、测试、安全检查和 debug gate 协议。如果执行中出现测试失败、构建失败或异常行为,仍然必须走 debug gate,off 不能用来绕过真实问题。

最终综合审查(verify 阶段)

整个变更的最终综合代码审查只在 verify 阶段执行。 build 完成全部任务后不会再追加最终 reviewer,而是直接进入 verify。 review_mode 只决定 verify 是否执行这次自动代码审查:off 跳过并记录原因,standard 和 thorough 都会执行。 executing-plans 的边界如下:主会话直接执行任务,不会有 subagent-driven-development 那样的任务级 reviewer。代码审查面向已完成 diff,强度随 review_mode 调整。 standard 在 build 内不请求整变更审查,任务全部验收后直接进入 verify。 thorough 每完成 3 个任务做一次分段审查(总任务不超过 3 个时 build 内无审查),分段审查只覆盖该段 diff。整个变更的最终综合审查仍在 verify 阶段执行。
verify 阶段的审查由 verify_mode(light/full)驱动,不占 build 的审查预算。 review_mode 只决定 verify 是否触发自动代码审查(off 跳过;standard/thorough 在 light 验证下跑一次轻量代码审查,在 full 验证下依赖 openspec-verify-change)。verify 阶段没有单独的 per- review_mode“完整”代码审查——权威行为见 verify 阶段文档。

三种模式一图看懂

下面这张流程图汇总 build 阶段三种模式的任务级审查与修复流程。build 只按下图分支派发 reviewer,不额外增加;分支内标注的修复轮数就是该模式的自动修复上限。

风险信号清单

命中以下任意一条即标记为风险任务(实现者主动上报 + coordinator diff 审查共同判定)。这是 standard 模式下派发任务级 reviewer的触发依据:
  • 跨模块 / 跨子系统协调改动
  • 安全敏感面:认证、授权、加密、SQL、外部输入处理、密钥/凭据
  • 并发、锁、共享可变状态
  • 数据或 schema 迁移
  • 公共 API 契约或外部接口变更
  • 实现者返回 DONE_WITH_CONCERNS
  • 单任务 diff 超过 200 行

与 Superpowers SDD 的边界

Superpowers 的 subagent-driven-development 默认流程要求“每个任务后派一个任务 reviewer”。Comet 的 review_mode 接管这一阶段,决定哪些任务拿到任务级 reviewer。拿不到 reviewer的任务(off:全部;standard :非风险任务)直接走任务勾选并派发下一个任务。一个变更的审查总数 仅由各模式对应的任务级 reviewer与修复轮数决定,不额外增加。
Comet 的 subagent-driven-development 扩展现在只依赖 Superpowers 公开的 task reviewer 契约:实现者完成任务后,协调者按任务材料、真实 diff、测试证据和风险信号决定是否派 reviewer。Comet 不读取、不写入、也不要求 Superpowers subagent-driven-development 的内部脚本名、workspace 路径或私有实现细节。 这意味着:
  • Superpowers 仍提供连续任务调度、预检查 plan review、文件型 handoff、reviewer 中立提示、“材料不足无法验证” 的反馈语义,以及 progress reconciliation。
  • Comet 只接管 reviewer 触发策略和 review-fix 预算,也就是 review_mode 决定哪些任务要 task reviewer。
  • 文档、恢复和测试都以公开行为为准,不把 shipped Skill 文案绑定到 Superpowers 内部目录结构。
在 build 阶段选择 off、standard 或 thorough。Superpowers SDD 可以独立升级实现,但需要继续满足公开的 task reviewer 契约。

派发模型的选择规则(强制)

每一次实现者/修复者/reviewer派发都必须显式指定模型。省略模型会静默继承会话里最贵的模型,拖慢执行并抬高成本。遵循 Superpowers subagent-driven-development 的 Model Selection 规则: 省略模型 = 让它跑会话里最贵的模型,直接违背这条规则的目标。

与 build_mode 的配合

executing-plans review gate(强度随 review_mode 调整)

executing-plans 下主会话直接执行任务(没有隔离的实现者子代理),所以没有 subagent-driven-development 那样的任务级 reviewer。代码审查针对已完成 diff,强度随 review_mode 调整:
  • review_mode: off:不做自动代码审查,不加载 requesting-code-review。在验证报告草稿或 tasks.md 记录跳过原因,任务验收后进入 verify。
  • review_mode: standard:build 内不请求整变更审查,任务全部验收后直接进入 verify。
  • review_mode: thorough:每完成 3 个任务做一次分段代码审查(仅针对该段 diff),用 requesting-code-review 针对该段 commit 区间;总任务 ≤ 3 时 build 内不做任何审查,直接进入 verify。这是 executing-plans 下最接近逐任务审查的做法:主会话没有隔离的实现者子代理,无法逐任务派发 reviewer。
要求(thorough 适用):
  • 分段审查对应的 requesting-code-review 必须在进入 verify 前完成加载。
  • 如果必需的审查 Skill 无法加载,停止并报告失败,不得静默跳过。
  • CRITICAL/IMPORTANT 发现(安全漏洞、数据丢失风险、构建/测试失败)必须在进入 verify 前修复。
  • 非 CRITICAL 发现可以接受,但必须把原因和影响记录到持久化产物。

Reviewer 怎么工作

在 subagent-driven-development 下,审查由全新的后台 agent执行。reviewer 会获得完整任务、实现 commit/diff 和(开启 TDD 时)RED/GREEN 证据,并必须直接核对真实代码后再下结论。 修复 agent 也是全新后台 agent,根据审查反馈独立修改代码。

进度检查点

coordinator 维护 .comet/subagent-progress.md,记录每个任务的实现 commit、改动的文件、RED/GREEN 证据、所选 review_mode、已过的审查阶段、未解决的审查反馈、当前 review-fix 轮数(standard 最多 1、thorough 最多 2、off 为 0),以及 standard 模式下该任务是否已触发过风险任务审查(恢复时不重复派发已完成的任务审查)。

怎么设置

优先级

review_mode 的解析优先级:
新 change 创建时,full workflow 会把项目默认值快照到自己的 .comet.yaml;hotfix/tweak 直接硬编码为 off。
从 0.4.0-beta.1 起,新建 change 的默认值从 null(关闭)改为 standard :comet init 和新 change 创建快照时,若环境变量和项目配置都没有设置 review_mode,默认写入 standard(风险触发的逐任务审查),而不再是无审查。 已经存在的 change 不受影响:缺少该字段的存量 full change 在离开 build 时会被守卫拦截, 提示先运行 comet state set <change> review_mode <off|standard|thorough> 再继续。

项目默认值

编辑 .comet/config.yaml:
新 change 创建时快照到自己的 .comet.yaml。注意:环境变量和项目配置只在 resolver 层提供默认值,不影响已写入 change 的 review_mode。

单个 change

full workflow 在 build Step 3(执行方式选择)时由用户选择,通过 comet-state 写入:
这是 build 阶段的用户决策点。

环境变量

仅在 resolver 层提供默认值,不影响已写入 change 的 review_mode。

硬约束(full workflow 离开 build)

review_mode 是 full workflow 的硬性门禁,由两层独立检查强制: 两层都必须通过才能离开 build。hotfix/tweak 豁免这个检查(它们默认 off)。
review_mode 不是必填字段,0.4.0 之前的 .comet.yaml 文件不用迁移就能解析。强制检查发生在 build→verify 的阶段守卫上,旧文件缺少该字段时走兼容路径,恢复时应回填。非法值(非 off/ standard/thorough)会被枚举校验拒绝。

状态转换交互

review_mode 是 build 阶段的门禁字段。它不会改变 transition event 的字段 effects,但会在 build-complete 前作为硬性决策被检查。相关转换:
  • build-complete → 调用 requireBuildDecisions(含 review_mode 检查),通过后 phase: verify, verify_result: pending。
  • verify-pass → 要求 verification_report 存在且 branch_status: pending,然后写入 phase: archive, verify_result: pass;handled 由 Archive 在最终交付确认后写入。
  • verify-fail → verify_result: fail, phase: build(回滚,下次 build-complete 时 review_mode 必须再次满足)。

下一步

最后修改于 2026年9月5日