Disciplined Diagnosis
Disciplined Diagnosis(纪律化诊断)
Matt Pocock 的 /diagnose skill 的六阶段诊断循环。
六阶段
Phase 1 — 构建反馈循环(核心)
This is the skill. Everything else is mechanical.
构建一个快速、确定性、agent 可运行的 pass/fail 信号。10 种方法按优先级尝试:
- 失败测试
- curl/HTTP 脚本
- CLI 调用 + snapshot diff
- Headless 浏览器脚本
- 回放捕获的 trace
- 一次性 harness
- 属性/模糊测试
- 二分 harness(git bisect run)
- 差分循环(老版本 vs 新版本)
- HITL bash 脚本(最后手段)
迭代循环本身:让它更快、信号更锐利、更确定性。30 秒抖动循环 ≈ 没有循环。2 秒确定性循环 = 调试超能力。
Phase 2 — 复现
确认循环产出用户描述的失败模式(不是另一个附近的 bug)。
Phase 3 — 假设
生成 3-5 个可证伪假设,排序后展示给用户。每个假设必须有预测。
Phase 4 — 探测
每个探测对应一个假设预测。一次只改一个变量。标记 [DEBUG-xxxx] 方便清理。
Phase 5 — 修复 + 回归测试
先写回归测试(在正确的 seam 上),再看它失败,再修复。如果找不到正确的 seam,这个发现本身就要记录。
Phase 6 — 清理 + 复盘
删除所有调试标记和临时原型。问:什么本可以防止这个 bug?如果答案是架构问题,交给 /improve-codebase-architecture。
核心洞见
Build the right feedback loop, and the bug is 90% fixed.
反馈循环不是调试的辅助工具 — 它就是调试本身。没有循环就不要继续。