

























直接开源了 eval
Our eval architecture and implementation is open sourced in the Deep Agents repository.
For each eval, add a docstring that explains how it measures an agent capability. This ensures each eval is self-documenting. We also tag each eval with categories like tool_use to enable grouped runs. 用文字描述评估, 打标签分组 (依据测试内容而非来源)
一些标签分组
| Category | What It Tests |
|---|---|
file_operations |
File tools (read, write, edit, ls, grep, glob), parallel invocation, pagination |
retrieval |
Finding information across files, search strategies, multi-hop document synthesis |
tool_use |
Selecting the right tool, chaining multi-step calls, tracking state across turns |
memory |
Recalling seeded context, extracting implicit preferences, persisting durable info |
conversation |
Asking clarifying questions for vague requests, sustaining multi-turn dialogue with correct actions |
summarization |
Handling context overflow, triggering summarization, recovering info after compaction |
unit_tests |
SDK plumbing - do our system prompt passthrough, interrupt config, subagent routing, skill path resolution, etc. all work? |
read_file tool.除了常规的规则匹配, LLM judge 等, 还评估效率. The metrics we measure for each evaluator run are:
| Metric | Definition |
|---|---|
| Correctness | Whether the model completed the task correctly |
| Step ratio | Observed agent steps / ideal agent steps |
| Tool call ratio | Observed tool calls / ideal tool calls |
| Latency ratio | Observed latency / ideal latency |
| Solve rate | Number of expected steps / observed latency, with a score of 0 if the task was not solved correctly |
其中 ideal trace 是最小步数 (包括 parallel tool call) 做完的 trace.
We use pytest with GitHub Actions to run evals in CI so changes run in a clean, reproducible environment. 可复现.
We can also run a subset of eval using tags save costs and measure targeted experiments. For example, if building an agent that requires a lot of local file processing and synthesis, we may focus on the file_operations and tool_use tagged subsets. 节约成本只跑相关标签分组的 eval
提升 Terminal Bench 2.0 排名.


(看起来有点类似 Langfuse 的 Using Agent Skills to Automatically Improve your Prompts)
Self-verification allows agents to self-improve via feedback within a run. However, they don’t have a natural tendency to enter this build-verify loop.
We added guidance to the system prompt on how to approach problem solving.
做了个类似 ralph loop 的 hook 让 agent 退出循环前先验证通过.
看起来是对 terminal bench 特化调提示词.
通过 hook 检测如果编辑同个文件多次, 则注入提示词提醒 agent 换种方法.
因为 terminal bench 有时间限制, 不能无脑开 xhigh thinking.
每个 eval 被标记为 baseline(基础)或 hillclimb(爬坡):
可以通过 --eval-tier baseline 只跑基础测试,--eval-tier hillclimb 只看爬坡进度。
测什么:Agent 能否正确使用文件工具——读、写、编辑、列目录、搜索内容,并且在合适的时候并行调用多个工具。
给 Agent 一些预先放好的文件,然后让它执行各种文件任务:
效率预期:每个任务都定义了”理想轨迹”——几步完成、调用几次工具、每步调什么。Agent 如果多绕弯子,效率指标就会变差。
测什么:Agent 能否跨越多个文件找到信息,并组合出答案。
这些案例的数据预先放入 Agent 的工作空间作为文件。Agent 必须用文件工具找到答案。评分方式:检查最终回答是否包含标准答案的关键片段。
测什么:给 Agent 8 个模拟工具(Slack 发消息、发频道消息、GitHub 创建 issue/PR、Linear 创建 issue、Gmail 发邮件、网页搜索、日历创建事件),看它能不能选对工具。
分三种难度(3 个 baseline,5 个 hillclimb):
同时测 Agent 能不能一次调用多个工具(比如用户说”在 Linear 和 GitHub 上都建个 issue”)。
测什么:Agent 能否通过 ID 关联的多步查询获取信息。
模拟了一个小数据库:6 个用户、5 个城市、7 种食物,通过 ID 互相关联。每个工具只能查一个属性(比如”查用户所在城市”返回的是城市 ID,不是城市名)。
从简单到复杂的测试:
这个 suite 同时测量正确性和并行化效率。
测什么:在更复杂的业务域中做同样的链式查询和聚合推理。
模拟了一个运维事件管理系统:工程师、团队、服务、仓库、手册、环境、事件、告警、部署、指标——10 种实体通过 ID 互相关联,约 35 个工具。
测试覆盖:
测什么:Agent 能否通过同一个工具反复修改同一份数据,每次都基于上一次的结果。
让 Agent 创建一个 5 项的待办清单(比如”煮咖啡、喝水、查日历、写计划、开始第一个任务”),然后逐步标记每一项为完成。每次只改一项,5 次更新。这测的是 Agent 的状态追踪能力——它需要记住上一步的结果,而不是从零开始。
分三组测试:
给 Agent 预先写入的”记忆文件”,看它能不能:
/api.txt,Agent 应该自动创建 /config_api.txt模拟多轮对话,看 Agent 能不能从对话中提取偏好并持久化:
记忆写入的质量用 LLM judge 来评估(而不是简单子串匹配),确保写入的是简洁的偏好而不是一大段对话原文。
从 HuggingFace 加载数据。测试两种策略:
两种维度:
测什么:当对话太长超出上下文窗口时,Agent 能不能正确处理。
5 个测试,每个都很不同:
给 Agent 模糊的用户请求,看它会不会问出恰当的追问:
用 LLM judge 评估追问是否恰当。
来自 Sierra Research 的 τ-bench 系列。模拟一个航空客服场景:
这是最难的一组测试,因为需要 Agent 同时做到:理解业务规则、在多轮对话中保持一致、正确操作数据库、和用户沟通清楚。
从三个公开 benchmark 各精选了 5 个困难案例。每个案例的运行方式不同,但核心思路一样:给 Agent 一组工作空间文件或工具,让它完成一个有标准答案的任务,然后对比结果。
来源:FRAMES benchmark(Google DeepMind) 测什么:Agent 需要在多个文件之间跳转查找信息,然后做推理或计算才能得到答案。
怎么运行:每个案例预先往工作空间放入 3-6 个文本文件,每个文件包含一条线索。Agent 的系统提示告诉它”只看这些文件来回答问题”。评分方式:检查最终回答是否包含标准答案片段。
5 个精选案例:
frames_10 — baseline(5 个文件 + 1 个干扰项):问题是”1997 年 12 月 6 日 SNL 主持人拿过几个托尼奖,乘以 Greta Gerwig 2023 年电影的奥斯卡提名数,再除以 1979 年专辑 Tusk 那个乐队拿过的格莱美奖数”。Agent 需要找到一个文件知道主持人是 Nathan Lane,另一个文件知道他拿了 3 个托尼奖,又一个文件知道 Barbie 拿了 8 个奥斯卡提名,还有一个文件知道 Fleetwood Mac 拿了 2 个格莱美。最后计算 3 × 8 ÷ 2 = 12。还有一个干扰文件提到 Little Women,也是 Gerwig 导演的但不是 2023 年的——Agent 需要区分。
frames_11 — baseline(5 个文件):把轧棉机、真空泵、商业卫生纸发明人的 2010 年年龄加起来,减去安全别针和缝纫机发明人的年龄。每个文件单独给出一个发明人的”2010 年年龄”,Agent 需要全部找到并计算 (245 + 363 + 183) - (84 + 85) = 622。
frames_12 — hillclimb(3 个文件):三个人分别在黑斯廷斯战役、火药阴谋处决日、伦敦 2012 开幕式时过了 10/12/14 岁生日。谁在某个比较日期最老?Agent 需要从”事件日期”文件算出生年,再用”比较日期”文件算各人年龄并比较。答案取决于比较日期(亨利一世去世 1135 年、纳西比战役 1645 年、特拉斯辞职 2022 年),需要一步步算出 Edmund 在所有比较日期都是最老的。
frames_16 — baseline(6 个文件 + 1 个干扰项):一条知识链——Joan Didion 的第二本小说 → 电影改编导演 Frank Perry → 他是 Katy Perry 的叔叔 → Katy Perry 的哪首歌在第 54 届格莱美被提名”最佳流行独唱表演”和”年度唱片”→ 那首歌受哪本书启发?答案是 Firework 和 On the Road。有一个干扰文件提到 Roar 也是 Katy Perry 的歌,但不是这道题的答案。
frames_18 — baseline(5 个文件 + 1 个干扰项):找出同一年在同一个国家举办过冬季和夏季奥运会的年份,然后看哪一年的女性参赛者总和最多。文件给出了 1924/1932/1936 三年的数据,需要分别加总后比较:1924 = 148、1932 = 143、1936 = 411,答案是 1936。干扰文件提到 1984 年,但那年的冬奥和夏奥不在同一个国家。
来源:Nexus benchmark 测什么:Agent 需要阅读 API 文档文件,然后写出正确的嵌套函数调用表达式。不是实际调用 API,而是组合出正确的调用链。
怎么运行:每个案例给 2 个文件(API 文档 + 具体参数说明),Agent 写出表达式,评分检查表达式是否包含标准答案的关键片段。
5 个精选案例:
nexus_nvd_nested_13 — baseline(NVD 漏洞数据库 API):需要先用 searchCVE 搜索 Microsoft Exchange Server 2013 的 CPE 记录,再用 filterDeprecatedCPEs 过滤掉已弃用的,取第一个结果的 CPE 名称,最后用这个名称再搜索相关漏洞。组合出来是嵌套的:searchCVE(cpeName=getCPEName(get_first_object_from_list(filterDeprecatedCPEs(searchCVE(...)))))。
nexus_nvd_nested_14 — baseline(同上):用精确关键词搜索”Windows”,过滤弃用,取第一个的 CPE 名称,再搜漏洞。同样的 API 但不同的搜索路径。
nexus_placesapi_15 — hillclimb(地点推荐 API):两个并行请求——”在我当前位置附近找好吃的”和”在 Reno 附近找好吃的”。每个都需要先获取经纬度,再获取推荐,再按距离排序。Agent 需要写出两条独立的嵌套调用。
nexus_multiversemath_17 — baseline(数学函数 API):用文档中提供的 sin、cos、add、negate、pi、power 等函数组合出四个数学表达式的值。比如 sin(π) - sin(-cos(8 + π)) 需要翻译成 subtract(a=sin(radians=pi()), b=sin(radians=negate(a=cos(radians=add(a=8.0, b=pi())))))。
nexus_multiversemath_18 — hillclimb(同上):类似但表达式不同,包括 π^(-(cos(5) + sin(0))) 这样的嵌套。
来源:BFCL (Berkeley Function Calling Leaderboard) v3 测什么:Agent 需要在多轮对话中调用有内部状态的 API(有持久化的数据),执行一系列操作。对话结束后,对比 Agent 操作后的 API 内部状态和标准答案的状态是否完全一致。
怎么运行:为每个案例实例化真实的 API 对象(不是 mock),所有方法调用会修改内部状态(比如余额、票队列、消息列表)。Agent 通过多轮对话逐个完成任务。评分:把 Agent 执行后的每个 API 属性值和标准答案逐个对比,任何不一致就判失败。
5 个精选案例:
为什么选这些:这 15 个案例(5×3)是各 benchmark 中最困难、模型表现最差的子集。能在这上面拿高分,意味着 Agent 在真实场景中也不会差。
这些不测模型能力,而是测框架本身有没有正确工作:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。