跨团队 Agent SLA 无法简单叠加:你的组织遗漏预算的 99% 数学陷阱
A 团队的智能体宣传其成功率为 99%。B 团队的智能体也宣传 99%。调用这两者的全新联合工作流在状况良好时成功率为 98%,而在状况不佳时仅为 96% —— 负责该联合工作流的团队现在成了两个他们不拥有、无法在本地复现、且未编写评估集的系统的事实上的 SRE。每个上游团队都达到了其 SLO(服务水平目标)。但复合产品却未达标。边界正确一侧的报警器却始终保持沉默。
这是独立失败率的数学问题,自从组织开始允许智能体相互调用以来,它就一直潜伏在显而易见的地方。五个可靠性为 99% 的组件会给你带来 95% 的端到端可靠性。十个组件则会降至 90%。一个每步成功率为 95% 的 20 步流程,其最终成功率仅为 36% —— 超过一半的操作在完成前就会失败。当一个工作流链接了 50 个组件时 —— 一旦企业级智能体开始调用子智能体,再由子智能体调用工具智能体,这种情况并不罕见 —— 一个每个环节都“99% 可靠”的系统,在大约十次请求中就会失败四次。
研究人员在分析了超过 150 个任务中的五个流行多智能体框架后,发现失败率在 41% 到 87% 之间,其中排名前三的失败原因是:步骤重复、推理与行动不匹配,以及对终止条件的忽视 —— 观察发现,与单智能体基准相比,非结构化的多智能体网络会将错误放大高达 17 倍。这其中的数学逻辑并不深奥。问题在于,组织的 SLO 表、仪表板、轮值安排和 PRD 仍然是以单个智能体为单位进行定义的。
单跳谬误
当微服务网格(Microservice Meshes)还是新鲜事物时,每个团队都以同样的方式吸取了同样的教训:边缘侧 200 ms 的 p95 延迟目标意味着每个下游跳转(Hop)都必须分摊该预算的一部分,而拥有面向用户端点的团队必须负责具体的切分工作。一个实际的拆解可能是:为 TLS 和边缘分配 20 ms,为应用逻辑分配 70 ms,为缓存和数据库分配 80 ms,并为序列化和 GC 留出 30 ms 的余量。SRE 社区花了十年时间构建仪表板、链路追踪(Tracing)和告警,以展示每次跳转对最终用户指标的贡献 —— 这些方法包括数学推导出的下游分配方案、显示哪个跳转突然变慢的堆叠条形图,以及指明缓慢 Span 名称的分布式追踪。
智能体网格继承了相同的形态,却没有任何积累了十年的工具支撑。智能体规格表上的 99% 这一数字几乎总是在独立运行的情况下测得的:一个基准测试运行、一个精心挑选的评估集,或者一个友好的分布,这些与上游调用者实际发送的提示词(Prompts)毫无共同之处。当联合工作流停止工作时,上游团队会向下游团队提交工单。下游团队运行其独立评估,发现 99% 的数字依然是 99%,然后关闭工单。而客户看到的依然是 Bug。
解决方法不是“要求下游智能体提供更高的 SLO”。解决方法与微服务学到的一样:为每一跳分配一个预算,以联合工作流实际关心的指标为单位,配以显示每跳贡献的仪表板,以及在单跳出问题前就针对复合系统触发的告警。
逐跳可靠性预算
直接借用微服务的操作手册。定义联合工作流的可靠性目标 —— 假设为 95% 的端到端成功率 —— 并在智能体链条中进行分解。一个需要 95% 成功率的四跳链条既可以被均匀切分(每一跳承担 1.27% 的失败预算,即每跳达到约 98.7%),也可以根据团队拥有更多余量的环节进行加权。一个组织只能做到 96% 的环节会成为已知约束,从而收紧其他所有环节的预算。而一个拥有 99.5% 余量的环节则可以为下游更艰难的环节释放预算。
必须落地的纪律不是电子表格,而是执行。预算只有体现在以下三个地方才是真实的:
- 复合 SLO 拥有自己的仪表板和告警,独立于任何单个智能体的 SLO。
- 每跳预算不仅出现在下游所有者的仪表板上,也出现在上游调用者的仪表板上。
- 复合系统的错误预算消耗率(Burn-rate)告警触发速度要足够快,以便在每跳所有者察觉到自己的指标正常之前,就启动事件处理程序。
如果没有这三点,逐跳预算就只是一篇没人会打开的 Notion 页面。有了它们,联合工作流的所有者就能拥有与 SRE 团队在结账端点变慢时相同的态势感知能力。
