为何不应让模型审查其自身的 AI 代码
近期一篇 arXiv 论文揭示了 AI 代码审查模式中的结构性弱点。该论文提出了一个“双缺口”框架,用于评估软件实现与需求及部署环境之间的差异。需求缺口存在于利益相关者需求与文档化需求之间,而模型缺口则是假设的部署环境与真实部署环境之间的差异。AI 幻觉通过捏造信息加剧了这两个缺口。论文指出,当生成代码的同一 AI 模型同时也负责审查代码时,它会基于同样存在缺陷的需求和环境模型进行操作。这导致了一种虚假的验证感,因为 AI 本质上只是在重新检查自身的假设和盲点。自我审查仅能捕获模型已识别为有问题的错误,而让共享其错误假设的代码通过。为有效缩小这些缺口,论文提出了两项关键策略。跨模型审查涉及使用第二个独立的 AI 模型从头重新推导需求和环境假设,从而缓解共享盲点。另一项至关重要的策略是将代码在类生产环境中运行,因为现实才是最终的验证者。部署前的评估仅是代理手段,基于执行的检查优于静态评估,因为它要求可观测的行为。论文将人类判断界定为应对需求缺口的稀缺资源,而将准确评估界定为应对模型缺口的瓶颈。鉴于 AI 生成代码的体量,一种合理的方法是:由独立模型审查 AI 生成的差异(diff),随后进行基于执行的检查。人类审查应聚焦于通过上述初始阶段的代码,以最大化人类注意力的投入产出比。虽然同模型 AI 审查可充当代码检查器(linter),但不应将其误认为真正的验证。