传统 Web 应用的调试链路通常是确定性的。假设有个 bug:"用户点击下单按钮后页面报错了"。你的排查路径大致是这样的:
orderService.create() 方法里抛了异常整个过程的关键特征是:问题可复现,原因可追溯,修复可验证。 你看到同一个报错,就知道是同一个原因。修完之后再触发同样的操作,不报错了就说明修好了。
AI 伴侣的调试完全不同。假设你收到一条用户反馈:"AI 回复不对,我明明告诉过它我养了一只猫,它说我没有养宠物。"
这个「回复不对」可能出在整条管线里的任何环节:
你会发现,同一个表面症状(「回复不对」),背后可能对应 6 种完全不同的根因,而且这些根因分布在管线的不同阶段。
更麻烦的是,LLM 具备非确定性。同样的输入再跑一次,结果可能不一样。 你用同样的消息测试,AI 这次答对了,并不代表上次答错的原因已经消失。这意味着你不能像传统系统那样依赖「事后复现」来定位问题。