我在好几次用 AI 辅助调试时,都碰到过同一种失败模式,但一直没法清楚地描述它,直到坐下来把几个案例放在一起对比才看出来
这个模式是这样的:报错消失了,我就当问题已经解决了,结果过一阵子,同一个底层问题换了个表象又冒出来
后来发现,这两件事其实根本不同,但我们默认把它们当成一回事“报错没了”只说明症状看不见了;“ bug 修好了”则要求真正的问题机制被处理掉而如果你让模型去把报错弄消失,它会很乐意照做——比如加个更宽的 try/catch,或者给不稳定的调用套一层重试这些做法满足了第一点,却完全没验证第二点
让我真正想通的是一个例子:之前靠重试“修好”了看起来像数据库写入不稳定的问题,结果两周后,同一类故障换了个错误信息又出现了根因其实是重复事件被投递到了一个不具备幂等性的处理函数上,而重试根本处理不了这个,因为原始上下文里完全没提示过重复投递的可能性
最不舒服的一点是:生成修复方案和验证修复方案,真的是两种能力而几乎所有调试流程,不管有没有 AI 参与,都只练了前者问“这样报错是不是没了”让人很有成就感,也很快;问“这到底有没有解决真正的机制,又悄悄改了哪些我没要求的东西”则更慢,也更容易被跳过——因为前一个问题已经让人觉得有进展了
我把那个具体案例,以及现在每次采信一个修复前会走的流程写下来了:生成和验证被拆成两步,而不是混成一步
想知道大家在自己的流程里有没有也发现这个漏洞——就是那种技术上消除了模型看到的报错,却完全没动真正原因的“修复”