Skip to main content
实现 Benchmark 前,先确定由谁执行 agent、在哪里评测,以及如何聚合结果。 Benchmark 没有一套适用于所有场景的固定模板。大多数集成把执行交给 Harness;只有上游交互循环本身就是评测定义的一部分时,Benchmark 才接管执行。评分既可以在 AgentCompass 进程中完成,也可以在任务 Environment 或独立的评测 Environment 中完成。

第一步:确定由谁执行

这一步决定由 Harness 还是 Benchmark 执行 agent 循环: HarnessFreeBenchmarkBaseBenchmark 的子类,两者共享任务加载、准备、产物收集、评测和聚合契约,只是在执行阶段由不同组件负责。优先使用 Harness 驱动;只有上游交互协议本身属于 Benchmark 定义时,才使用 Benchmark 驱动

第二步:选择评测位置

这一步决定 evaluate() 在哪里运行,不受第一步选择的影响: BaseBenchmarkHarnessFreeBenchmark 都可以使用这三种模式。collect_artifacts() 不是第四种模式,而是一个可按需覆盖的生命周期方法,用于在任务 Environment 关闭前提取提交物。采用 fresh 且评分依赖任务工作区时,通常需要覆盖该方法。具体实现见评测模式与产物

第三步:选择聚合方式

这一步决定如何把各次任务尝试的判定汇总为请求级指标,但不会改变由谁执行或在哪里评测: 具体结果字段和聚合实现见结果与聚合。无论最终组合是什么,都先阅读共同契约,确定任务字段、可见性边界和逐任务计划。

共享生命周期

每次请求先加载并选择任务,之后再为每个任务和每次尝试执行以下步骤:
调用 collect_artifacts() 时,任务 Environment 始终仍在运行。evaluate() 的执行位置由评测模式决定;所有任务完成后,aggregate_metrics() 再读取持久化结构并完成汇总。

方法分工

实现完成后,按文档更新补充用户入口,再按验证与对齐验证真实数据、Environment 和官方结果。