看板全绿,agent 却在悄悄变笨——上线之后的静默退化

《Agent 上线之后》系列第五篇。 前四篇把 agent 送上线了:抽哪些、标多少、标得准不准、怎么判上线。这一篇讲上线之后——一个今天达标的 agent,怎么在没有任何告警的情况下悄悄变笨。English version: Catching Silent Agent Drift。
在一家消费级科技公司做客服 Agent 的那几年,我盯指标盯出一个反直觉的认知:它从来不是一条平线,它一直在波动。
真正难的,不是发现 agent「挂了」——它几乎从不突然挂。难的是,从每天都在抖动的做对率里,分辨出这一下是「正常噪声」,还是「它真的在悄悄变笨」。
而它确实一直在变。每次新品发布、每个开学季,用户的问题分布就会大变,涌现一大批 agent 从没见过的新问法;意图在漂、概念在漂、季节在漂。可这一切,在 CPU、QPS、延迟、uptime 那几块全绿的看板上,一个像素都看不到。
一个今天准入达标的 agent,会在没有任何告警的情况下,用六周时间悄悄滑下去。 而你发现的时候,往往已经是客诉和 GMV 掉了——那是最滞后的信号。
看板全绿,agent 却在悄悄变笨
agent 不会突然挂,它会悄悄退化——而「是否还答对」,不在你任何一块看板上。
infra 看板(CPU / QPS / 延迟 / uptime)测的是「它还活着、还快」,不是「它还对」。一个 agent 可以延迟 200ms、uptime 99.99%、CPU 只用 30%,同时把每一笔差价都算错、把每个新品问题都答成旧款。基础设施健康和回答质量健康,是两件完全不同的事——而大多数团队,只有前者的看板。
infra 看板测的是「它还活着、还快」,不是「它还对」——延迟 200ms、uptime 99.99% 的 agent,可以同时把每笔差价都算错。这就是静默退化最阴的地方:它不触发任何告警。没有 5xx、没有超时、没有 CPU 尖峰。所有传统运维信号都是绿的,而 agent 正在一批批地答错。
你的评估集冻在上线那天,正对着一个旧世界打分
你上线那天建的评估集,会用一个漂亮的旧数字,掩盖一个正在变化的新世界。
上线时你抽的那批样本、辛苦标好的那 200 条,之后每周还在报同一个 94%——因为它是同一批样本。可真实流量早就变了:开学季涌进一批「学生优惠怎么领」,新品发布涌进一批「新款和旧款有什么区别」,而你的评估集里,这些一条都没有。它在对着一个已经不存在的旧世界打分,打得还挺高。
第一篇说过采样的第一课是「别翻 log,要抽样」。这里再加一条同样重要的:采样也不是一次性的。 评估集必须是活的——持续从当前流量重抽、补进新意图、切掉过时的,才跟得上漂移。一个冻在上线那天的评估集,是最体面的自欺:它每周给你一个绿灯,而世界已经换了三轮。
等 GMV 和客诉掉了才发现,已经晚了——盯 leading 信号
指标每天都在抖,你不能对每一下波动都反应(那是噪声),也不能等 GMV 和客诉掉了才动手(那已经晚了几周)。真正该盯的,是那些比它们早报警的先行信号。
GMV、客诉、满意度,是滞后信号——等它们响的时候,agent 已经烂了好几周。而下面这些先行信号,在质量肉眼可见地掉下去之前,就已经在动了:
- unknown 率上升——意图分类兜不住了,说明新问法涌进来了(接意图 codebook 演进)。
- fallback / 转人工率上升——agent 自己举手说「我不会」的比例在涨。
- Critic 拦截率变化——会动钱的写操作被拦的模式变了。
- 某意图占比突变——开学季「学生优惠」从 0 涨到 8%,分布漂移了。
- 置信度分布左移——模型对自己的答案越来越没把握。
它们之所以「先行」,是因为它们在世界变化的那一刻就动了,而不是等 agent 的错误累积成一次 GMV 下跌。至于怎么从波动里分辨真漂移:别盯单点跳动,看趋势 + 控制线——一个信号连续几批越过控制线,才是真退化,不是今天抖了一下(这正是第二篇 CI 思维的另一面:用区间和趋势,不用单点)。
漂移从哪来:四种真实来源
漂移不是一种病,是四种——来源不同,盯法也不同。
- 意图漂移(intent drift):用户问同一件事的说法变了,旧意图分类兜不住 → unknown 率涨。
- 概念漂移(concept drift):同一个词,含义变了。「新款」上个月指 A、这个月指 B;「活动」从大促换成开学季 → agent 按旧概念答,答得一本正经地错。
- 季节性漂移:开学季、大促、发布会,问题分布周期性大变,平时那套评估集完全代表不了这几周。
- 新品 / 新 APP 上线:最猛的一种。每次新品发布,涌进一大批 agent 从没见过的新问法,unknown 率、转人工率当天就跳一个台阶。
这四种里,有一种特别隐蔽:你的知识库或政策改了,agent 却还按旧口径答——源变了、agent 没变。它是概念漂移的工程版,我在《KB 静默失同步的 9 天》里完整拆过一次。识别漂移的第一步,是先知道它有这么几张面孔,别把「新品涌入的 unknown」和「模型退化」当成一回事去治。
这周能做的三件事
- 在 infra 看板旁边,加一块「质量看板」。 至少放三个 leading 信号:unknown 率、转人工率、置信度分布。记住一句话——infra 绿不代表 quality 绿。
- 让评估集活起来。 别再用上线那天那批;每周从当前流量重抽一小批,按第一篇的分层框补进评估集,让它跟得上漂移。
- 给每个 leading 信号画一条控制线。 连续几批越线才报警(用趋势,不用单点跳动),把「今天抖了一下」和「真在退化」分开——这样你既不被噪声吵醒,也不会睡过头。
一个通过了你准入闸门的 agent,不是终点。世界一直在动,而它不会自己跟上。静默退化不是意外,是默认结局。 而发现漂移,只是止血。
真正的解药,是把漂移的信号回流成下一版 agent——让 unknown 里的新问法变成新意图、变成新标注、变成下一次迭代。下一篇讲这个闭环:数据飞轮——怎么让 agent 越用越准,而不是越用越笨。
抽哪些、标多少、标得准不准、怎么判上线、怎么防退化——「上线之后」这套机制,到这里能让一个 agent 不只是「上得去」,还能「待得住」。
这一篇如果让你决定回去加一块质量看板、盯几个 leading 信号,回复关键词「静默退化自查」,我把 6 个先行信号的清单 + 控制线设法发给你。
Subscribe for updates
Get the latest AI engineering posts delivered to your inbox.

