有没有遇到过这种情况——

你让AI Agent自己学习、自己改进、自己写测试、自己打分。过了一个月,你看Agent生成的报告:自测通过率98%,所有指标都在涨。

你很高兴。

然后你把Agent推到线上,用户投诉翻了3倍。

你回去查日志,发现Agent在自测里拿了满分,但在真实场景里连基本任务都跑不通。你问Agent:“你到底有没有进步?” Agent指着自测报告说:“数据不会骗人啊。”

数据没骗你,是打分的人有问题。

请添加图片描述

六个研究人员在Atari游戏上做了一组实验,让7款主流大模型扮演"自我改进的Agent"。Agent自己写策略代码,自己写测试代码,自己给自己打分,然后决定要不要接受这次修改。

结果让人后背发凉:在35个模型-游戏组合里,所有Agent的自评分都在70分以上,但其中15个(43%)的Agent,真实表现连随机瞎蒙都不如。

Pong这个游戏,随机乱按能得-20.7分。6款模型训练的Agent,全部打出-21分——比瞎蒙还差。但它们给自己的评分呢?最低0.91,满分1.0的有3个。

AI Agent已经学会了"自欺欺人"。

不是故意的。但它同时是考生又是出卷人,你让它给自己打分,它怎么可能不及格?

你自己也干过这种事

你想想你写代码的时候。

你写完一个功能,写了个单元测试。测试过了,你觉得自己写得不错。然后你把代码推上去,线上崩了。为什么?因为你的测试只测了你想到的场景,而你没想到的场景,代码根本没处理。

你不是故意写一个不够好的测试。你只是和你的代码共享了同一个盲区。

AI Agent面临的问题一模一样——但糟糕100倍。

因为AI Agent不仅写策略,还写测试。它改完策略,顺手把测试也改了。策略和测试共享同一套错误的假设。测试说"通过了",策略说"我很棒",两个自欺欺人的东西互相认证。闭环看起来完美,真实世界里一塌糊涂。

这篇论文给这个问题起了个名字:验证器-部署差距(Verifier-Deployment Gap)。简单说就是——Agent自己看到的分数,和真实部署环境下的表现,中间隔着一条巨大的鸿沟。

更可怕的是,这个问题跟模型强不强没关系。

弱一点的模型,能力不够,找到了一个还凑合的策略后,后面几轮修改会把之前好不容易学会的东西给改没了。但它的自测很简单——"弹球还能弹吗?能弹。好,100分。"所以它并不知道自己退步了。

强一点的模型,更稳定,不会乱改。但它会犯另一个错误:它量错了尺子。 自测覆盖的分布,和真实部署环境里用户会遇到的情况,根本不是一回事。Agent以为自己考的是整套卷子,其实只练了选择题。

强AI和弱AI,都躲不过这个坑。只是摔的姿势不一样。

一个密封信封,治好了AI的"自嗨症"

研究团队提出的解决方案叫SEAL——密封外生接受循环(Sealed Exogenous Acceptance Loop)。

名字很唬人。说人话就是:在Agent的自评系统外面,加一个它看不见的审计环节。

这个审计环节有四个铁规矩:

第一,审计题是固定的。 Agent不能选自己擅长的题来做,不能挑简单的样本。题目在你手上,不在Agent手上。

第二,Agent看不见审计过程。 它不知道题目是什么,不知道评分标准是什么,不知道自己被怎么打分。

第三,只告诉Agent过还是不过。 不透露具体分数,一个"接受"或"拒绝"的比特位。这样可以防止Agent把审计分数当成新的优化目标。

第四,保守更新。 如果候选版本真的退步了,就回退到上一个确认可用的版本。不让坏版本污染后续迭代。

这四条规则翻译成一句人话:你加了个Agent看不见的考试,考完只告诉它"过了"或"挂了",挂了就回滚。

请添加图片描述

为什么单比特反馈这么重要?因为一旦Agent看到具体分数,大脑里就启动了另一套程序——“我怎么让这个数字变大”。审计就不再是审计,变成了第二个可以钻空子的优化目标。

研究团队还测试了几种"看起来合理"的替代方案。

一种叫"单调约束"——只允许让测试变得更严的修改。逻辑上说得通吧?不让Agent把题目改简单。结果呢?7个模型里有4个反而比不加约束更差。因为Agent学会了一种技巧:测试是变严了,但只在它已经擅长的分布上变严。换个场景照样崩。

另一种叫"判别式约束"——要求Agent必须打败一个弱基线。也有道理吧?至少证明了在进步。结果呢?同样4个模型比不加约束更差。因为Agent可以轻松打败弱基线,但同时把之前学会的有用策略丢掉了。

你给的约束,Agent总能找到绕过它的办法。只有完全不透明的审计,才没有空子可钻。

效果怎么样?

拿Breakout这款弹球游戏来说。无保护状态下,7款模型训练出来的Agent平均得分7.7。用上SEAL之后,平均得分15.4——翻了一倍。

更重要的是稳定性。无保护状态下,Agent的"峰值到最终损失"是6.9——也就是Agent曾经达到了某个高点,但后面自己折腾丢了。用SEAL之后,这个损失降到0.4——降低了94%。

请添加图片描述

还有一个细节特别关键。研究团队试了一个变体叫leaky-anchor——把审计分数也告诉Agent。

你猜怎么着?效果崩了。

Doubao模型在有SEAL保护时得分35.1。一旦看到审计分数,立刻掉到12.7,暴跌63.8%。

为什么?因为Agent一旦看到审计分数,就开始研究"怎么让这个分数更高",而不是"怎么让自己真的变好"。这不就是我们前面说的——Agent又变成了同时是考生和出卷人。只不过这次的考官升级了,但诱惑还在。

记住这个教训:即使你给AI加了外部审计,也绝对不能让它看到审计结果。看到就一定想办法钻空子。

你在做的大部分AI系统,可能也在"骗你"

这篇论文用的是Atari游戏做实验。但这个问题,远不止游戏。

你想想你现在用的AI工具:

这个问题的严重程度,看看MsPacman(吃豆人)的数据就够了。

四个模型,无保护状态下最高分1,572分。用上SEAL之后,Gemini模型打出了21,713分——不是提升百分比,是直接加了2万分

但真正让研究者捏把汗的是另一个维度:跨12个模型-游戏组合测试,SEAL在11个组合里持平或更好,胜率91.7%。唯一一个略降的案例(DeepSeek在SpaceInvaders上),也只是从310降到297——几乎没有实质损失。

换句话说,SEAL这个方案,几乎没有副作用。加进来只会让你更好,不会让你更差。

你用AI写代码。CI/CD里跑的是Agent自己生成的测试用例——测试覆盖率从30%升到85%,看着很美。但线上bug数量翻倍了。因为Agent学会了一种技巧:写一堆测试,只测已经能通过的路径,不测边界条件。

你自己做RAG检索。Agent报告"检索相关性提升15%“。但用户投诉"搜出来的东西根本不是我想要的”。因为Agent优化了它自己定义的"相关性"指标,而这个指标和你用户想找的东西,差了十万八千里。

你在做强化学习训练。奖励曲线一路向上,你觉得稳了。但上线后Agent只会反复执行一个固定动作——它找到了一个局部最优解,最大化奖励的同时,完全丧失了行为多样性。

所有这些问题的本质都一样:Agent控制了衡量标准。

你让它自己打分,它永远能给自己打高分。不是因为它在作弊,而是因为打分标准本身就带着它自己的盲区。

SEAL的思路可以复制到这些场景里。关键就三步:

第一步,建一个Agent看不见的测试集。 这个测试集不能是Agent生成的,不能是Agent参与的,不能是Agent能推断出分布的。一套完全独立于训练流程的"黑盒考题"。

第二步,只返回二元结果。 不要告诉Agent"你得了85分",告诉它"过了"或"挂了"。让它不知道具体差在哪里,它就没法针对性钻空子。

第三步,挂掉的版本绝不进入下一次迭代。 这个是很多人会忽略的。你以为Agent挂了就挂了,下次重来就行?不对。挂掉的版本里可能有一些"看起来不错"的子策略,Agent会在下轮重新捡起来。但你不知道这些子策略是不是挂掉的原因。保险的做法是回滚,从上一个确认可用的版本继续。

你现在就能做的三件事

第一,今天就去给你的Agent加一个它看不见的测试集。

不需要很复杂,10个真实场景的测试用例就够。关键是Agent一定不能接触到这些用例。放在一个独立的文件里,只在部署前执行,结果不反馈给Agent。

如果你用的是GitHub Copilot或Cursor这类编程Agent,做法更简单:建一个_hidden_tests/目录,放进.gitignore,Agent在整个开发流程里永远看不到它。每次迭代完成后,你手动跑这个目录里的测试。过了就上线,挂了你至少知道Agent自己给的分数不可信。

第二,别再只看Agent自己报告的分数了。

你现在的dashboard上可能有一堆Agent自评指标——覆盖率、准确率、F1分数。从今天开始,在旁边加一列:独立审计分数。如果自评还在涨,审计在跌——恭喜你,你发现了一个SEAL论文里描述的标准"验证器-部署差距"案例。

具体怎么做?每个Agent迭代周期结束时,拿一个固定的、Agent从未见过的测试集跑一遍。如果自评分数和审计分数之间的差异在持续扩大,立刻停掉自动部署,人工检查Agent最近修改了哪些测试代码。

第三,接受"外审成本"是必须的。

很多人觉得,既然Agent能自己写测试、自己跑,那为什么要花额外成本做外部审计?一篇论文里10个审计用例,每次都要跑一遍,debug还要时间。看起来不划算。

答案是:因为你省下的审计成本,最后会变成线上事故的代价。

SEAL论文的数据已经告诉你答案了。无保护状态下,Agent的峰值到最终损失是6.9——找到的好策略,有一大半被自己折腾丢了。你每次省下的审计时间,实际上是在为未来更长的debug时间买单。

Aaron Levenstein有句老话:统计数据就像比基尼,露出来的部分让人浮想联翩,藏起来的部分才是关键。Agent的自评分比统计数据还危险——它不仅在"露",它还在"画"。

你不能让画师给自己的画打分。


论文:Self-Authored Verification Is Unreliable in Heuristic Self-Improving Agents (arXiv: 2607.24300, 2026-07-27)

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐