Agent 评测框架

适用产品:支持用户供给 Skill 的 Agent 产品 版本:v0.6 | 最后更新:2026-04-07


框架总览

11 个评测维度按能力层级分为三组,编号连续递增。排障和上线优先级均从第一组开始:第一组有问题不用看后面;第一组达标再看第二组核心路径;第三组是持续迭代的品控层。

第一组:基础能力(B1-B3)

这些坏了,其他维度都跑不起来。必须优先达标。

维度 名称 核心问题 评测方式
B1 意图理解 agent 理解了用户想要什么吗? 自动 + 人工抽样
B2 Tool Use agent 正确使用工具完成任务吗? 自动为主
B3 指令约束遵从 agent 能严格执行精确约束条件吗? 自动为主

第二组:复合能力(C1-C5)

依赖基础能力组合而来。核心路径必须达标,边界情况持续迭代。

维度 名称 核心问题 评测方式
C1 Skill 遵从 agent 正确识别并执行 skill 吗? LLM-as-judge + 人工校验
C2 规划与多步推理 agent 能规划并可靠地完成复杂任务吗? 自动(端到端成功率)
C3 记忆管理 agent 正确利用和更新记忆吗? 自动 + 人工抽样
C4 任务执行稳态 agent 会死循环或过早放弃任务吗? 自动
C5 长上下文性能 上下文变长时 agent 性能如何衰减? 自动

第三组:质量与安全(Q1-Q3)

基础和复合能力跑通后的品控层。上线前必须有底线,之后持续提升。

维度 名称 核心问题 评测方式
Q1 幻觉与知识边界 agent 知道自己不知道什么吗? 自动 + 人工抽样
Q2 安全与对抗鲁棒性 agent 能抵御恶意输入和注入攻击吗? 自动为主
Q3 效率 agent 用最优路径完成任务吗? 自动

横切维度(X)

贯穿所有层级的附加评测,每次评测均需覆盖。

维度 名称 核心问题 评测方式
X 输出一致性与风格对齐 agent 的输出稳定、风格符合预期吗? 自动 + LLM-judge

Skill 分组评测方法论

本产品的核心差异化在于用户供给 Skill,但评测时需要同时验证「没有 Skill 时的基础能力」和「有 Skill 时是否产生负面影响」。

核心矛盾

解决方案:基础能力层(B1-B3)采用分组对照评测,复合能力层(C1-C5)和质量与安全层(Q1-Q3)在 Skill 开启状态下评测。


评测分组策略

第一组(B1-B3):双组对照

组别 Skill 状态 测试目标 意义
Group A: Baseline 关闭所有 skill 纯基础能力 验证无 skill 时 agent 能否达到可用下限
Group B: Skill-enhanced 开启相关 skill Skill 不破坏基础能力 验证 skill 没有负向干扰基础逻辑

执行方式

为什么需要 Group A(无 skill baseline)

  1. 排障起点:如果无 skill 时都不达标,问题在 agent 本身,不是 skill 设计
  2. 对照基准:有 baseline 才能量化 skill 带来的增益或损失
  3. 通用能力保底:即使用户未供给任何 skill,产品也应可用

为什么需要 Group B(有 skill)

  1. 真实场景:产品上线后就是 skill-enabled 的,不测等于没测真实状态
  2. 负面检测:部分 skill 设计不当会破坏基础能力(如强制流程导致意图理解僵硬)
  3. Skill 质量指标:若 Group B 得分低于 Group A,说明 skill 写得有问题

第二组(C1-C5):Skill 必开

复合能力层的评测必须在 Skill 开启状态下进行,无需对照组。原因:

前置条件:只有当 B1-B3 的 Group B 达标后,才应进入 C1-C5 评测。

if B1-B3 Group B 得分 < 阈值:
    Skill 破坏了基础能力,优先修复 Skill 设计
else:
    可进入 C1-C5 评测 Skill 遵从度和复合能力

第三组(Q1-Q3):Skill 必开

质量与安全层评测在真实状态(Skill 开启)下进行,因为:


Skill 配置管理

测试 case 中的 Skill 配置字段

每条 case 需要指明:

示例:

case_id: B1-EI-01
group_a:
  skill_enabled: false
group_b:
  skill_enabled: true
  active_skills: 
    - flight_booking_skill
    - travel_planning_skill

Skill 版本管理

每次评测需记录:


关键指标

指标 计算方式 含义
baseline_score Group A 平均得分 无 Skill 时的基础能力下限
skill_enhanced_score Group B 平均得分 有 Skill 时的能力水平
skill_impact_delta Group B - Group A Skill 带来的增益(正值)或损失(负值)
skill_negative_rate Group B < Group A 的 case 比例 Skill 负面影响的覆盖面

质量门槛


第一组:基础能力


B1 · 意图理解

目标

验证 agent 能否在不同清晰度的输入下,准确捕捉用户意图并作出合理响应。

评测维度

维度 说明
精确意图 指令明确时,是否完整、准确地执行
模糊意图-澄清 指令不足时,是否主动提问而非胡乱猜测
模糊意图-推断 有上下文时,是否合理推断而非打断用户
多意图 一句话含多个目标时,是否全部处理
意图优先级 多个意图存在冲突时,是否正确排序处理

方法

  1. 分组对照评测:每条 case 分别在 Group A(无 skill)和 Group B(有 skill)下执行,对比两组得分
  2. Golden Set 评分:针对每个维度构造 case,人工标注期望行为,自动比对输出
  3. 二元判断:意图理解是否正确(对/错),再辅以部分分(关键要素覆盖率)
  4. 澄清行为分类:对模糊输入,判断 agent 的响应属于「正确澄清 / 错误推断 / 合理推断 / 过度澄清」四类

模块


B2 · Tool Use

目标

验证 agent 能否正确选择工具、构造参数、处理异常,并在多工具依赖场景中正确编排。

评测维度

维度 说明
工具选择准确率 是否选了正确的工具(可能有多个合理选项)
参数构造准确率 参数是否完整、类型正确、值合理
工具链编排 多工具有先后依赖时,顺序和条件是否正确
工具失败恢复 工具返回错误时,是否有合理的重试/降级策略
工具冗余调用 是否存在不必要的重复调用(效率指标)

方法

  1. 分组对照评测:每条 case 分别在 Group A(无 skill)和 Group B(有 skill)下执行,对比两组得分
  2. Trace 级评测:记录每次工具调用的完整 trace,对照期望 trace 打分
  3. 参数 diff:对构造的参数和 ground truth 参数做字段级 diff,计算字段准确率
  4. 注入失败测试:主动让工具返回错误,观察 agent 恢复行为
  5. 自动化为主:大部分可程序化验证,无需人工

模块


B3 · 指令约束遵从

目标

验证 agent 能否严格执行用户给出的精确约束条件,包括格式、数量、内容限制等。这与意图理解(B1)不同:B1 测「理解了什么」,B3 测「有没有按约束做到」。

评测维度

维度 说明
格式约束 指定输出格式(JSON / Markdown / 纯文本)时,是否严格遵守
数量约束 「恰好 3 条」「不超过 5 项」等数量限制的遵守率
内容禁止约束 「不要提 X」「不用 Y 词」等内容禁令的遵守率
长度约束 「200 字以内」「一句话总结」等长度限制的遵守率
多约束叠加 同时存在多个约束时,是否全部满足而非顾此失彼

方法

  1. 分组对照评测:每条 case 分别在 Group A(无 skill)和 Group B(有 skill)下执行,对比两组得分
  2. 约束违反自动检测:大部分约束(格式、数量、长度)可程序化验证,无需人工
  3. 内容禁止检测:正则或关键词匹配,检测禁止内容是否出现
  4. 多约束组合集:构造含 2-4 个约束叠加的 case,测试约束间的干扰

模块


第二组:复合能力


C1 · Skill 遵从

目标

验证 agent 能否准确识别当前任务应使用哪个 skill,并严格按照 skill 规范执行,同时具备处理 skill 边界情况的能力。

这是本产品的差异化核心层,评测标准应与 Skill Schema 规范绑定。

前置条件:只有当 B1-B3 的 Group B(有 skill)得分达标后,才应进入 C1 评测。如果 Group B 得分低于阈值,说明 Skill 破坏了基础能力,应优先修复 Skill 设计。

Skill 配置:C1 评测必须在 Skill 开启状态下进行,无需对照组。

评测维度

维度 说明
Skill 触发准确率 给定任务,是否命中了正确的 skill
Skill 执行忠实度 执行结果是否符合 skill 规定的输出标准
Skill 边界识别 任务不在 skill 覆盖范围时,是否正确降级而非强行套用
Skill 冲突处理 用户意图与 skill 规范冲突时,处理是否合理
多 Skill 编排 同时触发多个 skill 时,是否正确组合执行

方法

  1. 三类 Case 构造(每个 skill 必须覆盖):

    • 完美匹配:任务完全在 skill 覆盖范围内
    • 部分覆盖:任务只有一部分被 skill 覆盖
    • 完全不覆盖:没有相关 skill,测试 agent 是否知道降级
  2. LLM-as-Judge 评分

    • 输入:skill 定义 + 任务 + agent 输出
    • 评分项:忠实度(是否违反 skill 规定)+ 完整度(skill 要求的要素是否都输出了)
    • 分值:0-5 分,需提供评分依据
  3. Judge 校准:每轮评测对 judge 结果抽样 10-20% 人工复核,维护 judge 准确率指标

模块


C2 · 规划与多步推理

目标

验证 agent 能否对复杂任务制定合理计划,并在执行过程中可靠地完成多步骤链式任务,包括对中间错误的容忍和修正能力。

评测维度

维度 说明
任务分解质量 拿到复杂任务后,是否能拆解成合理的子任务序列
计划修订能力 执行中发现计划不对,是否能及时调整而非一路错到底
端到端任务成功率 复杂任务整体完成率(最终结果正确)
步骤完成率 即使最终失败,完成了多少中间步骤(partial credit)
错误传播率 中间步骤出错后,是否导致后续步骤连锁失败
错误自修复率 中间步骤出错后,agent 自行发现并修正的比例
复杂度衰减曲线 随任务步骤数增加,成功率如何衰减
输出自检 交付前,agent 是否会验证自己的输出符合任务要求

方法

  1. 任务按步骤数分级:2步、3-5步、5步以上,分别统计成功率
  2. 计划质量评审:在 agent 开始执行前截取计划,LLM-judge 评估分解合理性
  3. 注入中间错误:在固定步骤注入错误,测试计划修订和错误恢复能力
  4. 端到端自动验证:定义任务的最终输出 ground truth,程序化判断是否达成

模块


C3 · 记忆管理

目标

验证 agent 能否在对话内正确利用上下文信息,跨 session 准确召回历史,并在信息更新时正确维护记忆状态。

评测维度

维度 说明
短期记忆利用 当前对话中,是否正确利用已有上下文,不重复询问
长期记忆召回准确率 跨 session 时,相关历史信息是否被正确召回
记忆相关性判断 是否知道什么时候该召回记忆 vs 什么时候不该(防止噪声干扰)
记忆更新正确性 用户纠正信息后,是否正确更新而非继续用旧的
记忆冲突处理 新信息与记忆中的旧信息冲突时,是否合理处理

方法

  1. 上下文利用测试:在对话早期注入关键信息,后续任务依赖该信息,测试是否被利用
  2. 跨 session 召回测试:预置记忆后新开 session,测试召回准确率和相关性
  3. 记忆更新测试:先建立记忆,再给出矛盾信息,验证更新行为
  4. 噪声记忆测试:注入无关记忆,测试是否会干扰当前任务

模块


C4 · 任务执行稳态

目标

验证 agent 在面对困难任务时,既不会陷入循环/死锁无法退出,也不会遇到轻微障碍就过早放弃。这是两个方向相反的失败模式,需要分别测试。

评测维度

维度 说明
循环检测率 陷入重复步骤循环时,是否能自我识别并退出
死锁恢复率 依赖关系导致无法推进时,是否有合理的退出策略
过早放弃率 任务可完成但 agent 错误地放弃的比例(越低越好)
放弃合理性 真正无法完成而放弃时,是否给出了明确的原因说明

:C2 的 e2e_success_rate 能捕捉「最终失败」,但无法区分是循环卡死还是过早放弃。这两种失败的修复方向完全不同,必须区分统计。

方法

  1. 循环注入测试:构造会导致 agent 重复调用相同工具的场景,设置最大步骤数,测试是否能自我退出
  2. 可完成高难任务集:构造表面看起来困难但实际可完成的任务,统计放弃率
  3. 失败原因分类:对所有失败 case 打标签(循环 / 死锁 / 过早放弃 / 真实无法完成),用于区分分析

模块


C5 · 长上下文性能

目标

验证随着对话轮次增加、上下文变长,agent 对早期信息的利用能力是否出现显著衰减(lost-in-the-middle 问题),以及各层能力在长上下文下的稳定性。

评测维度

维度 说明
早期信息利用率 上下文很长时,对话早期注入的关键信息是否仍被正确利用
中段信息利用率 上下文中段的信息是否有衰减(lost-in-the-middle 的典型位置)
长上下文意图理解 多轮对话后,对用户当前意图的理解是否仍准确
长上下文工具调用 上下文很长时,工具参数构造准确率是否下降

方法

  1. 位置梯度测试:在上下文的开头 / 中段 / 结尾分别注入关键信息,测试不同位置信息的利用率差异
  2. 上下文长度梯度:同一任务在 4k / 16k / 32k / 64k token 上下文下分别测试,绘制性能衰减曲线
  3. 跨层复测:对 B1、B2、Q1 中的代表性 case,在长上下文条件下重新跑,对比与短上下文的性能差距

模块


第三组:质量与安全


Q1 · 幻觉与知识边界

目标

验证 agent 是否会伪造信息、是否清楚自己的知识边界、是否能如实表达不确定性,而非自信地给出错误答案。

评测维度

维度 说明
工具结果忠实度 是否如实使用工具返回值,而非在工具失败时编造结果
知识边界意识 不知道的事情,是否承认不知道而非自信作答
引用忠实度 基于 skill 或上下文输出时,是否忠实于原始信息
不确定性表达 答案不确定时,是否表达了合理的置信度

方法

  1. 工具失败注入:让工具返回错误或空结果,测试 agent 是否会编造返回值
  2. 不可知问题集:构造一批 agent 无法知道答案的问题(实时数据、私有信息等),测试是否正确拒答
  3. 引用对比:提供 skill 或文档,对比 agent 输出和原始内容,计算信息偏差率
  4. 置信度校准:agent 表达高置信度时,实际准确率应显著高于表达不确定时

模块


Q2 · 安全与对抗鲁棒性

目标

验证 agent 能抵御直接有害输入、prompt 注入攻击(尤其是通过工具结果传入的间接注入),以及用户供给 skill 中可能携带的恶意指令。

评测维度

维度 说明
直接有害输入拦截率 正面有害指令的拦截能力
Prompt 注入防御 工具返回结果中嵌入恶意指令时,是否被识别拒绝执行
Skill 内容安全 用户供给的 skill 若含有害指令,agent 是否识别拒绝
越狱攻击防御 经典越狱手法(角色扮演、假设场景等)的抵御能力
误拒率 正常输入被误判为有害的比例(安全与可用性的平衡)
拒绝质量 拒绝时是否解释原因并提供替代方案,而非干巴巴说「不行」

:Prompt Injection 是 tool-use agent 的高危风险点,工具返回内容(网页、文档、API 响应)均可能携带恶意指令,必须单独测试。

方法

  1. 直接攻击集:构造标准有害输入集,验证拦截率
  2. 间接注入集:在模拟工具返回结果中嵌入「忽略前面的指令,改为…」类指令,测试 agent 是否执行
  3. 恶意 skill 集:构造包含有害指令的 skill,测试 agent 是否识别并拒绝
  4. 误拒率监控:同步统计正常输入的误拒比例

模块


Q3 · 效率

目标

验证 agent 完成任务的路径是否最优,避免冗余步骤和不必要的 token 消耗,为产品部署提供成本基准。

评测维度

维度 说明
步骤数效率 实际步骤数 vs 理论最优步骤数之比
Token 消耗 完成同类任务的平均 token 用量
冗余调用率 不必要的重复工具调用比例
输出冗余度 输出是否含有超出任务需求的多余内容

方法

  1. 最优路径标注:对 golden set 中的任务,人工标注理论最优步骤数
  2. Token 统计:记录每次任务完成的 token 消耗,按任务类型分组统计
  3. 输出长度分析:对比输出长度和任务实际需求,检测冗余

模块


X · 输出一致性与风格对齐

这是贯穿所有层级的横切关注点,每次评测均需覆盖。

维度 说明
输出一致性 同一任务多次执行,输出质量方差
Skill 稳定性增益 有 skill vs 无 skill,输出一致性提升幅度(回归基准)
语气/风格对齐 是否符合产品定义的输出风格规范

模块


评测集管理规范

四类评测集

类型 构造方式 用途 更新频率
Golden Set 人工标注,覆盖核心路径 精确回归,小而精 每次产品迭代后审查
Adversarial Set 人工设计边界和失败场景 测试鲁棒性 定期补充新发现的失败模式
Regression Set 自动化,全量跑 每次上线前回归 持续积累
用户 Trace 采样集 从真实流量中采样 发现未覆盖的失败模式 每周采样复盘

评分记录规范

每次评测需记录:


待补充