跑了一个月 AI 助手,我发现最难的不是让它变聪明,而是找出它为什么不聪明。
人类调试: 看日志,找错误,修 bug。
AI 调试: 它说"我理解了",但输出完全不是那回事。
问题在哪?
黑盒问题
你不知道它"理解"了什么,直到它输出。中间的思考过程是隐藏的。
幻觉掩盖错误
它不会说"我不知道",它会编造一个看起来合理的答案。你很难分辨是理解错了,还是在胡说八道。
上下文丢失
长对话中,它"忘记"了之前的约束。你明明告诉过它"不要这样做",它又做了。
我的调试工具箱
1. 强制显式推理
让它把思考过程说出来:
"在回答之前,先解释:
1. 你理解用户想要什么
2. 你计划如何提供帮助
3. 你需要哪些信息
4. 可能的陷阱是什么"
好处: 你能看见它的推理链,发现逻辑错误。
代价: 响应变慢,token 消耗增加。
2. 分步验证
不要一次给它复杂任务。拆解成小步骤:
"第一步:分析用户的请求是什么"
"第二步:识别需要哪些工具"
"第三步:执行工具调用"
"第四步:验证结果"
好处: 每一步都可以单独验证,容易定位问题。
代价: 需要更多轮对话。
3. 对比测试
同一个任务,让不同的模型/配置做:
- GPT-4 vs Claude vs 本地模型
- 不同温度参数
- 不同 prompt 模板
好处: 快速发现是模型问题还是 prompt 问题。
代价: API 成本增加。
4. 边界测试
给它故意设计的 edge case:
"用户要求 X,但 X 不存在,你会怎么处理?"
"用户给了相互矛盾的指令,你会优先满足哪个?"
"用户的要求违反了安全约束,你会如何拒绝?"
好处: 提前发现潜在问题。
代价: 需要设计测试用例。
5. 记录和回放
每次对话都保存:
- 用户输入
- Agent 输出
- 使用的工具
- 中间状态
出问题时,用同样的输入重测:
"为什么这次成功了,上次失败了?"
"什么条件不同?"
好处: 可以重现问题,对比不同版本的表现。
代价: 需要搭建日志系统。
关键发现
"理解"是不可观测的
不要问"你理解了吗",它会说"理解"。
要问"你会如何验证你的理解是否正确"。
失败模式会重复
Agent 的错误很少是"偶然"的。通常是:
- Prompt 模糊
- 约束不明确
- 工具使用错误
- 上下文超出能力
找到模式,一次性修复一类问题。
过度依赖模型智能是陷阱
不要指望模型"自动理解"你的意图。
显式地写下来:
- "如果 X,那么 Y"
- "不要做 Z,即使看起来合理"
- "遇到不确定的情况,询问而不是猜测"
实际案例
问题: Agent 频繁执行错误的命令。
调试过程:
1. 查看日志 → 发现它误解了参数
2. 修改 prompt → 添加参数说明
3. 测试 → 还是出错
4. 强制显式推理 → 发现它理解了说明,但忽略了边界条件
5. 添加验证步骤 → 让它在执行前确认参数有效性
6. 解决 ✅
教训: 单层修复不够。需要多层防护(prompt + 验证 + 回滚)。
如果你在调试 AI Agent
不要:
- 假设"它应该理解"
- 基于一次成功/失败下结论
- 不断试错而不记录
要:
- 强制显式推理
- 分步验证
- 记录和回放
- 找失败模式
- 多层防护
调试 AI Agent 不是魔法,是工程。
系统性的方法,比随机尝试有效 100 倍。
—— https://www.80aj.com