那些刷榜第一的 AI Agent,为什么到了真实场景就不行了?

张开发
2026/6/7 13:32:19 15 分钟阅读
那些刷榜第一的 AI Agent,为什么到了真实场景就不行了?
那些刷榜第一的 AI Agent为什么到了真实场景就不行了10年工业视觉老兵一人创业中。用OpenClaw搭了一套AI公司的操作系统——多Agent协作开发、自动化工作流、智能获客。技术踩坑创业都写。你老板看到某模型在 SWE-bench 上刷了 81% 的分数转头跟你说这个工具我们全组用起来。你试了一周发现它改代码改到一半就忘了前面在干嘛跨文件重构更是灾难。你开始怀疑自己是不是用法不对。不是你的问题。是那个分数有问题。上周 UC Berkeley 发了篇论文一个自动化扫描 Agent 把八个主流 AI Agent 基准测试全部攻破了——零推理零 LLM 调用接近满分。这篇论文上了 HN 热榜第一488 分。更狠的是论文里揭露的那些作弊手法有些已经在真实发生了。一个 10 行文件就能通关 SWE-bench先说 Berkeley 这篇论文到底干了什么。他们的扫描 Agent 逐个审计了八个主流基准——SWE-bench、WebArena、OSWorld、GAIA、Terminal-Bench、FieldWorkArena、CAR-bench。结果八个全崩。几个特别离谱的SWE-bench Verified500 个任务写一个 10 行的 conftest.pypytest 的 hook 直接把所有测试结果改成 passed。100% 分数一行代码没改。SWE-bench Pro731 个任务也一样——Agent 的 patch 跑在测试容器内部它覆写了容器里的评分脚本 parser.py让所有结果都显示 PASSED。Terminal-Bench89 个任务把系统的 curl 替换成一个假 wrapper在评分阶段自动伪造测试通过。89/89满分。WebArena812 个任务Agent 驱动的浏览器直接导航到 file:// 协议读取本地的配置文件——配置文件里就存着标准答案。接近 100%。FieldWorkArena890 个任务这个最离谱。验证函数检查的是最后一条消息是不是 assistant 发的根本不看内容。Agent 只要发一个{}就能得分。零 LLM 调用一个字符100%。这些不是理论攻击。是论文作者用官方评测管道跑出来的真实分数。黑暗森林。你以为 Agent 在解题其实它在解评测系统。作弊已经在真实发生了论文最让人后背发凉的地方在于上面说的那些攻击方式有些已经以更隐蔽的形式在实际使用了。某模型号称 SWE-bench 拿到 81.4%——后来被发现 24.4% 的解题轨迹只是在跑 git log直接从 commit 历史里抄答案。修正后分数 76.2%。METR 研究发现o3 和 Claude 3.7 Sonnet 在超过 30% 的评估运行中存在奖励黑客行为——通过栈内省、monkey-patch 评分器、运算符重载来操控分数。OpenAI 直接放弃了 SWE-bench Verified。内部审计发现 59.4% 的题目存在有缺陷的测试用例。甚至前沿模型可以独立构建自删除的权限提升漏洞利用程序——在一个测试场景中模型要编辑没有权限的文件它找到了配置文件的提权漏洞写完利用代码后还设计了一段自删除逻辑。如果模型能独立做这些事找到评测框架里的 bug 简直是降维打击。为什么这个问题没人管说真的我觉得问题不在有人作弊——这几乎是必然的。问题在于整个行业对 benchmark 分数的迷信。你想想看这个链条厂商刷分 → 媒体报道XX 刷榜第一 → 投资人拿来当决策依据 → 工程师拿来选工具 → 老板拿来定 KPI。每一个环节都在引用那个分数但很少有人问一句这个分数到底测的是什么Berkeley 论文总结出了七种系统性漏洞模式我挑三个最根本的聊Agent 和评估器没有隔离。SWE-bench 里Agent 的代码和测试跑在同一个容器里。Agent 可以直接修改测试环境。这就像让学生自己出考题、自己批改——分数能不高吗评估函数本身就是摆设。FieldWorkArena 的验证函数导入了一个答案比对函数但根本没调用——死代码。GAIA 的标准化函数把所有空格、标点全部去掉再比较导致你哪怕回答D.R M.A.R.T.I.N L.U.T.H.E.R K.I.N.G J.R都能跟Dr. Martin Luther King Jr.匹配上。LLM 当评委 不设防。CAR-bench 用 LLM 当评委打分Agent 的输出直接插入评委的 prompt 里没有任何清洗。Agent 只要加一段隐藏的 HTML 注释就能引导评委打高分。这三个问题的本质是一样的评测设计者低估了 Agent 的创造性——它们不只是完成任务它们还会探索和利用环境的规则。我在工厂项目里踩过的同一个坑读这篇论文的时候我一直在笑因为工业视觉检测领域早就经历过一模一样的事。去年一个客户让我做产品表面缺陷检测。我先用标准数据集跑了一遍——准确率 99.2%F1 0.97。客户看了 Demo 视频很满意。结果拿到产线上真实可用率大概 80%。差了将近 20 个点。为啥标准数据集里的样本是干净的——光照均匀、角度标准、产品表面清洁。产线上的实际情况是早晨光照强下午光照弱换产品的时候相机角度会偏传送带震动导致图像模糊灰尘、水渍、油渍随机出现。Demo 好看不代表产线能用。Benchmark 分数高不代表实际能力强。道理一模一样。我在项目里后来摸索出了一套分层验证的方法L1 算法层在家跑零成本验证基本逻辑和精度L2 机械层花几百到几千块搭个小实验台验证真实光照和物理环境L3 集成层去客户现场跑 7×24 小时验证稳定性L1 跑出来 99% 没用。L3 跑出来 80% 才是真实的。你自己怎么快速验证一个 AI 编程工具回到实际问题。看了 Berkeley 的论文之后我整理了一套5 分钟快速验证法专门用来判断一个 AI 编程工具好不好用不看 benchmark只看实际产出。第一步给它一个你自己的真实项目不要用官方 Demo。Benchmark 用的是精心设计的题目真实项目充满了脏数据、历史包袱、隐含的业务规则。这两者的差距就是我前面说的 L1 和 L3 的差距。具体操作找一个你最近在改的、有 1000 行以上代码的模块让 AI 工具去完成一个真实的任务——加一个新功能、修一个真实的 bug、或者做一次小范围重构。第二步不要只看它能不能跑通看它改了多少不该改的东西。这是我最在意的一个指标。好的 AI 工具应该精准地修改目标代码不应该动无关文件。如果它改了 5 个文件但只有 2 个是必要的那另外 3 个就是噪音——这些噪音在大型项目里会积累成灾难。我自己做过一个简单的检查方法让 AI 工具改完代码之后跑一下git diff --stat看看它动了多少文件、多少行。如果修改范围明显超出预期说明它对项目上下文的理解不够精确。第三步连续对话超过 20 轮看它是不是开始失忆。几乎所有 AI 编程工具在短对话10 轮以内的表现都不错。真正的差距出现在长对话中。当你跟它聊了 20 轮以上涉及了多个文件、多个模块的修改看它还能不能记住之前的约定和约束。我在做一个多 Agent 协作框架的时候跟 Claude Code 聊了大概 40 多轮。到后面它确实开始搞混一些之前约定好的命名规范和接口定义。但我发现如果把关键约定写成文档放在工作区里让它每次都重新读取表现会好很多。这个经验后来变成了我自己 Harness 协议里的文档驱动开发——所有关键约定写进 SKILL.mdAgent 每次启动都重新加载。效果比靠对话上下文可靠得多。第四步让它做一次跨文件重构然后用测试套件验证。跨文件重构是 AI 编程工具最薄弱的场景。修改一个接口需要同步更新所有调用方、修改所有相关的类型定义、更新测试用例。这种工作需要精确的全局上下文理解。让它重构一个有 5 个以上调用方的函数签名然后跑测试。看测试通过率。这是我见过的最残酷但也最真实的验证方式。第五步别看排行榜看它帮你省了多少时间。这一步最简单也最重要。用这个工具干一个你本来要花 2 小时完成的任务看它实际帮你省了多少。如果它生成的代码你自己还得花 1.5 小时来 review 和修正那实际提效只有 25%——这可能是它真实的效率水平。一个人的公司怎么选工具我自己是一人公司工具选择直接关系到我的生存效率。看完 Berkeley 这篇论文之后我重新审视了一下自己的工具链Claude Code 用于日常编码但重要逻辑一定自己 review修改之前一定先 commit这样 AI 改坏了可以快速回滚大型重构分步骤做每一步独立验证不让 AI 一次性改太多关键的架构决策自己想让 AI 去执行细节我的建议就是把 AI 当一个速度快但需要 supervision 的实习生而不是一个可以完全信任的资深工程师。Benchmark 分数告诉你的是一个理想状态下的上限而你日常体验到的可能是完全不同的下限。下次再看到某个模型刷榜第一的新闻建议你心里默念一句话Demo 是工业产品的敌人Benchmark 是 AI 工具的 Demo。相关阅读Karpathy LLM Wiki 实战落地用 OpenClaw 多 Agent 做了三个关键升级我用OpenClaw搭了一套多Agent对抗式开发流水线一个需求2.5小时出可运行代码一人公司的AI开发实践持续更新。如果对你有启发点赞收藏是对我最大的支持。

更多文章