影子模式:让Agent先旁观两周,再让它说话
Agent上线最危险的不是它做错事,而是你不知道它会做错什么。影子模式让AI在生产环境里只观察不干预,用真实流量积累置信度。本文给出投放、标注与准入判据的完整方法。
我们见过最有价值的Agent上线策略,不是精细的灰度比例,而是让Agent先闭嘴。
这叫影子模式(Shadow Mode):Agent 接入真实生产流量,照常生成它的判断和建议,但输出不返回给用户,也不触发任何动作。人照常干活,Agent 在旁边”做题”,然后人工比对。
几周之后,你手里有了一份关于”这个Agent到底会犯什么错”的真实数据。这比任何离线评测都值钱。
为什么影子模式不可跳过
离线跑分测不出“人机分歧”
离线评测告诉你“模型对标准答案的正确率”。但生产环境的真实问题是:它和现有流程里的人,判断是否一致?
如果它95%一致,那5%的分歧点在哪里?这些分歧是新发现的问题,还是人错了?
这两个问题只能在真实流量里回答。而且答案往往意外——我们见过不止一次,“不一致”的案例里有相当比例是人工流程本身有遗漏。
影子模式能暴露“边缘语言”
用户真实输入的形态,远超你的想象:错别字、方言、夹杂表情、粘贴了整段合同、一句话里问了三个问题。这些在测试集里几乎不存在,但在生产流量里天天出现。
它能让你量化“可接受误差”
上线之前,你会觉得“必须100%准确”。看过影子数据之后,你会发现“92%准确,剩下8%是低风险礼貌性问题,人工扫一眼就行”。
这个认知转变很重要:它把一个不可能达成的目标,变成一个可接受的运营指标。
影子模式怎么搭
架构:旁路,不并联
用户请求 → 现有流程 → 返回用户
↓(异步复制一份)
Agent 影子通道 → 记录输出 → 不返回
三个关键约束:
- 异步。影子通道不能影响主链路延迟,也不能影响主链路的可用性。它挂了就挂了,不能拖累生产;
- 只读。影子模式下,Agent 可以调用只读工具(查询、检索),绝不能调用写工具。这一点必须从工具权限层面硬性禁止,不能靠提示词约束;
- 全量记录。输入、输出、工具调用链、耗时、token 消耗,全部落库。少记任何一项,后面都没法复盘。
运行时长的确定
不按“两周”这种日历时间,按样本量。经验值:
- 需要覆盖至少 2000 条真实请求;
- 覆盖至少 3 类主要意图,每类不少于 300 条;
- 包含至少 一次业务异常事件(大促、系统变更、节假日),因为异常时段的输入分布完全不同。
如果日均流量只有50,那需要更长时间;如果有2万,三天就够。按样本量算,不按天数算。
标注:这是最容易被敷衍的环节
2000条全部人工细标不现实。分层抽样:
| 抽样层 | 比例 | 标注方式 |
|---|---|---|
| 影子输出与会话最终结果一致 | 抽10% | 快速确认(30秒/条) |
| 影子输出与结果不一致 | 100% | 详细标注 |
| 影子置信度低 | 100% | 详细标注 |
第二层是全量标注的核心——分歧就是金矿。每一条都要标:
- 错的是一方还是双方?
- 错在理解(没听懂)还是执行(听懂了做错)?
- 如果这个输出真的发给用户了,后果等级是?(无害/尴尬/需纠正/产生损失)
最后一问是关键。它把你从“准确率焦虑”带到“风险分级”上。
准入判据:什么情况可以放出来
影子模式跑完,用这四个数字决定是否上线:
1. 一致率 ≥ 88%。 低于这个数,说明Agent还没理解你的业务语义,需要补上下文或改提示词。
2. 高后果错误率 ≤ 0.5%。 即“产生损失”级别的错误占比。这个数字比总准确率重要得多——1000条里10条小错可以接受,2条扣错款不行。
3. 边缘意图覆盖率 ≥ 90%。 检查哪些意图的影子样本不足。样本不足的意图,上线后不要放行自动执行。
4. 单位成本可接受。 影子期间的token消耗要按100%流量折算,看真实成本。
四项都达标才放。任一项不达标,回到优化环节,不要“先上再看”。
上线时保留的一项设计
不要把影子模式当成一次性阶段。上线后应该永久保留 5% 的影子流量。
好处有两个:
- 持续用真实流量发现新的输入形态;
- 当你准备升级模型或改提示词时,有一批持续更新的对照数据,而不必重新搭一次影子环境。
这也解决了一个长期问题:上线半年后,你的评测集已经腐烂(详见我们关于评测集维护的文章),但影子流量永远是最新的。
一句话
影子模式的本质是:把不确定性从”未知”变成”已知”。
你不知道Agent会犯什么错的时候,它是个风险。你知道它会犯哪些错、多大概率、多严重时,它就是个可控的工具。中间那一步,就是安静地让它先做两周的题。