1. 效能管理先导课:从单体脚本到Agent系统的度量危机
先讲一个我自己经历过的场景:两三年前,大家做AI应用还是以“单轮调用模型”为主,输入一段文本,模型给一段输出,性能好不好基本看模型选型和Prompt写得好不好,问题定位起来也相对直接。到了智能体(Agent)大规模落地的时候,事情完全变样了——一个业务Agent背后可能是“意图识别→工具调用→多轮上下文维护→结果校验→再调用下一个工具”的完整链路,任何一个环节出问题,用户感受到的都是“这个Agent不好用”。
很多团队的第一反应是继续调Prompt,调着调着发现瓶颈根本不在Prompt上。有个做售后客服Agent的项目,用户投诉“回答太慢”,团队一直在压缩Prompt长度,结果一查链路,发现是因为Agent在工具调用环节反复执行了三次查询,每次都携带了完整的对话历史,Token消耗和时延都翻了倍。这种问题靠“感觉”和“局部优化”根本抓不住,必须有体系化的效能管理手段。
企业级智能体效能管理,本质上要做的事情有三件:定义清楚“好”的标准,把“好”变成可观测的指标,建立让指标持续变好的闭环机制。这听起来有点像老生常谈的质量管理,但放到Agent场景里,每一件都藏着全新的难点。
先说定义“好”的标准。传统软件的功能好坏是明确的:接口返回正确、页面能打开、下单流程能走通。Agent则不同,同样的输入,模型每次生成的路径可能不一样,甚至结果成功与否都带有概率性。我在给几个客户做方案时发现,很多人对Agent的评估还停留在“有没有答对”这一层,稍微好一点的会看“答对的比率”。但企业级场景里,成本、延迟、稳定性、可维护性这些维度缺一不可,而且它们之间往往存在冲突——想提高准确率就要让Agent多推理几步、多调几次工具,成本和延迟就会上去;想控制延迟就得限制工具调用次数,准确率又可能掉。
所以说,效能管理的第一步不是优化,而是给Agent系统建立一个多维度的评估基线。没有基线,所有优化都是拍脑袋。后面我会给出一套我实际在项目中用过的评估框架,你直接可以拿去套用。
有一点需要特别提醒:Agent效能管理不是等到上线后才开始做。我在项目里见过太多“先跑起来再说”的案例,结果上线两周后,面对一堆无法解释的失败日志、超时告警和成本账单,只能干瞪眼。真正合理的做法是,从设计Agent架构的第一天起,就把观测、评估、审计这些基础设施铺设进去。Agent系统的复杂度会随规模指数级上升,早期补观测的成本远低于后期救火。
2. 预算、质量、时延:企业级Agent评估体系的一次落地记录
年初帮一家做B端营销工具的公司搭建Agent评估体系时,我提出过一个观点:企业级Agent和实验室里的Demo之间最大的区别,就是企业级系统必须有预算意识。Demo只要效果好就行,企业里你还要能回答“这个Agent跑一次要花多少钱”“一个月下来整体成本是多少”“成本换来的是什么质量”。
那次的落地过程,我们分四步走,每一步都踩出了一些经验,分享出来供你参考。
2.1 评估集:Agent测评的“题库”应该怎么建立
没有评估集,一切指标都是空谈。但Agent的评估集和传统NLP的测试集完全是两码事。传统测试集的每一条数据有明确的输入和标准答案,Agent的评估集则需要覆盖多轮对话、多路径结果、边界条件和失败注入四类场景。
我们当时是这么设计的。第一类,多轮会话数据:从真实用户会话中脱敏选取,每一条保留完整的上下文,标注目标结果和允许的结果变体范围。第二类,工具调用数据:针对Agent依赖的每个工具,设计正常输入、边界输入、预期失败输入三种样本。第三类,状态恢复数据:模拟对话中断、工具超时、模型输出格式异常等情况,验证Agent能不能体面地恢复。第四类,安全对抗数据:包括注入攻击、恶意指令等,这个不一定要求Agent完美防御,但至少要有明确的处理策略,不能直接把原始输入回显出来。
这里有个容易被忽略的细节:评估集不是一次建完就结束的。随着Agent的Prompt迭代、工具接口变更、甚至底层模型升级,评估集必须同步演进。我们建立了“每条线上异常记录自动沉淀为评估集候选样本”的机制,让评估集跟着系统一起成长。
2.2 质量指标:不只看“对错”,还要看“过程”
Agent的质量评估,我分成结果层和过程层两层来看。
结果层相对好理解——回答是否准确、是否完整、是否符合业务约束。但怎么自动判定“准确”?完全靠人工标注成本太高,只靠字符串匹配又太机械。我们在实践中用的是组合方案:客观字段用规则校验,语义内容用大模型评测(让一个更强的模型当裁判,对比Agent的回答和参考答案),落到最终决策上保留人工抽检,三方互相印证。
过程层的指标才是Agent特有的。关键环节的成功率、单轮工具调用次数、返工率(即一次任务中因失败而重复执行的次数)、决策路径稳定性(同样输入多次运行,决策路径是不是一致),这些指标直接反映了Agent的“行为质量”。举个例子,一个工具调用成功率95%的Agent看起来不错,但每次失败后它还要重试两次才放弃,单任务失败率就从5%变成了将近15%,这个差距就是过程指标才能暴露出来的。
2.3 成本与时延:效能管理的“金钱账”和“时间账”
成本指标的核心不是单纯看总金额,而是看单位有效任务的成本。我们构建了三张看板:第一张是Token消耗分布,按照模型调用、工具结果拼装、多轮记忆携带等来源拆分,一眼就能看出钱花在哪了。第二张是任务维度成本,每一类任务的平均成本、P95成本是多少,让高成本任务浮出水面。第三张是成本趋势,追踪提示词版本和模型版本升级后成本是涨是跌。
时延指标同理,不要只看平均响应时间,要看P50、P95、P99的分位值。平均时延被极端值拉高、P50其实很快的情况我见过太多次。更关键的是按阶段拆分时延——模型推理、工具调用、外部API、上下文处理各自占了多少,这样才能在优化的时候精准下手。
这套体系跑通之后,那个团队第一次能回答“我们的Agent花多少钱、办多少事、卡在哪里”这三个基础问题。后面所有的优化动作,都有了数据支撑。
3. 追问延迟:工作流编排中真正卡住效果的三道窄门
有了评估体系,接下来要解决的就是“怎么让数据变得更好”。我观察过大量Agent项目,发现真正决定效能上限的,往往是LLM应用里最“脏”也最容易被忽视的环节——工作流编排。模型能力的波动你控制不了,但编排方式决定了模型在什么上下文条件下工作,这直接决定了最终效果的天花板。
3.1 第一道窄门:技能拆解粒度与工具调用顺序
把一个大任务直接丢给模型,让它自行规划并调用工具,是目前很多Agent的默认做法,也是效能失控的主要源头。模型确实能做规划,但在企业级场景下,全自由度过高意味着不可控。你要做的是在“让模型灵活”和“让流程可控”之间找平衡。
我们公司在实践中倾向于一个原则:关键的、高成本的、高风险的步骤,用规范的流程显式编排;边缘的、创意的、低成本的步骤,放给模型自由发挥。销售线索清洗Agent就是一个例子——清洗逻辑、字段映射这类确定性操作走固定代码流程,不消耗模型调用;客户意向分析这类需要语义理解的步骤才交给模型。这样既保证了核心链路的稳定,又保留了Agent的智能优势。
工具调用顺序方面,建议在编排层做静态约束:前置工具必须校验通过才能触发后续工具,失败时要有明确的回退逻辑。不要指望模型每次都能做出最优的调用顺序,那是把结果交给运气。
3.2 第二道窄门:上下文膨胀与Token耗尽
这是所有Agent项目都会撞上的墙。对话轮次多了以后,历史消息全部塞进上下文,Token数一路飙升,首字时延变长,成本水涨船高,而且模型对中间部分的关注度会下降,表现为“记前面忘后面”。面对这个问题的常见思路是截断,但粗暴截断会丢关键信息,效果一样崩。
我们的做法是“分层压缩+关键信息抽取”。对话历史按时间窗口分成近期、中期、远期三层,近期保留完整摘要和关键原文,中期只保留结构化总结,远期只保留意图和结论级别的要点。更进一步的方案是,在对话过程中持续提炼“用户画像卡片”和“任务状态卡片”,用这两张卡片替代大部分历史上下文,效果出奇地好。这套方案落地后,一个原本平均上下文不到3000 Token的Agent,在长对话场景下稳定控制在了2000以内,P95时延下降了接近40%。
3.3 第三道窄门:重试、循环与条件分支的失控风险
工作流里出现了循环逻辑,比如“没找到结果就换个关键词再搜”,做的时候觉得“多搜几次总能搜到”,上线后才发现变成无限循环。更隐蔽的是重试逻辑和外部依赖叠加:Agent调用一个第三方API,API超时了,Agent自动重试,重试又超时,每次重试还带着完整的历史上下文——一次看起来很简单的查询,实际触发了5次外部调用、消耗了6倍Token。
这类问题的解法,与其在流程里反复设限,不如从架构上做兜底控制:全局工具调用次数上限、单次工具执行超时阈值、循环退出条件必须包含“已达到尝试上限或者已获得可接受结果”。性能优化不是给用户更快的失败,而是让系统在失败边缘也能体面地收敛,这句我在团队里反复强调,确实救了不少项目。
4. Agent记忆与RAG边界:架构选型直接决定效能天花板
4.1 记忆不该是一个“大箩筐”
很多Agent项目的记忆设计,就是把所有对话历史存下来、每次把最近N条丢进上下文,或者干脆把精华总结也放进去。刚开始几十轮没问题,跑几个月后上下文越来越长,效果越来越差,定位问题还得跨日志、跨数据库地查,非常痛苦。
我倾向于把记忆拆成三层,每一层解决不同问题。会话记忆管的是当前任务内的短期上下文,跟前面的分层压缩方案配合使用。长期记忆管的是跨会话的用户偏好、历史结论、事实信息,采用结构化的存储方式,每次只检索与当前任务相关的部分。全局记忆则是团队级或企业级的知识沉淀,比如业务规范、术语表、常用话术,它更接近静态知识,很少变化。三层记忆的关键在于——不是全部往上下文里塞,而是各层按需检索、按策略注入。
4.2 记忆与RAG:谁负责“知道”,谁负责“查到”
RAG和记忆常常被混为一谈,但它们的定位完全不同。RAG解决的是“不知道”的问题——领域知识没被模型学会,需要从知识库中检索补充。记忆解决的是“记不住”的问题——同一用户在这套系统里说过什么、做过什么、偏好是什么。混淆两者的后果是:把知识库文档塞进记忆里当上下文用,成本高、检索精度差;或者把用户历史对话塞进知识库当RAG检索,相关性一塌糊涂。
在架构选型上比较稳妥的做法是:记忆与RAG分离存储、分离检索,在编排层再决定注入策略。检索优先级是先查会话记忆,再查长期记忆中的用户画像,最后查RAG知识库。每一层命中后,根据当前任务的相关性决定是否注入以及注入多长。宁可让Agent多一次轻量检索,也不要让它在上下文里大海捞针,这是控制质量和成本的核心原则。
4.3 记忆的淘汰与遗忘:比存储更重要
记忆设计里最容易被忽略的,是怎么“忘”。数据是有时效性的,半年前的用户地址现在可能已经失效,建立记忆淘汰机制比无限堆存储重要得多。我们实践下来有两类淘汰策略:时间衰减(超过一定时效的记录降低权重或转入冷存储)和相关性淘汰(单条记忆长期没有被检索命中,说明它在当前场景下没有价值,可以归档)。
记忆本身也伴随成本。一次会话如果携带了太多不相关的记忆片段,模型在生成时会被错误信息干扰。所以最优的记忆不是“多”,而是“准”。
5. 存量Agent的治理与安全边界:企业级避不开的隐形炸弹
5.1 先盘家底,再谈治理
很多企业不是从零开始建设Agent体系的,而是已经跑了一批大大小小的Agent,有的挂在对话框里,有的嵌在业务流程里,甚至有些是业务部门用低代码平台自己搭的。这时候谈效能管理,第一步不是做新框架,而是盘家底:全公司有多少Agent,归属哪个部门、服务什么场景、依赖哪些模型和工具、做到什么程度、出过哪些问题。
我们帮一家客户做治理方案时,花了三周时间把全公司47个Agent全部梳理了一遍,惊讶地发现其中有9个已停止维护但仍在线上运行,每个月还在产生Token账单。那种感觉就像你搬家时翻出好几个已经遗忘的订阅服务,一直在扣款。这个梳理过程,本身就是一次降本增效。
5.2 权限与安全边界:给Agent划定“活动半径”
企业级Agent可以访问内部系统、操作业务数据,权限设计的风险远比想象中大。给Agent配置超出任务范围的权限,出了事连追责都难。我们落地了一套“权限最小化+动态授权”机制:Agent启动时只有基础权限,真正执行某个工具调用前,由授权网关复核该调用是否符合当前任务的权限要求,高风险操作直接阻断或转人工审批。这套机制在三家客户那儿都成了刚需。
输入输出审计同样重要。Agent接收了什么指令、输出过什么内容,必须全程留痕。这里有个经验值得提:审计日志不只要记录成功调用,失败调用更要完整记录,因为很多安全风险恰恰藏在那些失败的尝试里。
5.3 让人工介入成为系统能力
效能管理的一个常见误区是“追求完全自动化”。实际上企业级场景里,过度自动化比自动化不足更危险。合理的做法是在工作流的关键节点设置人工介入位。比如批量外呼Agent在发出对客消息前,先经过人工确认;财务Agent在执行转账前,必须由主管审批。这是把“人在回路”变成工程能力,而不是靠自觉。
质量抽检也是人工介入的重要环节。即便你已经用大模型自动评测了,也必须保留人工抽检的比例。自动评测帮你发现问题,人工抽检帮你发现自动评测没发现的问题。
6. 兜底方案设计:面对真实业务,不能只靠“再试一次”
6.1 兜底不是异常处理,是业务连续性设计
有一次我们某个Agent在生产环境踩到一个隐蔽问题——第三方数据API返回的字段格式从JSON变成了HTML错误页,Agent按正常流程解析失败后开始自动重试,连续失败了6次,累计延迟超过2分钟,最终给了用户一个莫名其妙的回答。这个案例让我深刻意识到,Agent的兜底策略必须提前设计,而不是等事故发生后靠工程师加代码补洞。
我们在所有Agent项目里统一推行的兜底规范包含四层:错误分类(重试是否有意义)、超时控制(P95响应时间加缓冲作为硬上限)、熔断机制(连续N次失败后暂停调用该工具一段时间并告警)、降级方案(核心工具不可用时用替代方案或明确告知用户当前不可用)。每一层都有对应的处理策略,不再出现“傻傻重试”的情况。
6.2 失败要能“优雅”,用户才能原谅你
Agent出错的概率天然比传统软件高,这和模型能力、外部依赖都有关系。用户真正生气的往往不是出错,而是出错后体验崩塌:要么长时间没反应像卡死,要么给一段牛头不对马嘴的回答。一个体面的失败响应应该是:及时告知(在预期时间内给出反馈)、说明情况(用通俗语言解释遇到了什么问题)、给出选择(稍后重试、转人工或者换一种方式处理)。这个设计,比99%的模型调优更能拉升用户体验。
另一个细节是状态可视化。Agent在后台执行多步骤任务时,前端可以用“正在查询订单信息…正在核实账户权限…正在生成处理结果”这种方式展示进度,既能降低用户的等待焦虑,也能在异常时准确定位是哪个步骤出了问题。这一步看着简单,实际对系统设计的要求不低——工作流的每一步都要有状态机和埋点,但对后续排障的价值极大。
6.3 故障演练是最后的防线
兜底方案设计得再完善,没有演练过都是纸面功夫。我们在关键Agent上线前,都要做一次故障注入演练:故意让某个依赖接口返回超时,看Agent怎么表现;故意注入一段异常格式的工具返回值,看编排层会不会崩;故意让模型输出超过格式约束的内容,看解析层怎么处理。很多问题都是在这个阶段暴露出来的——出现过Agent把工具报错原文直接念给用户听的尴尬场景,也出现过编排层在收到异常响应后陷入死循环的情况。这些如果在生产环境才暴露,代价就大了。
7. 落地路线与团队配置:效能管理不是一次性工程
7.1 三阶段推进:先摸底,再优化,后固化
如果你所在的企业或团队也想把Agent效能管理做起来,我建议按三阶段推进,不要急于一步到位。
第一阶段是摸底和定标——梳理现有Agent清单、建立评估集和指标体系、搭好基础的可观测性能力,这个阶段的产出是“一份现状报告+一套度量基线”。第二阶段是攻坚和优化——基于基线数据,逐个解决高成本、高时延、低质量的问题,同时把工作流编排、记忆机制、兜底方案的改造落地。第三阶段是固化和平台化——把验证有效的规范沉淀成组织能力,比如建立审批流程、发布规范、灰度发布机制,并把评估和观测能力平台化,让新Agent上线时自动接入。
我自己见过不少团队卡在第一阶段,理由是“评估集太难建了”“指标口径定不下来”。实话说,这些问题确实需要投入,但收益是长期复利。一个粗糙但真实的基线,远比一个完美但迟迟不落地的方案有价值。
7.2 团队怎么配:谁是效能管理的Owner
Agent效能管理跨模型、工程和业务三个领域,只是指定某个工程师抽空兼任的做法走不远。在团队规模允许的情况下,至少要有三个角色:Agent平台工程师(负责基础设施、可观测性、安全网关)、Agent体验工程师(专注Prompt、工作流、记忆策略和评估集建设)和Agent业务分析师(负责业务场景梳理、效果抽检、用户反馈闭环)。小团队可以一人身兼多职,但这个职责矩阵要想清楚,否则出问题时没人对“Agent好不好用”这个终极问题负责。
7.3 从效能管理到Agent运营:更长期的组织能力
最后一个建议,效能管理做到后期,应该往Agent运营的方向走。所谓运营,就是把Agent当成一个持续迭代的业务系统来对待——每周看指标、每月做复盘、每次模型升级都要重新评估存量Agent。Agent不是一次开发完就结束的项目,模型升级会改变它的行为,业务变化会影响它的输入分布,第三方API调整会破坏它的链路。只有持续的运营机制,才能让Agent系统的效能不随时间和环境推移而衰减。
我在几个客户现场最大的感受是,凡是把Agent当作“持续运营系统”对待的团队,半年后系统稳定性和业务价值都远超那些“上线即甩手”的团队。这个行业还很年轻,但方向很清晰:**Agent的能力上限由模型决定,而效能下限由管理决定。**做企业级Agent,拼的就是谁能让下限更高。