1. 建立上游执行契约
记录官方框架或 CLI 版本、支持的 model 协议、配置格式、提示词流程、工具与工作区行为、安装方法、超时、终止规则、轨迹格式和凭证处理。 版本会影响命令、提示词、输出解析或得分可复现性时必须固定上游版本。优先使用公开 SDK 或 CLI 契约,不要依赖私有内部函数。2. 定义配置与计划类型
在src/agentcompass/harnesses/ 下创建 Harness。典型集成包含:
- 用户可见参数的
RuntimeHarnessConfig子类。 - 保存解析后 runtime 状态的类型化
HarnessPlan。 - 注册到
HARNESSES的BaseHarness子类。 - 必要时用于配置生成、启动和轨迹解析的专用适配器。
RunRequest,也不要检查私有 Benchmark 字段。
3. 提前验证兼容性
围绕能力而不是 Benchmark ID 实现supports(environment, model),并验证:
尽可能在 Environment 启动前拒绝不支持的组合。不要静默切换协议、provider、安装模式或 model。
4. 实现生命周期
runtime 按以下顺序调用 Harness:start_session() 可以安装可信 Harness、生成配置、上传启动文件、启动后台进程或构造客户端。将这些准备与不可信 agent 运行过程分开,使 Benchmark 可以使用公共准备和受限运行阶段策略。
run_task() 必须只执行一个 PreparedTask。使用 prepared.input.prompt、messages、files、media、tools 和 workspace,不要回读 Benchmark 内部实现。返回最佳可用最终答案、请求的文件、有序轨迹、词元用量、耗时、产物和准确 TaskStatus。
成功、超时、取消或错误时,close_session() 都必须释放 Harness 负责的客户端、子进程、服务器、临时配置和后台任务。它不关闭 Environment;该生命周期归 runtime 所有。
5. 标准化结果,但不改变得分
Harness 报告执行,而不是 Benchmark 正确性。进程退出代码为零不代表任务成功,非空答案也不代表答案正确。 必须保留:- 供评测器使用的最终答案和输出产物。
- 准确的
COMPLETED或RUN_ERROR状态,并保留超时、拒绝、无效输出和终止详情。 - 有序助手消息、工具调用、命令结果和 Environment 观察结果。
- model 与 Harness 用量、延迟、步骤数量和终止原因。
- 安装、启动、解析、model API 和 runtime 错误上下文。
correct 或 score。
6. 处理安装与依赖
只支持实现能够复现的安装策略。常见选择包括固定预安装任务镜像、受控的受限执行前安装,或隔离驱动侧软件包可选依赖。- agent CLI 或软件包版本影响结果时必须固定。
- 暴露安装返回码、标准输出和标准错误,但不能泄漏凭证。
- 不要假设每个任务镜像都有软件包管理器或编译器。
- 不要为了准备方便而放宽 agent 运行网络策略。
- 准备昂贵或对网络敏感时,优先使用兼容预构建镜像。
- 专用软件包不应进入 AgentCompass 默认安装。
7. 限制命令、步骤、成本与 model 请求
每个限制只能有一个清晰负责人。Harness 命令超时约束 agent 命令或进程;步骤上限约束 agent 循环;model 客户端重试处理请求传输;runtime 重试重复失败任务尝试。不要用同一个参数名表示多层限制。 根据 Harness 成本跟踪契约处理未知 model 定价。用户显式选择忽略错误或已禁用成本模式时,缺少成本元数据不得终止计分运行。8. 注册并检查组件
从src/agentcompass/harnesses/__init__.py 导出 Harness,再验证注册表发现机制和配置结构:
id 和非空用户可见 description。