Agent 的轨迹评估和单轮问答评估有什么不同?

Q5-05评测与可观测常见轨迹评估trajectory工具调用不变量断言副作用effort评测层级

谁在问:Agent 团队二面;2026 新增高频方向

口语化问法

  • 你们 Agent 怎么评?跟评一个普通问答有什么不一样?
  • 结果对了,是不是就说明这个 Agent 没问题?
  • 轨迹评估你们具体怎么做的?参考轨迹哪来的?

考察意图

这是 2026 新增的高频方向。面试官在判断:

  1. 你是不是只会评最终答案。 只评结果的人,会漏掉「答对了但绕了 9 步」「答对了但顺手改了一条数据」这两类问题。
  2. 你有没有面对过「参考轨迹标注太贵」这个现实。 教科书答案是「和参考轨迹比对」,真实生产里几乎没人这么做,因为标不起也维护不动。
  3. 你知不知道评测层级的下沉顺序。 一上来给每个环节配指标,是评测里最常见的过度工程。

参考答案

图 2 · 60 分与 90 分差在哪:代价、演进、怎么验证

60

60 分答案(及格线)

单轮问答只要看最终答案对不对,Agent 是多步的,所以除了结果还要看过程——它调了哪些工具、顺序对不对、有没有多余的调用、有没有死循环。做法是准备参考轨迹,把实际调用序列和参考序列比对,看是否完全一致、或者是否按顺序包含了关键调用。另外还要看步数和成本,因为 Agent 可能绕很远才做对。

这个答案抓住了核心差异(结果 vs 过程),也提到了成本,能过。

它止步于 60 分的原因是:它把「和参考轨迹比对」当成了默认方案,而这在真实项目里几乎不可持续。而且它没提副作用,也没提层级顺序。

90

90 分答案(有生产经验的回答)

我认为有三个本质差异,然后有一个很现实的工程妥协。

差异一:Agent 有副作用,单轮问答没有。 单轮问答评错了,代价只是一个错答案。Agent 评错了,可能真的发了邮件、真的退了款、真的改了工单状态。所以 Agent 评测的第一件事不是指标,是沙箱:工具要有可替换的 mock 实现,环境要能快照和回滚。没有沙箱就没有轨迹评测——你不敢跑第二遍的东西不叫评测。 而且这带来一类单轮问答完全没有的指标:状态断言——不只看它说了什么,还要看跑完之后世界变成了什么样(该建的工单建了没、不该改的字段动了没)。

差异二:结果对不代表过程对。 典型形态是「碰巧对」:它没调检索工具,靠参数记忆答对了;或者调了 9 次工具、其中 7 次是重复的无效调用,最后蒙对。只看端到端结果,这两种都是满分,但前者会在数据一变就崩,后者是成本黑洞。 常见的轨迹指标大致是这一套:完全匹配 / 有序包含 / 无序包含 / 精确率 / 召回率 / 特定工具是否被调用。有序包含是「参考里的关键调用按顺序都出现了,允许有多余的」;精确率惩罚多余调用;召回率看关键步骤有没有漏。 实践上要说一句大实话:完全匹配在真实 Agent 上几乎恒为 0,把它放上看板只会让人麻木。真正能用的是有序包含 + 精确率 + 特定工具是否被调用(后者当安全关卡用:必须调过权限校验工具)。

差异三:步数、耗时、token 本身就是质量指标。 单轮问答的成本是个常数,Agent 的成本是分布,长尾能差一个数量级。所以评测报告里必须并列成功率、平均步数、P95 步数、单次成本。一个成功率 +2%、平均步数 +40% 的版本,通常不该发。

然后是那个工程妥协——参考轨迹标不起,怎么办。 参考轨迹是整个评测体系里最贵的标注,而且 Agent 的 prompt 一改,轨迹就变,评测集腐化极快。所以我们生产上真正在跑的,大部分不是「和参考轨迹比对」,而是负向轨迹断言 / 不变量检查:不要求它走哪条路,只要求它不越界。比如——

  • 不许没调 check_permission 就返回用户数据;
  • 不许连续 3 次调同一工具同一参数(死循环);
  • 不许在只读会话里出现写工具;
  • 不许在没有检索命中的情况下给出带具体数字的结论。

这等于把轨迹评测从「标准答案匹配」降级成「不变量检查」,标注成本降一个数量级,而且不随 prompt 改动腐化。 参考轨迹只保留在少数几条关键主流程上。

最后是层级顺序:先建端到端(结果对不对 + 状态对不对),只有端到端掉分时才下沉到轨迹级,轨迹级也定位不了才下沉到组件级。反过来做——一上来给每个环节配指标——会得到一堆互相矛盾的分数,没人知道该信哪个。

补一条 2026 特有的:effort 档位必须是评测矩阵的一个维度。降档位会直接改变工具调用次数,也就直接改变轨迹指标和成本。换档位和换模型一样,要走完整回归,不能当调参处理。


追问链

图 1 · 五层追问树:面试官会往哪儿挖
五问都在拆同一句话:轨迹评测抓「不该发生的事」,不是路径考试

  1. 轨迹指标具体怎么算?给我举个例子。

    期望六类:完全匹配、有序包含(允许多余)、无序包含、精确率(罚多余调用)、召回率(漏没漏关键步骤)、特定工具是否被调用。召回 1.0 而精确率 0.4 = 都做了但绕远路,是成本问题不是正确性问题;工具参数只判关键参数或算正确比例
    信号只会说「比对调用序列」 → 没落地过;能把精确率/召回率分别对应成本与正确性 → 真跑过看板
  2. 有副作用的 Agent 怎么评?总不能真的去退款吧。

    期望工具双实现:真实 + 可注入 mock/沙箱,评测永远走后者;每条用例前快照回滚,否则用例互相污染、跑第二遍就变;状态断言:「它说它建了工单」和「工单真的建了」是两件事;mock 要能模拟超时/报错/空返回,否则测不出 Agent 的恢复路径
    信号说「在测试环境跑」但不提快照回滚 → 用例互相污染,跑不出可重复结果;主动提「mock 要模拟失败路径」 → 强信号
  3. 结果对了但轨迹不对,算通过还是失败?

    期望按错在哪一类分三档:违反不变量(越权、写了不该写的、漏调安全工具)→ 判失败,哪怕结果对;多余步骤/绕路 → 不判失败,计入成本指标并告警;另一条同样合理的路 → 判通过,是参考轨迹过度指定了路径,该修的是评测集不是 Agent
    信号一刀切「轨迹不对就失败」 → 评测集天天红被无视;一刀切「结果对就行」 → 漏掉越权和死循环
  4. Agent 的评测集怎么维护?会不会比问答腐化得更快?

    期望会,快得多 —— 参考轨迹绑死当前工具集与 prompt,一改就废。① 主力用不变量断言,不绑路径;② 参考轨迹只留关键主流程;③ 断言写在「工具语义」层而非「工具名」层 —— 写「必须做过权限校验」,不写死 check_permission_v2
    信号没意识到腐化问题 → 没维护过;能说出「断言写在语义层不是工具名层」 → 被重构坑过的人才有的设计
  5. 改了一版 prompt 效果明显更好,但轨迹评测集全红了。改评测集还是回退 Agent?

    期望第一动作不是选边,是看端到端掉没掉:端到端没掉、状态断言全过、只有轨迹匹配红 → 评测集过度指定路径,把那批换成不变量断言;端到端也掉 → 真回退;端到端没掉但违反了不变量(新 prompt 跳过权限校验)→ 必须回退,不接受「效果更好」的辩护。改评测集要留记录、由非本次作者复审;「更好」伴随平均步数 +40% 就得重算
    信号直接说「改评测集」 → 等于允许自己给自己判卷;能用端到端/不变量/轨迹匹配三层分情况 → 骨架真内化了
只会背「和参考轨迹比对」的,第 3 层就卡住 —— 那一层要你按「违反不变量 / 绕路 / 换条路」分三档;第 5 层再逼你在「改评测集」和「回退 Agent」之间站队。

评分要点

  1. 说得出三个本质差异:副作用 / 过程正确性 / 成本本身是指标
  2. 知道没有沙箱和状态快照就没有轨迹评测
  3. 说得出轨迹指标族,且知道完全匹配在真实 Agent 上几乎恒为 0
  4. 知道精确率掉 = 成本问题,召回率掉 = 正确性问题
  5. 提出不变量断言 / 负向轨迹断言作为参考轨迹的可负担替代,并说得出腐化理由
  6. 说得出层级下沉顺序:端到端 → 轨迹 → 组件,且只在上一级掉分时下沉
  7. 提到 effort 档位是评测矩阵的一个维度,换档位要走完整回归
  8. 报告里并列成功率 / 平均步数 / P95 步数 / 单次成本

常见错误

「Agent 就是看最后结果对不对」漏掉碰巧对、绕路、越权三类问题
「和参考轨迹比对就行」教科书答案。标不起也维护不动,真实项目里几乎不可持续
完全不提副作用和沙箱说明没真跑过带写操作的 Agent 评测
把完全匹配当主指标恒为 0,看板会迅速失去意义
「轨迹不对就判失败」评测集天天红,最后被团队无视
一上来给每个组件配指标评测里最常见的过度工程,分数互相矛盾
不报步数和成本一个成功率 +2%、步数 +40% 的版本会被误判为改进
轨迹评测集全红时直接改评测集允许自己给自己判卷,门禁退化为装饰

关联学习