跳转到主要内容
Benchmarks 定义“评测什么”。它们负责 dataset、task id、task filtering、task material preparation、scoring logic 和 aggregate metrics。 Benchmark 应保持 provider-neutral。如果任务需要 Docker image、snapshot、workspace root 或 resource hint,应写入 task metadata,再由 recipe 适配到具体 environment。

Benchmarks 负责什么

任务加载

从数据集、本地文件、服务或 benchmark-specific repository 加载 TaskSpec

任务选择

应用通用 sample_ids filtering,以及 category、split 等 benchmark-specific 参数。

任务准备

把原始 task 转成包含 prompt、media、files、tools、workspace 和 metadata 的 PreparedTask

评分

RunResult 评分,写 per-task details,并聚合成 summary.md
Benchmark 不运行 agent、不调用 model API,也不管理 provider session。这些分别属于 harness 和 environment。

核心接口

数据对象

用法:选择单个任务

sample_ids 是通用 runtime filtering。它匹配 TaskSpec.task_id,如果 id 不存在会 fail fast。

用法:运行一个类别

category 的语义由 benchmark 定义。对 ScreenSpot 来说,它选择 GUI grounding 子集;其它 benchmark 的支持参数请看对应 reference 页面。

Tag 词表

公开文档中的 benchmark 页面按字母序排列。能力维度是 tag,不是互斥分类,因此一个 benchmark 可以同时匹配多个方向。 各 benchmark 的参数说明和运行示例见 Benchmark 参考

开发者说明

当 dataset、scoring 或 task preparation 与现有 benchmark 有实质差异时,新增 benchmark。不要为了改变 provider 设置而新增 benchmark;那应该放在 environment config 或 recipe 中。

实现 Checklist

  • 定义稳定 id 和可读 description
  • load_tasks 返回稳定 public task_id
  • scoring 字段不要隐藏在 harness-private 假设里。
  • provider hints 放在 task metadata,不直接调用 provider SDK。
  • 支持用 sample_ids 复现单任务。
  • details 中保留足够信息,方便不 rerun 就调试失败。

相关页面