用途
该技能用于系统化调试与诊断,适用于遇到缺陷、错误、异常、崩溃、意外行为或错误结果、测试失败(单元、集成、端到端)、间歇性或时序相关故障、性能问题(缓慢、内存泄漏、高 CPU)、集成失败(API、数据库、外部服务)等场景。不适用于显而易见的修复、功能请求或架构规划。
主要能力
- 基于证据的调查流程:从收集证据到根因确认再到验证修复。
- 四阶段框架:收集证据、隔离变量、形成假设、测试假设、验证修复。
- 使用 TodoWrite 跟踪进度,阶段只能向前推进。
- 情境化插入“迭代”任务:当假设被推翻时,循环回退并形成新假设。
- 快速修复路径:若错误中根因明显,可跳至“验证修复”,但仍需创建失败测试。
- 熔断机制:连续 3 次假设失败后升级处理。
使用方式
- 会话开始时创建“收集证据”待办事项并标记为进行中。
- 复现问题:记录精确触发步骤,确认是否间歇性,在干净环境中验证。
- 检查近期变更:git diff、git log --since="yesterday"、依赖更新、配置/环境变更。
- 收集证据:在关键点添加日志,打印变量值,记录函数入口/出口及参数,捕获时间戳,反向追踪数据流。
- 分析模式:查找可工作的类似功能,完整阅读参考代码,逐行比较工作与损坏版本的差异,理解依赖与假设。
- 形成单一假设:模板为“X 是根因,因为 Y”,必须解释所有症状、可测试、基于证据。
- 设计最小测试:最小改动、只改变一个变量、保持其他不变、可逆。
- 执行并验证:应用改动,运行复现步骤,观察并记录结果。
- 根据结果处理:已修复则确认所有情况并进入验证修复;未修复则标记完成、添加“迭代”、形成新假设;部分修复则添加“迭代”处理剩余问题。
- 实施永久修复:先创建失败测试,验证修复前失败、修复后通过;实施单一修复,仅针对根因,不做额外改进或重构;验证失败测试通过、现有测试通过、手动复现不再触发、无新错误/警告。
- 熔断:若 3 次以上修复未成功,停止,问题可能在于架构,需升级或重新设计。
- 修复后:标记“验证修复”完成,添加防御性验证,记录根因,考虑类似缺陷。
适用场景
- 缺陷、错误、异常、崩溃。
- 意外行为或错误结果。
- 测试失败(单元、集成、端到端)。
- 间歇性或时序相关故障。
- 性能问题(缓慢、内存泄漏、高 CPU)。
- 集成失败(API、数据库、外部服务)。
限制
- 不适用于显而易见的修复、功能请求或架构规划。
- 禁止在没有根因调查的情况下提出修复方案。
- 禁止同时测试多个假设。
- 禁止跳过失败测试用例。
- 禁止修复症状而非根因。
- 连续 3 次修复失败后必须升级,不得继续尝试。
- 阶段不可回退,只能添加新任务。
- 需要更多证据时,添加新证据任务,而非回退阶段。
- 升级条件:3 次修复失败后、无清晰复现、外部系统问题、安全影响、数据损坏风险。
- 声称“已修复”前需满足检查清单:根因有证据、创建失败测试、修复仅针对根因、测试通过、所有现有测试通过、手动复现不再触发、无新警告/错误、根因已记录、考虑预防措施、“验证修复”标记完成。
附加资源
- playbooks.md:特定缺陷类型的调查。
- evidence-patterns.md:诊断技术。
- reproduction.md:复现技术。
- integration.md:工作流集成、反模式。
- FORMATTING.md:格式约定。