Agent 可观测概述4:从数据到判断
这是 Agent 可观测性系列的最后一篇文章。前面三篇我们聊了”为什么难”、“观测什么”、“怎么采集”,这一篇来聊最终极的问题:有了数据,然后呢?
从”能看到”到”能判断”
可观测性的目的,从来不是为了”收集数据”,而是为了做出判断:
- 这个 Agent 的行为正常吗?
- 这笔成本花得值吗?
- 这次任务失败的根因是什么?
- 这个 Agent 值得信任吗?
如果数据不能转化为判断,那采集再多也只是在堆积”数据债务”。
这篇文章,就来聊聊从数据到判断的几个关键场景。
一、成本归因:钱花到哪儿去了?
LLM 是按 Token 计费的。一个 Agent 跑起来,Token 消耗可能非常惊人。
我见过的真实案例:
- 一个”智能客服”Agent,一天消耗了价值几千美元的 Token
- 一个”代码助手”Agent,因为陷入循环,几分钟内吃掉了一个月的预算
- 多个 Agent 协作的场景,账单来了,不知道哪个 Agent 该背锅
为什么成本归因很难?
表面上看,成本归因很简单:统计每个 Agent 的 Token 消耗不就行了?
实际上远没那么简单:
问题 1:Token 消耗不均匀
一次 LLM 调用的成本 = Input Token × 单价 + Output Token × 单价
但不同调用的 Token 消耗差异巨大:
- 简单问答:几十个 Token
- 带上下文的对话:几千个 Token
- 长文档分析:几万个 Token
只统计”调用次数”是不够的,必须精确到 Token 级别。
问题 2:成本跨越多个环节
一次用户任务的成本可能分布在:
- 主 Agent 的推理
- 调用 RAG 检索(Embedding 也要钱)
- 多 Agent 协作中的中间推理
- 失败重试
用户只看到”一次任务”,但背后可能是十几次 LLM 调用。
问题 3:无效成本难以识别
最痛的是无效成本——Agent 做了很多事,但最终没有产生有效结果。
比如:
- Agent 陷入工具调用循环,反复尝试同一个失败的操作
- Agent 的推理”跑偏了”,花了大量 Token 讨论无关话题
- Agent 请求了过多的上下文,但只用到其中一小部分
成本归因的落地实践
我在实践中的做法是分阶段计量:
一次任务的 Token 消耗 =
Input(用户输入)
+ Context(RAG 检索 / 历史对话)
+ Reasoning(推理 / CoT)
+ Tool_Output(工具返回)
+ Response(最终响应)
每个阶段单独计量,好处是:
- 可问责:如果 Context 阶段 Token 爆炸,说明 RAG 检索策略有问题
- 可优化:如果 Reasoning 阶段 Token 过高,说明 Prompt 设计需要改进
- 可预警:设置每个阶段的阈值,超过就告警
一个有用的指标是 Token 效率比:
Token 效率比 = 有效输出 Token / 总消耗 Token
如果这个比值很低,说明 Agent 的”思考”很多,“产出”很少——可能在空转。
二、行为基线与异常检测
安全场景下,另一个核心需求是异常检测:Agent 的行为是否偏离了正常模式?
为什么传统异常检测对 Agent 不太管用?
传统服务的异常检测,通常基于统计指标:
- 延迟 P99 突然升高 → 异常
- 错误率超过阈值 → 异常
- QPS 突然下降 → 异常
但 Agent 的”异常”往往不体现在这些指标上:
- 一个 Agent 可能延迟正常、没有报错,但做出了错误的决策
- 一个 Agent 可能执行成功,但访问了不该访问的数据
- 一个 Agent 可能调用了”合法”的工具,但调用序列暴露了恶意意图
Agent 的异常是语义层面的异常,不是性能层面的异常。
建立行为基线
我的实践是为每个 Agent 建立多维度的行为基线:
维度 1:语义基线
将 Agent 的历史 Prompt 和 Response 通过 Embedding 模型转化为向量,计算向量分布的”正常范围”。
正常状态:Agent 讨论的话题在向量空间中聚集在某个区域
异常信号:新的交互向量突然偏离这个区域
比如,一个”代码助手”Agent 平时讨论的都是技术话题。如果某天它开始频繁谈论”公司财务”、“人员信息”,向量空间中会体现为显著的”语义漂移”。
维度 2:工具调用基线
统计 Agent 的工具调用模式:
- 常用的工具集合
- 工具调用的频率分布
- 工具调用的顺序模式(用马尔可夫链建模)
异常信号包括:
- 调用了从未用过的工具
- 调用频率异常(突然高频调用某个工具)
- 调用序列异常(出现罕见的工具组合)
维度 3:资源消耗基线
统计 Agent 的资源消耗模式:
- Token 消耗速率
- API 调用频率
- 任务完成时间
异常信号包括:
- Token 消耗突然激增(可能陷入循环)
- 任务耗时异常延长(可能被攻击或遇到问题)
综合风险评分
多个维度的异常信号需要综合起来。我用的是一个加权评分模型:
Risk Score = α × 语义漂移分数
+ β × 工具调用异常分数
+ γ × 资源消耗异常分数
+ δ × 高危操作权重
其中,高危操作权重 是针对特定危险行为的硬编码规则。比如:
- 执行
rm -rf→ 直接拉高风险分 - 访问凭据文件 → 直接拉高风险分
- 向外部发送大量数据 → 直接拉高风险分
基于风险分数,设置分级响应:
- 低风险(0-30):记录日志,纳入长期画像
- 中风险(30-70):触发人工审核
- 高风险(70-100):自动隔离 Agent,触发告警
三、从可观测性到可运营
可观测性的最终目标,不是”看清系统状态”,而是让系统可运营。
什么叫”可运营”?我的理解是:能够基于数据做出决策,并形成闭环。
闭环 1:调试闭环
当 Agent 出问题时,能快速定位根因:
异常告警 → 查看执行链路 → 定位到具体步骤 → 分析推理过程 → 发现 Prompt 问题 → 修改 Prompt → 验证修复
这个闭环需要:
- 完整的执行链路追踪
- Prompt 和 Response 的可查询
- 能够”重放”历史任务
闭环 2:成本闭环
当成本超出预期时,能快速找到原因并优化:
成本告警 → 分解到 Agent/任务/阶段 → 发现 RAG 检索返回过多 → 优化检索策略 → 成本下降
这个闭环需要:
- 细粒度的成本归因
- 成本与业务指标的关联(每单位产出的成本)
- 优化前后的对比分析
闭环 3:安全闭环
当检测到异常时,能快速响应并加固:
异常检测 → 判断风险等级 → 自动/人工处置 → 事后分析 → 更新基线/策略 → 预防同类问题
这个闭环需要:
- 实时的异常检测能力
- 自动化的处置手段(隔离、阻断)
- 基线的动态更新机制
可运营的关键:数据 → 洞察 → 行动
把这三个闭环串起来,可以看到一个共同的模式:
数据采集 → 数据处理 → 洞察生成 → 决策支持 → 行动执行 → 反馈学习
可观测性系统的价值,体现在这个链条的每一环:
- 数据采集:之前几篇聊的内容
- 数据处理:关联、聚合、降噪
- 洞察生成:基线对比、异常检测、归因分析
- 决策支持:风险评估、优化建议
- 行动执行:告警、阻断、审批
- 反馈学习:基线更新、策略优化
只有走通这个闭环,可观测性才能真正”可运营”。
系列总结
写到这里,Agent 可观测性系列就告一段落了。回顾一下四篇文章的核心观点:
第一篇:为什么 Agent 会让”看得见”变难
- Agent 的执行路径是概率性的,无法预测
- 传统监控只能回答”做了什么”,无法回答”为什么做”
- 审计、运行时、网络各自为战,缺乏关联
第二篇:我如何理解 Agent 的关键对象
- 四类核心对象:Agent、Model Source、Tool、Agent-to-Agent Link
- 两个观测维度:资产拓扑(静态)+ 执行链路(动态)
- 三种链路类型:A2L、A2T、A2A
第三篇:采集与还原的现实选择
- 三种采集范式:SDK 埋点、网络代理、运行时观测
- 审计与运行时的错位需要关联机制来弥合
- 可还原性 > 全量采集
第四篇:从数据到判断
- 成本归因需要分阶段计量和效率分析
- 异常检测需要多维度行为基线
- 可观测性的目标是”可运营”,需要闭环
Agent 时代的可观测性,确实比传统微服务时代更复杂。但好消息是,很多基本原理是相通的——只是需要针对 Agent 的特点做适配。
希望这个系列能给正在做 Agent 可观测性的朋友一些启发。如果你有不同的想法或实践经验,欢迎交流。
评论