用 AI agent 调试:系统化排查,而不是瞎猜
agent 调试的最佳方式是:有可复现的错误、真实的日志,先提出假设再动手修——而不是直接说“把这个 bug 修了”。
最常见的错误
很多人只丢给 agent 一句“把这个 bug 修了”——没有错误信息,没有上下文。于是 agent 只能瞎猜。系统化的调试方式完全不同。
第一步:让错误可复现
把触发错误的命令交给 agent,让它自己把错误跑出来。Claude Code 文档正是这样建议的:告诉 agent 怎么复现问题、怎么拿到 stack trace。一个 agent 能自己触发的错误,也是它在修完之后能自己验证的错误。
第二步:喂给它日志和 stack trace
把完整的错误信息贴进去,而不是用自己的话描述它。也可以用管道:cat error.log | claude -p "解释一下根本原因"。同时说明这个错误是每次都出现,还是偶尔才出现。
第三步:先假设,再修复
先让 agent 列出可能的原因,按可能性排序——然后有针对性地验证其中一个。关键是:要解决根本原因,而不是症状。官方文档把这条写成了一条 prompt 规则:“address the root cause, don't suppress the error”。
诊断工具
如果是 Claude Code 本身出了问题,可以用 /doctor:它会自动检查安装情况、设置、扩展和上下文使用情况。如果 claude 根本启动不了,可以直接在 shell 里运行 claude doctor。
示例
prompt:“npm test 失败了。这是完整的 stack trace:[粘贴在这里]。先复现这个错误,说出最可能的原因,然后在修复之前先写一个会失败的测试。”
🛠️ 练习——自己动手试试
在一个练习项目里故意埋一个小 bug(比如变量名里的一个拼写错误),然后让 agent 系统化地把它找出来。
- 触发这个错误,把完整的错误信息和 stack trace 复制下来。
- 把错误信息和复现命令都给 agent——先要求它给出一个假设,还不要修复。
- 在你看过这个假设之后,再让它动手修复,并让 agent 用同一个命令验证修复是否成功。
✅ 自查清单
- ☐ agent 在改动任何东西之前,有没有说对根本原因?
- ☐ 它有没有用复现命令来证明修复有效(展示了输出),而不是只说一句“搞定了”?
- ☐ 如果你只写了一句“这里有个 bug”,会缺少什么?
小测验
当需要 agent 修复一个 bug 时,最合理的第一步是什么?
来源
- Claude Code 文档:Common Workflows(Fix bugs efficiently) ↗ code.claude.com
- Claude Code 文档:Best Practices ↗ code.claude.com
- Claude Code 文档:Troubleshooting(/doctor) ↗ code.claude.com