第一步:确定由谁执行
这一步决定由 Harness 还是 Benchmark 执行 agent 循环:HarnessFreeBenchmark 是 BaseBenchmark 的子类,两者共享任务加载、准备、产物收集、评测和聚合契约,只是在执行阶段由不同组件负责。优先使用 Harness 驱动;只有上游交互协议本身属于 Benchmark 定义时,才使用 Benchmark 驱动。
第二步:选择评测位置
这一步决定evaluate() 在哪里运行,不受第一步选择的影响:
BaseBenchmark 和 HarnessFreeBenchmark 都可以使用这三种模式。collect_artifacts() 不是第四种模式,而是一个可按需覆盖的生命周期方法,用于在任务 Environment 关闭前提取提交物。采用 fresh 且评分依赖任务工作区时,通常需要覆盖该方法。具体实现见评测模式与产物。
第三步:选择聚合方式
这一步决定如何把各次任务尝试的判定汇总为请求级指标,但不会改变由谁执行或在哪里评测:
具体结果字段和聚合实现见结果与聚合。无论最终组合是什么,都先阅读共同契约,确定任务字段、可见性边界和逐任务计划。
共享生命周期
每次请求先加载并选择任务,之后再为每个任务和每次尝试执行以下步骤:collect_artifacts() 时,任务 Environment 始终仍在运行。evaluate() 的执行位置由评测模式决定;所有任务完成后,aggregate_metrics() 再读取持久化结构并完成汇总。
方法分工
实现完成后,按文档更新补充用户入口,再按验证与对齐验证真实数据、Environment 和官方结果。
