生产 agent 事故复现不了?别死磕确定性,录制回放能把它变成免费回归测试。
Your Agent Failed in Prod. Good Luck Reproducing It. - Tisha Chawla & Susheem Koul, Microsoft · Tisha Chawla
全片 14 分钟·真正值得盯屏约 4 分钟·2 个必看点
- 0:00 – 1:35听
19 万美元的错误交易,监控全绿
用户说「卖出 1000 美元的股票」,agent 却把 1000 填进了数量字段,卖掉 1000 股。接口 30 毫秒返回 200 OK,仪表盘一片绿色,零告警。
最贵的 agent 故障不会触发任何告警——系统层面它「成功」了,只是语义上完全错了。
全程是讲故事式的事故还原,画面只是背景板,通勤路上听声音就够。▶ 跳到 0:00讲者 · Tisha Chawla - 1:35 – 3:20听
别追确定性,追可调试性
把两件常被混为一谈的事拆开:一个是同样输入必得同样输出(托管接口给不了,也不该要),另一个是把已经发生过的那次运行重建到足以调试的程度。
该问的不是「怎么让模型变确定」,而是「怎么调试和重测一次复现不了的运行」。
这是全场的论点转折,靠的是概念辨析而非图示,专心听表述即可。▶ 跳到 1:35讲者 · Tisha Chawla - 3:20 – 5:00听
把温度调到 0 是双重误区
温度归零修不了错误的推理路径,只意味着模型每次都在同一个地方犯同一个逻辑错误;硬件层面它也换不来真正的确定性。
生成时的随机性不该被消灭——那正是 agent 之所以有自主决策能力的来源。
反直觉的论证段,一句一个转折,需要跟着说话节奏走,看画面帮不上忙。▶ 跳到 3:20讲者 · Tisha Chawla - 5:00 – 7:04略
非确定性从哪来:批次与专家路由
从第一性原理拆解:采样确定不等于系统确定;浮点加法不满足结合律,运算时序一偏移就可能翻转胜出的那个词;真正的元凶是你的请求会和同毫秒到达的其他请求编成一批,专家容量一溢出,路由结果就变了。
同一个提示词跑一千次可能得到几十种不同回答,原因是「你和谁同批」——这不是你能控制的变量。
这段配的是原理示意图,扫一眼图上的批次和路由结构就能跟上,逐帧细看没必要。▶ 跳到 5:00讲者 · Tisha Chawla - 7:05 – 8:20听
录在哪:节点边界而非网络层
agent 有一半行为根本不走网络——本地检索、进程内工具、内存状态;网络层抓包在流式和异步场景下还会被打碎。正确做法是在工作流的每个节点外面套一层,记录进出的语义内容和完整环境信息。
要冻结的不只是提示词,而是整个环境:模型版本、构建号、检索到的片段,全部算变量。
讲的是设计取舍和方法论,屏幕上只有一张概念示意,靠听就能吸收。▶ 跳到 7:05讲者 · Susheem Koul - 8:21 – 9:40看
演示:让出错的那一次现形
股票交易 agent 的三个节点各套了一层记录:规划环节、下单工具、收尾环节。执行记录里可以逐层展开,看到模型把金额误读成数量后生成的那次调用,以及每个节点的模型版本和采样参数明细。
有了逐节点的进出记录,「谁生成了这个错误调用」不再靠猜,可以一路回溯到源头。
这是全片信息密度最高的画面:出错的调用参数、层层展开的详细记录都在屏幕上,只听声音会完全错过。▶ 跳到 8:21讲者 · Susheem Koul - 9:40 – 11:40看
把事故改写成免费回归测试
加载那次录下来的执行记录、开启回放模式,没改动的节点直接吐出录制值以重现完全相同的执行路径,只让加了防护的工具真跑,再在工具输出上写断言。
整个测试一次模型都不调,可以离线精确重跑——闭环是标注、录制、可视化、理解、修复、回放、验证。
关键在于代码怎么写、哪些节点被替换成固定值、断言长什么样,这些细节全在屏幕上,是可以照抄回自己项目的部分。▶ 跳到 9:40讲者 · Susheem Koul - 11:41 – 14:08听
两类测试与五条落地要点
防护应该加在工具层而不是试图管住模型。测试则分两类:针对确定性节点(防护、工具调用)的测试,用录制值把模型输出固定下来,把概率踢出局;语气、轨迹这类主观维度则交给模型当裁判来评。
两类测试同等重要,但别混着做——把能确定的部分先确定下来,剩下的才交给主观评判。
收尾的总结与要点罗列,画面是纯文字清单,听完记下五条即可。▶ 跳到 11:41讲者 · Susheem Koul