关于 stacktrace-log-triage
面向 Kotlin/Spring 故障排查的技能,将日志和堆栈信息整理为带置信度的根因假设。它强调先收集证据、区分症状与根因,并分别提出临时缓解和长期修复方案。
主要功能
- 01按时间线检查日志与堆栈
- 02分析异常原因链
- 03分类故障类型
- 04按置信度排列假设
- 05区分临时缓解与长期修复
- 06制定复现与验证计划
适用场景
- 01诊断 Kotlin/Spring 启动故障
- 02追查 SQL、HTTP 或配置错误
- 03分析间歇性并发故障
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jetbrains/ skills --skill stacktrace-log-triage安装后在 Claude Code 中输入/stacktrace-log-triage确认已加载。
附带文件agents/openai.yaml
详细介绍
堆栈跟踪日志分诊
来源映射:源自 Kotlin_Spring_Developer_Pipeline.md(SK-15)的一级关键技能。
使命
将嘈杂的故障证据转化为按可能性排序的诊断,并明确说明置信度。 始终区分症状、直接原因和真正的根本原因。
先收集证据
- 阅读完整的堆栈跟踪,而不只是最顶部的堆栈帧。
- 阅读首次故障前后的日志行。
- 尽可能记录时间戳、关联 ID、请求 ID、线程名称和活动配置文件。
- 如果有近期相关的代码或配置变更,请一并查看。
- 尽可能复用
project-context-ingestion中的仓库约束。
分诊工作流
- 找出最早出现的有效故障信号。
- 沿着
Caused by:链追溯,直到原因不再变得更具体。 - 对事件进行分类:
- DI 和上下文启动
- 配置绑定
- 序列化或验证
- SQL 或迁移
- HTTP 或超时
- 安全
- 并发或锁定
- 类路径或版本不匹配
- 区分发生了什么故障与故障原因。
- 证据不完整时,按可能性对假设排序。
- 分别提出快速缓解措施和适当的修复方案。
诊断规则
- 将
BeanCreationException、InvocationTargetException等包装异常视为传递信息的载体,而非诊断结论。 - 将框架包装层之后的第一个用户代码堆栈帧视为高价值证据。
- 依据日志时间顺序判断,而不只看堆栈深度。
- 如果日志被截断,请明确说明,并降低置信度。
- 优先采用基于观察到的代码路径或配置的解释,而不是凭记忆进行模式匹配。
高级信号模式
- 检查被抑制的异常、堆栈跟踪上方一两行中的根因日志,以及相邻线程上的伴随故障。最有用的线索往往根本不在主堆栈中。
- 区分硬故障和饱和模式:连接池耗尽、线程池资源枯竭、事件循环阻塞、重试风暴和死锁重试,往往会先表现为次要症状。
- 对于 SQL 故障,如果有供应商代码和 SQL 状态,请检查这些信息。它们通常比包装异常类型更有助于采取行动。
- 对于版本或部署变更后的启动故障,应先比较类路径和配置的差异,再假设是代码错误。
- 对于间歇性故障,应重点考虑时间相关性和并发上下文。竞态条件很少会留下清晰的单线程叙述。
- 对于 OOM 或 GC 相关事件,普通堆栈跟踪的证据力较弱。线程转储、堆内存症状和分配上下文更重要。
- 如果有指标,应将首次错误激增与延迟、资源池饱和或下游依赖退化关联起来,而不要孤立地看待日志。
- 如果症状出现在响应式或协程代码中,请确认上下文传播是否导致日志关联信息丢失,再判断缺少 ID 或线程名称具有误导性。
专家启发式
- 分诊后的首个修复应同时降低不确定性并缓解问题。优先选择还能让诊断更清晰的缓解措施。
- 如果多个候选原因都符合,请根据证据、影响范围和拟议缓解措施的可逆性进行排序。
- 如果跟踪指向框架包装层,应先向外检查近期变更的代码和配置,再沿因果链向内追溯。
- 始终说明哪些证据能够证伪最可能的假设。
输出约定
返回以下部分:
Root cause:用通俗语言说明已确认或最可能的原因。Confidence:已确认、高、中或低。Evidence:支持该诊断的日志行、异常、配置事实或代码路径。Hotfix:最安全的即时遏制或解阻步骤。Long-term fix:恰当的代码或配置修正。Reproduction and verification:如何复现、测试和监控修复效果。
安全规则
- 将假设标明为假设。
- 除非事故确实没有更安全的选择,否则不要建议将高风险的架构变更、版本升级或大范围重构作为热修复。
- 日志不完整时,不要声称结论确定无疑。
- 修复后,不要忽视告警或监控方面的影响。
Kotlin 专项检查
- 留意平台类型导致的
NullPointerException。 - 留意可能掩盖原始调用路径的协程堆栈跟踪。
- 留意缺少 Kotlin 编译器插件而导致的运行时行为缺失。
- 留意 Jackson 与 Kotlin 构造函数的问题,这类问题可能表现为通用的反序列化错误。
质量标准
一次优秀的技能运行会帮助用户从故障证据找到安全的修复方法。
一次糟糕的运行会重复最上层的异常,忽略 Caused by: 链,或在未说明风险的情况下提出危险的热修复。
评论
支持 Markdown