接手过几个智能体项目之后,我越来越确定一件事:智能体能不能从“能跑Demo”走到“敢接生产”,关键不在模型选得多强,而在评估与监控做得有多细。Agent-19这个代号,来自我们内部迭代到第十九版的智能体设计稿,核心不是模型本身,而是一整套评估与监控体系的成型过程:从最原始的轨迹日志分析,一路进化到把智能体当成一个“可问责承包商”来管理。这篇就聊聊这套体系是怎么从0到1搭起来的,遇到过哪些坑,以及为什么我把“责任制”当作智能体设计的最后一环。
如果你正在做智能体应用,或者已经在生产环境里被智能体的“玄学行为”折磨过,这篇应该对你有用。它不是教你调用哪个模型,而是告诉你,当智能体不再是你手把手控制的程序时,你拿什么去衡量它、约束它、让它为你干活并且干得明白。
1. 先想清楚:智能体凭什么需要一套“监理体系”
1.1 智能体不是普通程序,失控往往发生在过程里
传统软件工程的监控逻辑是:输入进去,函数执行,输出断言。对智能体来说,这个模型彻底失效。原因是智能体的输出不是一个确定值,而是一整条决策轨迹。同一个用户问题,今天走A分支,明天可能走B分支,后天可能直接拒绝回答。如果你的监控只盯着“最终返回了什么”,那你只能看到冰山一角。
我遇到过最典型的一个案例:某个智能客服系统,用户问退款流程,智能体先检索知识库,再调用工单查询工具,最后生成回答。表面上看起来回答流畅、结构完整,但实际在第二步调用工具时,参数传错了,拉取到的工单状态是一年前的历史数据。用户看到的是“您的退款正在处理中”,实际上退款30天前就失败了。这种问题,只看最终输出,永远发现不了。只有把工具调用参数、检索结果摘要、决策中间态全部记下来,才能定位到问题出在“工具调用参数映射”这一步。
所以说,智能体的失控通常发生在过程中,而不是结果上。评估与监控的首要任务,就是把过程完整记录下来。这也是Agent-19整个体系的起点。
1.2 传统监控手段的三个盲区
很多团队一开始会直接用后端日志系统来追踪智能体,效果都很一般。我总结了三个最常见的盲区:
第一个盲区是日志看得见,链路却断掉了。智能体一次完整任务往往要经历多轮LLM调用、多次工具执行、多个子任务递归。用普通日志系统记下来的是一堆孤立的日志行,调用链关系丢失了,根本不知道哪次工具调用属于哪一轮思考。
第二个盲区是只看结果指标,过程指标空白。常规监控系统会记录响应时间、错误码、调用次数,但智能体的“推理质量”“工具选择合理性”“上下文漂移程度”这些过程状态完全没被覆盖。
第三个盲区是没有基线,异常无法定义。普通监控里,接口响应超过两秒就算异常,阈值是硬性的。但智能体行为是分布的,同一句话在不同上下文里的行为可能完全不同。没有经过评估阶段采集到的基线数据,你根本说不清楚“今天这个回答算不算跑偏”。
1.3 Agent-19的设计目标:让智能体像承包商一样可定义、可验收、可问责
Agent-19在设计之初就确立了一个核心隐喻:把智能体当作一个“可问责承包商”,而不是自己写的临时脚本。承包商和临时工的区别是:承包商有明确的合同范围、有验收标准、有交付物清单、有责任条款。智能体也应该如此。
顺着这个思路,整个体系被拆成三块:评估(定义什么叫“干得好”)、监控(实时感知它干得怎么样)、问责(干不好时如何发现、追溯、纠偏并防止再犯)。轨迹分析则是贯穿三者的基础材料——没有轨迹,评估没有依据,监控没有对象,问责没有证据。
这个隐喻帮了大忙。因为一旦你把智能体当成承包商,你就不会再想“它怎么这么蠢”,而会去想“合同里没写清楚还是验收标准定错了”。思维方式的转换,决定了整个项目的走向。
2. 评估怎么设计:先在指标层堵住跑偏
2.1 三层指标:任务层、过程层、成本层
评估体系的第一步不是选模型,而是定指标。Agent-19采用三层指标结构,每一层回答不同的问题。
任务层指标回答的是“最终结果对不对”:任务完成率、正确率、用户满意度、关键约束满足率。这类指标直接对业务负责,是最容易理解的。
过程层指标回答的是“方式对不对”:工具调用成功率、无效推理轮次、上下文漂移指数、决策路径合理性。这类指标不容易量化,但恰恰是智能体区别于普通程序的核心。一个任务结果正确但过程绕了八圈的智能体,和一个直接命中靶心的智能体,稳定性是完全不同的。
成本层指标回答的是“代价大不大”:单任务Token消耗、单任务耗时、工具调用次数、失败重试次数。这层指标很容易被忽略,但在生产环境里非常致命。我见过一个智能体,任务成功率高得好看,但每次任务要消耗十几万Token,算下来成本比人工还贵,根本没法用。
2.2 轨迹质量四维评分法
过程层指标比较抽象,Agent-19把过程层拆成了四个可打分的维度:
第一维是路径效率,衡量智能体用多少步到达终点。我们把人工最优路径或历史成功路径作为参照,用实际步数除以最优步数,得到一个效率系数。系数越接近1越好,超过2就要告警。
第二维是工具使用合理性,主要看智能体有没有用错工具、有没有在已有答案的情况下还去调外部接口、有没有把只读操作做成了写操作。这一维度的评价最适合用另一个LLM来做评判,后面细说。
第三维是上下文一致性,衡量智能体是否全程围绕原始目标展开。很多失败案例都是干着干着忘了用户最初要什么,开始跑偏去做子任务。我们在每次LLM调用前记录“当前会话摘要”,用向量相似度对比原始任务目标,低于阈值就标记漂移。
第四维是恢复能力,衡量智能体在遇到失败后的表现。有的智能体一遇到工具报错就崩溃,有的会自动降级换个方案继续。这一维很难自动出分,目前是靠人工抽检和典型场景回放来评估。
2.3 参考轨迹对比:让评分有锚点
给轨迹打分最大的问题是“没有参考答案”。Agent-19的解法是建立参考轨迹库。具体做法是:从历史执行记录里挑选一批高质量轨迹,覆盖常见任务类型和边界情况,人工确认过它们的每一步都是最优或接近最优的。之后每来一条新轨迹,就与参考轨迹做对比。
对比不是简单比对文本,而是比对结构。我们把一次智能体任务抽象成“目标—计划—动作序列—结果”四段,参考轨迹是一组JSON结构化的动作序列。新轨迹与参考轨迹做动作序列对齐,标识出新增步骤、缺失步骤、顺序调整。任何明显偏离都会被高亮展示。
这个方法带来的最大好处是:评估从“凭感觉打分”变成了“有据可查”。评审会上讨论的是“为什么这一步多调了两次工具”,而不是“感觉这个回答不够好”。
2.4 指标落地的硬性要求
指标定得再好,落不了地也是废纸。Agent-19对指标落地提了三条硬性要求:
第一,所有指标必须挂在具体字段上。比如“路径效率”必须能追溯到轨迹里的步数统计字段;“工具使用合理性”必须能追溯到工具调用日志的完整记录。没有字段支撑的指标,一律砍掉。
第二,所有指标必须有可重复的计算逻辑。同一个指标换了两个人算,结果必须一致。因此我们在代码库里为每个指标写了独立的计算函数,周期跑批后统一产出评估报告。
第三,所有指标默认要保留原始证据。指标分数只是结果,背后的原始轨迹才是证据。每次评估都生成一条带版本号的评估记录,保证可以复盘。
3. 轨迹分析怎么做:从一条日志到一张决策链路图
3.1 轨迹数据到底要采哪些字段
评估指标只是目标,轨迹数据才是地基。Agent-19的埋点方案经历了三次重构,最后沉淀下来七个必采字段组:
第一个是任务元信息:任务ID、会话ID、触发时间、用户标识(脱敏)、任务目标原文。这是所有轨迹分析的入口,没有任务ID一切白搭。
第二是LLM调用快照:模型名、Prompt摘要、输出摘要、Token数、耗时、温度等采样参数。Prompt不用存全文,存摘要就够,否则存储成本会上天。
第三是工具调用记录:工具名、入参、出参、错误信息、耗时、重试次数。这是定位问题最重要的字段。我强烈建议至少保留入参和出参的完整内容,因为很多问题就出在“智能体以为工具接受了某参数,实际没有”。
第四是决策中间态:每一步的思考摘要、计划变化、目标修正记录。当前主流模型不直接暴露思考内容,但我们可以从动作序列里反推:看到它调用搜索、再调用数据库、再调用总结器,就知道它经历了“查询—验证—生成”三个决策阶段。
第五是外部资源上下文:检索到的文档片段、知识库条目、引用来源。这类信息帮助判断智能体“依据什么作出的回答”,是排查幻觉的核心证据。
第六是运行时状态:内存占用、队列等待时间、并发情况、限流信息。生产环境里智能体失败有很大一部分是资源问题导致的,这类字段能帮你区分“模型蠢”还是“资源不够”。
第七是会话级状态:多轮对话累计轮数、上下文窗口剩余量、历史摘要的更新记录。很多智能体忘了初心,就是因为上下文被中间步骤塞满,早期信息被挤出了窗口。
3.2 埋点三件套:插桩、聚合、关联
字段定好了,怎么落进代码里?Agent-19的埋点方案叫“埋点三件套”。
第一步是插桩。我们封装了一个统一的追踪上下文对象,在智能体启动任务时创建,把任务ID注入到所有后续调用中。无论是LLM调用还是工具调用,都从这个上下文里读取共享的request_id,相当于给整条轨迹发了同一张身份证。
第二步是聚合。所有埋点数据统一推送到一个追踪后端,按任务ID聚合,形成树状结构。树的根节点是任务目标,一层层展开是LLM调用节点、工具调用节点、子任务节点。这棵决策树是后面所有分析的基础,可视化页面也直接基于这棵树渲染。
第三步是关联。把轨迹数据与业务数据打通。比如智能体处理完一张订单后,用订单号反查最终业务结果,判断“智能体说它做完了”与实际“业务系统更新成功”是否为同一状态。这一步容易被忽略,但恰恰是“可问责”的关键——它让智能体的自我报告不再是唯一的事实来源。
3.3 决策快照与状态检查点:调试的救命稻草
排查智能体问题,最痛苦的就是“无法复现”。Agent-19引入了两个机制解决这个问题:决策快照和状态检查点。
决策快照在每一个关键节点自动生成:进入任务时、完成第一次规划后、每次工具调用前后、输出终稿前。快照内容包含当前轮次、已有动作摘要、上下文窗口占用率、剩余可用Token、当前任务目标的向量表示。一次任务下来,通常会有五到十个快照,像坐标点一样把智能体的决策过程钉在地上。
状态检查点则是对任务全局状态的定期存档,类似游戏存档。任务进行到一半挂了,从检查点重置后,可以让智能体从最近一个正常状态继续,而不是整个任务从头来过。这个机制在我们做长耗时任务时特别有用,比如自动撰写行业研究报告,动辄十几分钟,中途崩一次全量重试谁也受不了。
3.4 输出评测报告:定量与人工结合
轨迹数据采集到位后,Agent-19的评估模块会按批次生成评测报告。报告分三层:
第一层是自动量化指标,直接跑脚本算出第一节定义过的三层指标,打出一张数字表。第二层是LLM评判结果,用评判模型对轨迹质量四维打分。第三层是人工抽检记录,抽取5%到10%的轨迹做人工复核,重点看自动评判拿不准的边界案例。
三层报告合并后生成一个综合结论:本次任务批次是健康、可疑还是异常。这个结论不是摆设,它会决定这个智能体版本能不能进入下一轮灰度。
4. 监控体系怎么建:实时告警、灰度发布、漂移识别
4.1 监控的三大底座:链路追踪、指标库、告警规则
评估是离线体检,监控是实时监护,两者缺一不可。Agent-19的监控体系同样建在三个底座上:
链路追踪底座承接第三节的轨迹数据,它解决的是“现在正在发生什么”。我们在追踪系统里建了一张任务流水表,实时写入每条任务的最新节点状态。运营人员打开Dashboard,就能看到当前正在跑的所有任务分别停在哪个阶段,哪些任务工具调用超过十次还没结束,哪些任务已连续多轮没有进展。
指标库负责把原始轨迹加工成统计指标,它解决的是“趋势如何”。我们把任务成功率、平均轮次、工具失败率、平均Token消耗等指标做成时序数据,按小时、按天聚合,方便观察趋势变化。这个库是后面漂移检测的数据来源,所以指标定义必须与评估体系严格一致。
告警规则负责把异常变成通知,解决的是“什么时候需要人介入”。规则不在多,而在准。Agent-19的告警规则只保留了三类高价值规则:指标越界、轨迹结构异常、业务结果对账失败,下面详细解释。
4.2 黄金信号与阈值建议
参考业界监控实践,Agent-19定义了四类黄金信号,每类信号配了初始阈值。阈值可以根据业务调整,但建议以这些作为起点:
任务成功率:黄金线是单日成功率不低于95%,低于90%要告警,低于80%必须停机排查。注意这里说的成功率,不是指单次LLM调用成功,而是指整条任务走完并且通过验收标准。
工具调用失败率:单独看工具失败率要比看任务成功率早发现问题。因为一个任务里调用五到十个工具,某一个工具失败率升高,任务成功率可能还在高位,但已经在恶化。单工具失败率超过5%就告警。
效率指标:平均任务轮次在基线值1.5倍以上时告警,说明智能体开始出现无用功。平均单任务耗时同理,超过基线两倍就查。
成本指标:单任务Token均值超过基线一倍时告警。成本异常往往是逻辑退化的先兆——智能体可能进入了反复尝试的死循环。
提示:阈值的初始值必须来自评估阶段采集的基线数据,不能拍脑袋。我们第一次上线时拍了一个成功率98%的阈值,结果一晚上收到三十多条告警,全是误报,第二天大家就麻木了,真出问题时反而没人在意。
4.3 渐进式发布与自动回滚
智能体监控和普通服务监控最大的不同是:普通服务发新版可以靠测试用例兜底,智能体没有完整的测试用例,因为输入空间太大。Agent-19用的是渐进式发布方案。
具体操作是:新版智能体先在内部环境运行一周,积累足够轨迹;然后放5%流量,跑两三天,对比新旧版本的关键指标;如果指标明显优于旧版,放量到30%;再观察两天,放量到100%。每一步判断依据都来自监控指标库的对比报表,而不是凭感觉。
自动回滚逻辑也简单得多:一旦新版在任一黄金信号上连续三次告警,流量自动切回旧版。切回旧版不是终点,而是问责的起点——系统会自动抓取异常轨迹对应的完整数据包,直接进入复盘流程。
4.4 漂移检测:今天及格不等于明天及格
所有智能体都会漂移,这是模型本身特性决定的。同一个提示词配置,今天表现得体,三个月后可能因为底层模型更新而行为走样。Agent-19的漂移检测机制很有必要单独讲一下。
我们的做法是建立一套黄金任务集,里面放入一百条覆盖核心业务场景的固定任务,每天由机器自动执行一遍,对比输出结果与历史基线的相似度。相似度不是看文本,而是看结构化指标:是否调用了同一个工具序列?任务结论是否一致?关键约束是否都被满足?维护一个向量数据库,把每天的执行结果作为新向量存入,观测这些向量与原始基线的距离变化。
漂移检测的价值不在于发现“今天回答错了一个问题”,而在于发现“系统正在以每周0.5%的速度悄悄偏离标准”。前者是事故,后者是趋势。等趋势累积成事故再动手,成本就太大了。
5. 从监控到问责:把智能体改造成“可问责承包商”
5.1 承包商和临时工的区别:责任边界
我在第一节埋了一个隐喻——可问责承包商。现在把话说透。承包商和临时工有什么区别?
临时工的特点是:干活的人不清楚验收标准,派活的人不看过程。临时工干活干砸了,你可能连他昨天干了什么都不知道,更别提追溯原因。承包商则是反过来的:合同里写明白交付物、验收标准、工期、责任条款,过程中有进度报告,交付后有验收环节,出问题有明确的处理流程。
Agent-19走到最后,做的事情就是让智能体从“临时工”变成“承包商”。这需要三层机制:明确的交付物定义、动态的验收标准、完整的责任闭环。
5.2 动态验收标准:把监控项变成“合同条款”
前几节讲的评估指标和监控阈值,在问责体系里全部转化为“合同条款”。也就是说,每个智能体任务在执行前,就被绑上了一张动态验收单。验收单上写清楚:任务成功的定义是什么、需要满足哪些客观指标、哪些行为被禁止。
举个例子。某个自动化报告生成任务,验收单会写:报告必须包含至少三个数据来源引用,所有引用必须真实存在于知识库中,关键数字与数据库一致,无自创结论。如果报告生成完毕但引用来源无效,任务会被标记为“交付不通过”。这就是在模拟真实世界的采购方验收。
动态验收标准通过配置中心下发,不同任务类型对应不同模板,每次执行时动态实例化。不通过的任务会被打回重做,重做次数上限在合同里写明,超过上限自动转人工处理。这套机制让“智能体说的话”不再是最终结论,验收单才是。
5.3 问责闭环:暂停、修复、重放、恢复
问责不是追责,而是建立“出事之后按流程走”。Agent-19的问责闭环有四个步骤:
暂停,发现问题后立即暂停相关任务类型,不再接受新任务。这一步很简单,但很多团队做不到,因为舍不得在线率。我的经验是:宁可停机一小时,不要带病运行一周。
修复,工程师拉取异常轨迹,定位失败节点,修正提示词、调整工具参数或在工具调用层加校验。修复动作必须在追踪系统里留痕,说明改了什么、为什么改、效果如何验证。
重放,把历史异常任务重新执行一遍,验证修复是否生效。这是轨迹分析的高阶玩法,别人看到的是回放,我们看到的是回归测试。我们把过去一周内的失败记录全部重放,确认修复没有引入新的回归问题。
恢复,验证通过后重新开启任务类型。恢复时先走少量流量,验证半天,再逐步放量。
这套闭环跑顺之后,智能体的每一次异常都不会浪费,都在沉淀为系统能力的一部分。
5.4 运行台账与审计日志
问责体系的最后一块拼图是台账。Agent-19为每个智能体维护一份运行台账,记录它的全部生命周期事件:首次上线时间、每次版本变更内容、每轮灰度数据、历史告警与处理记录、当前健康状态。
台账的价值体现在两个场景:一个是团队协作,新人接手智能体时,不用听老人口述历史,翻台账就知道系统经历过什么;另一个是问责追溯,业务方质疑“为什么智能体今天处理错了”,你能在十分钟内给出完整的证据链:什么时间、哪一步、调用了什么、返回了什么、哪个环节开始偏离预期。
审计日志的粒度要包含完整请求链路、配置变更记录、人工干预记录,缺一不可。没有人工干预记录的审计日志是不完整的——因为很多问题是人工热修后才观察到的,不记录就丢掉了最关键的一个环节。
6. 常见问题与排查技巧实录
6.1 监控数据缺失怎么办
先坦白一个事实:Agent-19上线早期,监控数据缺失率超过20%。不是埋点没做,而是漏采严重。排查后发现原因很典型:某些工具调用是在子进程里完成的,请求上下文没有传递进去,导致这些调用成了“黑户”,完全没有任务ID。
解决办法是建立数据自检机制。每一次任务结束,追踪系统都会做一次完整性校验:任务ID下应有的事件数量是否与预期一致,工具调用是否完整入链,所有节点是否都能回溯到根节点。不完整的数据直接标记为“残迹”,不进入指标统计,避免污染基线。
排查建议:如果发现监控数据缺失,先不要怀疑模型,要怀疑链路。仔细检查所有异步操作和子进程调用,看有没有丢失上下文传递。这是基础设施问题,不是智能体问题。
6.2 全量采集还是采样
智能体轨迹数据量大,全量存储成本高,这是所有团队绕不开的问题。Agent-19的取舍原则是:全量采集、分层存储。
所有轨迹事件实时采集,不省略任何字段,确保事件流是完整的。但存储时分热温冷三层:热数据保留三天,存高性能存储,供实时页面查询;温数据保留三十天,存普通数据库,供常规分析;冷数据保留一年以上,压缩归档,只保留关键字段和决策快照,完整Prompt和工具出参丢弃。
抽样的坑我踩过,不要在生产环境做随机采样。随机采样会漏掉低概率但高破坏性的异常,而这类异常恰恰是监控最该发现的。如果实在要降本,按任务类型分层采样,核心业务全量,非核心业务按10%采样,可以接受。
6.3 评估误报怎么收敛
用LLM当评判者,最大的问题就是误报和漏报。Agent-19初期评估系统误报率接近30%,把团队折腾得够呛。后来我们做了三件事收敛误报:
一是给评判LLM提供更充分的上下文。初始版本只给它看一段摘要就打分,它很容易因为信息不足而误判。后来改为提供完整决策快照,误报率立刻下降一半。
二是引入多评判一致性。同一个轨迹请两个评判模型分别打分,差异超过一定幅度就视为“待人工复核”。模型间的分歧本身就是一个信号,说明这条轨迹确实边界模糊。
三是让人工介入校准评判标准。每周抽取典型误报案例,标注出机器误判的原因,沉淀成提示词里的规则条目。跑一个月之后,误报率从30%压到8%左右,基本可以接受。
6.4 平台选型与自建边界
最后聊一下工具选型。市面上的LLM观测和评估平台已经不少,但不要指望开箱即用。我的建议是:第一,优先选支持OpenTelemetry协议的基础设施,便于与已有监控体系打通;第二,评估模块要能自定义指标公式,内置模板通常不够用;第三,平台必须支持轨迹回放,没有这个功能的直接不用考虑。
如果团队技术能力强,也可以走自建路线。但自建的范围要控制好,建议自建评估与告警规则层,因为这是业务最贴身的逻辑,现成平台往往不适配;链路追踪和指标存储这类通用底座直接用现成设施,别重复造轮子。
重要提醒:无论选什么平台,都要确保轨迹数据可以随时导出。数据是评估与监控体系最核心的资产,平台可以换,数据不能丢。
写在最后的一点体会
我见过很多团队把智能体上线当作终点,觉得模型调通了、效果看着不错就算完事。但实际上线那一刻才是评估与监控的开始。Agent-19这套体系跑下来,我最深的体会是:不要把评估与监控当成外围的“安全措施”,它本来就应该是智能体产品功能的一部分。你把验收标准写清楚、把过程轨迹留完整、把责任闭环跑通,智能体才能真正从一个“能聊天的模型”变成一个“能交付成果的承包商”。
最后再分享一个小技巧:给每个智能体版本做一份“行为画像”。记录这个版本的典型行为模式、已知边界、常见失误类型。换版本的时候,先比对画像再放流量,你会少踩很多坑。这套画像不需要复杂的系统,一张表格就能起步,但坚持维护半年,它会成为团队最值钱的文档之一。