← 最新论文
💻 computer science

The Specification as Quality Gate: Three Hypotheses on AI-Assisted Code Review

该论文指出,在缺乏可执行规范作为外部基准的情况下,单纯依赖 AI 进行代码审查会导致生成与审查模型因同源而陷入循环验证的结构性缺陷,因此主张建立“规范先行、确定性验证为主、AI 仅处理剩余架构问题”的分层质量保障架构。

原作者: Christo Zietsman

发布于 2026-03-30
📖 1 分钟阅读☕ 轻松阅读

原作者: Christo Zietsman

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇文章的核心观点可以用一个简单的问题来概括:如果让 AI 写代码,又让另一个 AI 来检查代码,但没有一个“标准答案”在旁,会发生什么?

作者 Christo Zietsman 认为,目前的行业做法(用 AI 检查 AI 写的代码)存在一个巨大的逻辑漏洞。他提出了三个核心假设,并给出了一套新的解决方案。

为了让你更容易理解,我们把软件开发想象成**“建造一座摩天大楼”**。

1. 核心问题:两个 AI 在“自说自话”

现状: 现在的做法是,AI 建筑师(生成模型)画出了图纸,然后 AI 监理(审查模型)拿着图纸去检查。
漏洞: 这两个 AI 都是同一家公司训练的,它们读的书、学的规矩、甚至“性格”都差不多。

  • 比喻: 想象两个双胞胎兄弟,哥哥画了一张可能有错误的地图,弟弟拿着这张地图去检查。如果哥哥画错了(比如把“悬崖”画成了“平地”),弟弟因为学的也是同样的知识,大概率也会觉得“嗯,这里确实是平地”。
  • 结果: 它们互相确认了错误,而不是发现了错误。这就是论文说的**“循环论证”**。没有外部的“标准答案”(规格说明书),AI 审查只是在检查代码“像不像”代码,而不是检查代码“对不对”。

2. 三个核心假设(用比喻解释)

假设一:同病相怜,错误会“传染”

  • 论文观点: 如果生成代码和审查代码的 AI 来自同一个“家族”(训练数据相似),它们的错误是相关性的,而不是独立的。
  • 比喻: 就像两个都吃同一种“坏苹果”长大的孩子。如果苹果里有毒,两个孩子都会中毒。你指望其中一个孩子去检查另一个孩子有没有中毒,是没用的,因为他们都会觉得“这苹果挺甜的”。
  • 实验证据: 作者做了一些小实验。
    • 简单错误(如数学计算): AI 都能抓出来,因为这是常识。
    • 行业潜规则错误(如航空燃油储备、医疗编码规则): 如果这些规则没写在代码里,也没写在训练数据里,AI 就会自信地胡说八道。比如,它会把错误的燃油储备量当成正确的,并告诉你“没问题”。
    • 结论: 没有外部标准,AI 审查在复杂领域会失效。

假设二:把“复杂”变成“麻烦”(Cynefin 框架)

  • 论文观点: 软件开发通常分为“复杂领域”(不知道会发生什么,只能摸索)和“麻烦领域”(有明确规则,可以分析)。AI 擅长处理“麻烦”的事,但怕“复杂”的事。
  • 比喻:
    • 没有规格说明书时(复杂领域): 就像在迷雾中开车。AI 只能凭直觉猜路,它可能会开进沟里,因为它不知道路在哪。
    • 有了可执行的规格说明书(麻烦领域): 就像给车装上了GPS 和导航仪。你告诉 AI:“必须停在红灯前,必须走这条道”。这时候,问题就从“猜路”变成了“按导航走”。
  • 关键转变: 可执行的规格说明书(比如 BDD 场景)就像**“导航仪”**。它把模糊的“我想做个好用的软件”变成了具体的“如果用户点 A,必须显示 B"。有了这个,AI 就不再是猜谜,而是做填空题。这让 AI 变得真正有用且便宜。

假设三:AI 审查只能管“剩下的”

  • 论文观点: 并不是所有错误都能被规格说明书抓住。那些抓不住的错误,才是 AI 审查真正该干活的领域。
  • 比喻: 想象一个**“三层过滤网”**:
    1. 第一层(规格说明书/GPS): 抓最明显的错误(比如红灯不停、路走反了)。这是确定性的,必须 100% 准确。
    2. 第二层(AI 审查/老练的顾问): 抓那些 GPS 没写到的“潜规则”或“结构问题”。比如:代码写得太乱、模块之间耦合太紧、或者虽然功能对了但架构设计很丑。
    3. 第三层(人类/用户): 抓“需求错了”的问题。比如:我们造了一辆完美的法拉利,但用户其实想要一辆拖拉机。这是 AI 和代码都解决不了的,必须靠人。

3. 作者建议的新架构(怎么做?)

作者建议把现在的流程倒过来,建立一个**“规格说明书优先”**的流水线:

  1. 第一步:先写“导航仪”(规格说明书)
    • 在写代码之前,先写好可执行的测试场景(BDD)。告诉 AI 和人类:我们要什么,不要什么。这是**“真理”**。
  2. 第二步:让“机器”做检查(确定性验证)
    • 用自动化脚本运行这些“导航仪”。如果代码不符合“导航仪”,直接报错,不许通过。这一步不需要 AI 猜,是硬性的。
  3. 第三步:让"AI 顾问”看结构(AI 审查)
    • 只有当代码通过了“导航仪”检查后,才把 AI 审查派上用场。这时候 AI 的任务不是找逻辑错误(因为机器已经找过了),而是找“结构问题”:代码写得乱不乱?架构好不好?有没有违背设计初衷?
    • 这时候,AI 就像一个**“经验丰富的老建筑师”**,它不看具体的砖块(逻辑),而是看大楼的结构稳不稳。

总结

这篇文章不是在说"AI 审查没用”,而是在说**“用错了地方”**。

  • 现在的错误做法: 让两个 AI 互相检查,没有标准答案。这就像让两个盲人互相摸象,谁也摸不准。
  • 正确的做法: 先给 AI 一个**“标准答案”(规格说明书),让机器先做硬性的对错判断。然后,再请 AI 来当“顾问”**,去检查那些机器看不出来的“结构美感”和“设计隐患”。

一句话总结:
不要指望 AI 去猜“什么是对的”,要先给它“什么是对的”的标准;然后,再让它去帮你看看“做得漂不漂亮”。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →