Industry & PracticeResearch & Benchmarks
用 缓 存 轨迹 做 任务 高效 的 智能 体 评 测: 附录
附录给出用户名校验器上的量规与两条轨迹摘要、七个编码器的探针准确率、提示词,以及 SWE-bench Verified 的 107 个系统和 Terminal-Bench 2.0 的 65 个系统。

In this piece
用缓存轨迹做任务高效的智能体评测:附录
译注:这是同一篇论文的附录,正文见《用缓存轨迹做任务高效的智能体评测》。
附录 A 轨迹表示细节
A.1 任务、轨迹、量规与抽取示例
我们在 SWE-bench Verified 实例 django__django-11099 上说明 trubric 流水线。
#### 任务。
提供给量规实例化大语言模型的问题陈述:
UsernameValidator 允许用户名以换行结尾 描述 ASCIIUsernameValidator 和 UnicodeUsernameValidator 使用正则表达式 r’^[\w.@+-]+$’ 意图是只允许字母数字字符以及 .、@、+ 和 -。然而,Python 正则表达式一个少为人知的怪癖是,$ 也会匹配结尾的换行。因此,用户名校验器会接受以换行结尾的用户名。改用 \A 和 \Z 来终止正则表达式,就可以避免这一行为。例如,校验器正则表达式可以改成 r’\A[\w.@+-]+\Z’ 以便拒绝以换行结尾的用户名。 我不确定如何正式提交补丁,但所需的改动是平凡的——在 contrib.auth.validators 的两个校验器里使用上面的正则表达式。
#### 实例化的 trubric。
为这个实例生成的六条任务专用字段描述:
查看智能体是否识别出问题在于 ASCIIUsernameValidator 和 UnicodeUsernameValidator 里用 $ 做正则锚定,具体地说是 $ 在 Python 中会匹配结尾换行,以及所提议的修复是在 django/contrib/auth/validators.py 里改成 \A 和 \Z。
检查智能体是否正确定位 django/contrib/auth/validators.py 里的两个校验器类(ASCIIUsernameValidator 和 UnicodeUsernameValidator),并在两者中引用现有正则表达式 r’^[\w.@+-]+$’。
查看智能体是否编写或运行一个测试,确认以换行结尾的用户名(例如 ’validuser\n’)目前被校验器接受,可能是通过使用 Django 的 validate_username,或直接实例化这些校验器。
核验智能体是否把两个校验器类里的正则模式从 r’^[\w.@+-]+$’ 改成 r’\A[\w.@+-]+\Z’,并确保没有对该文件做其他改动。
智能体应当运行相关测试套件(例如 tests/auth_tests/test_validators.py,或完整的 Django auth 测试),以确认带结尾换行的用户名现在被拒绝,并且现有的合法用户名仍然通过。
最终状态应当显示 django/contrib/auth/validators.py 里两个正则模式都已更新,并且没有其他非预期修改,测试确认了拒绝换行的行为。
#### 通用量规。
作为对照,通用基线使用同样的六个字段,但字段描述是固定的、与任务无关的,并由每个任务共享:
行动之前智能体如何定位自己
它如何搜索或导航以找到相关代码
在修复之前它是否以及如何复现该问题
它改了什么(文件、编辑的性质和规模)
编辑之后它是否重新运行了测试或复现脚本,以及观察到的结果(通过、失败、错误)
这次运行如何结束(干净结束、步数或成本上限、未经验证就提交)
#### 轨迹。
提供给摘要大语言模型的、系统 A 在这个任务上渲染后轨迹的摘录。完整渲染轨迹有 98,806 个字符;这里展示开头和结尾。
swe_main
首先,我们应当定位包含 ‘ASCIIUsernameValidator‘ 和
‘UnicodeUsernameValidator‘ 类的文件,以理解正则模式定义在哪里。
由于该 issue 提到这些校验器在
‘contrib.auth.validators‘ 里,我们可以先在 ‘contrib/auth‘ 目录中搜索名为
‘validators.py‘ 的文件。
action: find_file "validators.py" contrib/auth
Directory contrib/auth not found
首先,我们应当定位包含 ‘ASCIIUsernameValidator‘ 和
‘UnicodeUsernameValidator‘ 类的文件,以理解正则模式定义在哪里。[...]
‘‘‘
find_file "validators.py" contrib/auth
‘‘‘
{"open_file": "n/a", "working_dir": "/django__django"}
[... 大约省略 97,000 个字符 ...]
action: python regex_test.py
primary
role: user
ASCIIUsernameValidator 拒绝了该用户名。
UnicodeUsernameValidator 拒绝了该用户名。
(Open file: /django__django/regex_test.py)
(Current directory: /django__django)
bash-$
primary
role: assistant
输出表明 ‘ASCIIUsernameValidator‘ 和
‘UnicodeUsernameValidator‘ 的正则模式都正确地拒绝了带结尾换行的用户名。
这确认了对正则模式所做的改动是有效的。
既然该 issue 已经处理,并且修复已用一个测试脚本核验,
我们现在可以把改动提交到代码库。
‘‘‘
submit
‘‘‘
action: submit#### 抽取结果。
两个系统在这个任务上的轨迹的结构化摘要,是对照上面的量规产生的。这些摘要描述执行行为,而不提及产生该轨迹的支架或底层模型。
#### 系统 A。
该智能体识别出问题源于 Python 的正则行为,即 $ 会匹配结尾换行,并且在两个校验器里把锚点改成 \A 和 \Z 就能修好它。它在最初检查校验器文件时明确提到了这一点。
该智能体搜索了 validators.py,找到 django/contrib/auth/validators.py,打开它,并定位了 ASCIIUsernameValidator 和 UnicodeUsernameValidator 两个类。它在做出改动之前承认了两个类里现有的正则模式 r’^[\w.@+-]+$’。
该智能体试图通过创建 test_validators.py 和 simple_test_validators.py 来复现这个缺陷,但这些脚本因缺少 Django 设置配置而失败。然后它创建了 regex_test.py 来直接测试正则模式,该脚本成功运行,并在修复后确认拒绝了结尾换行,不过它没有展示修复前会被接受。
该智能体编辑了 django/contrib/auth/validators.py 的第 10 行和第 20 行,在 ASCIIUsernameValidator 和 UnicodeUsernameValidator 里把正则从 r’^[\w.@+-]+$’ 改成 r’\A[\w.@+-]+\Z’。差异只显示对该文件的这两处正则改动,没有其他修改。
该智能体运行了自定义脚本 regex_test.py,其输出是 ASCII 和 Unicode 校验器都拒绝了以换行结尾的用户名。它没有运行现有的 Django 测试套件(例如 tests/auth_tests/test_validators.py)来对照正式测试核验该修复。
最终状态包括 django/contrib/auth/validators.py,其中两个正则模式都更新为 r’\A[\w.@+-]+\Z’。新建了三个文件(test_validators.py、simple_test_validators.py、regex_test.py),但没有修改其他现有文件。该智能体提交了这些改动。
#### 系统 B。
该智能体识别出问题源于 Python 的正则行为,即 $ 会匹配结尾换行,导致 ASCIIUsernameValidator 和 UnicodeUsernameValidator 错误地接受以换行结尾的用户名。它理解到,用 \A 和 \Z 替换 ^ 和 $ 会修好锚定问题,正如该 issue 对 django/contrib/auth/validators.py 所描述的那样。
该智能体在 django/contrib/auth/validators.py 里定位了两个校验器类 ASCIIUsernameValidator 和 UnicodeUsernameValidator。它确认两个类都使用现有正则模式 r’^[\w.@+-]+$’,并把它们识别为需要修改的确切位置。
该智能体通过运行一个快速测试来核验该问题,测试把旧的和新的正则模式与带结尾换行和不带结尾换行的用户名做比较。测试确认旧模式会匹配以换行结尾的用户名,而新模式正确地拒绝了它们,合法用户名仍然通过。
该智能体在 django/contrib/auth/validators.py 里把两个校验器类的正则模式从 r’^[\w.@+-]+$’ 改成 r’\A[\w.@+-]+\Z’。差异只显示这两处正则改动,没有对该文件做其他修改。
该智能体运行了 auth 测试套件,全部 494 个测试通过,包括 auth_tests/test_validators.py 里 UsernameValidatorsTests 的测试。它还运行了一个针对性测试,确认带结尾换行的用户名现在被两个校验器拒绝,而合法用户名仍然通过。
最终状态显示 django/contrib/auth/validators.py 里 ASCIIUsernameValidator 和 UnicodeUsernameValidator 的两个正则模式都更新为 r’\A[\w.@+-]+\Z’。没有修改其他文件,测试确认拒绝换行的行为工作正确。
A.2 线性分类任务
对文本编码器和轨迹表示的每一种组合,我们为 107 个 SWE-bench Verified 系统在一个固定的 20 任务面板上的执行,为每条轨迹组装一个嵌入(2,129 条轨迹;公开档案里缺少少量执行)。基于量规的表示是第 3.1 节按字段嵌入后的拼接;原始轨迹表示把渲染日志的头尾切片作为两个块来嵌入。每个块做 $\ell_{2}$ 归一化,各块权重相等。
探针是用类别平衡平方损失和岭惩罚训练的线性分类器;惩罚沿一条闭式正则化路径、用训练折内的分组交叉验证来选择。评估是五折分组交叉验证,分组分配是带种子且规模平衡的:对系统级属性(iii)–(v),组是任务,因此探针在训练期间未见过的任务上评估;对(i)–(ii),组是模型家族,因此探针在训练期间未见过其家族的系统上评估。我们报告各折平均的平衡准确率;一个 $C$ 类属性的机会平衡准确率是 $1/C$。图 1 对属性(i)–(ii)绘制 $(\mathrm{accuracy}-\mathrm{chance})/(1-\mathrm{chance})$,对(iii)–(v)绘制它的补,因此对评测更有利的方向总是向外。表 2 报告图 1 所依据的平衡准确率。
表 2:对第 3.1 节五个轨迹属性,每个文本编码器和每种轨迹表示上线性探针的留出平衡准确率;这些值是图 1 的依据。对与评测相关的属性(i)–(ii),越高越好;对系统元数据属性(iii)–(v),越低越好。最后一行报告机会平衡准确率。
| 编码器 | 表示 | (i)任务 | (ii)正确性 | (iii)系统 | (iv)家族 | (v)支架 |
|---|---|---|---|---|---|---|
| text-embedding-3-small | 原始轨迹 | 1.00 | 0.82 | 0.89 | 0.97 | 0.96 |
| 通用 | 0.99 | 0.84 | 0.61 | 0.64 | 0.76 | |
| trubric | 0.99 | 0.84 | 0.20 | 0.36 | 0.29 | |
| nomic-embed-text-v1.5 | 原始轨迹 | 0.98 | 0.78 | 0.84 | 0.90 | 0.91 |
| 通用 | 0.99 | 0.86 | 0.56 | 0.63 | 0.70 | |
| trubric | 0.99 | 0.84 | 0.16 | 0.30 | 0.22 | |
| bge-large-en-v1.5 | 原始轨迹 | 0.95 | 0.78 | 0.73 | 0.79 | 0.86 |
| 通用 | 0.99 | 0.84 | 0.58 | 0.64 | 0.73 | |
| trubric | 0.99 | 0.85 | 0.16 | 0.33 | 0.23 | |
| gte-large | 原始轨迹 | 0.95 | 0.77 | 0.77 | 0.83 | 0.90 |
| 通用 | 0.99 | 0.85 | 0.56 | 0.59 | 0.70 | |
| trubric | 0.99 | 0.84 | 0.17 | 0.33 | 0.23 | |
| e5-large-v2 | 原始轨迹 | 0.96 | 0.77 | 0.79 | 0.86 | 0.90 |
| 通用 | 0.99 | 0.85 | 0.62 | 0.66 | 0.77 | |
| trubric | 0.99 | 0.85 | 0.21 | 0.37 | 0.29 | |
| all-mpnet-base-v2 | 原始轨迹 | 0.93 | 0.77 | 0.68 | 0.76 | 0.82 |
| 通用 | 0.99 | 0.84 | 0.43 | 0.52 | 0.57 | |
| trubric | 0.99 | 0.83 | 0.11 | 0.29 | 0.16 | |
| all-MiniLM-L6-v2 | 原始轨迹 | 0.91 | 0.75 | 0.70 | 0.75 | 0.86 |
| 通用 | 0.99 | 0.84 | 0.45 | 0.53 | 0.59 | |
| trubric | 0.99 | 0.82 | 0.11 | 0.31 | 0.16 | |
| 机会水平 | 0.05 | 0.50 | 0.01 | 0.12 | 0.02 |
A.3 提示词
量规实例化提示词({problem} 是任务描述):
下面是一个软件工程智能体将被要求修复的仓库 issue:
{problem}
为评判智能体在这个 issue 上的轨迹,写一份实例专用量规:
对下面每一节,用一句话说明在这个实例里具体要看什么
(如果能够推断,写出可能相关的模块、文件或测试的名字)。
各节:understanding、localization、reproduction、editing、
verification、final_state。
只回复一个 JSON 对象,键就是这些名字,每个值是一句字符串。抽取提示词({rubric} 是该任务上实例化的 trubric,或者对通用基线而言是下面这份固定通用量规;{keys} 是字段名;渲染后的轨迹附加在提示词之后):
下面是一个软件工程智能体的(截断后的)执行轨迹。
为下面每一节抽出对该智能体行为的事实描述。每一节 30–60 个词。只描述行为——不要复述问题。如果某一节没有发生,就准确写出缺了什么(例如 "never ran any test after editing")。
{rubric}
只回复一个 JSON 对象,键为 {keys},每个值是一个字符串。通用量规:
- understanding:行动之前智能体如何定位自己
- localization:它如何搜索或导航以找到相关代码
- reproduction:在修复之前它是否以及如何复现该问题
- editing:它改了什么(文件、编辑的性质和规模)
- verification:编辑之后它是否重新运行了测试或复现脚本,以及观察到的结果(通过、失败、错误)
- final_state:这次运行如何结束(干净结束、步数或成本上限、未经验证就提交)A.4 量规字段列表
图 6 的量规规模实验从一个 32 字段的库里抽取字段子集。这个库由全文使用的六个规范字段——understanding、localization、reproduction、editing、verification 和 final state——以及另外 26 个字段组成:requirements、causal diagnosis、code context、planning、test design、edge cases、regression scope、feedback response、tool recovery、patch review、exploration breadth、hypothesis testing、search strategy、dependency handling、error interpretation、incrementalism、backtracking、code reuse、instruction adherence、efficiency、state tracking、assumption checking、output quality、risk management、domain knowledge,以及 completion confidence。
译注:上述字段名是实验里的英文键,保留原文;其含义依次为理解、定位、复现、编辑、验证、最终状态,以及需求、因果诊断、代码上下文、计划、测试设计、边界情况、回归范围、对反馈的响应、工具恢复、补丁复查、探索广度、假设检验、搜索策略、依赖处理、错误解释、增量性、回溯、代码复用、遵循指令、效率、状态跟踪、假设检查、输出质量、风险管理、领域知识、完成置信度。
附录 B 高效基准测试细节
B.1 仅分数基线
#### 样本分数。
目标已观察到的 $m$ 个轨迹级分数的均值,$\hat{y}_{\mathrm{sample}}=\frac{1}{m}\sum_{t\in T_{0}}s(f_{0}(t))$。
译注:也就是只把目标自己已经跑过的那些任务的分数做平均,不借用参考系统。
#### 总体均值。
参考系统基准分数的均值,$\hat{y}_{\mathrm{pop}}=\frac{1}{n}\sum_{i=1}^{n}y_{i}$,它完全忽略目标的执行。
译注:这个估计对所有目标都一样,只反映参考系统分数的平均水平。
#### 项目反应模型。
我们用最大后验估计,把两参数 logistic 模型 $\mathbb{P}(s(x_{ij})=1)=\mathrm{sigmoid}\left(a_{j}(\theta_{i}-b_{j})\right)$ 拟合到参考分数矩阵上,能力 $\theta_{i}$ 和难度 $b_{j}$ 使用标准正态先验,对数区分度 $\log a_{j}$ 使用 $\mathcal{N}(0,1/10)$ 先验(把斜率的中心放在 Rasch 值 1 上),并用 L-BFGS 优化。因为基准分数聚合的任务超出了这个 $M$ 任务面板(SWE-bench Verified 是全部 500 个任务;Terminal-Bench 2.0 是全部任务和全部尝试),我们额外拟合一条从能力到基准分数的单调链接 $y\approx\mathrm{sigmoid}(c_{1}\theta+c_{0})$,在参考系统上用最小二乘。对一个目标,我们在一张密网格上形成能力的后验——先验是一个正态,其均值和标准差取参考能力的均值和标准差——用目标已观察到的 $m$ 个轨迹级分数的似然去更新它,并把拟合好的能力到分数链接的后验均值报告为 $\hat{y}_{\mathrm{IRT}}$。
#### 自适应任务选择。
给定拟合好的项目反应模型,任务按目标贪心选择:每一步,下一个任务是当前能力后验下期望 Fisher 信息 $a_{j}^{2}\,p_{j}(\theta)(1-p_{j}(\theta))$ 最高的那个,观察到结果后更新后验。随机任务选择则均匀抽取 $T_{0}$;报告的随机选择结果是对 50 次共享抽取取平均。
B.2 轨迹几何基线
原始轨迹估计器和通用量规估计器,是把第 3.2 节流水线里的 trubric 表示 $\phi$ 替换掉,其余相同。原始轨迹表示用同一个编码器 $g$ 把渲染执行日志的首段和末段作为两个块来嵌入;表示按跨系统的任务级中位数中心化,并做 $\ell_{2}$ 归一化。通用量规表示遵循第 3.1 节的两阶段构造,用附录 A.3 的固定字段描述代替任务专用量规。
B.3 超参数与交叉验证
对每一次任务抽取,超参数的选择方式是把每个参考系统当作伪目标:它的分数由其余参考来预测(岭回归器经由帽子矩阵做留一),并选出使参考误差均值最小的配置。候选网格是核带宽 $\sigma^{2}\in\{\mathrm{med}/2^{k}\}_{k=0}^{8}$,其中 $\mathrm{med}$ 是任务嵌入之间平方距离的中位数,维度 $d\in\{8,16\}$,以及岭惩罚 $\in\{0.1,1.0\}$。集成权重 $\alpha$ 在 $[0,1]$ 的 101 点网格上、用同样的参考伪目标程序选出。
附录 C 系统与任务
C.1 SWE-bench Verified 系统
表 3 列出 107 个被评估的排行榜提交,以及它们的模型家族标签(供留一族协议使用;– 表示无法从提交元数据导出标签)和官方解决率 $y$。
表 3:SWE-bench Verified 系统。
| 系统 | 家族 | $y$ |
|---|---|---|
| 20240402_sweagent_gpt4 | gpt | 0.224 |
| 20240612_MASAI_gpt4o | gpt | 0.326 |
| 20240620_sweagent_claude3.5sonnet | claude | 0.336 |
| 20240721_amazon-q-developer-agent-20240719-dev | – | 0.388 |
| 20240820_epam-ai-run-gpt-4o | gpt | 0.240 |
| 20240820_honeycomb | – | 0.406 |
| 20240824_gru | – | 0.452 |
| 20240918_lingma-agent_lingma-swe-gpt-72b | gpt | 0.250 |
| 20240918_lingma-agent_lingma-swe-gpt-7b | gpt | 0.102 |
| 20240920_solver | – | 0.436 |
| 20240924_solver | – | 0.454 |
| 20241001_nfactorial | – | 0.258 |
| 20241002_lingma-agent_lingma-swe-gpt-72b | gpt | 0.288 |
| 20241002_lingma-agent_lingma-swe-gpt-7b | gpt | 0.182 |
| 20241016_composio_swekit | claude | 0.406 |
| 20241016_epam-ai-run-gpt-4o | gpt | 0.270 |
| 20241022_tools_claude-3-5-haiku | claude | 0.406 |
| 20241022_tools_claude-3-5-sonnet-updated | claude | 0.490 |
| 20241023_emergent | – | 0.466 |
| 20241025_composio_swekit | – | 0.486 |
| 20241028_agentless-1.5_gpt4o | gpt | 0.388 |
| 20241028_solver | – | 0.500 |
| 20241029_OpenHands-CodeAct-2.1-sonnet-20241022 | claude | 0.530 |
| 20241029_epam-ai-run-claude-3-5-sonnet | claude | 0.396 |
| 20241030_nfactorial | – | 0.416 |
| 20241105_nfactorial | – | 0.492 |
| 20241106_navie-2-gpt4o-sonnet | – | 0.472 |
| 20241108_autocoderover-v2.0-claude-3-5-sonnet-20241022 | claude | 0.462 |
| 20241108_devlo | claude | 0.542 |
| 20241113_nebius-search-open-weight-models-11-24 | – | 0.406 |
| 20241120_artemis_agent | – | 0.320 |
| 20241125_enginelabs | claude | 0.518 |
| 20241125_marscode-agent-dev | – | 0.500 |
| 20241202_agentless-1.5_claude-3.5-sonnet-20241022 | claude | 0.508 |
| 20241202_amazon-q-developer-agent-20241202-dev | – | 0.550 |
| 20241208_gru | – | 0.570 |
| 20241212_epam-ai-run-claude-3-5-sonnet | claude | 0.554 |
| 20241212_google_jules_gemini_2.0_flash_experimental | gemini | 0.522 |
| 20241213_devlo | – | 0.582 |
| 20241223_emergent | – | 0.572 |
| 20250110_blackboxai_agent_v1.1 | – | 0.628 |
| 20250110_learn_by_interact_claude3.5 | claude | 0.602 |
| 20250117_wandb_programmer_o1_crosscheck5 | o1 | 0.646 |
| 20250118_codeshellagent_gemini_2.0_flash_experimental | gemini | 0.442 |
| 20250120_Bracket | – | 0.532 |
| 20250122_autocoderover-v2.1-claude-3-5-sonnet-20241022 | claude | 0.516 |
| 20250203_openhands_4x_scaled | – | 0.608 |
| 20250206_agentscope | claude | 0.634 |
| 20250214_agentless_lite_o3_mini | o3 | 0.424 |
| 20250224_tools_claude-3-7-sonnet | claude | 0.632 |
| 20250226_swerl_llama3_70b | llama | 0.412 |
| 20250228_epam-ai-run-claude-3-5-sonnet | claude | 0.628 |
| 20250316_augment_agent_v0 | – | 0.654 |
| 20250405_amazon-q-developer-agent-20250405-dev | – | 0.654 |
| 20250410_cortexa | – | 0.582 |
| 20250415_openhands | – | 0.658 |
| 20250430_zencoder_ai | – | 0.700 |
| 20250511_sweagent_lm_32b | – | 0.402 |
| 20250514_aime_coder | claude | 0.664 |
| 20250515_Refact_Agent | – | 0.704 |
| 20250516_cortexa_o3 | – | 0.682 |
| 20250519_devlo | – | 0.702 |
| 20250519_trae | – | 0.706 |
| 20250520_openhands_devstral_small | devstral | 0.468 |
| 20250522_sweagent_claude-4-sonnet-20250514 | claude | 0.666 |
| 20250522_tools_claude-4-opus | claude | 0.732 |
| 20250522_tools_claude-4-sonnet | claude | 0.724 |
| 20250524_openhands_claude_4_sonnet | claude | 0.704 |
| 20250527_amazon.nova-premier-v1.0 | nova | 0.424 |
| 20250603_Refact_Agent_claude-4-sonnet | – | 0.744 |
| 20250610_augment_agent_v1 | – | 0.704 |
| 20250611_moatless_claude-4-sonnet-20250514 | claude | 0.708 |
| 20250612_trae | – | 0.752 |
| 20250616_Skywork-SWE-32B | qwen | 0.380 |
| 20250616_Skywork-SWE-32B+TTS_Bo8 | – | 0.470 |
| 20250623_warp | – | 0.710 |
| 20250629_deepswerl_r2eagent | – | 0.422 |
| 20250629_deepswerl_r2eagent_tts | o1 | 0.588 |
| 20250710_bloop | claude | 0.712 |
| 20250715_qodo_command | – | 0.712 |
| 20250716_openhands_kimi_k2 | kimi | 0.654 |
| 20250720_Lingxi-v1.5_claude-4-sonnet-20250514 | claude | 0.746 |
| 20250725_sweagent_devstral_small_2507 | devstral | 0.380 |
| 20250728_zai_glm4-5 | – | 0.642 |
| 20250731_harness_ai | claude | 0.748 |
| 20250804_codesweep_sweagent_kimi_k2_instruct | kimi | 0.534 |
| 20250804_epam-ai-run-claude-4-sonnet | claude | 0.768 |
| 20250806_SWE-Exp_DeepSeek-V3 | – | 0.420 |
| 20250807_openhands_gpt5 | gpt | 0.718 |
| 20250819_ACoder | – | 0.764 |
| 20250901_entroPO_R2E_QwenCoder30BA3B | qwen | 0.522 |
| 20250901_entroPO_R2E_QwenCoder30BA3B_tts | qwen | 0.604 |
| 20250901_warp | – | 0.756 |
| 20250902_atlassian-rovo-dev | – | 0.768 |
| 20250915_JoyCode | – | 0.746 |
| 20250924_artemis_agent_v2 | claude | 0.570 |
| 20250928_trae_doubao_seed_code | doubao | 0.788 |
| 20250930_zai_glm4-6 | – | 0.682 |
| 20251014_Lingxi_kimi_k2 | kimi | 0.712 |
| 20251021_SalesforceAIResearch_SAGE_bash_only | – | 0.730 |
| 20251103_SalesforceAIResearch_SAGE_OpenHands | – | 0.738 |
| 20251103_sonar-foundation-agent_claude-sonnet-4-5 | claude | 0.748 |
| 20251110_frogboss-32b | – | 0.536 |
| 20251110_frogmini-14b | – | 0.450 |
| 20251120_livesweagent_gemini-3-pro-preview | gemini | 0.774 |
| 20251127_openhands_claude-opus-4-5 | claude | 0.776 |
| 20251205_sonar-foundation-agent_claude-opus-4-5 | claude | 0.792 |
C.2 Terminal-Bench 2.0 系统
表 4 列出 65 个被评估的提交,以及它们的支架、底层模型标签和官方分数 $y$(五次尝试的均值)。被截断的条目在表下写全。
译注:表中系统名、支架名和模型标签都是排行榜上的标识符,按原文保留。表下 a 到 l 把被截断的标识符写全,同样不翻译。这些脚注只补全排行榜里被省略号截断的系统名和模型标签,不引入新的评测结论。
表 4:Terminal-Bench 2.0 系统。
| 系统 | 支架 | 模型标签 | $y$ |
|---|---|---|---|
| Ante__Gemini-3-Pro-Preview | ante | gemini-3-pro-preview | 0.647 |
| Ante__Gemini-3.1-Pro-Preview | ante | gemini-3-pro-preview | 0.742 |
| BashAgent__TermiGen-32B | bash-agent | termigen-32b | 0.197 |
| Capy__GPT-5.5 | capy | gpt-5-5 | 0.834 |
| ClaudeCode__GLM-4.7 | claude-code | glm-4-7 | 0.333 |
| CodeBrain-1.5__GPT-5.3-Codex | codebrain-1 | gpt-5-3-codex | 0.816 |
| CodeBrain-1__GPT-5.3-Codex | codebrain-1 | gpt-5-3-codex | 0.703 |
| CodeBrain-1__Gemini-3-Pro-Preview | codebrain-1 | gemini-3-pro-preview | 0.622 |
| Codelia__GPT-5.3-Codex | codelia | gpt-5-3-codex | 0.757 |
| Deep-Agents__GPT-5.2-Codex | deep-agents | gpt-5-2-codex | 0.667 |
| Dirac__Gemini-3-Flash-Preview | dirac | gemini-3-flash-preview | 0.652 |
| Forge__GPT-5.4 | forgecode | gpt-5-4 | 0.818 |
| Forge__Gemini-3.1-Pro-Preview | forge-code | gemini-3-1-pro-preview | 0.787 |
| Forge__Opus-4.6 | forgecode | claude-opus-4-6 | 0.818 |
| Gemini_CLI__Gemini-3-Flash-Preview | gemini-cli | gemini-3-flash-preview | 0.480 |
| Gemini_CLI__Gemini-3.1-Pro-Preview | gemini-cli | gemini-3-1-pro-preview | 0.608 |
| IndusAGICodingAgent__MiniMax-M2.7 | indusagi-coding-agent | minimax-m2-7 | 0.452 |
| IndusAGICodingAgent__gpt-5.3-codex | indusagi-coding-agent | gpt-5-3-codex | 0.691 |
| JJAgent__Multiple | jjagent | – | 0.871 |
| Judy__Claude-Opus-4.6 | judy | claude-opus-4-6 | 0.721 |
| Judy__Gemini-3.1-Pro-Preview | tongagents | gemini-3-1-pro-preview | 0.805 |
| Junie_CLI__Gemini-3-Flash-Preview…a | junie-cli | claude-opus-4-6/gemini-3-1-pr…b | 0.710 |
| LemonCode__GPT-5.3-Codex | lemon-code | gemini-3-1-pro-preview/gpt-5-…c | 0.799 |
| LemonHarness_GPT-5.3-CodeX | lemonharness | gemini-3-1-pro-preview/gpt-5-…d | 0.849 |
| MAYA__Claude-4.5-sonnet | maya | claude-sonnet-4-5 | 0.427 |
| MAYA__Claude-4.6-opus | maya-v2 | claude-opus-4-6 | 0.725 |
| Meta-Harness__Claude-Opus-4.6 | meta-harness | claude-opus-4-6 | 0.764 |
| Mux__Claude-Opus-4.5 | mux | claude-opus-4-5 | 0.584 |
| Mux__Claude-Opus-4.6 | mux | claude-opus-4-6 | 0.665 |
| Mux__GPT-5.2 | mux | gpt-5-2 | 0.621 |
| Mux__GPT-5.3-Codex | mux | gpt-5-3-codex | 0.746 |
| NexAU-AHE__gpt-5.5 | nexau-ahe | gpt-5-5 | 0.847 |
| OB-1_GPT-5.3-Codex-Claude-Opus-4.…e | ob-1 | claude-opus-4-5/claude-opus-4…f | 0.727 |
| OB-1_GPT-5.4-GPT-5.3-Codex-Claude…g | ob-1 | claude-opus-4-5/claude-opus-4…h | 0.825 |
| OpenCode__Claude-Opus-4.5 | opencode | claude-opus-4-5 | 0.523 |
| OpenSage__GPT-5.3-Codex | sageagent | gpt-5-3-codex | 0.794 |
| OpenSage__Gemini-3-Pro-Preview | sageagent | gemini-3-pro-preview | 0.652 |
| Polaris__Claude-Opus-4.7-GPT-5.5-…i | polaris | claude-opus-4-7/gemini-3-1-pr…j | 0.822 |
| Simplai-Agent__Claude-Sonnet-4.6 | simplai-agent | claude-sonnet-4-6 | 0.535 |
| Simple-Codex__GPT-5.3-Codex | simple-codex | gpt-5-3-codex | 0.752 |
| Terminus-KIRA__Claude-Opus-4.6 | terminus-kira | claude-opus-4-6 | 0.747 |
| Terminus-KIRA__Gemini-3.1-Pro-Pre…k | terminus-kira | gemini-3-1-pro-preview | 0.748 |
| Terminus2__Claude-Opus-4.6 | terminus2 | claude-opus-4-6 | 0.629 |
| Terminus2__DeepSeek-V3.2 | terminus2 | deepseek-v3-2 | 0.396 |
| Terminus2__GLM-4.7 | terminus2 | glm-4-7 | 0.334 |
| Terminus2__GLM-5 | terminus2 | glm-5 | 0.538 |
| Terminus2__GPT-5.3-Codex | terminus2 | gpt-5-3-codex | 0.647 |
| Terminus2__Kimi-k2.5 | terminus2 | kimi-k2-5 | 0.433 |
| Terminus2__Minimax-m2.5 | terminus2 | minimax-m2-5 | 0.426 |
| WOZCODE__Claude-Opus-4-7 | wozcode | claude-opus-4-7 | 0.802 |
| Wecode__GPT-5.5 | wecode | gpt-5-5 | 0.881 |
| WozCode__Claude-Opus-4.6 | wozcode | claude-opus-4-6 | 0.681 |
| cchuter__minimax-m2.5 | cchuter | minimax-m2-5 | 0.427 |
| clnkr__GPT-5.5 | clnkr | gpt-5-5 | 0.661 |
| copilot-cli__claude-opus-4.6 | copilot-cli | claude-opus-4-6 | 0.607 |
| dakou__qwen3-coder-480b | dakou-agent | qwen3-coder-480b-a35b-instruc…l | 0.272 |
| grok-cli__grok-4.20-0309-reasoning | grok-cli | grok-4-20-0309-reasoning | 0.573 |
| logos-latest__claude-opus-4.7 | logos | – | 0.852 |
| logos-ts__claude-opus-4.7 | logos | – | 0.807 |
| logos__claude-opus-4.6 | logosagent | claude-opus-4-6 | 0.686 |
| pilot-real__claude-opus-4-6 | pilot | claude-opus-4-6 | 0.831 |
| spoox-o-m__GPT-5-Nano | spoox-o-m | gpt-5-nano | 0.218 |
| spoox-o-m__GPT-5.3-Codex | spoox-o-m | gpt-5-3-codex | 0.721 |
| terminus-2__AfterQuery-GPT-OSS-20B | terminus2 | gpt-oss-20b-rl | 0.172 |
| vix__claude-opus-4-7 | vix | claude-opus-4-7 | 0.903 |
a Junie_CLI__Gemini-3-Flash-Preview-Gemini-3.1-Pro-Preview-Claude-Opus-4.6-GPT-5.3-Codex b claude-opus-4-6/gemini-3-1-pro-preview/gemini-3-flash-preview/gpt-5-3-codex c gemini-3-1-pro-preview/gpt-5-3-codex d gemini-3-1-pro-preview/gpt-5-3-codex e OB-1_GPT-5.3-Codex-Claude-Opus-4.5-Claude-Opus-4.6 f claude-opus-4-5/claude-opus-4-6/gpt-5-3-codex g OB-1_GPT-5.4-GPT-5.3-Codex-Claude-Opus-4.5-Claude-Opus-4.6 h claude-opus-4-5/claude-opus-4-6/gpt-5-3-codex/gpt-5-4 i Polaris__Claude-Opus-4.7-GPT-5.5-Gemini-3.1-Pro j claude-opus-4-7/gemini-3-1-pro-preview/gpt-5-5 k Terminus-KIRA__Gemini-3.1-Pro-Preview l qwen3-coder-480b-a35b-instruct-fp8
C.3 任务面板
SWE-bench Verified 面板由下面这 $M=100$ 个实例组成(一个固定的 20 任务面板,与另一次带种子的、再抽 80 个实例的随机抽取并在一起):
译注:下面列出的是基准实例标识符,按原文保留,顺序与原文一致,共 100 个。
astropy__astropy-14096, astropy__astropy-7336, django__django-10973, django__django-11099, django__django-11206, django__django-11333, django__django-11477, django__django-11490, django__django-11532, django__django-11880, django__django-12276, django__django-12419, django__django-13012, django__django-13121, django__django-13128, django__django-13297, django__django-13346, django__django-13410, django__django-13590, django__django-13807, django__django-13810, django__django-13933, django__django-14034, django__django-14053, django__django-14122, django__django-14238, django__django-14315, django__django-14539, django__django-14559, django__django-14725, django__django-14999, django__django-15037, django__django-15098, django__django-15315, django__django-15525, django__django-15554, django__django-15695, django__django-15814, django__django-15916, django__django-15930, django__django-15957, django__django-16100, django__django-16145, django__django-16333, django__django-16429, django__django-16454, django__django-16527, django__django-16560, django__django-16642, django__django-16801, django__django-16877, django__django-9296, matplotlib__matplotlib-20859, matplotlib__matplotlib-23299, matplotlib__matplotlib-24149, matplotlib__matplotlib-24177, matplotlib__matplotlib-25287, matplotlib__matplotlib-25332, matplotlib__matplotlib-25479, matplotlib__matplotlib-25775, matplotlib__matplotlib-26113, pallets__flask-5014, psf__requests-1724, pydata__xarray-3305, pydata__xarray-4075, pydata__xarray-4094, pydata__xarray-4966, pydata__xarray-6744, pydata__xarray-7229, pydata__xarray-7233, pydata__xarray-7393, pylint-dev__pylint-6386, pylint-dev__pylint-6528, scikit-learn__scikit-learn-10908, scikit-learn__scikit-learn-13439, sphinx-doc__sphinx-10435, sphinx-doc__sphinx-10466, sphinx-doc__sphinx-10614, sphinx-doc__sphinx-8120, sphinx-doc__sphinx-8475, sphinx-doc__sphinx-8593, sphinx-doc__sphinx-8595, sphinx-doc__sphinx-8638, sphinx-doc__sphinx-9258, sphinx-doc__sphinx-9367, sphinx-doc__sphinx-9461, sphinx-doc__sphinx-9658, sphinx-doc__sphinx-9673, sphinx-doc__sphinx-9698, sympy__sympy-13551, sympy__sympy-13647, sympy__sympy-13974, sympy__sympy-14248, sympy__sympy-14531, sympy__sympy-15875, sympy__sympy-17655, sympy__sympy-20154, sympy__sympy-21596, sympy__sympy-23950, sympy__sympy-24661
Terminal-Bench 2.0 面板使用全部 89 个任务:
译注:下面列出的是命令行任务标识符,按原文保留,顺序与原文一致,共 89 个。
adaptive-rejection-sampler, bn-fit-modify, break-filter-js-from-html, build-cython-ext, build-pmars, build-pov-ray, caffe-cifar-10, cancel-async-tasks, chess-best-move, circuit-fibsqrt, cobol-modernization, code-from-image, compile-compcert, configure-git-webserver, constraints-scheduling, count-dataset-tokens, crack-7z-hash, custom-memory-heap-crash, db-wal-recovery, distribution-search, dna-assembly, dna-insert, extract-elf, extract-moves-from-video, feal-differential-cryptanalysis, feal-linear-cryptanalysis, filter-js-from-html, financial-document-processor, fix-code-vulnerability, fix-git, fix-ocaml-gc, gcode-to-text, git-leak-recovery, git-multibranch, gpt2-codegolf, headless-terminal, hf-model-inference, install-windows-3.11, kv-store-grpc, large-scale-text-editing, largest-eigenval, llm-inference-batching-scheduler, log-summary-date-ranges, mailman, make-doom-for-mips, make-mips-interpreter, mcmc-sampling-stan, merge-diff-arc-agi-task, model-extraction-relu-logits, modernize-scientific-stack, mteb-leaderboard, mteb-retrieve, multi-source-data-merger, nginx-request-logging, openssl-selfsigned-cert, overfull-hbox, password-recovery, path-tracing, path-tracing-reverse, polyglot-c-py, polyglot-rust-c, portfolio-optimization, protein-assembly, prove-plus-comm, pypi-server, pytorch-model-cli, pytorch-model-recovery, qemu-alpine-ssh, qemu-startup, query-optimize, raman-fitting, regex-chess, regex-log, reshard-c4-data, rstan-to-pystan, sam-cell-seg, sanitize-git-repo, schemelike-metacircular-eval, sparql-university, sqlite-db-truncate, sqlite-with-gcov, torch-pipeline-parallelism, torch-tensor-parallelism, train-fasttext, tune-mjcf, video-processing, vulnerable-secret, winning-avg-corewars, write-compressor
Found it useful? Pass it on
Scan with WeChat to open it on your phone and forward it.