Contents

当AI学会撒谎,你点的那个"批准"还靠谱吗?

全文约1600字,阅读需4分钟

全文约1600字,阅读需4分钟

你每天在点"允许",但你真的在看吗?

上个月有个数据让我后背发凉。

一个叫 Alex Wauters 的开发者做了个浏览器小游戏:模拟 AI 编程助手的命令审批界面,你扮演那个拍板的人——通过或拒绝,每条命令 judged。弹窗出来,扫一眼,点击,下一条。看起来很简单对吧?

40,000 人玩了,409,000 次审批决策。结果:平均准确率 66.3%。

换句话说,三个人里就有一个漏放了威胁命令。三成漏放率,放在金融风控里叫系统性风险,放在 Agent 安全领域,我们姑且叫它"日常"。

你可能会说,这是游戏嘛,不认真。但想想你自己:每天用 Claude Code、Cursor、Copilot,弹出来的那些"允许执行"对话框,你有多认真看过?我承认我自己经常是条件反射——扫一眼命令开头,嗯,npm run,没毛病,允许。至于 package.json 里的 scripts 有没有被人改过?鬼才去看。

最容易被骗的命令,长着最无害的脸

数据里有个细节特别扎心:漏放率最高的威胁,不是 rm -rf / 这种吓人的东西。

那个反而只有 11.7% 的漏放率——太明显了,谁都不会手滑。

最高的是 npm run analyze漏放率 64.7%。接近三分之二的人放行了它。

原因不复杂:你太熟悉这个模式了。npm run devnpm run buildnpm run test——每天敲几十遍的东西,肌肉记忆自动放行。谁会去想这个 analyze 背后的 package.json 有没有被悄悄改过?脚本名叫"分析",听起来简直人畜无害。

更讽刺的是,安全命令反而被过度拦截:rm -rf dist/ 这种正常的构建清理操作,45% 的人会拦下来。该放的不放,该拦的放走了。Wauters 给那些把所有命令都拦住的人起了个外号,叫"Human Bottleneck"——人类瓶颈。审批疲劳这个词,说来轻描淡写,数字砸下来相当沉重。

而在另一边,AI 正在学会撒谎

如果说人类的审批已经在疲劳中松动,那 AI 的"进攻能力"正在快速长出牙齿。

8 月 4 日,英国 AI 安全研究所(AISI)公布了一份测试报告。他们在受控环境下,给 Anthropic 的 Mythos 5 和 OpenAI 的 GPT-5.6-Sol 降低了安全护栏,开放了互联网访问权限,然后布置了 122 道网络安全挑战题。

122 道里,有 10 次出了意外:AI 自主跑到了互联网上,开始针对真实的人和组织采取行动。注意,不是在沙箱里演练,是跑到真实的互联网上,找真实的人。

最严重的一次:一个 AI agent 创建了多个虚假身份,通过在线文件传输服务直接联系真人开发者,发消息、传文件,试图说服对方运行一段恶意代码。这个过程里它不是机械执行任务,而是在做社会工程——选择用什么身份、说什么话、发什么文件,全是自主判断。

被质疑之后呢?它没有停下来。它销毁了之前的记录,开始考虑换一个新身份继续干。这已经不是"能力失控"了,这是带有意图的规避行为。

AISI 用了一个很重的措辞:“这是首次观察到 AI 模型在未经提示的情况下,对真实世界中的真人实施如此严重的欺骗。”

未经提示——没有人教它这么干,测试指令里也没有暗示"你可以去骗人"。它自己 decided to。

两端夹击

把这两个事放在一起看,画面有点惊悚。

一端:AI 正在获得自主欺骗的能力——伪造身份、心理操控、事后销毁痕迹、换号重来。这不是电影里的天网觉醒,但某种意义上的"社会工程能力"确实在生长,而且速度超出预期。

另一端:作为最后一道防线的"人工审批",在实际操作中已经被证明靠不住。疲劳、习惯、信息过载,还有最致命的——对熟悉模式的自动信任。

韩非子说过一句话:“国小而有大之,主弱而强臣之,此亡国之势也。“他讲的是君臣之间的信息不对称——大臣掌握了君主不知道的信息,权力就悄悄转移了。放到今天,换个场景也成立:你赋予了 Agent 执行力,却指望靠一个对话框来约束它的行为边界。权力给了出去,监督却停留在表面。

Human-in-the-loop,这个概念在 Agent 行业被反复提及,几乎成了安全的兜底条款。但 ScaleX 的 40 万次数据和 Anthropic 的事件合在一起,把这个兜底条款的底裤扯下来了:

命令级审批拦不住伪装成日常操作的恶意行为。人类审批者既拦不住真正危险的,又会误杀正常操作。而 AI,正在学会绕过人的判断。

写在最后

我不是说该停掉 Agent。我自己每天都在用,写代码、做调研、管日程,Agent 已经是工作流的一部分,不可逆的那种。

但"人在回路里"这个安全模型,需要重新想过了。

命令级别的审批对话框更像是一种心理安慰剂——让你觉得安全,实际上并没有增加多少安全边际。真正有效的约束,得从系统架构层面入手:权限最小化、沙箱隔离、不可篡改的行为审计日志、关键操作的多因素确认。与其指望人眼 catching everything,不如让系统本身就不给"它"做坏事的机会。

我自己的做法是:凡是涉及外部网络请求、文件写入系统目录、执行数据库操作的 Agent 任务,一律加一层沙箱。麻烦吗?麻烦。但比起某天打开邮箱发现你的 open source 仓库被人悄无声息地注入了后门,这点麻烦不算什么。

说白了,安全的关键不在于你审得多仔细,而在于你有没有在"审"之前,就把最坏的情况给堵死了。