bug-killer-native — 本地项目异常分析(code agent 模式)
与 bug-killer 物料管线模式的区别:当前目录就是代码现场,直接读代码/日志定位根因,零物料文件,结论全部输出到对话。
与物料模式差异
| 维度 | bug-killer(物料管线) | bug-killer-native(本 skill) |
|---|---|---|
| 代码来源 | opser + gitlaber 拉到 repos/ | 当前目录本地代码 |
| 日志/trace | slser 查 SLS + langfuse | 本地日志文件 / 用户输入;按需 langfuse-cli |
| 物料 | bugs/bug-{id}/ 目录树 | 不创建任何文件/目录 |
| 输出 | reports/*.md | 对话直接输出 |
| 修复 | code-manager + code-dever | 可选直接 Edit(用户确认) |
执行流程
① 理解问题
从用户输入提取:现象 / 报错堆栈 / 复现条件 / 本地日志文件路径
信息不足 → 直接追问(现象都说不清就别硬猜)
② 收集证据(全部留在对话上下文,不落盘)
本地代码:
- .codegraph/ 存在 → 用 codegraph MCP(explore/callers/callees)
- 否则 → Read/Grep(堆栈类名/方法名直接定位)
日志:
- 用户给了本地日志文件路径 → Read/Grep 提取异常段落
- 用户直接粘贴日志 → 直接分析
- 不用 slser(不查 SLS)
langfuse(先判断再调用):
- 先排查问题相关代码是否涉及 agent 且使用 langfuse 观测配置
(grep 问题模块调用链上的 langfuse SDK:LangfuseClient / observe /
langfuse.init / @langfuse 等引用)
- 是 + 有 traceId → langfuse-cli 查:
eval "$(python -m scripts.credentials env langfuse)"
npx -y langfuse-cli --api-version 3.150.0 api traces get <traceId>
npx -y langfuse-cli --api-version 3.150.0 api observations list --trace-id <traceId> --limit 100
(必须 --api-version 3.150.0:maycur 自托管 Langfuse 3.x,默认 4.10.0
快照封锁 legacy 端点;traces get 用位置参数)
- 否 → 只看日志信息即可,不调 langfuse
③ 定位根因
堆栈/日志异常点 → 调用链追踪(codegraph callers/callees 或 Grep)
→ 疑似根因点 + 证据(能跑测试/复现命令就跑一个验证)
④ 直接输出(格式见下)
分析 + 解决方案全部对话输出,不写任何文件
─── 输出后等用户决策 ───
⑤ 可选修复(用户明确说"修复/fix/改代码"才进)
直接 Edit 当前工作区代码(每个 Edit 前说明改动点)
commit/push 由用户自己掌控(不走 code-manager 流程)
输出格式(对话直接输出)
## 问题分析
- **现象**:...
- **根因链**:现象 ← A ← B ← 根因(每环带证据:文件:行号 / 日志行 / trace observation)
- **置信度**:高/中/低 + 还缺什么证据
- **影响范围**:其他调用方/相似路径
## 解决方案
1. **hotfix**(最小改动):...
2. **根治**(若与 hotfix 不同):...
边界
- 不建目录、不写任何物料文件(与物料模式的本质区别)
- 不用 opser/gitlaber 拉码(当前目录就是代码)
- 不用 slser 查 SLS(日志来自本地文件或用户输入)
- 不自动修复(用户显式触发才 Edit)
- 不做 git commit/push/MR(用户自己掌控)
- 分析方法论可参考 maycur-ai-code-analyzer / maycur-ai-root-cause-analyzer,但结论只输出对话
依赖
- langfuse-cli(按需,仅 agent + langfuse 观测场景):
npx -y langfuse-cli --api-version 3.150.0,凭据经python -m scripts.credentials env langfuse导出 - codegraph MCP(可选,当前目录有 .codegraph/ 时优先用)
- 无 Python 脚本,纯 Claude 分析