跳到主要内容

发布前的爆炸半径清单:你的智能体团队遗漏编写的文档

· 阅读需 11 分钟
Tian Pan
Software Engineer

Agent 事故发生后的第一个小时总是相似的。有人注意到 Agent 做了一些不该做的事情——给错误的客户开了发票,删除了 CEO 的日历事件,或者在公开的 Slack 频道发布了一段写了一半的道歉信——随后响应团队开始询问一些没人写下答案的问题。哪个下游系统持有审计日志?哪个值班轮换组负责该系统?该调用是否可逆,窗口期是多久?Agent 使用的凭证归谁所有,该凭证是否还允许它触及我们尚未检查的其他系统?编写 Agent 的团队很少掌握这些答案,因为答案存在于 Agent 调用的系统中,而且在发布时没人把它们统一记录在一个地方。

这份文档就是爆炸半径清单 (blast radius inventory),它是大多数 Agent 团队在第一次事故中才发现缺失的产物。它不是安全检查表,不是工具 schema,也不是操作手册 (runbook)。它是 Agent 可以触及的每个外部系统的详尽列表,以及在该系统遭遇最糟糕状况时你所需的每一项事实。那些在没有这份清单的情况下发布 Agent 的团队,是在赌事故响应的上下文重构速度能超过爆炸蔓延的速度。随着 Agent 拥有的工具越来越多且功能越来越强大,这场赌局的胜算正变得越来越低。

清单中包含什么

爆炸半径清单为每个工具分配一行,每一行的内容都要假设该工具最糟糕的情况已经发生。这些列不是可选的,也不是愿景性的——在注册工具之前,每个单元格都必须填入真实信息,因为每个空单元格都会变成某人在凌晨 2 点提出的问题。

一个可行的初始架构:

  • 工具名称及绑定 (Tool name and binding):注册的工具名称、可以调用它的一个或多个 Agent,以及 planner 看到的函数或 schema。
  • 下游系统 (Downstream system):调用实际命中的外部系统。不是“CRM API”,而是 salesforce-prod.us-east。精确性至关重要,因为这是需要被呼叫 (paged) 的对象。
  • 凭证 (Credential):调用时出示的服务账户、OAuth 范围、API 密钥别名或签名身份。如果凭证与非 Agent 调用者共享,需明确标注。
  • 最坏情况影响 (Worst-case effect):如果提示词注入 (prompt injection) 成功劫持了该调用,它会产生什么后果。不是指正常路径,而是假设被攻陷的路径。“从 CEO 的邮箱向名单发送邮件”比“发送通知”更具体有效。
  • 可逆性类别 (Reversibility class):可逆(60 秒内)、费力可逆(一小时内手动回滚)或不可逆(资金已转移、消息已送达、密钥已轮换、在没有版本控制的系统中文件被覆盖)。
  • 审计追踪位置 (Audit trail location):动作记录存放的位置——SaaS 应用的审计日志、内部数据仓库表、CloudTrail bucket、Agent 自身的结构化事件流——以及保留窗口。
  • 下游值班 (Downstream on-call):当该工具的下游系统崩溃时,无论是否由 Agent 引起,哪个团队会被呼叫。
  • 速率限制预算 (Rate-limit budget):允许 Agent 消耗的下游配额比例,与其它内部调用者消耗的比例分开。
  • 组合效应 (Composition effect):当 planner 将此工具与目录中的另一个工具组合时产生的最坏情况。这是大多数团队会跳过、而大多数事后分析 (postmortems) 最终停留的一列。

组合效应列是将清单从工具列表转变为爆炸半径图的关键。一个 read_email 工具本身风险很低。一个 send_email 工具本身风险也很低。两者若与 fetch_url 工具结合,就构成了 Simon Willison 所说的致命三连——私有数据、不可信指令和外泄通道——Agent 的 planner 可以将这三者组合成其所有者从未同意过的效果。组合效应列迫使团队记录哪些组合已经过考虑,而哪些还没有。

诚实地填写最坏情况列

人们总倾向于写下调用在正常路径下的作用。“更新线索状态”、“向项目频道发布摘要”。这种记录是无用的,因为只有在调用执行了没人想要的操作时,人们才会去阅读这份清单。

正确的框架是假设提示词注入已成功,且 planner 现在处于敌对状态。然后问:凭借该工具持有的凭证、被授予的范围以及被给予的速率限制,在被阻止之前,它能做的最坏的事情是什么?答案很少是该工具设计的初衷。如果提示词被构造为迭代执行,一个拥有广泛写入权限的 update_lead_status 工具可以大规模更改 CRM 中的每一个线索。一个没有固定特定频道 ID 的 post_to_channel 工具可以发布到领导层频道。一个返回完整事件主体的 fetch_calendar 工具可以外泄包含未公开收购目标的会议记录。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates