Skip to content

影子模式与灰度验证

1. 一个常见的升级焦虑

你刚给 Agent 系统换上了新检索策略和更强的模型,演示效果让人眼前一亮。但上线两周后,问题开始冒头:产物引用变少了,审稿拦不住明显错误,生成成本涨了一倍。你想回滚,却不知道问题到底出在新模型、新 Prompt,还是新编排顺序;因为版本没记录,指标没留全,连“回到上一版”都不敢一键执行。

这就是 Agent 系统升级的典型陷阱:节点替换在工程上很容易,但质量变化往往藏在细节里。接口仍然返回 200,产物也能生成,可引用、审稿、风格和成本都在悄悄偏移。影子模式和灰度验证,就是为了让这些偏移在影响真实用户之前被看见、被解释、被回退。

一句话理解:影子模式让新版本先“陪跑”,灰度验证再让它接触少量真实任务,两者都把版本、指标和回滚开关写进流程。

2. 可替换之后还要验证

Agent 项目里,很多节点都可以替换:

  • 资料召回从纯向量检索升级为混合检索。
  • 执行 Prompt 从 v2 升级到 v3。
  • 审稿规则增加事实核查和引用检查。
  • 模型从一个供应商切到另一个供应商。
  • 结构规划 Agent 从固定模板改成动态规划。
  • 交付检查从人工清单改成自动规则和人工复核结合。

这些替换在工程上通常只是配置、Prompt、模型或节点编排的变化。更难判断的是:新版本是否让产物更可信、更清晰、更稳定,还是把问题转移到了另一个节点。Agent 系统的质量变化通常不会表现为单元测试失败,产物仍然能生成、接口仍然返回 200,但资料引用可能变少、审稿可能变松、风格可能漂移、成本也可能上升。上线策略需要覆盖这些渐进变化,并把结果写进任务 trace 和指标面板。

3. 影子模式:让新版本先陪跑

影子模式的做法是:旧版本继续服务真实用户,新版本在后台用同样输入陪跑,只记录结果,不影响正式输出。

适合影子验证的变更包括:

  • 新检索策略。
  • 新 rerank 模型。
  • 新审稿 Prompt。
  • 新结构规划节点。
  • 新交付检查规则。
  • 新多 Agent 编排顺序。

例如,新旧检索策略可以同时运行:

txt
用户任务
  -> 正式路径:retriever_v1 -> 任务继续
  -> 影子路径:retriever_v2 -> 只记录对比结果

影子路径要复用同一份任务需求、场景配置、用户约束和资料范围。这样比较结果时,差异才更接近节点变化本身。对比时不要只看「召回条数」,还要看这些指标:

  • 官方来源占比是否提升。
  • 与结构部分的匹配度是否提升。
  • 审稿阻塞问题是否减少。
  • 生成产物是否更少出现无来源判断。
  • 成本和延迟是否可接受。

影子模式的边界是不会影响用户交付。新版本即使失败,也只进入 trace、样本库和指标面板。等到新版本在离线样本和真实输入上都稳定之后,再考虑让它承担少量正式任务。

4. 灰度验证:小范围真实任务

影子模式证明新版本有价值后,才进入灰度。灰度意味着一小部分真实任务开始使用新版本。

分组方式要谨慎:

分组方式适用场景风险
按用户长期任务习惯明显用户间差异会影响结果
按任务单个任务独立同一用户体验可能不一致
按场景场景风格稳定放量速度较慢
按组织企业客户或团队空间样本量可能不足

Agent 项目通常优先按任务或场景灰度。单个任务互相独立,场景又能约束题材、风格和资料范围,这两种分组更容易解释质量变化。

同一个产物内部要保留一致的实验版本。例如资料节点、结构节点、执行节点和审稿节点都应写入同一个 experiment id。不要让资料节点用 v1、审稿节点用 v2、改写节点又回到 v1,否则一个产物变差时,团队很难判断问题来自检索、执行、审稿还是版本组合。

5. 灰度指标:不能只盯成功率和延迟

灰度前要先定指标。可以分成四组:

指标组例子
质量审稿阻塞率、人工推翻率、交付后修订率、用户采纳率
资料官方来源占比、引用使用率、来源冲突率
性能TTFB、产物完成时间、审稿耗时
成本每产物 token 成本、工具调用次数、缓存命中率

如果只看成功率和延迟,质量回退会被漏掉。Agent 系统的灰度需要把质量指标放进去,尤其是审稿阻塞率、人工推翻率和交付后修订率。

还要区分「指标下降」和「指标异常变好」。审稿阻塞率下降可能代表产物质量提升,也可能代表审稿 Prompt 变松。人工推翻率下降可能代表模型建议更准,也可能代表界面没有把风险充分暴露给用户。灰度期间要抽样看产物、资料、审稿意见和最终交付物,避免只从聚合指标判断质量。

6. 回滚和停止条件

灰度不能一路放量。上线前要写清楚停止条件:

  • TTFB P95 超过阈值。
  • 审稿阻塞率异常下降,可能代表审稿变松。
  • 官方来源占比明显下降。
  • 交付后修订率升高。
  • 用户采纳率下降。
  • 成本超过预算。

回滚也要可执行。Prompt 版本、检索策略、模型版本、审稿规则、工具调用配置和 Agent 编排都应该有版本号,并写入任务 trace。出现问题时,系统才能定位是哪一版进入了灰度,并把后续任务切回稳定版本。

对于已经生成但尚未交付的产物,要明确处理策略:保留旧版本结果、重新生成、只重新审稿,还是转人工复核。Agent 系统的回滚既影响服务流量,也影响交付队列里的存量产物。

7. 从 1% 到全量

一个保守放量路径可以是:

  1. 离线评估:用历史任务对比新旧结果。
  2. 影子模式:真实输入陪跑,不影响用户。
  3. 1% 灰度:低风险任务先使用新版本。
  4. 10% 灰度:观察质量、延迟和成本。
  5. 50% 灰度:确认没有场景或用户类型偏差。
  6. 全量:保留快速回滚开关。

每一步都要有退出条件。没有指标支撑的放量,只是把风险推迟到线上发现。对 Agent 系统来说,放量节奏还要避开高风险场景、重要发布窗口和客户交付节点。

8. 一句话总结

影子模式让新版本在后台陪跑,灰度验证让它逐步接触真实任务;两者都离不开版本记录、质量指标、停止条件和回滚开关。把这套机制嵌入 Agent 流程,替换检索、Prompt、模型、工具编排或审稿规则时,才能及时发现产物可信度、资料质量和审核效率的变化。

参考资料

基于 MIT 协议开源