提示词改一个词、模型换个版本、工具定义动一行、检索参数调个数字——AI Agent 就可能从"能用"变成"莫名其妙"。OpenRouter 发布的回归测试教程给出的做法很朴素:把这些变更当作发布事件对待,锁死一套用例集,每次改动之后全部重跑,再拿结果对照一份书面的行为契约。
关键在"书面行为契约"这几个字上。多数团队的测试是感觉型的——随手试几个问题,觉得回答还像样就上线。契约要求把期望写成可核查的条目:这个 Agent 在什么输入下必须调用哪个工具,必须在几轮内收敛,必须拒绝哪一类请求,遇到歧义时该追问而不是硬猜。用例集锁定同样重要,否则你分不清究竟是模型退化了,还是测试本身被悄悄改过了。基准一动,所有对比都失去意义。
最容易被漏掉的是工具定义和检索设置。改一句工具描述,模型的调用选择就可能整体偏移;调一下召回数量,喂进上下文的内容全换了一批。这些操作没人会当成"换模型",却实实在在改变了行为。所以回归测试的触发条件不该只盯版本号。代价当然有:每跑一轮都要花时间和钱。但比起让真实用户在线上替你发现 Agent 突然不会干活了,这笔账怎么算都划算。

