Agent 改了一版:
怎么知道变好了、别处没退化?

英文问法After you fix one class of bad cases, how do you know nothing else regressed? · How do you tell that a change really made the agent better? · Design a system for evaluating AI agents.

考过别家面经原题,没有 Unity 自己的面经原题 · 字节 后端开发工程师(AI大模型开发平台)一面(2026-09)「修好一类 bad case 后,如何发现其他场景是否退化?」「评测只看最终答案,还是也检查意图识别、工具选择与调用轨迹?」「如何把线上错例回流到评测集?」(牛客)· 字节全栈二面(2026-10)「可用不代表稳定。你们如何评估多次执行结果的稳定性?」(牛客)· 蚂蚁一面(2026-09)「gate是啥?有哪些指标?」(牛客)· 英文侧:Cresta SWE onsite(2026-09)"Design a system for evaluating AI agents.",其余要求是转述,要能比较换 system prompt 或换 model 前后的表现(PracHub,站方编辑过的面经页)· 中文样本里这一类有 24 帖

先弄清楚:每个概念是什么

回归集(regression suite)
固定的一批 task,按类别分组,每次改动之后全部重跑。
成功率
同一个 task 跑 k 次,成功的比例。
Gate
合并之前必须通过的自动检查。
Hidden task
平时不拿来调 agent 的一部分 task,只用来最后确认,防 overfit 回归集。
回流
把线上失败的 case 加进回归集。

看图:改动前后按类别比成功率

改动前 改动后 每类 100 个 run 的成功率 GPU kernel 70% 90% +20,变好 PyTorch graph 85% 83% −2,noise 内 model server 80% 60% −20,退化 feature processing 90% 91% +1,noise 内 gate:有一类下降超过 noise,不合并
图 1:类别和数字都是示意,类别按 FlashVector 的四层来分,每类 20 个 task,每个跑 5 次。GPU kernel 是这次修的那一类。

30 秒回答

I keep a fixed regression suite, grouped by category, and rerun all of it after every change, not just the cases I fixed. Agents are nondeterministic, so each task runs several times, and I compare success rates per category with the model version and environment pinned. A change merges only if no category drops by more than the noise. I also check the trajectory, meaning tool choices, step count and tokens, because a run can pass for the wrong reason. Production failures go back into the suite, and I hold out some hidden tasks so I don't overfit to it.

Version chain

版本做法还剩的问题
v1 只测修好的只重跑这次修的那几个 bad case别的类别退化了看不到
v2 回归集每次改动全部重跑回归集同一个 task 这次过、下次不过
v3 多跑 + gate每个 task 跑 k 次;按类别比成功率;没有类别的下降超过 noise 才合并回归集越调越熟,分数虚高
v4 回流 + hidden task线上失败的 case 回流;留一部分 hidden task回归集变大,重跑一遍变慢

环境不固定,两版的差别可能来自环境。结果对了也可能是碰巧,成本也可能涨了,所以还要看 tool 选择、步数和 token。回归集由 eval harness 来跑(见 LLM harness),变大之后怎么跑得完见 大批量跑 agent。

手算:掉多少才算退化

图里每类有 100 个 run。成功率是 80% 时,它的标准误差是 \(\sqrt{0.8 \times 0.2 / 100} = 0.04\),也就是 4 个点。两版相减,误差约 \(4 \times \sqrt{2} \approx 5.7\) 个点。所以掉 2 个点在 noise 里,掉 20 个点是真的退化。

同一个 task 的几次 run 并不独立,实际的 noise 更大。稳妥的做法是把未改动的版本重复跑几遍,直接量出来(见 noise floor)。

必答点

追问

用 review agent 打分,它自己错了怎么办?

确定性检查优先,比如 test 是否通过、输出是否和 reference 相等。review agent 只做补充,并且抽样人工核对(偏差见 LLM evaluation)。

线上 log 是海量的,怎么变成有限的回归集?(字节原题)

随机抽样会被常见的简单 case 占满。先按失败类型分组和去重,每类留几个代表,写上期望结果再入库。

来源牛客:字节 AI大模型开发平台一面 · 牛客:字节全栈二面 · 牛客:蚂蚁一面 · 牛客:阿里千问技术部一面(「review agent怎么确保他的评价是正确的?」)· 牛客:字节 AI Agent 评测二面 · PracHub:Cresta eval platform · ml-八股 08 第 33 题