Chaoyu Fan bio photo

PhD Student in Artificial Intelligence

Tongji University

PhD student in Artificial Intelligence at Tongji University, working across AI systems, research tooling, and computational workflows.

Shanghai, China

Email

LinkedIn

Instagram

Github

Terminal-Bench 2.0 完全导读

更新时间:2026/04/17
文章定位:官方资料核对版,重点补齐运行流程、结果目录、trajectory / reward 文件和榜单提交要求。

上一版这篇文章里,最大的问题不是措辞,而是我把 89 个任务写成了一份看起来很完整、其实并不可靠的“中文分类清单”。

这次我重新对照了 Terminal-Bench 官方站点、Terminal-Bench 2.0 论文、Harbor 官方文档,以及 Hugging Face 的官方 leaderboard 提交说明。结论很简单:

  • Terminal-Bench 2.0 确实是 89 个任务。
  • 官方站点也确实提供任务浏览页面。
  • 但我上一版那种“我替官方重新分好的 89 题中文 taxonomy”,并不是官方发布的标准任务结构。

所以这次我不再继续维护那份不准确的清单,而是把文章改成一篇更实用、也更可信的版本:

  • Terminal-Bench 2.0 到底是什么
  • 官方资料里到底确认了哪些事实
  • 现在应该怎么跑
  • 跑完之后 job / trial / trajectory / reward 文件分别长什么样
  • 如果你想上榜,提交目录到底要怎么组织
先把官方事实说清楚

官方 benchmark 页面明确写着:Terminal-Bench 2.0 目前展示 89 tasks

Terminal-Bench 2.0 论文则进一步说明:这 89 个任务来自 93 位贡献者提交的 229 个候选任务,最终筛出 89 个进入正式 benchmark;每个任务都带有独立环境、人工编写的参考解、以及用于验证终态的测试。

论文还强调了一点:它测的不是“你中间说得像不像”,而是最终容器状态有没有满足任务要求。换句话说,这是 outcome-driven benchmark,而不是 chat-style benchmark。

为什么上一版的任务清单不该继续保留
正确的做法,不是我替官方硬造一份“89 题中文总分类”,而是把官方已经确认的信息写准确,并把读者指向官方任务浏览器。

我重新核对后发现,官方资料里可以被稳定确认的是:

  • 官方任务总数是 89。
  • 官方任务浏览页支持按 category、tag、difficulty 过滤。
  • 论文给出了高层类别分布:软件工程是最大类,同时覆盖 system administration、data science、security、scientific computing、file operations 等类别;论文还明确说,数据集中也包含 personal assistant、video processing 这类非传统“纯软件工程”任务。

但官方并没有在我这次核对的文档里,给出一份与我上一版完全对应的“89 个任务中文重分组清单”。所以继续保留那份清单,只会让文章看起来更完整,却更不准确。

如果你真想逐题看,最稳妥的方法是直接用官方任务页:tbench.ai/benchmarks/terminal-bench-2。它本身就是当前最准确的任务浏览入口。

89 个官方任务清单(中文对照)

下面这份表格是我在 2026/04/17 直接从 官网任务页抓取并核对的当前 89 个任务。任务顺序、官方分类和难度以官网为准;中文名和任务内容是基于官网任务卡信息做的中文整理,方便快速浏览。

任务分类 任务名字 中文名 任务内容 难易程度
科学计算
scientific-computing
adaptive-rejection-sampler 自适应拒绝采样器 用 R 实现自适应拒绝采样器,校验输入、检测对数凹性并附测试 中等
medium
科学计算
scientific-computing
bn-fit-modify 贝叶斯网络拟合与修改 从样本恢复贝叶斯网络 DAG,拟合后对 Y 做干预并重新采样 困难
hard
安全
security
break-filter-js-from-html 突破 HTML 中的 JS 过滤 构造可绕过现有 HTML 过滤脚本的页面,使其自动触发 alert 中等
medium
调试
debugging
build-cython-ext 构建 Cython 扩展 修复 pyknotid 与 Numpy 2.3 兼容问题并编译安装 Cython 扩展 中等
medium
软件工程
software-engineering
build-pmars 构建 pMARS 从 Debian 源构建无 X11 依赖的 pMARS 并安装 中等
medium
软件工程
software-engineering
build-pov-ray 构建 POV-Ray 下载并编译 POV-Ray 2.2,使其能渲染给定场景 中等
medium
机器学习
machine-learning
caffe-cifar-10 Caffe 训练 CIFAR-10 安装 CPU 版 Caffe,并训练 CIFAR-10 模型 500 轮 中等
medium
软件工程
software-engineering
cancel-async-tasks 取消异步任务 实现支持并发上限且在中断时仍能执行清理的异步任务调度函数 困难
hard
游戏
games
chess-best-move 国际象棋最佳着法 从棋盘图片判断白方最佳着法并写入结果 中等
medium
软件工程
software-engineering
circuit-fibsqrt 电路实现 fibsqrt 编写逻辑门电路文件,使模拟器输出 fib(isqrt(N)) 困难
hard
软件工程
software-engineering
cobol-modernization COBOL 现代化改造 修复并现代化 COBOL 程序,使其正确处理输入并更新数据文件 简单
easy
软件工程
software-engineering
code-from-image 从图像还原代码 根据图片中的伪代码实现逻辑,并输出最终结果 中等
medium
系统管理
system-administration
compile-compcert 编译 CompCert 在当前系统上从源码构建并验证 CompCert 3.13.1 编译器 中等
medium
系统管理
system-administration
configure-git-webserver 配置 Git Web 服务器 配置 SSH Git 服务器,并将推送内容自动发布为网页 困难
hard
个人助理
personal-assistant
constraints-scheduling 约束式日程安排 根据多人可用时间与已有冲突,安排满足约束的一小时会议 中等
medium
模型训练
model-training
count-dataset-tokens 统计数据集 token 数 按 README 正确统计指定 Hugging Face 数据集 science 域的 deepseek token 数 中等
medium
安全
security
crack-7z-hash 破解 7z 哈希 破解压缩包并恢复 secret_file.txt 中的单词 中等
medium
调试
debugging
custom-memory-heap-crash 自定义内存堆崩溃排查 只修改 user.cpp,修复 RELEASE 模式崩溃问题 中等
medium
文件操作
file-operations
db-wal-recovery 数据库 WAL 恢复 从损坏或异常的 SQLite WAL 中恢复完整数据库记录 中等
medium
机器学习
machine-learning
distribution-search 分布搜索 寻找最符合目标 LLM 置信度指标的概率分布 中等
medium
科学计算
scientific-computing
dna-assembly DNA 组装 设计含 egfp/FLAG 插入的 DNA 组装方案与引物 困难
hard
科学计算
scientific-computing
dna-insert DNA 插入 设计引物,将输入质粒定点改造成目标质粒 中等
medium
文件操作
file-operations
extract-elf 提取 ELF 内容 编写 Node 程序从 ELF 二进制中提取指定内存值并输出 JSON 中等
medium
文件操作
file-operations
extract-moves-from-video 从视频中提取动作序列 下载 Zork 视频,转录并提取全部输入指令 困难
hard
数学
mathematics
feal-differential-cryptanalysis FEAL 差分密码分析 对给定 FEAL-like 实现做选择明文攻击,恢复 key[5] 困难
hard
数学
mathematics
feal-linear-cryptanalysis FEAL 线性密码分析 用线性密码分析从明密文对中恢复轮密钥 困难
hard
安全
security
filter-js-from-html 过滤 HTML 中的 JS 编写 Python 过滤器移除 HTML 中的危险 JavaScript,并尽量保留安全内容 中等
medium
数据处理
data-processing
financial-document-processor 金融文档处理器 对混合 PDF/JPG 文档做发票分类、字段抽取和结构化输出 中等
medium
安全
security
fix-code-vulnerability 修复代码漏洞 按 CWE 定位并修复仓库中的安全漏洞 困难
hard
软件工程
software-engineering
fix-git 修复 Git 问题 找回切回 master 后丢失的个人站点改动,并合并回主分支 简单
easy
软件工程
software-engineering
fix-ocaml-gc 修复 OCaml 垃圾回收 修复改造后的 OCaml GC,使编译器和运行时恢复正确 困难
hard
文件操作
file-operations
gcode-to-text G-code 转文本 从 G-code 打印路径判断最终印出的文字内容 中等
medium
软件工程
software-engineering
git-leak-recovery Git 泄露恢复 找回被重写历史删除的 secret,并彻底清理 Git 泄漏 中等
medium
系统管理
system-administration
git-multibranch 多分支 Git 管理 通过 SSH 搭建支持 main/dev 双分支部署的 Git 服务器 中等
medium
软件工程
software-engineering
gpt2-codegolf GPT-2 代码高尔夫 写一个无依赖 C 程序,用 TF ckpt 权重做 GPT-2 贪心采样 困难
hard
软件工程
software-engineering
headless-terminal 无头终端模式 实现无头终端接口,支持按键、屏幕状态和进程交互 中等
medium
数据科学
data-science
hf-model-inference Hugging Face 模型推理服务 本地部署 Hugging Face 情感分类模型推理服务 中等
medium
系统管理
system-administration
install-windows-3.11 安装 Windows 3.11 在 QEMU 中启动 Windows 3.11,并按要求配置 VNC 困难
hard
软件工程
software-engineering
kv-store-grpc gRPC 键值存储 用 Python + gRPC 实现字符串键、数值值的 KV 服务 中等
medium
文件操作
file-operations
large-scale-text-editing 大规模文本编辑 用高击键效率的 Vim 宏批量把百万行 CSV 转成目标格式 中等
medium
数学
mathematics
largest-eigenval 最大特征值计算 完成函数以求矩阵模最大的特征值和对应特征向量 中等
medium
机器学习
machine-learning
llm-inference-batching-scheduler LLM 推理批处理调度器 为静态图 LLM 推理系统实现 shape-aware 批处理调度器 困难
hard
数据处理
data-processing
log-summary-date-ranges 日志摘要日期区间提取 汇总多份日志的日期范围、来源统计与时间覆盖情况 中等
medium
系统管理
system-administration
mailman 配置 Mailman 启动 Mailman3 + Postfix 邮件列表服务并满足基础邮件流要求 中等
medium
软件工程
software-engineering
make-doom-for-mips 让 Doom 跑在 MIPS 上 用给定源码和 vm.js 让 Doom 在 MIPS 环境下跑起来并输出帧图 困难
hard
软件工程
software-engineering
make-mips-interpreter 编写 MIPS 解释器 实现 MIPS 解释器,使给定 doomgeneric_mips ELF 可运行 困难
hard
数据科学
data-science
mcmc-sampling-stan Stan 的 MCMC 采样 安装 RStan 并对层次贝叶斯模型做采样,估计后验均值 困难
hard
调试
debugging
merge-diff-arc-agi-task 合并 diff 的 ARC-AGI 任务 从两个 bundle 还原分支并合并 diff,完成 ARC-AGI 仓库任务 中等
medium
数学
mathematics
model-extraction-relu-logits ReLU logits 模型提取 通过查询一层 ReLU 网络,恢复模型参数或等价表示 困难
hard
科学计算
scientific-computing
modernize-scientific-stack 现代化科学计算栈 将旧的 Python 2.7 气候分析代码迁移到现代 Python 中等
medium
数据科学
data-science
mteb-leaderboard MTEB 榜单处理 基于 MTEB 榜单为斯堪的纳维亚文本选择最佳嵌入模型 中等
medium
数据科学
data-science
mteb-retrieve MTEB 检索任务 用指定 embedding 模型检索与查询第五相似的文档 中等
medium
数据处理
data-processing
multi-source-data-merger 多源数据合并 融合三种格式的用户数据源,并按优先级去重对齐字段 中等
medium
系统管理
system-administration
nginx-request-logging Nginx 请求日志配置 配置 Nginx 监听、静态服务与高级请求日志格式 中等
medium
安全
security
openssl-selfsigned-cert 生成 OpenSSL 自签证书 用 OpenSSL 生成符合要求的自签 TLS 证书与目录结构 中等
medium
调试
debugging
overfull-hbox 修复 Overfull hbox 修复 LaTeX 文档的 overfull hbox 警告并成功编译 简单
easy
安全
security
password-recovery 密码恢复 在 /app 中做数字取证,找回被误删的 launchcode.txt 密码 困难
hard
软件工程
software-engineering
path-tracing 路径追踪实现 编写 C 程序生成尽可能接近参考图的渲染图像 困难
hard
软件工程
software-engineering
path-tracing-reverse 逆向路径追踪 逆向已编译程序,并用 C 复现完全相同的行为 困难
hard
软件工程
software-engineering
polyglot-c-py C / Python 多语程序 写一个单文件程序,可同时作为 Python 和 C 执行 中等
medium
软件工程
software-engineering
polyglot-rust-c Rust / C 多语程序 写一个单文件程序,可同时作为 Rust 和 C++ 执行 困难
hard
优化
optimization
portfolio-optimization 投资组合优化 结合 C 与 Python 优化投资组合风险收益计算性能 中等
medium
科学计算
scientific-computing
protein-assembly 蛋白质组装 为 DHFR FRET 实验设计满足滤光片与构建约束的蛋白方案 困难
hard
软件工程
software-engineering
prove-plus-comm 证明加法交换律 补全 Coq 证明,证明自然数加法交换律 简单
easy
软件工程
software-engineering
pypi-server 搭建 PyPI 服务 创建 vectorops 包,并在本地搭建可安装该包的 PyPI 服务 中等
medium
模型训练
model-training
pytorch-model-cli PyTorch 模型命令行接口 实现 MNIST 模型命令行推理工具,只输出预测数字 中等
medium
模型训练
model-training
pytorch-model-recovery PyTorch 模型恢复 根据权重和样本重建原始 PyTorch 模型结构 中等
medium
系统管理
system-administration
qemu-alpine-ssh QEMU Alpine SSH 启动 Alpine 镜像并配置 SSH,使 localhost:2222 可登录 中等
medium
系统管理
system-administration
qemu-startup QEMU 启动问题 以可经 telnet 访问登录提示的方式启动 Alpine QEMU 中等
medium
数据科学
data-science
query-optimize 查询优化 优化给定 SQLite 查询,使结果不变但性能更好 中等
medium
科学计算
scientific-computing
raman-fitting 拉曼光谱拟合 拟合拉曼光谱的 G 峰和 2D 峰参数,并写入结果文件 中等
medium
软件工程
software-engineering
regex-chess 正则国际象棋 写正则替换规则,生成某 FEN 下全部合法下一步局面 困难
hard
数据处理
data-processing
regex-log 日志正则提取 写正则匹配含 IPv4 日志行中的最后一个 YYYY-MM-DD 日期 中等
medium
数据科学
data-science
reshard-c4-data 重切分 C4 数据 编写压缩与验证脚本,按要求重切分并处理数据集 中等
medium
数据科学
data-science
rstan-to-pystan RStan 迁移到 PyStan 将给定 RStan 脚本改写为 PyStan 3 版本并完成采样 中等
medium
数据科学
data-science
sam-cell-seg SAM 细胞分割 用 Meta 的分割模型把矩形/折线掩码统一转换为折线 困难
hard
安全
security
sanitize-git-repo 清洗 Git 仓库敏感信息 清理 GitHub 仓库中的 API key,并替换为占位值 中等
medium
软件工程
software-engineering
schemelike-metacircular-eval 类 Scheme 元循环求值器 编写 metacircular evaluator,解释给定类 Scheme 语言 中等
medium
数据查询
data-querying
sparql-university 大学数据 SPARQL 查询 在大学知识图谱上编写 SPARQL 查询回答指定问题 困难
hard
调试
debugging
sqlite-db-truncate 截断损坏的 SQLite 数据库恢复 从二进制截断损坏的 SQLite 数据库中尽量恢复词条 中等
medium
系统管理
system-administration
sqlite-with-gcov 带 gcov 的 SQLite 构建 用 gcov instrumentation 编译 SQLite 并加入 PATH 中等
medium
软件工程
software-engineering
torch-pipeline-parallelism Torch 流水线并行 为 LLaMA 训练实现 PyTorch pipeline parallel 困难
hard
软件工程
software-engineering
torch-tensor-parallelism Torch 张量并行 为线性层实现 PyTorch tensor parallel 困难
hard
模型训练
model-training
train-fasttext 训练 FastText 模型 训练小于 150MB 且达到精度要求的 fastText Yelp 模型 困难
hard
科学计算
scientific-computing
tune-mjcf 调优 MJCF 模型 调优 MuJoCo MJCF,使模拟更快且状态误差受控 中等
medium
视频处理
video-processing
video-processing 视频处理 编写脚本分析跨栏视频,提取单次跳跃表现指标 困难
hard
安全
security
vulnerable-secret 提取脆弱程序中的 secret 分析可执行程序并提取其中隐藏的 secret 中等
medium
软件工程
software-engineering
winning-avg-corewars 平均胜率更高的 Corewars 编写 CoreWars 程序,对五个经典对手取得更高平均胜率 中等
medium
软件工程
software-engineering
write-compressor 编写压缩器 为给定解压器生成可正确解开的压缩数据 data.comp 困难
hard
Terminal-Bench 2.0 真正在测什么

环境发现

先读目录、依赖、配置、日志、测试入口,再决定怎么做。很多题第一步都不是写代码。

长链路执行

任务通常不是单点修补,而是探索、修改、运行、验证、交付的一整条链。

终态验证

最终看的是 verifier 能不能从容器终态里读出“你真的完成了”,而不是中间过程看起来像完成了。

工程收尾能力

文件路径、服务状态、输出格式、模型大小、测试结果,这些都属于真实交付的一部分。

这也是为什么 Terminal-Bench 对 agent engineering 很有价值。它不是在测“会不会答题”,而是在测“会不会把工作做完”。

如何运行 Terminal-Bench

根据 Harbor 官方教程,Harbor 是 Terminal-Bench 2.0 的官方运行 harness。如果你今天要跑,请优先按 Harbor 的当前文档来,不要依赖旧博客或旧命令。

步骤 当前官方说法 我建议怎么理解
准备环境 官方文档明确要求先把 Docker 环境准备好,再安装 Harbor。 先把 Docker 跑起来,然后再按当前文档安装 Harbor。
安装 Harbor Quickstart 推荐 uv tool install harbor 装完先用 harbor --version 验证。
验证 Harbor 是否正常 官方教程先跑 Oracle:harbor run -d terminal-bench/terminal-bench-2 -a oracle 这一步是 sanity check,先证明你的 Harbor、本地 Docker 和任务下载链路没问题。
跑真实 agent 官方教程示例是 Claude Code + Daytona。 本地先小并发试跑,再决定是否上云扩容。
uv tool install harbor
harbor --version

先做最小验证:

harbor run -d terminal-bench/terminal-bench-2 -a oracle

然后再跑自己的 agent。这里要分清两件事:官方教程里明确给出的 Claude Code 命令,是 Daytona 版;如果你只是想在本地小并发试跑自己的 agent,可以把并发数调小,但那属于你自己的运行策略,不是官方固定示例。

# 下面这段是本地小并发试跑思路,不是 Harbor 官方教程原文
export ANTHROPIC_API_KEY=<YOUR-KEY>

harbor run \
  -d terminal-bench/terminal-bench-2 \
  -m anthropic/claude-opus-4-1 \
  -a claude-code \
  --n-concurrent 4

这里还有一个容易混淆的小点:我在 2026/04/17 核对时,Harbor 的 “Running Terminal-Bench” 专题教程页使用的是 terminal-bench/terminal-bench-2;但 Harbor 的其他通用 eval 文档里,仍然还能看到 terminal-bench@2.0 这种 versioned 写法。也就是说,这两种写法都出现在官方文档中,只是当前 Terminal-Bench 专题教程页展示的是 slash 这一版。

如果你要上 Daytona 跑更高并发,官方教程给的是:

export DAYTONA_API_KEY="<your-daytona-api-key>"
export ANTHROPIC_API_KEY="<your-anthropic-api-key>"

harbor run \
  -d terminal-bench/terminal-bench-2 \
  -m anthropic/claude-haiku-4-5 \
  -a claude-code \
  --env daytona \
  -n 32
跑完之后,结果目录里到底有什么

这一部分是我觉得上一版最应该补的。Harbor 官方的 run-jobs 文档已经把 job 和 trial 的基本目录结构写得很清楚了。

jobs/job-name
├── config.json
├── result.json
├── trial-name
│   ├── config.json
│   ├── result.json
│   ├── agent
│   │   ├── recording.cast
│   │   └── trajectory.json
│   └── verifier
│       ├── ctrf.json
│       ├── reward.txt
│       ├── test-stderr.txt
│       └── test-stdout.txt
└── ...
文件 作用 实战里最常怎么用
jobs/<job>/config.json 整个 job 的配置 回看当时用的 agent、model、dataset、并发参数。
jobs/<job>/result.json 聚合后的 job 结果 看总 reward、成功率、错误概况。
trial-name/config.json 单个 trial 的配置 排查某一题为何跑法与别题不同。
trial-name/result.json 单个 trial 的结果 看单题是否成功、耗时、报错。
agent/recording.cast 终端录屏 / cast 记录 复盘 agent 在 shell 里的实际操作顺序。
agent/trajectory.json 标准化 trajectory 文件 做调试、SFT、RL 或 viewer 回放。
verifier/ctrf.json 测试报告 看验证脚本到底哪一步挂了。
verifier/reward.txt 单 trial 奖励值 最直接地判断这题成功没、奖励是多少。
verifier/test-stdout.txt / test-stderr.txt verifier 输出 定位失败原因最快的地方之一。

如果你想开浏览器看这些结果,当前文档建议直接运行:

harbor view jobs

Harbor viewer 支持看 job、trial、trajectory、奖励、时长、错误、artifact,属于复盘 benchmark 结果时非常高频的工具。

trajectory.json 里通常有什么

Harbor 用的是 ATIF,也就是 Agent Trajectory Interchange Format。它不是一份随意日志,而是面向 debugging、trajectory replay、SFT 和 RL 的标准化 JSON 结构。

官方 ATIF 文档里给出的核心字段大致包括:

  • 根对象:schema_versionsession_idagentsteps、可选的 final_metrics
  • agent:agent 名称、版本、模型名
  • steps:按顺序记录每一步交互
  • 每个 Step:通常有 step_idtimestampsourcemessage
  • agent step 还可以带 reasoning_contenttool_callsobservationmetrics
  • metrics:prompt tokens、completion tokens、cached tokens、cost 等运行指标
  • final_metrics:总 token、总 cost、总 steps 等聚合指标

如果你只把它当“对话记录”,会低估它的价值。更准确地说,它是一份结构化的 agent 运行轨迹:你能看到用户指令、agent 回复、工具调用、环境返回、token 和成本信息,甚至还能做回放和训练数据导出。

reward 文件到底怎么写

Harbor 的 task 文档把这件事写得非常明确:测试脚本必须在 /logs/verifier/ 里产出 reward 文件,否则 verifier 没法判定任务结果。

文件 格式 适合什么场景
/logs/verifier/reward.txt 纯文本数字,比如 10 最简单的 pass / fail 任务。
/logs/verifier/reward.json JSON 数值字典,比如 {"accuracy": 0.95, "runtime_sec": 1.23} 你要同时输出多个数值指标时。

Harbor 默认会先读 reward.txt,没有的话再回退到 reward.json。官方 task 文档给的示例也很直接:跑测试成功就往 /logs/verifier/reward.txt1,失败就写 0

#!/bin/bash

uvx pytest /tests/test.py

if [ $? -eq 0 ]; then
  echo 1 > /logs/verifier/reward.txt
else
  echo 0 > /logs/verifier/reward.txt
fi

另外,Harbor 还定义了几个特殊路径:

  • /logs/verifier/:reward 和 verifier 日志
  • /logs/agent/:agent 运行日志
  • /logs/:会在运行后下载回 host,方便调试
  • /logs/artifacts/:零配置 artifact 收集目录
artifact 文件怎么保存

如果你的任务会生成模型、输出文件、报告图、日志等需要带出容器的产物,Harbor 官方推荐直接写到 /logs/artifacts/。这样 trial 结束后会自动收集到 host 上。

# Inside the sandbox
echo "result" > /logs/artifacts/output.txt
cp model.pt /logs/artifacts/model.pt

收集后,trial 目录里通常会多出一个 artifacts/ 文件夹,以及对应的 manifest.json

<trial_dir>/
├── artifacts/
│   ├── manifest.json
│   ├── output.txt
│   └── hello.txt
├── agent/
├── verifier/
├── config.json
└── result.json

这对 leaderboard 提交也很重要,因为 Hugging Face 的官方提交流程明确要求:trial 目录里不能只有 result.json,还需要包含运行产出的其他 artifacts。

如何提交到 Terminal-Bench 2.0 leaderboard

这部分官方要求写得相当具体,基本可以直接照着做。

提交仓库是这个 Hugging Face 数据集仓库:

harborframework/terminal-bench-2-leaderboard

官方 README 里给出的提交流程是:

  1. Fork 仓库
  2. 新建 branch
  3. 把提交内容放到 submissions/terminal-bench/2.0/<agent>__<model(s)>/
  4. 开 Pull Request

README 里给了一个最小示意结构,但它主要是为了说明提交路径和 metadata.yaml 的位置,不代表 trial 目录里只需要放一个 result.json

submissions/
  terminal-bench/
    2.0/
      <agent>__<model>/
        metadata.yaml
        <job-folder>/
          config.json
          <trial-1>/result.json
          <trial-2>/result.json
          ...

metadata.yaml 是必需的,README 里要求至少包含:

agent_url: https://...
agent_display_name: "My Agent"
agent_org_display_name: "Org"
models:
  - model_name: gpt-5
    model_provider: openai
    model_display_name: "GPT-5"
    model_org_display_name: "OpenAI"

更重要的是验证规则。要通过自动校验,官方目前要求:

  • timeout_multiplier 必须等于 1.0
  • 不能覆盖 agent timeout
  • 不能覆盖 verifier timeout
  • 不能覆盖 CPU / memory / storage 资源
  • 所有 trial 目录都必须有合法的 result.json
  • 所有 trial 目录都不能只有 result.json,还必须包含其他运行产物
  • 每个 task 至少要评估 5 次,README 直接建议用 -k 5
  • agent 不能访问 Terminal-Bench 网站或 GitHub 仓库,否则会被判定为 reward hacking
这一条值得单独记住:如果你的 agent 会联网,记得显式阻止它访问 tbench.ai 和 benchmark 仓库。官方 README 已经把这件事写进自动校验规则里了。
如果你正在做 agent,我会怎么用这套 benchmark

我现在对 Terminal-Bench 2.0 的看法,比上一版更明确了:

  • 它最适合拿来检查一套 agent system 是否真的具备“终端里完成工作”的能力。
  • 它不适合被二手转述成“某某类别 12 题、某某类别 9 题”的伪精确清单。
  • 真正有价值的,是拿官方任务浏览器看任务本身,再用 Harbor 的 job / trial / trajectory / verifier 文件做失败分析。

如果你是自己在做 coding agent,我会建议用下面这个顺序:

  1. 先用 Oracle 跑通 Harbor,确认环境没问题。
  2. 再小并发试跑自己的 agent,看最基础的成功率和失败簇。
  3. 重点读 trial/result.jsontrajectory.jsonreward.txttest-stderr.txt
  4. 等单次稳定后,再按 leaderboard 要求做更规范的多 trial 评估和提交。
核对来源