跳转到主要内容

没人阅读的审批提示

阅读需 1 分钟Tian PanTian Pan

你的智能体今天请求了四十次授权。四十次,一个人看了一眼弹窗,扫过第一行字,点击了「批准」。第四十一次请求才是真正要命的那一次——一笔汇给新供应商的对外转账、一条藏在数据库迁移脚本里的 DROP TABLE、一次向没人审查过的域名上传文件——而它得到的是同样条件反射式的一次点击,用时和前四十次差不多:大约 1.7 秒。

这个数字不是修辞。在有史以来规模最大的安全警告实地研究之一中,点击穿过 SSL 警告的 Chrome 用户里有一半在两秒之内就完成了操作——这个时长意味着他们根本没有阅读。你的人机协同检查点遵循同样的物理规律。给每个有风险的操作都加上审批门槛,并不会增加监督,只会增加一个按钮。而一个每天弹四十次的按钮,会以斯金纳箱般的可靠性训练它的用户:按下去,打扰就消失,奖励即刻到账,如此往复。

本文想提出的不适命题是:**千篇一律的确认门槛不是安全控制,而是一件合规摆设,最终退化成一台装着人类手指的自动点击器。**如果你的智能体架构对风险的回答是「我们会先问用户」,那你并没有设计出监督机制——你只是给它的失效排好了日程。

习惯化是默认结局,不是边缘情况

每一个大规模部署过打断式警告的领域,都各自独立地、数十年如一日地得出了同样的结果。

浏览器最先发现了这一点。「Alice in Warningland」研究观察了超过 2500 万次真实的警告曝光,发现用户点击穿过了 Chrome 70% 的 SSL 警告——不是因为用户愚蠢,而是因为警告几乎总是在对他们误报。用户遇到的大多数 SSL 错误是配置失误而非攻击,所以从统计上讲,忽略警告才是正确的选择。用户比警告的设计者更快学会了基础概率。

医院随后也发现了,代价高得多。联合委员会(Joint Commission)估计,85–99% 的临床警报信号完全不需要干预。ICU 护士每天面对每位病人数百次警报;一家儿童医院单日测得 5300 次警报,其中 95% 是误报。结果是付出了生命代价的警报疲劳——病人在死亡时,检测到其病情恶化的监护仪正对着走廊嘀嘀作响,而走廊里的每个人早已学会:嘀嘀声什么都不代表。

安全运营中心(SOC)又一次重新发现了它:每个团队每天数千条告警,超过一半被直接无视。使用 fMRI 的神经科学研究直接展示了其机制——对同一警告的重复曝光,从第二次观看开始,视觉处理中枢的神经响应就出现可测量的下降。习惯化不是一个可以靠纪律训练消除的问题。它是大脑分配注意力的方式,而且几乎立刻就开始起效。

如今,智能体的构建者正在第四次重复同样的实验,却期待不同的结果。一个每个任务执行几十次工具调用、每次调用都由确认对话框把守的智能体,制造的警告量能让医院病房显得安静。人类的审批行为将收敛到基础概率:如果 99% 的请求没问题,人就会表现得像 100% 都没问题。

频繁触发的门槛在反向训练你的用户

以下这一点让审批疲劳成为一个安全漏洞,而不只是 UX 层面的烦恼:这道门不仅会失效,它还会朝着攻击者有利的方向失效,而且失效在你的日志里完全不可见。

你的系统请求并获得的每一次批准,在审计日志里看起来一模一样:action_requested → human_approved → action_executed。无论人类深思熟虑了九十秒,还是在聊天间隙随手关掉了弹窗,记录里呈现的都是知情同意。你的合规叙事说每个重大操作都经过了人工审查。现实是,人只认真审查了前五个——在三周前的那个周二。这个控制在制度上看起来坚固,在实践中却是空心的——而书面记录还在主动掩盖这种空心。

攻击者比大多数设计者更懂这种不对称。提示注入不需要绕过你的人机协同门槛,它只需要搭乘它。一条被注入的指令,只要触发的操作措辞得足够日常——混在一批看起来平平无奇的请求里,措辞和前面十二个请求如出一辙——就能继承前十二个请求挣来的那一下条件反射式点击。人类成了这次攻击的最后一级载荷投递机制,而把他们训练成这个角色的,正是你的确认对话框。

这就是信噪比陷阱:**处处设防等于处处不设防。**每一次不必要的确认,浪费的不只是几秒钟;它是在从用户注意力这个有限账户里提款,而余额最终流向那个把攻击时机安排在账户清零之后的人。给一次只读数据库查询设的门槛,花掉的是你本该留给电汇操作的警觉。

这里更深一层的讽刺,自动化领域四十年前就已命名:自动化程度越高,人类在你专门留给他们的那类关键判断上就越生疏。一个每周批准 200 次例行操作的操作员,积累的不是监督经验。他们积累的是「关掉弹窗」的经验。

按爆炸半径和可逆性分级,而不是按操作类别

出路不是措辞更好的弹窗,而是拒绝把人类注意力花在不需要它的决策上,好让余额留给真正需要的决策。

最有用的分类函数有两条轴:**最坏情况有多糟,以及你能不能撤销它?**由此得出三个层级,它们在几乎每一个严肃的智能体部署中反复出现:

  • 自动批准并记录日志——只读操作和明确策略内的低风险动作:查询数据、读取文件、起草内容、调用幂等 API。不打断。日志本身就是控制手段。
  • 自动批准加事后审查——可逆的写操作:更新 CRM 记录、开一个 pull request、把变更放在功能开关后面预备发布。让智能体继续执行;事后呈上一份可审阅的摘要。可逆性意味着审查可以放在执行之后进行,而最坏情况不会因此恶化。
  • 打断并要求决策——不可逆或爆炸半径大的操作:对外发送通信、转移资金、删除数据、授予权限,以及任何触碰无法回滚的生产状态的操作。只有这一层级配得上一次同步的人工打断。

执行这套纪律的团队报告的升级率大约在操作总量的 10–15%——也就是说,过去 85–90% 的弹窗变成了一行日志。这正是全部的意义所在。如今那次罕见的打断,抵达的是一个注意力尚未被例行公事挖空的人。

两个细化措施能让分级在实践中真正生效。第一,**批准计划,而不是批准步骤。**如果智能体提议「为这 14 笔重复扣款办理退款」且人类批准了这个计划,那 14 次退款调用就不需要各弹一个窗——它们需要的是对照已批准计划的符合性校验。对已批准计划再设步骤级门槛,纯属噪音。第二,让授权过期。「允许此操作」应该意味着本会话、本范围、本时间窗——而不是一个悄悄拓宽你自动批准层级的永久豁口。常设授权的堆积方式和没人读的弹窗一模一样,只是藏在了下一层。

一个警示:层级边界本身就是攻击面,必须在模型之外强制执行。一份智能体能靠话术绕开的黑名单——或者靠编码绕开,正如基于字符串匹配的策略过滤器屡次被编码技巧和 shell 间接调用攻破那样——就是一个披着三级外衣的一级操作。分类必须发生在检查实际调用内容的确定性中间件里,而不是在提示词里。

设计一个人真正会停下来看的打断

一旦打断变得稀少,它们就值得精心设计。第四十一个弹窗失败有两个原因:它排在四十个弹窗之后到来,而且长得和它们一模一样。只修频率不修雷同,价值只能拿到一半。

**让危险看起来与众不同。**危险操作的确认界面应该在视觉和交互上都不同于任何例行操作——不同的布局、不同的颜色、不同的交互方式。如果例行审批是一次点击,那危险审批也许应该要求键入汇款金额或者被删表的表名。这种摩擦不是惩罚,而是一个强制函数,把决策引导到大脑中负责阅读的那部分,并打断肌肉记忆建立的动作模式。

呈现决策,而不是呈现请求。「智能体想运行工具:execute_payment」不是决策支持,只是一个散文形式的复选框。打断界面应该呈现人类一眼就能评估的结构化证据:改了什么、具体的差异或金额、影响到谁、是否可逆,以及——最关键的——它有什么异常之处。「首次向该收款方付款」或「金额是此工作流历史最大转账的 3 倍」才是把条件反射转化为真实决策的那句话。让这句话可计算的正是行为基线:偏离智能体自身既有模式的操作,配得上一次响亮的打断;和前一百次一模一样的操作则不配。

**让「拒绝」成为常规路径,而不是警报事件。**如果拒绝智能体的请求会导致任务中断、错误状态或者二十分钟的收拾残局,用户就会学到:「批准」是唯一不制造额外工作的按钮。拒绝必须廉价:智能体应该消化一次驳回、重新规划、继续执行。一道一个答案免费而另一个答案昂贵的门,不是决策点——那是一个附带问卷的减速带。

**像盯 SLO 一样盯住你的升级率。**批准耗时中位数趋近于零,就是你的习惯化仪表盘:它意味着人已经不再阅读,你在把守的那些东西实际上已经不设防了。升级量持续攀升则意味着分级出现误判,注意力账户又在被抽干。这两个指标今天就可以度量,而几乎没有人在度量。

注意力预算才是真正的架构

千篇一律的确认门槛之所以经久不衰,是因为它是最容易交付的产物:一个中间件钩子、一个弹窗组件,再加一句留给安全评审的话——「每个高风险操作都有人工批准」。每一个尝试过这条路的领域——浏览器、医院、SOC——最终都用这道门原本要防止的那种失败为这句话买了单,然后又花十年时间收拾局面。智能体系统可以选择:直接吸取教训,还是把那个十年重演一遍。

设计问题不是「哪些操作应该需要审批?」而是**「我每天只能得到寥寥几个真正的人类注意力时刻——哪些决策配得上它们?」**把这些时刻当作它们本来就是的稀缺资源来对待:可逆的操作一分不花,可审阅的操作打包批处理,把那次响亮、怪异、绝不会认错的打断留给电汇金额真的超出常值 3 倍的那一刻。当那个弹窗从每天四十次变成每周两次,并且长得和产品里的任何东西都不一样时,另一端的人类才依然有能力做整个架构唯一依赖他们做的那件事:读它。

参考资料

保持联系,关注我获取更多内容

阅读需 10 分钟

智能体权限提示存在习惯化曲线,而你的安全叙事就建立在其斜率之上

权限提示是一种具有可衡量半衰期的安全控制手段。你应该跟踪每个用户的审批率,根据爆炸半径对摩擦力进行分层,并停止让 100% 的点击率作为你安全叙事的唯一支撑。

insider
ai-agents
阅读需 9 分钟

权限提示是一个 UX Bug:当“人在回路”沦为“人工橡皮图章”

智能体产品将危险操作锁定在审批对话框之后并称之为监管,但到了第 40 次提示时,人类会出于条件反射点击批准。为什么提示量才是真正的安全 Bug,以及如何修复它。

ai-agents
human-in-the-loop
阅读需 11 分钟

用户习以为常的“你确定吗?”确认步骤

AI 智能体中统一的确认提示会导致习惯化:用户会以处理低风险操作的反射动作来点击高风险操作。具备风险意识的摩擦预算、制品预览和量化的点击响应时间可以重建安全层。

insider
ai-agents
阅读需 10 分钟

无人清理的审批队列

风险分层门控将危险的智能体操作路由到人工队列 —— 但一个没有负责人、没有 SLO 且没有超时策略的队列,只是另一种更慢的失败方式。本文探讨如何像管理真实的基础设施一样运营人工闸口。

insider
ai-agents
阅读需 8 分钟

无人值守的人工升级路径

每个智能体流程图中的“转人工”方框,通常指向一个没有负责人、没有 SLA、也没有人值班的队列。应将升级视为一个需要专人负责的产品界面,而不仅仅是一段代码路径。

ai-agents
human-in-the-loop