SuperAPI AI 工具集

debugging-and-diagnosis

编程与开发

查看项目

更新于 10-16 07:45

技能介绍

用途

该技能用于系统化调试与诊断,适用于遇到缺陷、错误、异常、崩溃、意外行为或错误结果、测试失败(单元、集成、端到端)、间歇性或时序相关故障、性能问题(缓慢、内存泄漏、高 CPU)、集成失败(API、数据库、外部服务)等场景。不适用于显而易见的修复、功能请求或架构规划。

主要能力

  • 基于证据的调查流程:从收集证据到根因确认再到验证修复。
  • 四阶段框架:收集证据、隔离变量、形成假设、测试假设、验证修复。
  • 使用 TodoWrite 跟踪进度,阶段只能向前推进。
  • 情境化插入“迭代”任务:当假设被推翻时,循环回退并形成新假设。
  • 快速修复路径:若错误中根因明显,可跳至“验证修复”,但仍需创建失败测试。
  • 熔断机制:连续 3 次假设失败后升级处理。

使用方式

  1. 会话开始时创建“收集证据”待办事项并标记为进行中。
  2. 复现问题:记录精确触发步骤,确认是否间歇性,在干净环境中验证。
  3. 检查近期变更:git diff、git log --since="yesterday"、依赖更新、配置/环境变更。
  4. 收集证据:在关键点添加日志,打印变量值,记录函数入口/出口及参数,捕获时间戳,反向追踪数据流。
  5. 分析模式:查找可工作的类似功能,完整阅读参考代码,逐行比较工作与损坏版本的差异,理解依赖与假设。
  6. 形成单一假设:模板为“X 是根因,因为 Y”,必须解释所有症状、可测试、基于证据。
  7. 设计最小测试:最小改动、只改变一个变量、保持其他不变、可逆。
  8. 执行并验证:应用改动,运行复现步骤,观察并记录结果。
  9. 根据结果处理:已修复则确认所有情况并进入验证修复;未修复则标记完成、添加“迭代”、形成新假设;部分修复则添加“迭代”处理剩余问题。
  10. 实施永久修复:先创建失败测试,验证修复前失败、修复后通过;实施单一修复,仅针对根因,不做额外改进或重构;验证失败测试通过、现有测试通过、手动复现不再触发、无新错误/警告。
  11. 熔断:若 3 次以上修复未成功,停止,问题可能在于架构,需升级或重新设计。
  12. 修复后:标记“验证修复”完成,添加防御性验证,记录根因,考虑类似缺陷。

适用场景

  • 缺陷、错误、异常、崩溃。
  • 意外行为或错误结果。
  • 测试失败(单元、集成、端到端)。
  • 间歇性或时序相关故障。
  • 性能问题(缓慢、内存泄漏、高 CPU)。
  • 集成失败(API、数据库、外部服务)。

限制

  • 不适用于显而易见的修复、功能请求或架构规划。
  • 禁止在没有根因调查的情况下提出修复方案。
  • 禁止同时测试多个假设。
  • 禁止跳过失败测试用例。
  • 禁止修复症状而非根因。
  • 连续 3 次修复失败后必须升级,不得继续尝试。
  • 阶段不可回退,只能添加新任务。
  • 需要更多证据时,添加新证据任务,而非回退阶段。
  • 升级条件:3 次修复失败后、无清晰复现、外部系统问题、安全影响、数据损坏风险。
  • 声称“已修复”前需满足检查清单:根因有证据、创建失败测试、修复仅针对根因、测试通过、所有现有测试通过、手动复现不再触发、无新警告/错误、根因已记录、考虑预防措施、“验证修复”标记完成。

附加资源

  • playbooks.md:特定缺陷类型的调查。
  • evidence-patterns.md:诊断技术。
  • reproduction.md:复现技术。
  • integration.md:工作流集成、反模式。
  • FORMATTING.md:格式约定。