Skip to main content
Benchmark 是一组公开的 task,自带运行环境和评分方式。Benchmark run 会评估一个或多个 agent,由 Osmosis 管理执行并收集结果。您可以从 Platform 的 New Run 表单或 CLI 提交;符合条件的结果会显示在 benchmark leaderboard 上。
Benchmarks 处于 beta 阶段,按账号开通。如果您的 workspace 中无法使用 Benchmarks,请联系我们申请开通。

概念

Benchmark 与 Benchmark Run

Benchmark 存在于您的 workspace 中,包含 task 列表、harness 与 judge 要求以及 pass threshold。Benchmark run 是针对某个 task 选择的一次执行。各个 run 相互独立:需要比较 agent、task 子集或尝试次数时,提交多个 run 即可。

Agent

Agent 是 harness 与 model 的组合,例如 codex 搭配 openai/gpt-5.2。一个 run 可以包含多个 agent,这是在完全相同的条件下比较 scaffold 或 model 的方式。同一 run 中的每个 agent 拿到相同的 task、相同的尝试次数和相同的评分。

尝试次数与 pass@k

attempts_per_task 决定每个 agent 在每个 task 上可以独立尝试多少次。Pass@1 是首次尝试的通过率,pass@k 是 k 次尝试内解决 task 的比率。两者都带 95% 置信区间;若统计上无法与最佳 agent 区分,该 agent 会与其并列第 1,而不是被排在其后。将鼠标悬停在其排名上可查看对比详情。

Task 选择

可以运行全部 task,也可以按命名 task set、category 或明确的 task 名称缩小范围。部分 benchmark 会公开 parity task set,即其参考分数所测量的样本。HLE 是需要特别注意的例子:若希望得到与公开结果可比的数字,请优先使用它的 parity set。

添加 benchmark

在侧边栏打开 Benchmarks。Osmosis 托管的 benchmark 已在您的 workspace 中;Add Benchmark 可按名称添加 Harbor registry 中的任意 dataset。 每张卡片是 workspace 可以运行的一个 benchmark。点击卡片打开它的页面。卡片显示名称、task 列表就绪后的数量徽标,以及描述。搜索按名称过滤网格。 Harbor benchmark 的 task 列表在添加之后才会从 registry 分页同步进来,同步就绪前无法提交 run。同步进行时,卡片用进度条替换描述。若同步失败,卡片会说明原因,benchmark 页面提供 Retry sync。您自己添加的 benchmark 可以从卡片的操作菜单中移除,托管的 benchmark 不可移除。workspace 的任何成员都可以添加 benchmark、移除自行添加的 benchmark,以及提交、停止、重命名或删除 run。

托管 Benchmark

每个 workspace 都有这些 benchmark,且无法移除。

Benchmark 页面

每个 benchmark 页面打开时显示它的 LeaderboardBenchmark Runs 表格,New Run 是提交入口。页眉显示该 benchmark 的 source 引用(点击即可复制),task 列表就绪后还会显示 task 数量徽标;操作菜单提供 View source,同步失败后还提供 Retry sync

Leaderboard

Web leaderboard 会合并 Platform run 与公开参考分数。Platform 参赛者是 harness 与 model 的组合,分数取自它最新的合格 run,因此重跑某个 agent 会更新它的名次,而不是新增一行。公开结果行带有来源和 task-set 徽标以及 source 链接;它们不属于 Osmosis run,因此点击后不会打开 run 页面。Platform 行仍会打开产生该分数的 run。 表格可按 Pass@1、Pass@k、Cost / task、Time / task 或 Tokens / task 排名。点击某个指标的列标题即可按它重新排序,当前排序指标会体现在 URL 中。每一行只与使用相同完整 task set 或 parity task set 的行排名。每个对比组内采用并列排名:并列的参赛者共享同一名次,因此名次可能跳号(如 1、1、3)。 Agent 进入 leaderboard 的条件:
  • run 已 finished,且该 agent 自身已 finished;
  • run 覆盖了完整 task 列表,或 benchmark 为对比而公开的 parity set;
  • 每个 task 与尝试的组合都产生了结果;
  • 该 agent 有 pass@1 分数。
Platform 行和公开结果行显示在同一张表中,但完整 task set 与 parity task set 属于不同排名组。对于 Platform run,显著性检验只比较 task set 相同且解析 benchmark 版本相同的参赛者。因此,HLE 完整 2,500 题 task set 的公开结果与 Platform 上 249 题 parity set 的 run 始终分开排名。
按 category 或少量 task 名称过滤的 run 有意不参与排序。它仍然拥有完整的 run 页面、分数和下载。

使用 CLI 查看 benchmark

先列出当前 workspace 可用的 benchmark,再查看准备运行的 benchmark:
benchmark info 会显示 key 和准确名称、指向上游项目的 source_url(benchmark 经过适配时指向 adapter 仓库)、task 和 category 数量、命名 task set、harness 与 judge 要求,以及 pass threshold,随后是该 benchmark 的 Platform leaderboard 和 workspace 在其上的 runs。CLI 输出仍只包含 Platform 结果;公开参考结果显示在 Web leaderboard 上。若某个 benchmark 的公开分数是在特定 harness 上测得的,该 harness 会作为默认值显示。Terminal-Bench 2.1 是 terminus-2,使用其他 harness 的 run 与这些分数不可比。选择 task_namescategories 前,可使用 JSON 输出查看完整 task manifest:
JSON manifest 中的每个 task 都包含 difficulty,其值为 easymediumhardnullnull 表示 benchmark source 未提供难度,绝不能自行推断。 对于 HLE,该命令会把 parity 标记为推荐的命名 task set。省略 [tasks] 会选择完整 benchmark。 Harbor registry benchmark 的 task 列表仍在同步时,Last Run 列显示同步状态和 task 进度,此时提交会失败,直到同步完成。若同步失败,benchmark list 会在该列说明原因,并在 Tasks 列显示 unavailable,JSON 输出中包含 sync_error。返回的 platform_url 会打开该 benchmark 的页面,其中包含它的 leaderboard、runs 和 Retry sync

从 Platform 提交 run

New Run 会打开一个带三个标签页的表单,并实时汇总即将提交的内容:
  • Tasks:全部 task、命名 task set、category 或明确的 task 名称。
  • Agents:每个 agent 一项,包含 harness、model,以及保存该 provider API key 的 workspace 或个人 secret record。添加更多项即可在一个 run 中比较多个 agent。每个 agent 还可以按名称与值逐行填写自己的环境变量。
  • Run settings:每个 task 的尝试次数、并发尝试数、超时倍数、重试次数、pass threshold、benchmark 使用 LLM judge 时的 judge 设置,以及本次 run 自行提供的 secret。
model 字段(以及 benchmark 使用 judge 时的 judge model 字段)会搜索平台能够路由的模型,并按 provider 分组。列表中没有的 slug 仍可直接输入,因此比目录更新的模型不会被挡住。使用自定义 endpoint 的 agent 保留自由输入的 model 字段,因为该名称属于您指定的服务器。 计费在提交时校验,因此计费信息无效的 workspace 会在提交时被告知,而不是被挡在表单之外。

表单如何获取凭据

API key 以 secret record 名称引用,绝不粘贴到 model 或 judge 字段中。请先在 Secrets 中创建记录,再按名称选择。 Run settings 中的两个区块用于 model 与 judge 字段未涵盖的凭据:
  • Verifier secrets 仅出现在从 Harbor registry 添加的 benchmark 上,用于指定 dataset 自带的 LLM verifier 所读取的记录。每一项都以其记录名称交付给 verifier,agent 永远看不到。托管 benchmark 自行管理 verifier 凭据,因此不提供该区块。
  • Run secrets 以名称和值随单次 run 提供。值不会加入 Osmosis secret store 或持久化 run config:run 只在 Run scope 下记录名称,并且在该次 run 中覆盖同名的已存记录。基于历史 run 重新提交时,名称会带回来但值为空,需要重新输入。
Benchmark run 会产生 model 与 sandbox 费用,其中模型花费计入您自己的 provider key。请先提交只含一个 task 的 run,确认 agent 与 secret 可用,再运行完整 benchmark。

使用 CLI 提交 run

CLI 提交的是同步 workspace 仓库中 configs/benchmark/ 下的 Osmosis TOML config。
提交前,先在 Platform 中把 benchmark 添加到 workspace[experiment].benchmark 解析的是 workspace 中已有的 benchmark,可填写其 key、名称或 ID,而不是本地 dataset path。

创建 config

复制 workspace template 并编辑:
第一次运行时,选择一个 task 和一个 agent:
configs/benchmark/terminal-bench-smoke.toml
Provider、endpoint、hosted model、task filter 和 execution fields 参见配置文件

注册 credentials

api_key_secretharness_api_key_secretjudge_api_key_secret 保存 Platform secret record 名称,而不是 credential value。提交前,创建 config 引用的每个 record:
默认使用 personal scope。需要与能够提交 run 的 workspace 成员共享 credential 时,使用 --scope workspace Cursor CLI 使用与 model 分离的 harness credential 进行认证。在对应 agent 上,把 harness_api_key_secret 设为 CURSOR_API_KEY。填其他值会在提交时被拒绝。Mini SWE-agent 始终拒绝 harness_api_key_secret。对于 provider 和 endpoint model,Platform 会复用 model 的 api_key_secret 并以 MSWEA_API_KEY 注入,因此该名称不能同时出现在 agent 的字面量环境变量中。Hosted model 不会收到注入的 model key,可以显式设置 MSWEA_API_KEY
cursor-cli 外,其他 harness 会拒绝 harness_api_key_secret。完整 agent 示例参见配置文件 HLE 和 GDPVal 使用 LLM judge,并且必须设置 judge_api_key_secret。将其设置为 Platform secret record 名称;judge_model 可选,省略时使用 benchmark 默认值。对于 HLE,创建 judge record:
然后在 HLE config 现有的 [execution] table 中添加 judge record 名称:
缺少 secret 时提交会失败,并给出需要创建的 record 名称。
提交 HLE 前,请在 [tasks] 下添加 task_set = "parity"。我们建议 HLE run 使用已发布的 parity set;省略 [tasks] 会选择完整的 HLE benchmark。

提交 run

确认预览会显示 benchmark、task selection、agent models、尝试次数、并发数和 secret scopes。检查 config 后,可使用以下命令进行非交互确认:
响应包含:
  • 生成的 run idname
  • 初始 status
  • 解析后的 task_count
  • created_at 中的提交时间
  • Platform 中 benchmark run 的 platform_url

状态流转

监控

Run 页面

Run 的地址是 /benchmarks/runs/<run-id>,侧边栏显示状态、进度、时长、已用 token、LLM cost、提交信息、锁定的 benchmark 版本及其 agent。四个标签页覆盖整个 run:
  • OverviewAgent Results 是一张可排序的表格,每个 agent 一行,使用与 leaderboard 相同的指标,进度列在 run 进行期间实时显示时长。agent 的尝试次数足够时会出现 pass@k 曲线,有已评分的 category 后会出现按 category 的分解。
  • Task Results:覆盖每个 task 与尝试的结果表格,可搜索、可筛选,并可查看任一结果的评分输出、对话和 artifact。通过工具栏的 Agent 筛选可只看指定 agent。
  • Configuration:解析后的 run 配置(TOML 格式),包含它锁定的 benchmark 版本。
  • Logs:从提交到清理的生命周期事件。
LLM Cost 是 harness 上报的、使用您自己 provider key 产生的模型花费,不由 Osmosis 计费。 打开 submitruns info 返回的 platform_url,即可在此跟踪进度、比较 agents 并查看 task-level results。

CLI 命令

Run 生命周期命令位于 benchmark runs 之下。列出当前 workspace 的 benchmark runs,其列与 Platform 的 runs 表格相同,包含每个 run 的 agent 数量和 best pass@1,然后使用名称或 ID 查看刚提交的 run:
runs info 显示该 run 的状态、进度、时长和 result totals,并按 run 页面的方式为每个 agent 打分:排名、带置信区间的 pass@1、最深的 pass@k,以及按 task 计的 cost、time 和 tokens。 使用 runs logs 查看生命周期事件和诊断失败。每页日志按时间从早到晚返回;如需查看更早的日志,将 JSON 响应中的 next_cursor 传回命令:

下载输出

Metrics、task 级结果和每个结果的 artifact 都可从 run 页面下载。使用 CLI 时,可下载 run summary 和 task-level results,或选择其他输出类型:
下载默认使用 .osmosis/benchmarks/ 下按 run 划分的目录,并通过跳过完整文件实现断点续传。可用类型为 summaryresultsartifactslogsall。目录结构固定如下:
Run 处于 pendingqueued 时还没有可下载的输出。下载 running 状态的 run 会得到当前快照;刷新可能在文件大小不变时发生变化的文件,请传入 --overwrite

停止 run

pending、queued 和 running 状态的 run 可以从 run 页面或 runs 表格中的对应行停止。平台清理完 sandbox 后,该 run 变为 stopped。已写入的结果会保留在该 run 上。 从 CLI 停止时,检查确认提示后执行:

扩大运行范围

Smoke run 启动并生成预期结果后:
  1. 添加明确的 task_names、选择 categories、使用已发布的 parity task set,或省略 [tasks] 运行完整 benchmark。
  2. 在 workspace 限额内提高 max_concurrent_attempts
  3. 添加另一个 [[agents]] table,比较 harness 或 model 组合。
  4. 确认付费 run 前,检查新的 task 和 attempt 数量。

后续步骤

CLI Benchmarks

从 CLI 发现 benchmarks,并提交、查看或下载 runs。

配置文件

Benchmark TOML config 参考。

评估任务

针对 platform dataset 为自己的 rollout 打分。

Secrets

管理 agent 引用的 secret record。
最后修改于 2026年8月14日