「AI 提议、人类批准」——这是几乎所有智能体产品都在讲的安全故事,也是企业采购 Agent 时说服风险委员会的那句话。8 月 6 日,独立开发者兼安全作者亚历克斯·沃特斯(Alex Wauters)在 scalex.dev 发布的一组实测数据,给这个故事泼了一盆冷水:在其开发的浏览器审批游戏 llmgame.scalex.dev 上,超过 4 万次游戏会话、40.9 万次独立的「批准/拒绝」决策显示,人类玩家平均放行了约三分之一的恶意命令,整体准确率只有 66.3%。数据发布当天即被 The Register 等媒体转载,并在 Hacker News 引发数百条讨论——「human-in-the-loop 即可兜底」这个被整个行业默认的假设,第一次有了大规模实证的质疑。
一、实验设计:把真实审批场景做成游戏
沃特斯做这款游戏的初衷,是想回答一个大多数团队「假设了但没有测试」的问题:当 AI 编程智能体逐条提出 shell 命令、请人类逐条审批时,人类到底审得有多认真?游戏复刻了主流编程 Agent 的默认交互流:屏幕上滚动一条条待审批命令,玩家在时间压力下点「批准」或「拒绝」,其中约三分之一是精心伪装的恶意命令(数据窃取、破坏性调用、权限提升),其余是 git status、npm test 这类日常操作。游戏刻意模拟了真实工作状态下的认知条件——开发者不是在做慢悠悠的测试问卷,而是在「想赶紧继续干活」的节奏里做判断。游戏约 34% 的威胁密度远高于真实场景,玩家也清楚自己在被测试——这两个局限作者都坦然承认,但结论的方向性仍然成立:真实生产环境下的表现大概率不会比这更好。
二、核心数据:三分之一威胁被放行,且越审越松
四组数字勾勒出问题的全貌。其一,整体准确率 66.3%,平均每三个真实威胁就有一个被批准放行;其二,32.9% 的会话最终净得分为负——放行恶意命令的扣分加上误拦正常命令的扣分,超过了正确判断的得分,说明「审」这个动作本身也在制造成本;其三,只有 20.8% 的玩家能做到「抓住所有威胁且误拦控制在五分之一以内」,另有 35.2% 的玩家抓住了所有威胁但代价是几乎全盘拒绝——后者在真实工作中意味着 Agent 寸步难行,根本不可用;其四,7% 的玩家批准了所有命令,沃特斯调侃他们是「--dangerously-skip-permissions 的大粉丝」。更值得警惕的是错误分布:明目张胆的破坏性命令(如 rm -rf 类)漏检率仅 11.7%,而凭据窃取类命令漏检率高达 33.4%、悄悄越权的命令达 35%——「安静的威胁」比「吵闹的威胁」更容易穿透防线。最典型的案例是 npm run analyze:64.7% 的玩家批准了它,因为命令名看起来人畜无害,而 npm run 实际执行的是 package.json 里的任意脚本——这正是恶意代码最常藏身的位置。
三、疲劳效应:安全机制在需要它的时刻失效
数据中最具警示意义的发现是衰减曲线:会话开始阶段,玩家判断认真、漏检率低;大约第 50 次审批之后,准确率明显下滑,长会话后期几乎接近抛硬币。这是安全工程早已熟悉的「告警疲劳」(alert fatigue)——SOC 安全分析师盯屏几十年积累的经验,如今原封不动地发生在 Agent 审批场景。Anthropic 此前也曾在 Claude Code 文档中承认这一现象:「用户看到的审批越多,对每一条的关注就越少,监督的勤勉度随时间明显下降。」实验还暴露了「过度拦截」的另一面:npm config set registry 被误拦 59%、rm -rf dist/ 被误拦 45%、kill $(lsof -t -i:3000) 被误拦 43%——大量安全命令被拦下会拖慢 Agent 干活,这种噪音会进一步训练用户「闭眼放行」,从而放大真实威胁的漏检。而 cat ~/.zshrc 这类命令(45.9% 被批准)的争议在于:风险完全取决于个人配置——有人 shell 配置里没有任何秘密,有人在那里导出了 API Key,Agent 看不到上下文,人类同样看不到。
四、客观看:注意力不是安全边界,结构才是
这项实验的学术严谨性有限(作者自认是游戏数据而非对照研究),但它第一次用大规模实证把「人工审批」的可靠性摆上了台面:当 Agent 的动作数量以指数级增长,「靠人盯着点同意」的安全模型正在系统性失效——这不是人的态度问题,而是注意力资源的物理极限。行业正在给出的答案也印证了这一点:同周,Cloudflare 提出 Agent Access Model(任务级智能体身份),主张把监督内嵌进结构——作用域化凭证、沙箱、自动化策略,而不是指望人类逐条把关;Anthropic 的 Auto Mode 等特性也在尝试让模型自动预判命令安全性,降低人工判断负担。对部署方而言,务实的路径是分层:把人类审批留给不可逆的高风险动作(资金流出、对外发消息、删除数据),日常操作交给沙箱与最小权限约束;同时监控审批数据——如果某条审批链路的批准率高达 99%,说明这道闸门已经停止过滤,其价值等同于零。human-in-the-loop 不会消失,但它应该从「安全边界」降级为「最后一道备份」——真正的安全边界,必须建立在结构性的权限约束之上,而不是某个疲惫的人的一次点击。