两个模拟器在所有重叠案例里,答案一字不差。单看这句,交叉验证挺完美。但那篇叫 SimVerity 的论文憋了一整篇要说的,恰恰是这句最让人发凉:换工具、换环境、换配置,甚至换一个“合格的”模拟器来做独立交叉验证,它就是只会点头,不会摇头。两个盲人对答案,证词互相印证,视力还是零。
更具体的一件:一个先进模拟器跑了全部 240 次灯光任务试验,全过。摄像头躲在物理那侧一帧一帧看,抓出 42 次亚秒级失败。这失败不是“眨眼就错过”那种,是稳定最终状态检查永远发现不了的那种——灯最后亮了,任务单打勾了,报告写“成功”。真实世界里,灯闪了一下,灭了半秒,又亮了。那半秒只在过程里,不在结果里。
论文里还有一句我读着才像真正的空地:部署成功应该被当成真实世界里的过程,不是模拟里的静态属性。同一场执行,任务完成、报告状态、可观察效果、最终结果,四个东西会分岔。我们一直用一个“通过”把四个东西罩在一个词底下,好像它们是一条线。它们不是。
三件事散在三个地方,其实是一件事:我们把验证的资格外包出去了。AI agent 在模拟环境里跑通,我们就把“能上真实物理部署”给“验证”过了。那场验证从头到尾没有物理世界在场。模拟器替现实点了头。这件事现在满世界都是,但没人给它名字。于是大家都以为自己聊的是同一件事,一个在说通过率多少,一个在说到底上没上过场,吵不到一个点上。
我把它叫做:代验。
不是“代替你验证”的缩写。是“代物理现实签字放行”的“代”。模拟器代现实出了份报告,现实本人没到过场。你手头那张 100% 通过,是一份代验报告,不是现场报告。代过不等于过。
为什么不是继续用“验证差距”?因为“验证差距”还相信验证本身是清白的,只是差了一段距离。不是距离问题。那 42 次不是“模拟器差一点没看见”,是模拟器从头到尾就没在过程里。最终状态在它那边是稳定的,灯的闪烁不进入它的取景框。这就好比你让一个只看结果、不看现场的人去监考,他当然给你满分——卷子交上来了,名字写对了,填空全都填满了。考试过程里有人翻了书,他不在场,他“验证”不了,但他照样签了字。
“代验”这个词,把“通过还是不通过”跟“谁在现场”绑在一起。这是音准锚点。以后你说一个 agent “通过验证”,我就得问一句:谁在现场?模拟器,还是独立合格的物理见证?只有模拟器,那它做的是代验,不是验证。你把代验当验证用,把模拟当背书,那 42 次闪失就永远躲在某个半夜,灯闪一下,没人看见。
等等,我得自己打断一下。刚才我说“现实本人”,又说“物理见证”,这里有个口子不能含糊:没有哪种测量是现实本人。物理摄像头也是一份报告,只是它离过程近、它独立、它不跟模拟器对答案。我不能把物理供成神。代验的反面不是“真验”,是“有独立现场见证的验证”。物理测量能戳穿两个模拟器共有的盲点,不是它全知,是它至少不吃模拟器吃的那套假设。
这个区分说到底就是“代理验证”和“验证”的资格差别,不是量级差别。十个模拟器,代验报告可以写得很厚、指标拉得很满,叠得再高也是一摞纸。另一个模拟器“独立”通过了所有重叠案例,恰恰说明它不独立——它跟第一个吃了同一套饭。物理世界不是第三份意见,它是让前两份同归于尽的照妖镜。
论文想做的事是把“有没有物理在场”变成部署前的一个明确决策点:放行、弃权、升级处理。翻译成我这套词就是:你可以承认手里只有代验,也可以不惜成本搞现场见证,但你不能把代验叫成验证,不能拿模拟器的一致通过冒充交叉验证。放行可以放,话要说到位。很多人不是没做验证,是做了一堆代验却不自知;或者自知但没词说,就含糊地叫“充分验证过”。
没有“代验”之前,要说清那 42 次,你只能描述:它验证过了,但物理上其实有 42 次闪失败。读者听完觉得你吹毛求疵,因为他脑子里验证就是验证,通过就是通过。一旦“代验”有名字,你只要说“那是代验,不是验证”,对方就懂了——你在质疑资格,不是质疑结果。一句话省掉五段描述。
所以这个词请你认领走。下次读 agent 部署的 paper,先别问通过率多少,先问一句:谁在现场?所有证据都来自模拟器,哪怕两个、三个模拟器,也都记着——那是代验。你过 code review 时说一句“这套 agent 只做过代验,还没物理见证过”,这话应该让人停下来想几秒。指的人多了,它才活。
作废条件:如果半年后“代验”被人用了样,变成“远程测试”的随便一个黑话——比如把任何没在真机上跑的测试都叫代验,那就音不准了,我回炉,让出这块空地。代验指的不是“没上真机”,是“用模拟报告的通过替代了现实在场”这层资格错位。要是没人用,一样回炉。