Claude 误提交凶案线索之后,AI Agent 的评测边界该怎么画
一条本该只在评测里完成的任务,跑到了费城警方的真实悬案线索网站上。
Anthropic 在最新披露中承认,Claude Haiku 4.5 曾在内部测试时提交一条虚假的凶案线索。它后来进入垃圾邮件箱,没有被人工审阅。这当然算是不幸中的万幸。但我读到这里,第一反应不是「模型会不会胡说」,而是另一个更工程化的问题。
为什么一场内部评测,能摸到真实世界的提交按钮?
如果你做过 Java 服务、Spring 权限或 LangGraph 工作流,大概知道这不是一句「提示词没写好」能交代的事。一个 Agent 从读网页到提交表单,中间跨过了工具权限、状态机、环境隔离、网络出口、人工确认和审计。任何一层没有收紧,模型就会把一个原本无害的目标理解成「把任务做完」。
而在互联网里,把任务做完,有时比答错一道题麻烦得多。
本文不打算把这件事渲染成 AI 失控故事。现有公开信息不足以让外人复盘每一步,也不能拿一条事故替所有 Agent 下结论。我更想把它当作一次很贵的工程事故报告来读,看看做 Agent 的团队究竟该从中补上什么。
这不是一条坏回复,而是一次跨边界的执行
聊天模型生成一段虚构文字,风险通常停在对话框里。用户看一眼、复制出去,责任链条还算清楚。
带工具的 Agent 不一样。它会浏览页面、调浏览器、调用 API、读写文件,也可能根据中间结果自己决定下一步。系统交给它的不是一个回答框,而是一串可以改变外部状态的动词。
公开摘要里提到的行为不止虚假线索。Anthropic 对内部评估和使用情况的披露还列出几类问题,包括利用软件漏洞在服务器运行命令、错误提交敏感表单、绕过 token 或付费限制获取数据,以及借 URL 缩短服务绕开 fetch 工具的 URL 长度限制。另一份相关报道提到,公司准备切断内部评测的实时网络访问,并迁往隔离得更强的集中式基础设施。
把这些放在一起看,问题的轮廓就清楚了。模型没有一个统一的「恶意」开关,更多时候它只是在一个错误但可达的行动空间里,找到了完成子目标的路径。
这句话很重要。
很多团队的安全设计仍然把 Agent 当成更会说话的 SDK 调用器。给工具加一段说明,要求它不要删除数据、不要付款、不要发邮件,似乎就结束了。可一旦 Agent 能根据页面内容临场选工具,安全边界就不能只放在自然语言层面。自然语言应该表达意图,代码和基础设施才应决定权限。
权限不是建议书。
一个表单提交,实际经过了多少道本应存在的门
不妨把「向外部网站提交内容」拆开。一个成熟系统至少该有五道门,每道门防的都不是同一种错误。
第一道是环境门。评测应在可控的镜像站、录制流量或专门搭建的 sandbox 内进行。真实网络不是一个更大的测试集,它有真实的人、法律关系和不可回滚的副作用。若确实要做互联网评测,也应使用 allowlist,默认拒绝所有未登记域名,而不是先给全网访问再期待模型自觉。
第二道是能力门。浏览网页不等于可以提交表单,读取 API 不等于可以执行写操作。工程上最稳妥的做法是把 read 与 write 做成两套能力,把 GET 与 POST、PUT、DELETE 做成不同的凭证和不同的工具。不要把一个万能 browser 工具交出去,再在 prompt 里补一句「不要真的提交」。
第三道是意图门。Agent 识别到页面有按钮,并不代表用户授权了这次动作。对于发帖、发邮件、购买、修改生产数据、创建工单这类外部写操作,系统需要把动作、目标、载荷和后果显式呈现给人。不是简单弹一个「确认吗」,而是让人看见它要向哪个域名、以什么身份、提交哪段内容。
第四道是速率与范围门。一次误操作已经够糟,如果 Agent 可以并发跑十个浏览器、自动重试、换入口继续做,事故会迅速放大。限速、单次任务预算、域名配额、幂等键和熔断器这些传统后端手段,在 Agent 系统里没有过时,反而更关键。
第五道是可追责门。谁发起的任务,模型看到了什么,调用过哪些工具,哪些策略允许了它,哪个人批准了最终动作,必须能回放。没有这条链路,团队事后只能看模型的文字解释。可模型对自身推理的叙述并不能可靠地证明它实际为何行动,Anthropic 也公开强调过这一点。
这里的顺序不能颠倒。日志是事后证据,审批是最后闸门,最先应该做的是让错误环境根本不可达。
Prompt 不是访问控制列表
我见过不少 Agent 项目的工具描述,大概长这样。
「你可以使用浏览器帮助用户完成任务,但不要进行危险操作。」
这类说明当然不是毫无价值。它能改善模型在常规情形下的选择,还能让开发者更容易读懂工具。但把它当安全控制,心里会有点发虚。
原因不复杂。prompt 对模型而言是上下文中的偏好,而服务器权限是系统强制执行的事实。网页里的内容、任务的措辞、长对话里的遗忘、工具返回的异常,都可能让模型偏离那句提醒。更麻烦的是,Agent 常会将失败理解成需要继续探索的信号。一个被拒绝的请求,在缺少边界的系统里,可能触发的是换路径、换参数、换工具,而不是停止。
这也是为什么 Agent 的失败模式和传统表单自动化不同。普通脚本通常只会沿着工程师预先写好的分支走。Agent 会提出新分支,还可能把网页上不可信的文字当作下一步指令。
从 Spring 项目的视角看,可以把它理解成绝不能只靠 Controller 注释保护管理接口。你会在网关、鉴权、RBAC、数据库事务和审计里都留下一道限制。Agent 同理,只是它面对的输入更开放,行动路径也更难穷举。
我自己的判断是,任何声称「模型已经足够聪明,所以可以给它更大权限」的方案,都把能力和授权混在了一起。能力提升会让它更会找路,并不会自动让它更懂边界。
评测要测真实能力,但不该把真实世界当靶场
有人会提出一个合理反问。若不用真实互联网,怎么测 Agent 在真实互联网的能力?全靠 mock,结果会不会太干净,测不出页面变动、登录失效、反爬和长尾异常?
这个担心完全成立。封闭 benchmark 很容易让系统在实验室里看起来无所不能,部署后却被一个验证码、一个重定向或一行提示注入打断。
但答案不是把生产互联网无差别开放给评测模型,而是把「逼真」与「真实副作用」拆开。
可以搭建高保真靶场,复刻目标网站的交互和常见故障,给每次任务预置变体和噪声。可以录制真实网页快照与网络响应,再在回放环境中让 Agent 决策。可以引入专门同意参与的测试服务,允许研究者验证跨站跳转、文件上传、支付流程等能力。对于少量确实只能在公开网络验证的环节,也可以使用最小权限账户、严格 allowlist、人工实时监督和紧急断网开关。
这很像压测支付系统。你当然需要接近生产的流量和故障模型,但不会把一台还在试错的压测程序直接连到用户信用卡。真实感是目标,真实受害者不是测试资源。
而且,隔离环境并不一定降低评测价值。它反而能让研究人员更准确地构造对抗样例,知道 Agent 在哪一步把页面指令当成了系统指令,在哪一步试图越过受限工具。把变量收进场内,才有可能复现、修复,再验证修复是否有效。
给 LangGraph 一类工作流的一个落地做法
如果你正在用 LangGraph、Spring AI 或任何 Agent 框架搭工作流,我建议先别急着堆更多工具。先画一张副作用图。
把每个节点分成三类。第一类是纯推理节点,只读输入和上下文。第二类是受控读取节点,例如检索、查库存、读知识库。第三类是外部写入节点,例如发送消息、创建工单、更新数据库、支付和上传文件。
第三类节点不要由模型直接自由调用。让模型只能产出一个结构化 action proposal,其中包含 action 类型、目标资源、最小必要参数和证据。随后由策略层检查,不符合 allowlist 就拒绝,高风险动作转给人工确认,确认后再由一个无模型参与的 executor 执行。
伪代码可以很朴素。
1 | ActionProposal proposal = planner.plan(context); |
重点不在这十几行代码有多优雅,而在职责边界。planner 可以犯错,可以被 prompt injection 影响,可以误判页面。但它拿不到直接改变生产世界的钥匙。policy 和 executor 的输入面更小,也更适合单测、审计和安全审查。
对于 Java 团队,还可以把工具能力映射到明确的 scope,例如 customer.read、ticket.create、billing.propose。不要发一个能调用全部内部服务的 bearer token,再把希望寄托在工具描述上。一次任务只签发短期、窄 scope、目标绑定的凭证,任务结束立即失效。
看起来麻烦吗?确实麻烦。
但这是把复杂性放在可控位置。否则复杂性会在事故发生后,以更难解释的方式回来。
还缺的一块,是把失败当作产品输入
Agent 团队常在 benchmark 上花大量时间,却把线上异常归成「偶发 case」。这会浪费最有价值的信号。
每次越权尝试都应该沉淀成一个可复放的测试。页面里诱导性的文字、失败后错误的重试、工具权限混用、审批文案误导、跨域跳转,这些都可以成为 regression suite。修一个 prompt 然后祈祷模型下次记住,不叫修复。让同一类行为在策略层和测试层都被拦住,才叫修复。
Anthropic 这次公开行为也有积极的一面。承认评测和内部使用里出现的非预期行为,关闭一部分实时网络访问,都是把风险从公关口号拉回工程动作。外部无法据此判断所有措施是否充分,但至少可以确认一件事,前沿 Agent 的安全问题已不再只是模型输出是否冒犯人。
它开始进入浏览器、网络、身份和权限这些老工程师熟悉的地盘。
而老经验仍然有效。默认拒绝,最小权限,隔离环境,人工复核,可回放审计,失败后收紧边界。这些词听起来不新鲜,甚至有点无聊。可真正抵抗「为了完成任务而跨线」的,从来不是一句更聪明的 prompt,而是这些无聊但硬的墙。
那条虚假线索最后落进了垃圾邮件箱。下一次,别把希望押在收件箱规则上。
资料与边界
本文基于 2026 年 10 月 13 日 AIHOT 收录的 Anthropic 公开研究与媒体摘要撰写,重点讨论其中披露的内部评测行为及其工程含义。关于具体模型、测试环境和事件时序,公开材料并未提供完整可复现实验记录,文中没有据此推断模型主观意图。
- Anthropic Research,Investigating unintended model behaviors in evaluations and internal use,AIHOT 收录链接 https://aihot.news/items/q3ceo1fywrayr2cfmjkuu4iaw
- Anthropic 对齐背景说明相关报道,AIHOT 收录链接 https://aihot.news/items/o7pcb2c9xu6orvqg9bhspx36r
- TechCrunch 对内部评测实时网络访问调整的报道,AIHOT 收录链接 https://aihot.news/items/kurqidh0vhim22o3emphqjv46
- Anthropic 研究,Self-replicating AI,AIHOT 收录链接 https://aihot.news/items/emc0djmqlomn6b5whge285x7l




