AI应用:仅有可观测性是不够的
遥测数据一切正常,智能体却做出了灾难性的决策——这是仪表盘无法触及的故障类别。
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo
每个认真的智能体团队都拥有仪表盘、追踪和告警——但每个团队都被一次无法复现的生产故障打了个措手不及。第一次迭代:500个token,一分钱。第十五次迭代:400万个token,80美元。总计2,847美元,直到有人注意到——因为智能体没有抛出异常,它只是带着绿色的指示灯持续循环。
这不是一个关于监控不佳的故事。这是一个关于大多数团队根本没有的那个层面的故事。在接下来的十分钟里,你将看到仪表盘在结构上无法捕捉到哪些故障类别——以及哪些内容属于智能体晋升流水线,哪些属于可观测性层。
1、快速见效:核心问题
可观测性和晋升流水线解决的是两个不同的问题,而大多数团队只有前者。**可观测性监视已经在生产环境中运行的智能体,并告诉你发生了什么。**晋升流水线决定该版本的智能体是否有权进入生产环境——并在不应该时让你立即将其撤回。
这不是"一个更好的仪表盘"。这是一个独立的工程学科,由四个组件构建。规格驱动的评分门禁——跨大量试验分布评估准确性和安全性的门禁。环境晋升——带有明确进入条件的dev → test → prod。
然后是经典CI不了解的两个层面。每版本智能体身份——每个版本都有一个独立的、范围狭窄的机器身份。即时回滚——通过翻转指针返回到最后已知的良好版本,无需重新部署。
值得记住的定义:**智能体晋升流水线是一条带有质量控制门禁的生产线,能在回归到达用户之前阻止它。**仪表盘做不到这一点——顾名思义,它只能在事后看到故障。
最危险的智能体故障不会抛出异常。模型返回200 OK,延迟正常,但响应是错误的、不安全的或违反策略的。遥测数据保持绿色。如果你部署的智能体拥有对工具和数据的权限,那么生产前门禁加上硬控制层不是可选的——它们是先决条件。
让我们从仪表盘具体看不到什么开始。
2、绿色仪表盘,死亡智能体
你的可观测性技术栈——指标、日志、追踪——是为确定性系统设计的。请求进入,代码执行,响应发出。你知道"健康"是什么样的,因为相同的输入产生相同的输出。智能体打破了这个契约——相同的输入可以产生截然不同的输出,而基础设施级别的成功掩盖了行为灾难。
第一种故障类别是自信的错误回答——一个形式上确定但实质上错误的响应,以成功状态返回。加拿大航空的聊天机器人编造了一个不存在的退款政策,公司因此承担了法律责任。模型生成了一个连贯的、有同理心的回答——同时也是一个错误的回答,法院将其归类为过失性虚假陈述。缺失的那个层面会在该回答到达客户之前根据当前策略进行验证。
第二种类别是token螺旋——一个失控的循环,成本在后台不断攀升而没有任何异常。这正是开头的$2,847——一个从数十个部署的模式中整理出来的有记录的说明性场景:一个循环的智能体可以在几小时内烧掉整个月度预算,而仪表盘全程保持绿色。没有任何东西形式上"崩溃"了,因此遥测中没有错误信号。
第三种是缓慢退化——质量先下降10%,然后20%,然后40%。它发生在几天而不是几分钟内,所以直到客户开始抱怨才有人注意到。第四种是级联故障:追踪不理解智能体之间的通信,所以数据库告警会触发,但它们不会告诉你哪个智能体的决策触发了它们。

它们的共同点是:**从基础设施的角度来看,什么都没有坏。**这些不是仪表盘会显示的错误,因为仪表盘衡量的是正常运行时间、错误率和延迟——而这些指标中没有一个是非确定性系统中质量和可靠性的良好指标。在这个世界里,"我们有仪表盘"是一种虚假的安全感。既然仪表盘看不到这些故障,第二个问题就出现了——为什么它们这么难复现?
3、四层非确定性
智能体不是确定性状态机——它是一个随机转移网络。当你将其暴露于开放式用户查询和一组工具时,可能执行路径的空间会爆炸。这里的非确定性是多层的,不能用temperature=0来消除——这就是为什么经典的"输入A → 输出B"测试不再有效。
第一层是路由方差——查询措辞的微小变化会将编排器引导到不同的工具或不同的子智能体。第二层是生成方差:即使禁用采样,相同运行之间的结果也可能不同。这里有一个最不直观的机制,内核批次不变性——结果取决于在一个GPU批次中一起计算了多少请求,通过归一化、矩阵乘法或注意力等操作中数字求和的顺序。
关于这一点最有力的证据来自Thinking Machines Lab团队在"Defeating Nondeterminism in LLM Inference"中的研究:在temperature=0下对同一提示进行一千次补全产生了八十个不同的输出,即使前一百零二个token是相同的。我们认为理所当然的可复现性是一个工程决策,而不是模型的属性——只有批次大小不变的内核才使所有一千个输出完全相同。
第三层是工具调用顺序——调用的顺序和序列随着外部API返回的数据而变化。第四层是多轮状态:智能体在任何步骤的行为都取决于所有先前轮次的累积历史,因此对单个组件的隔离测试是无用的。换一种说法——一次"绿色"运行不能证明下一次任何事情。

既然一次运行无法被确定性地复现,仅凭日志进行调试就是法医学式的猜测——从追踪中拼凑碎片。这就是记录-重放的用武之地:你捕获每一个随机性来源(提示、解码参数、工具响应、时间戳、种子)并在不再次调用外部世界的情况下重放完全相同的决策序列。这是我们拥有的最接近非确定性系统调试器的工具——但有一个限制:你不能进行反事实重放,即在原始模型已退役时用不同的模型进行重放。
重放也不仅仅用于调试。它让你可以用新版本的智能体在历史运行上运行,并在晋升前与参考路径进行比较——这是回归测试,而不是监控。但如果你不能在单次运行上设置门禁,你如何在非确定性输出到达生产之前评估它?
4、当策略变成测试
答案是:你停止测试单次运行,开始根据明确编写的策略评估行为。这就是规格驱动测试——你不是问"输出是否匹配快照",而是问"行为是否满足描述的策略",策略本身就变成了一个可执行的测试套件。微软在开源的ASSERT框架中正式化了这种方法:它以组织策略作为输入,从中生成单轮和多轮测试用例,然后根据策略评估每个对话。
评估器是LLM作为裁判——第二个模型根据评分标准评估第一个模型的响应,就像审计员一样。ASSERT的有趣之处在于,裁判引用具体的工具调用、路由决策和延迟作为证据——而不仅仅是最终响应。**评估不再是黑盒,而是可审计的。**关键是,门禁在生产之前评估一个版本——这是一种与追踪不同的学科,追踪是在其上线后才监视的。
这里有一个我需要直接指出的陷阱。LLM裁判只有在校准后才可靠。GPT-4与人类标注者在MT-Bench基准上的 agreement 超过百分之八十——但agreement 百分比可能会产生误导。更严格的度量是Cohen's κ,它校正了偶然 agreement 的分数,在一个案例研究中,当结构性错误主导拒绝时,它降到了0.13——比如在响应文本中根本看不到的延迟违规。

这引出了一个实用规则:裁判不是"自动化测试器"——它是一个初级审计员,你需要在一个黄金数据集上监督和训练它。在接入评估门禁之前,先测量裁判的κ与人类标签的一致性——如果它在裁判处理不好的维度上得分低(延迟、模式、策略),则添加硬编码的断言而不是信任模型。这正是为什么我们在分布上评分而不是单次通过/失败:每个任务多次试验,置信区间,只在分数低于阈值时才阻止。
微软还添加了智能体控制规范——智能体循环上的五个确定性检查点(输入、LLM、状态、工具执行、输出),以策略YAML表达。其背后的理念非常诚实:提示级别的安全不是一个控制面;它是对随机系统的礼貌请求。所以我们有了一个评估版本的门禁——但它到底在智能体通往生产的路径中的哪个位置?
5、晋升流水线作为缺失的原语
"检查已经太晚了——质量,无论好坏,已经存在于产品中。"——威廉·爱德华兹·戴明,统计学家和管理顾问
戴明描述的是生产线,但他的这句话是对可观测性所做的最好诊断:事后检查。**晋升流水线逆转了这一逻辑——它将控制构建到进入生产的过程中。**它以一个大多数团队问得太晚的问题开始:智能体产物到底是什么?
智能体产物不仅仅是代码。它是模型、提示、超参数和工具契约的快照——只要这些层独立变化,就没有可重复性和有意义的回滚。这就是为什么流水线将它们编译成一个单一的不可变版本化产物:一个带有自己哈希值的不可变包,其中Git SHA扮演镜像标签的角色。每一次更改——甚至是向量数据库的重新索引——都会强制产生一个新的、隔离的版本。没有这个,一个静默的重新索引可以在没有一行代码改变的情况下破坏一个先前验证过的版本。
在这个打包产物之上是一个评估门禁,在两个点运行:CI中的合并前和CD中的晋升前。微软提供了在环境之间逐步收紧的参考阈值——CI中幻觉率低于百分之五,生产中低于百分之三,任务完成率在CI中高于九十,在生产中高于九十五,策略违规两端均为零。低于阈值的分数在评估阶段阻止该版本——任何东西都不会到达staging或生产。
这里出现了一个经典CI不了解的组件——每版本智能体身份。每个部署的版本获得自己的短期、范围狭窄的机器身份。当金丝雀开始行为异常时,你只撤销该版本身份的权限,而不触碰稳定版本——你将爆炸半径控制在一个版本而不是整个应用程序。我要透明地说:这是微软参考架构中的表述;规范文档描述的是每实例身份,而该服务本身仍处于预览阶段。

最后一个组件是即时回滚——通过翻转活跃版本指针返回到最后已知的良好版本,无需重新部署。这可以自动化:一个从金丝雀工具中熟悉的模式在连续五次阈值违规后自动回滚。智能体回滚是指针翻转,不是重新部署——这是从经典DevOps几乎一对一迁移过来的少数几件事之一。由于它是独立的机制,值得在晋升流水线结束和可观测性开始之间画一条清晰的界限。
6、界限在哪里
我将直接提出这个挑畔性的观点,因为作为一个诊断它是准确的:**大多数团队所谓的"AgentOps"是监控,而不是门禁控制。**可观测性告诉你发生了什么——它不会阻止它再次发生。这个界限最清晰的表述很简单:评估告诉你智能体在发布时是否工作;可观测性告诉你它是否仍然工作以及为什么停止了。
在功能上,这条线相当清晰。智能体晋升流水线拥有通过/不通过决策、不可变产物、评分门禁、每版本身份和即时回滚。可观测性技术栈拥有追踪、日志和告警;事件分类;漂移检测;以及成本和延迟监控。第一层决定一个版本是否进入以及是否回滚;第二层在其上线后进行监视。

这条线确实会变得模糊,有时是故意的。在线评估——评估来自生产流量中的样本——使用可观测性遥测数据,但反馈到CI/CD决策过程中。"追踪到数据集"的循环将生产运行转换为评估集,驱动重新评估和潜在回滚。这并没有抹去学科之间的区别——这是它们之间的桥梁。
诚实的做法是保持开放的辩论而不是权威地解决它。微软自己反对"一个独立的可观测性孤岛",声称相同的评估器应该在开发、CI和生产中作为一个连续的测量计划运行。AWS画线更严格。我自己的观点是:我在功能上分离这些层,因为不同的决策有不同的所有者——但我会承认,本文锚定其蓝图的供应商对此有不同的看法,而这场辩论尚未结束。
从MLOps迁移过来的东西比看起来多,也比我们希望的少。冠军/挑战者、影子部署、金丝雀和注册表几乎一对一地映射过来。它在智能体不再是无状态预测器时断裂:它是有状态的、多步骤的,并具有工具副作用——所以它需要基于追踪的验证,而不是测试集上的静态分数。值得记住的是,这仍然是一个不成熟的学科——Gartner预测,到2027年底,超过百分之四十的智能体AI项目将被取消,部分原因是风险控制薄弱。
7、结束语
如果我只能留下一个想法,那就是这个:**仪表盘告诉你智能体失败了——晋升流水线阻止它在生产中失败。**这是两个不同的学科,不是一个技术栈——而大多数团队只有后者。
以下是智能体的最低CI/CD检查清单,按部署顺序排列:
- 最危险的故障不会抛出异常——停止将绿色仪表盘视为智能体健康的证明。
- 对分布进行门禁控制,而不是单次运行——即使在
temperature=0下非确定性也是多层的。 - 首先在CI中构建评估门禁——它防止回归,在线评估稍后出现因为它们检测漂移。
- 校准LLM裁判——在信任它作为门禁之前,在黄金数据集上测量Cohen's κ。
- 将产物打包为不可变的——模型、提示、工具和配置在一个哈希中,带有每版本身份和即时回滚。
- 对于不可逆的操作,添加硬控制层——在任何生产流量之前添加拒绝规则,而不是之后。
但让我们对成熟度保持诚实:框架是新的,一些服务在预览中,我将供应商的"前后"指标视为方向性的,而不是硬证据。这个学科是真实的——它仍然年轻。

感谢你读到这里——到了仪表盘和门禁不再是同一工具的地步。如果这篇文章改变了你对部署智能体的思考方式——请与一个即将将智能体投入生产的人分享,并留下一条评论,讲述遥测没有捕捉到的你自己的故障类别。如果你想深入了解如何针对黄金数据集校准LLM裁判,我已另外撰文讨论。
原文链接: Spec-Driven CI/CD for AI Agents — Why Observability Isn't Enough
汇智网翻译整理,转载请标明出处