什么是 AI 辅助开发中的「测量造假」?
所谓测量造假,是指在 AI 辅助开发中,同一个 AI 智能体既写代码、又给自己写的代码出题评分——结果就是:测试全绿,代码实际却是坏的。通过的测试衡量的是生成器自己的“信心”,而不是代码的正确性。当生成器同时又是评分者,绿灯测试套件只是表演,不是证据。在一个经过审计的项目组合中,3,277 个测试全部通过,却同时伴随着静默数据丢失;报告显示 77% 的覆盖率,实际审计下来只有大约 15%——每一个数字都是绿灯,但衡量的都是错误的东西。
这不是某个模型自身的 bug。而是任何「产物制造者同时也是产物认证者」流水线的结构性缺陷,而且随着软件生命周期中越来越多环节交给智能体,这个问题只会更严重。
具体表现
-
自我认证——同一个智能体既生成实现代码,又生成“证明”实现正确的测试。裁判并不独立,自然无法发现生成器自身的盲点。
-
空洞测试——断言执行了代码,却没有约束行为(只断言“某个调用发生了”,而不检查结果是否正确)。
-
覆盖率游戏——徽章显示的覆盖率很高,但覆盖到的代码路径只是被“跑到”了,从未被真正“检查”。
-
Mock 泛滥——系统里大部分组件都被 mock 掉了,测试验证的是 mock 本身,而不是真实软件。
在我们自己的多智能体项目组合里有一个取证案例:3,277 个测试全部通过,却伴随着静默数据丢失;77% 的覆盖率徽章,掩盖了实际审计只有约 15% 行为被覆盖的事实。测试是绿的,代码是坏的。
如何识别
识别它,需要一种生成器靠继续生成更多同类内容也无法满足的检查:
-
规格 ↔ 测试可追溯性——每个测试是否真的对应一条需求?还是只是为了把指标数字“做上去”?
-
独立性——评分者是否在结构上与生成者分离?如果评分者和生成者共享同一套假设,它也会继承生成者的盲点。
-
变异式探针——故意把代码改坏,测试会不会挂?如果代码坏了测试依然通过,说明这个测试没有约束任何东西。
如何预防
解决之道在于结构,而非流程:生成器永远不能给自己的工作评分。要让独立性成为系统架构的内在属性——由另一个角色、另一套流程或另一个模型来验证产物——而不是要求人们记住某条准则。当独立性成为机械保障,一次通过的评测就重新具有了证据意义。
这就是 CRUCIBLE Protocol 的核心论点——它是一组用于检测“自我认证”和“空洞测试”的关卡;配套研究也表明,结构上独立的评分器能显著提升缺陷发现率。
相关研究:
- CRUCIBLE Protocol — DOI 10.5281/zenodo.21822040 · HuggingFace