tbench 简介
tbench 是 Xum 智能体面向 Terminal-Bench 2.0 的适配与基准测试集成。适配器代码位于 benchmarks/terminal_bench/,评测框架使用 Harbor。
用途
用于在 Terminal-Bench 2.0 数据集上运行 Xum 智能体,评测其在终端任务中的表现,并支持失败分析与排行榜提交。
主要能力
- 运行完整基准套件或指定任务。
- 支持本地 Docker 与 Daytona 云沙箱两种运行环境,云沙箱可提高并发、缩短耗时。
- 通过环境变量配置数据集、并发数、全局超时、任务名、Harbor 参数以及
mux run参数。 - 支持严格 goal 模式运行(
MUX_RUN_AS_GOAL=1)。 - 结果保存到
runs/YYYY-MM-DD__HH-MM-SS/,包含聚合结果、运行元数据、每个任务的会话日志、asciinema 录制与测试输出。 - 提供 GitHub Actions 集成(
.github/workflows/terminal-bench.yml与nightly-terminal-bench.yml),夜间工作流在完整任务集上运行 Claude 与 GPT 模型并上传结果工件。 - 结果可上传 BigQuery,通过
bqCLI 查询。 - 提供排行榜提交准备脚本与 HuggingFace 上传方式。
- 提供失败率分析脚本与日志下载脚本,用于对比 Xum 与其他智能体的表现。
使用方式
快速开始(通常假设通过 CI 的 workflow_dispatch 运行):
# 运行完整基准套件
make benchmark-terminal
# 运行指定任务
make benchmark-terminal TB_TASK_NAMES="hello-world chess-best-move"
# 指定模型与 xhigh thinking
MUX_RUN_ARGS="--thinking xhigh" make benchmark-terminal TB_ARGS="--agent-kwarg model_name=anthropic/claude-opus-5-5"
# 在 Daytona 云上运行(高并发)
TB_ENV=daytona TB_CONCURRENCY=48 make benchmark-terminal
Daytona 云沙箱:
export DAYTONA_API_KEY="your-api-key"
make benchmark-terminal TB_ENV=daytona TB_CONCURRENCY=48
make benchmark-terminal TB_ENV=daytona TB_CONCURRENCY=48 TB_TASK_NAMES="chess-best-move stockfish-elo"
环境变量:
TB_DATASET:数据集,默认terminal-bench@2.0TB_CONCURRENCY:并发任务数,默认 4TB_TIMEOUT:全局超时秒数,默认 1800(30 分钟)TB_ENV:运行环境(local或daytona)TB_TASK_NAMES:空格分隔的任务名,默认全部任务TB_ARGS:传给 harbor 的额外参数MUX_RUN_ARGS:直接传给容器内mux run的 CLI 标志MUX_RUN_AS_GOAL:设为1时以严格mux run --goal目标运行每个任务指令
智能体配置通过 --agent-kwarg 传入 Harbor:
model_name:模型名,例如anthropic/claude-opus-5-5、openai/gpt-6.1-solexperiments:启用的实验,逗号分隔,例如programmatic-tool-calling
CI 调度示例:
gh workflow run terminal-bench.yml \
-f model_name=anthropic/claude-opus-5-5 \
-f mux_run_args="--thinking high --use-1m"
gh workflow run terminal-bench.yml \
-f model_name=openai/gpt-6.1-sol \
-f mux_run_args="--thinking high --budget 5.00"
严格 goal 模式:
MUX_RUN_AS_GOAL=1 \
MUX_RUN_ARGS="--thinking high --goal-turns 30 --goal-budget 10.00" \
make benchmark-terminal TB_TASK_NAMES="chess-best-move"
本地运行监控:可将本地 Terminal-Bench 作为受监控的后台 bash 启动,设置过滤条件匹配失败/完成行。
结果目录结构:
results.json:聚合结果与通过/失败率run_metadata.json:运行配置与元数据<task-id>/:每个任务目录,含sessions/agent.log、sessions/agent.cast、sessions/tests.log、results.json
BigQuery 查询:结果上传至 mux-benchmarks.benchmarks.tbench_results,需先 gcloud auth login 并设置项目为 mux-benchmarks。表结构为每个任务试验一行,包含 run_id、task_id、model_name、thinking_level、mode、dataset、experiments、passed、score、n_input_tokens、n_output_tokens、github_workflow、github_run_id、github_sha、ingested_at。
排行榜提交:先运行 prepare_leaderboard_submission.py 准备提交目录,再通过 HuggingFace Python API 上传(hf upload CLI 在大提交时容易超时)。脚本会生成 leaderboard_submission/ 结构,包含 metadata.yaml 与多个 job 文件夹。上传示例使用 HfApi().upload_folder(...) 指向 alexgshaw/terminal-bench-2-leaderboard 数据集并创建 PR。
失败分析工作流:
- 用
analyze_failure_rates.py --top 20找出 Xum 表现较差的任务(高 M/O 比)。 - 用 BigQuery 查询特定任务的通过/失败分布。
- 用
download_run_logs.py下载并检查智能体日志,日志缓存在.run_logs/<run-id>/。 - 克隆排行榜仓库到
.leaderboard_cache/对比其他提交。
M/O 比定义为 Xum 失败率除以排名前 10 智能体的平均失败率,比值高表示优化机会大。
适用场景
- 评测 Xum 智能体在 Terminal-Bench 2.0 任务上的表现。
- 在 CI 中定期运行基准并上传结果。
- 对比 Xum 与其他智能体的失败模式,定位优化方向。
- 准备并提交 Terminal-Bench 2.0 排行榜结果。
限制
- 依赖 Harbor 评测框架、Docker 或 Daytona 云沙箱、BigQuery 与 HuggingFace 等外部服务。
- Daytona 账户有资源限制(Tier 3:250 vCPU / 500GB RAM 池)。
- 排行榜提交需用户自行执行上传命令,不应由助手直接上传或对排行榜仓库开 PR。
- 超时采用全局默认而非按任务配置。
- 资料未提供收费、价格与平台支持范围等信息。