news 2026/9/2 13:09:38

Harbor 适配器开发完整指南:如何为 Agent 评测框架新增基准适配器并通过全部测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Harbor 适配器开发完整指南:如何为 Agent 评测框架新增基准适配器并通过全部测试

Harbor 适配器开发完整指南:如何为 Agent 评测框架新增基准适配器并通过全部测试

【免费下载链接】harborFramework for evaluating and improving agents项目地址: https://gitcode.com/gh_mirrors/harbor17/harbor

Harbor 是一个用于评估和改进 AI Agent的开源框架,支持在统一的 Docker 沙箱中运行各类 Agent 并量化其得分。为 Harbor 社区贡献一个 Agent 适配器(Adapter),就是把任意一个现有的 AI 基准测试(Benchmark)翻译成 Harbor 标准任务格式,让它能被 Agent 在隔离环境中稳定评测。本指南面向新手贡献者,带你走通从搭建脚手架、Oracle 验证到 Parity(对等性)实验的完整测试流程,让你的 PR 一次通过审核。

为什么需要 Agent 适配器?

Harbor 的核心运行模型是:每个任务 =指令 + 容器环境 + 验证测试 + 参考解。适配器的职责就是自动化地把上游基准的每个任务生成为这套标准结构:

标准文件作用
task.toml任务配置与元数据(必须含name字段)
instruction.mdAgent 读到的任务指令
environment/DockerfileAgent 与验证器共同工作的容器环境
solution/solve.shOracle(参考)解脚本
tests/test.sh验证脚本,将 0~1 的奖励值写入/logs/verifier/reward.txt

一个真实的最小任务示例见 examples/tasks/describe-image/,包含指令、环境与图片资源,值得动手前通读一遍。

贡献前必读:Harbor 社区三大规则

在写第一行代码之前,先了解 CONTRIBUTING.md 中的社区契约,这能帮你少走弯路:

  1. 黄金法则:你必须理解自己贡献的代码。可以使用编码 Agent,但你要能亲自讲清楚设计过程与取舍;
  2. 沟通规范:Issue 与 PR 描述由人负责"初稿 + 终稿",中间过程可借助 AI;
  3. 集成门槛较低:对 Agent 与基准集成比较开放,但要求至少有一位真实用户提出过需求(如留下评论作为证据)。

如需变更核心接口或 Harbor 数据格式,先在 rfcs/ 目录提交一份简洁的 RFC 并发起讨论。

准备工作:Fork 仓库并搭建脚手架

git clone https://gitcode.com/gh_mirrors/harbor17/harbor cd harbor git checkout -b my-benchmark-adapter harbor adapter init my-benchmark --name "My Benchmark"

harbor adapter init会在adapters/my-benchmark/下生成一个src布局的 Python 包,包含pyproject.tomlREADME.mdadapter_metadata.jsonparity_experiment.json、参考运行配置run_my-benchmark.yaml,以及src/my_benchmark/下的adapter.pymain.pytask-template/模板目录。

官方把完整流程拆成9 个步骤,人类可读版教程在 docs/content/docs/datasets/adapters-human.mdx,AI Agent 实现的权威规格在 docs/content/docs/datasets/adapters.mdx。

第 1~2 步:理解基准并完成适配器代码

理解基准时,对每个任务明确四个要素:指令描述、环境依赖、测试方式(确定性单测 / LLM-as-a-Judge)、参考解是否存在。

实现代码时,核心工作是补全adapter.py(解析基准数据、生成任务目录)与main.py(CLI 入口,必须支持--output-dir--limit--overwrite--task-ids四个参数)。几个高频踩坑点:

  • 每个task.toml必须[task].name,且命名需在多次运行间保持稳定(小写、特殊字符转连字符),否则无法注册或导致注册表摘要抖动;
  • tests/test.sh失败时返回非零退出码,成功时把奖励值(0~1 的数值)写入/logs/verifier/reward.txt
  • 生成的README.md会被下游自动化脚本机器解析,不要增删、改名或重排模板章节,额外说明一律放 Notes 段落。

按你的基准形态选择参考适配器来对照实现:

场景参考示例
上游已兼容现有 Agentadapters/adebench/
Fork 上游并新增 LLM Agentadapters/evoeval/
自定义 Agent + 独立数据集adapters/bixbench/、adapters/financeagent/
原地实现自定义 HTTP Agentadapters/medagentbench/
多 Agent 消息协作工作流adapters/cooperbench/
GPU 任务(Docker + Modal)adapters/featurebench/

以 adapters/simpleqa/ 为例,其 adapter.py、main.py 与task-template/是结构非常干净的完整样板。

第 3 步:Oracle 验证——必须 100% 通过

Oracle 验证是适配器正确性的第一道闸门:用 oracle agent 跑全部任务,任何一条失败都说明适配或环境有 bug

# 单任务调试 harbor trial start -p datasets/my-benchmark/<task-id> -a oracle # 全数据集验证 harbor run -c adapters/my-benchmark/run_my-benchmark.yaml

配置文件的写法可参考 adapters/simpleqa/run_simpleqa.yaml:默认启用 oracle agent,其他 Agent(codex、claude-code 等)以注释形式列出,方便一键切换。

全部通过后,提交标题为[WIP] Adapter: my-benchmark的 PR,并附上 100% 通过的终端截图。如果上游基准自带的 Oracle 解有 bug,优先在上游仓库提 Issue/PR 修复,再在适配器 README 中记录。

第 4~5 步:规划并执行 Parity 对等性实验

Parity(对等性)是适配器能否被接收的决定性测试:在完全相同的 Agent、模型、提示词与配置下,Harbor 侧与原始基准侧的得分区间必须重叠。

执行前先与核心团队约定 Agent、模型与运行次数(API 成本由团队承担),再按固定节奏对称推进:

  1. 5~10 个任务的 sanity 检查(两侧);
  2. 完整跑 1 轮(两侧);
  3. 扩展至每侧 3 轮。

⚠️ 千万不要让一侧跑完 3 轮而另一侧还没开始——一旦发现适配 bug,不对称的运行成本将全部浪费。

调试不重叠的得分时,官方提供了 8 步 Debug Playbook(先看日志排错误 → 检查 Agent 轨迹 → 逐任务重叠分析 → 区分随机噪声与系统性错误……),完整表格见 adapters.mdx 第 5 步。

第 6~7 步:记录结果并上传

实验完成后,在适配器目录填写两个结构化文件:

  • parity_experiment.json:每条目记录 agent(带版本)、model、日期、每侧运行次数与逐次得分,original/harbor字段必须报告为均值 ± 样本 SEM格式(注意是标准误,不是标准差);
  • adapter_metadata.json:记录构建者、基准规模、parity 采样率、新增 Agent、parity 成本等。

可对照 adapters/simpleqa/parity_experiment.json 与 adapters/simpleqa/adapter_metadata.json 的现成写法。随后将原始结果按目录规范上传到社区 parity 数据集仓库。

第 8~9 步:注册数据集并提交审核

  1. 用适配器把完整数据集生成到harbor-datasets仓库的datasets/<adapter-name>/下;
  2. 运行harbor init选择 dataset 生成dataset.toml,填写描述、作者与致谢;
  3. 发布前用harbor run -p <本地数据集路径>验证可运行(-d注册表方式要等发布后才能用);
  4. 提交 PR 并请求维护者审核;
  5. 发布后执行harbor run -d <org>/<adapter-name>做最终确认。

命名规则:数据集与任务 ID 均为<org>/<name>形式,<org>优先取基准的归属组织;每个任务name在数据集内唯一且跨运行稳定。最后将 PR 标题从[WIP]改为[Ready for Review] Adapter: <adapter_name>,附上完整 README 即可进入评审。

常见问题自检清单 ✅

症状可能原因解决办法
harbor: command not foundCLI 未安装uv tool install harbor
adapter init名称校验失败名称含非法字符使用小写 + 连字符命名
Oracle 本地通过,parity 莫名失败本地代码过期git fetch origin后拉取最新main
任务无法注册task.toml缺少namemain.py中生成规范化名称
自动化解析失败README/JSON 结构被改动严格按模板章节与字段填写

此外,仓库内置的 skills/create-adapter/SKILL.md 是一份"适配器脚手架技能"文档,完整列出了工作流、高危陷阱与失败模式排查表,是新人最快的上手清单;如需校验适配器格式,可参考 scripts/validate_adapter.py。

写在最后

为 Harbor 贡献 Agent 适配器的核心心法只有三句话:先生成标准任务、再让 Oracle 拿满分、最后用对称的 Parity 实验证明"两边量的是同一件事"。按 9 步流程稳扎稳打,你的基准就会正式进入 Harbor 注册表,被全球开发者用来评测下一代 Agent。动手试试吧!

【免费下载链接】harborFramework for evaluating and improving agents项目地址: https://gitcode.com/gh_mirrors/harbor17/harbor

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 13:09:26

C++ 语言课程笔记

C++ 语言课程笔记 C语言程序设计第四版——谭浩强著,此书中的代码题大部分已经在本文中展示,以及南开大学 C 语言上机题库 100 题的作答,如果有作答不正确的地方或者可优化的地方,欢迎指正,谢谢! 001 屏幕输出指定信息 【题目】要求再屏幕上输出以下一行信息 This is a…

作者头像 李华
网站建设 2026/9/2 13:09:10

2024安徽村级行政区划数据深度解析:从GIS处理到空间分析实战

简介&#xff1a;本资源为2024年安徽省村级&#xff08;居委会&#xff09;级行政区划GIS矢量数据集&#xff0c;面向地理信息、城乡规划、公共管理及社会科学研究领域的从业者与高校师生&#xff0c;用于空间分析、地图制图、人口统计建模与基层治理可视化等实际场景。数据采用…

作者头像 李华
网站建设 2026/9/2 13:04:41

RVC模型融合完全指南:不重训10分钟拿到新音色

RVC模型融合完全指南&#xff1a;不重训10分钟拿到新音色 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebU…

作者头像 李华
网站建设 2026/9/2 13:04:33

4GB 显存跑 70B:AirLLM 的分层流式推理逻辑与模型覆盖一览

4GB 显存跑 70B&#xff1a;AirLLM 的分层流式推理逻辑与模型覆盖一览 【免费下载链接】airllm AirLLM 70B inference with single 4GB GPU 项目地址: https://gitcode.com/GitHub_Trending/ai/airllm 一张 4GB 显存的显卡&#xff0c;常规用法只能装下 7B 级别的模型&a…

作者头像 李华