Agent Skills
返回列表
💻

根因追溯

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/root-cause-tracing 技能到 AI 助手中。

技能介绍

深层报错的困境

当错误出现在调用栈深处时,直接修复症状往往治标不治本。比如 .git 目录出现在源码包里、测试随机失败但堆栈指向不明确、非法数据莫名流入核心逻辑——这类问题的共同特点是:错误的直接表现点与原始触发点之间隔着多层调用。如果只在报错处打补丁,下次调用链变化时问题可能以其他形式复发。

逆向追溯的工作流程

根因追溯技能通过系统化的逆向推导定位问题源头,核心包含三个关键步骤:

  1. 逐级向上拆解调用链:从报错点出发,先记录完整症状(路径、行号、错误码),再定位直接引发错误的代码段,随后通过"谁调用了它"的追问,沿 A → B → C → 测试 的链路向上追溯,直到找到最初的值来源(如空串、错误对象或初始化配置)。
  2. 堆栈取证辅助定位:当手动追踪困难时,在危险操作前用 console.error 记录目录、环境变量和 new Error().stack(测试场景优先用 console.error 而非 logger,避免被抑制),通过过滤 DEBUG ... 输出提取测试文件名和行号规律。
  3. 二分法锁定污染源:若不确定哪个测试引发污染,采用逐条运行测试套件的二分法,在第一个制造污染的测试处停止,精准缩小到具体用例。

核心原则:绝不在错误出现处修症状,必须向上追溯到原始触发点修复,并叠加纵深防御(如将变量改为 getter 校验、增加入参检查)防止复发。

适用边界与注意事项

该技能适用于以下场景:

  • 错误发生在执行深处(非入口),堆栈较长
  • 非法数据来源不明确
  • 需要定位触发问题的测试或代码

不适用场景:

  • 错误就在入口、一眼可定位的简单情形(可直接修复)

使用注意:

  • 需提供完整报错信息和可复现步骤
  • 堆栈取证时注意测试环境下日志输出的特殊性
  • 修复后建议将追溯结果交给 defense-in-depth 等下游技能完善防御层

使用场景

  • 测试套件运行后 `.git` 出现在源码目录,需要沿调用链找到空 `cwd` 的原始触发点并修复
  • 深层报错堆栈很长,需要沿 `A → B → C → 测试` 逐级向上追溯非法数据来源
  • 无法确定哪个测试造成环境污染,需要逐条运行测试用二分法定位具体污染用例
  • 在危险操作前需要用 `console.error` 记录 `cwd` 和 `new Error().stack` 来取证堆栈信息

适合人员

  • 负责排查深层报错的后端工程师,希望沿调用链找到非法数据来源而不是就地打补丁
  • 编写和维护测试套件的测试工程师,需要在多个测试中定位第一个制造污染的用例
  • 排查 CI 中随机失败的开发者,希望通过堆栈取证定位测试文件名和行号规律
  • 设计防御机制的架构师,希望输出结构化追溯结果并叠加纵深防御