爆炸半径

A26
概念 · 智能体 AI 详解

爆炸半径。

你叫得出名字的每一道控制——审批、护栏、评测、换个更好的模型——作用的都是「智能体做错事的概率」,而没有一道能把它压到零。爆炸半径是这个问题的另一半:错事一旦发生,它有多大。它是智能体身上唯一一个你能在「还不知道这个智能体有多好」之前就先框住的安全属性,因为它是「智能体被授予了什么」的函数,而不是「它决定做什么」的函数——这也正是为什么这一类里代价最高的失败,往往从头到尾都没有攻击者。

STEP 1

概率和量级,是两本不同的预算。

风险大致等于概率乘以代价,而智能体工程里几乎全部的注意力都花在了左边那一项上。更好的提示词、更好的工具、更好的评测、把人放进环路:每一样买下的都是「出坏动作的机会更小」。没有一样能改变坏动作一旦落地要付多少钱。

这种不对称之所以要紧,是因为两项的误差棒完全不同。你可以在留出集上测出一个成功率,然后在生产上错个几个百分点。而爆炸半径你今天就能精确地量出来——读一遍那组授权就行——并且当模型在底下被换掉时,这个答案不会动。

  • 概率是估出来的。它来自评测,并且会在分布漂移、提示词改动和换模型之下无声地退化。
  • 量级是枚举出来的。它来自凭据、网络可达性和工具定义。你能把它写下来。
  • 只有一项经得起意外。一种新的失败模式会让你的概率估计作废,但它不会让你的爆炸半径变大——前提是这个半径是用机制画的,而不是用一句叮嘱画的。

一个团队只在给左边那项做预算,标志很好认:他们能把智能体的成功率报到小数点后一位,却说不出「最坏的那一次运行能干出什么」。这两个问题都有答案,而且第二个更便宜。

STEP 2

四个维度,一个都不能不点名。

「爆炸半径」不是一个数。它是四个彼此独立的量的乘积,而把其中三个压小、留第四个大敞着,几乎什么都买不到。

  • 可达范围——智能体到底能碰到什么。哪些主机、哪些存储桶、哪些表、哪些代码仓库、哪些租户。这一项由出网策略和凭据范围决定,通常也是四项里最大的一项。
  • 权限——碰到之后能对它做什么。读、写、删、再授权。同一份资源上「读」与「删」之间的那道落差,往往就是「一次丢脸的事故」和「一次不可恢复的事故」之间的全部区别。
  • 速率——在有人察觉之前,能做多少、做多快。一个对一行记录有删除权的智能体,和一个每分钟能对一行记录行使一万次删除权的智能体,范围完全相同,半径天差地别。
  • 可逆性——这个动作能不能收回、由谁收回、在多长的窗口内收回。一笔可退的扣款、一条软删的记录和一封已经发出去的邮件,是三个不同的世界。

四项是相乘复合的,而这一点恰恰有用:给一份宽泛的授权加上速率上限,可能比把授权收窄更便宜也更快,而一套可靠的撤销机制可能比这两者都值钱。这四项背后的那个旋钮,见自主等级

STEP 3

半径是凭据画出来的,而凭据总比它的理由活得久。

实际上,一个正在运行的智能体的爆炸半径,就是它手上那些令牌所允许的一切;而令牌总是为某一个阶段的工作发出去,然后再也没被收回。当初有人在做集成,智能体需要生产库的写权限;集成做完了,授权没有。系统里没有任何东西会去区分「一份仍然正当的访问权」和「一份只是仍然有效的访问权」。

有两个习惯会让这件事比看上去更糟:

  • 默认冒用身份。一个拿着某个人的凭据去行动的智能体,继承的是这个人的全部权限,而不是任务所需的那一小片。一个以支持工程师身份运行的支持智能体,能做支持工程师能做的一切,而且是永远。这就是环境权限,也是绝大多数集成的默认形状。
  • 范围的颗粒度对不上任务。真实的权限系统给你的是 repodb.write 这种范围,而任务想要的是「这个仓库、这个分支、接下来二十分钟」。当可选的范围比任务粗,团队就会去授那个粗的,于是半径是被权限系统的词汇量定下来的,而不是被任何人的意图定下来的。

由此推出的那条结论才是让人意外的:不需要有对手。一个完全照着吩咐做事的智能体,加上一份没人还记得它握着的访问权,就足以造出这一类里最大的事故。见智能体身份与权限

STEP 4

用机制去框住它,再把它当成一个问题去度量。

用一句叮嘱画出来的爆炸半径,等于没画。「不要删生产上的任何东西」是一道穿着量级控制外衣的概率控制——它住在模型可以随意绕过去推理的那段文字里,而且对系统里其他所有部件都是不可见的。半径必须被强制在某个智能体没法跟它争辩的地方:凭据、网络、工具实现、数据库角色。

  • 把凭据发给任务,而不是发给智能体。短时效、按次运行签发、范围收在这次运行点名的那些资源上。在这里,过期比范围更能干活,因为过期不需要任何预见。
  • 在工具那一层压住速率和总量。一个会拒绝掉本次运行中第十一次破坏性调用的工具,把一次无界的事故变成了一次有界的事故,而且它不需要预测这次失败长什么样。
  • 先买可逆性,再买自主性。软删除、分级写入、发件队列。凡是撤销存在的地方,半径的缩小幅度是你真能感受到的;至于人该站在这条路径的哪个位置,见人在环中
  • 把读的授权和写的授权分开。智能体的价值绝大部分来自「读得广」,智能体的损害绝大部分来自「写得广」。这两件事几乎从来不需要共用同一份凭据。

给你运行的每一个智能体都把这个问题问成例行公事:如果模型是恶意的,单次运行最坏能干出什么?用读授权的方式去回答,而不是用推理行为的方式;并且按上面那四项来回答——可达范围、权限、速率、可逆性。如果答案让你不舒服,最便宜的两招几乎永远是「过期」和「速率上限」,而不是「更窄的范围」,因为前两者都不需要事先知道这次任务会用到哪些资源。延伸阅读:智能体风险看更完整的分类,沙箱与代码执行看在别的办法都不管用时用什么去框住可达范围。