Files
superpowers-zh/skills/subagent-driven-development/re-review-prompt.md
AI不止语 0ab24dee8e feat(sdd): 同步上游 v6.2.0 —— plan 作用域工作区 + 基于唤回的修复循环(#19 A 块)
对齐上游 v6.1.1 -> v6.2.0 中 subagent-driven-development 的 6 个 commit
(6df8ba1 / b8a2d84 / 2dbbaed / 87e4050 / ebdd4ec / 28882fc)。

这是 #19 拆分后的 A 块。注意 v1.7.1 刚对齐过 SDD,本次是那之后的新增量。

## 为什么必须整块一起改

我们的 SKILL.md 里写的是旧脚本签名(review-package BASE HEAD)。脚本换成
plan 作用域签名后若不同步改文档,agent 会照旧签名调用直接吃 usage 错误 ——
比不同步更糟。所以脚本 + 文档 + 模板同批落地。

## plan 作用域工作区(结构性修复)

原先所有计划共用 .superpowers/sdd/ 一个目录,一份过期账本被误读成当前进度,
会让控制者跳过整段任务序列 —— 上游称这是观察到的最昂贵失败。现在每个计划
一个 .superpowers/sdd/<计划文件名>/,从结构上消除这种误读。

- scripts/sdd-workspace 改为接收 PLAN_FILE,自忽略 .gitignore 上移到
  .superpowers/sdd/;scripts/review-package 前置 PLAN_FILE 参数
- 两个脚本在我们这边与上游 v6.1.1 字节一致(从未汉化),直接取上游版
- scripts/task-brief 只手工应用上游那两处改动,保留我们的 fork 适配
  (awk 同时匹配 "Task N" 与 "任务 N",因为本仓库 writing-plans 产出中文标题)
- 账本新增身份行 `# SDD ledger — plan: <路径>`,并明确「第一行点名别的计划、
  或旧扁平路径下的游离账本」都不是你的进度

实测(临时 git 仓库):两个计划各得独立目录;往 A 计划写 ledger 后 B 计划
目录仍为空(关键回归);.gitignore 落在 .superpowers/sdd/ 且 git status 干净;
中文「任务 2」经新路径抽取成功;review-package 旧签名正确报 usage 错误。

## SKILL.md 全面重写(14 章 -> 生命周期结构)

上游把平铺的 14 节重组为「任务循环」五步 + 熔断机制,Red Flags / Advantages /
Integration / File Handoffs / Durable Progress 等并入使用现场。逐节重译:

- 修复循环:一轮 = 一次修复分派 + 一次定向复审,每任务上限五轮
  第 1-3 轮唤回原实现者(context 完整),第 4-5 轮换全新实现者 + 高一档模型
- 熔断:第 5 轮仍有未解决发现则停止分派,逐条裁定 —— 搁置(附裁定)或在
  承重项上 BLOCKED。只在上限处裁定,提早裁定等于换名字的预先定性
- Minor 发现与「计划要求的」发现两条路在循环外
- 新增「常见的合理化借口」表取代原「红线」清单

新增 re-review-prompt.md(106 行全文翻译):定向复审只核实发现是否解决 +
只看修复 diff 的新破坏,范围外观察进账本不延长循环。

implementer-prompt.md「审查发现之后」改写为基于唤回的修复轮次;
task-reviewer-prompt.md 更新脚本签名并删除被 re-review-prompt.md 取代的结尾两句。

## 顺手修掉一个既有缺陷

三个 SDD 文件末尾都残留着 `</content>` —— v1.7.1 那次重写(PR #108, d7885ca)
留下的生成产物,上游没有。这些文件会整体进 agent 的 prompt,属于污染。已全部清除,
并全仓扫描确认无同类残留。

## 验证

- 章节结构与上游 14 节一一对应;superpowers: 引用集与上游完全一致
- 26 项关键技术记号(脚本签名、账本行格式、四种状态、ADDRESSED/NOT ADDRESSED、
  数值门槛)逐一确认存在,无漏译
- 两个 dot 图节点/边数与上游精确一致(6/6 与 23/28),且无幽灵节点、无孤立节点
  (手工翻译 dot 标签最易在边里写错,会静默产生幽灵节点)
- audit.sh 150 pass / 0 fail;verify-release.sh 82 pass / 0 fail
- SDD 已从 audit 的上游漂移警告里消失(结构层级现已对齐)

注:audit PASS 由 153 降至 150,是上游有意删除 Integration 一节
(原列 executing-plans / test-driven-development / writing-plans 三个引用)
导致 Category 4b 少 3 项引用检查,非静默跳过 —— 已核对我们的引用集与上游一致。
2026-08-07 22:29:04 +08:00

4.4 KiB
Raw Blame History

定向复审提示词模板

在一轮修复之后分派复审时使用此模板。复审者核实那些发现是否已被解决, 并检查修复 diff 有没有引入新的破坏。这不是一次全新审查——完整审查 早已做过了。

目的: 核实上一次审查的每一条发现都已解决,且修复本身没有破坏任何东西。

Subagent (general-purpose):
  description: "复审任务 N 第 R 轮修复"
  model: [模型 —— 必填:按 SKILL.md 的"模型选择"来选;省略模型会默默
         继承会话里最贵的那个]
  prompt: |
    你正在复审一个任务的一轮修复。之前的审查产生了一批发现,
    一个实现者已经尝试修复它们。你的工作是给每条发现下结论、
    并检查这次修复的 diff——仅此而已。

    ## 任务

    读取任务简报:[BRIEF_FILE]

    ## 待核实的发现

    [FINDINGS]

    ## 修复

    读取实现者的报告(修复报告追加在文件末尾):
    [REPORT_FILE]

    **修复基线:** [FIX_BASE_SHA](上一次审查所看到的那个 head
    **Head** [HEAD_SHA]
    **diff 文件:** [DIFF_FILE]

    把 diff 文件一次读完——它包含修复的提交、stat 摘要,以及带上下文的
    修复 diff。不要重新跑 git 命令。如果 diff 文件不存在,自己取 diff
    `git diff --stat [FIX_BASE_SHA]..[HEAD_SHA]` 和
    `git diff [FIX_BASE_SHA]..[HEAD_SHA]`。

    你的审查对这个 checkout 是只读的。不要以任何方式改动工作树、索引、
    HEAD 或分支状态。

    ## 范围

    你的范围就是那份发现清单和这次修复的 diff。**每一条发现都要给结论。**
    检查修复 diff 里有没有修复本身引入的新问题。**不要**去复审这次修复
    没有碰过的代码:如果你注意到一个完全在修复 diff 之外的问题,
    把它写进"范围外的观察"——它不阻塞本任务,也不会延长修复循环。
    覆盖整个分支的宽范围审查会在所有任务完成后另行进行。

    ## 测试

    实现者已经重跑了覆盖被改动代码的那些测试,并把结果追加到了报告文件里。
    把报告当作**未经核实的声明**来对待:确认修复报告点名了覆盖用的测试
    并给出了它们的输出,再拿这些声明去对照 diff 核验。不要为了确认它的报告
    而重跑整个测试套件。只有当读代码引出了某个现有运行结果无法回答的
    具体疑问时才跑测试——而且只跑一个聚焦的测试,绝不跑整包套件。

    ## 输出格式

    你的最终消息就是报告本身:直接从第一条发现的结论开始。每一行都应该是
    一个结论、一条带 file:line 的发现,或者一项你实际做过的检查——
    不要开场白,不要过程旁白。

    ### 各条发现的结论

    按"待核实的发现"里的顺序,逐条给出:
    - **[发现的一句话概括]** —— ADDRESSED已解决| NOT ADDRESSED未解决
      附 file:line 证据。"尝试过了"不算已解决:那个具体缺陷必须已经不存在。

    ### 修复 diff 里的新破坏

    修复本身破坏或引入的任何东西附严重度Critical/Important/Minor
    和 file:line。干净就写"无"。

    ### 范围外的观察

    你注意到的、完全位于修复 diff 之外的问题。不阻塞;控制者会把这些
    记进账本留给最终审查。没有就写"无"。

    ### 结论

    **本轮修复:** [所有发现均已解决,无新的 Critical/Important 破坏 |
    仍有发现未解决] —— 把未解决的那些列出来。

占位符:

  • [MODEL] —— 必填:审查者模型,按 SKILL.md 的"模型选择"来选;小修复 diff 的定向复审用便宜到中档的层级即可
  • [BRIEF_FILE] —— 任务简报文件(与实现者所依据的是同一个文件)
  • [FINDINGS] —— 上一次审查里的 Critical/Important 发现和规格差距, 逐字抄下来,每条一个 bullet
  • [REPORT_FILE] —— 实现者的报告文件(修复报告追加在其末尾)
  • [FIX_BASE_SHA] —— 上一次审查所看到的那个 head
  • [HEAD_SHA] —— 当前提交
  • [DIFF_FILE] —— scripts/review-package PLAN_FILE FIX_BASE HEAD 打印出的那个路径

复审者返回: 逐条发现的结论ADDRESSED / NOT ADDRESSED、 修复 diff 里的新破坏、范围外的观察,以及一个本轮结论。