Eigent 如何把 benchmark 任务转换为 Harbor 格式并用 Docker 环境运行评测

Eigent 如何把 benchmark 任务转换为 Harbor 格式并用 Docker 环境运行评测 Eigent 如何把 benchmark 任务转换为 Harbor 格式并用 Docker 环境运行评测【免费下载链接】eigentEigent: The Open Source Cowork Desktop - Local and Free Alternative to Claude Cowork and Codex项目地址: https://gitcode.com/GitHub_Trending/ei/eigentEigent 在backend/benchmark/目录下维护了一套自己的 benchmark每个任务由一个 dataset JSON、一个 pass/fail 的 checker 脚本和一个按里程碑打分的 grader 脚本组成。如果你希望把这套任务放进 Harbor 框架里用 Docker 容器隔离环境、用统一的harbor run命令评测不同 agent例如 claude-code就需要经过两个步骤先用仓库自带的 adapter 把任务转换成 Harbor 任务目录再用 Harbor CLI 在 Docker 环境中运行评测。本文基于 backend/benchmark/harbor/README.md 和 adapter 源码整理出完整操作路径包括自定义权重、只跑单个任务、并发运行、强制重建镜像以及结果落盘位置。前置条件按照 Harbor adapter README 的 Prerequisites运行评测的机器上需要通过 uv 安装 Harbor CLI# Install Harbor CLI uv tool install harbor # Set your API key export ANTHROPIC_API_KEYyour-key-hereyour-key-here是文档中的占位符替换为你自己的 Anthropic API key。评测使用--env dockerHarbor 会在首次运行时根据每个任务的environment/Dockerfile构建 Docker 镜像因此机器上还需要可用的 Docker 环境。第一步生成 Harbor 任务目录进入 adapter 所在目录后运行转换脚本cd backend/benchmark/harbor python run_adapter.pyrun_adapter.py 支持的参数# 自定义权重70% checker30% grader python run_adapter.py --checker-weight 0.7 --grader-weight 0.3 # 限制生成的任务数量 python run_adapter.py --limit 2--checker-weight/--grader-weightreward 中 checker 分数与 grader 分数的权重默认都是 0.5会在生成时写入每个任务的tests/config.json--limit最多生成多少个任务适合先小规模验证脚本默认把结果写到backend/benchmark/harbor/datasets/eigent-bench也可以用--output-dir指定其他输出目录用--benchmark-dir指定backend/benchmark/的位置不传时自动检测。adapter.py 的转换逻辑是遍历backend/benchmark/dataset/下所有 JSON 配置对每个任务复制template/目录、用配置里的data.question填充instruction.md、用metadata里的 difficulty 和 tags 填充task.toml、把对应的 checker/grader 脚本和answer/目录拷进任务目录。其中 grader 会被打补丁移除 eigent 专有的浏览器日志检查浏览器日志对其他 agent 不可用并相应减少里程碑总数同时把答案文件路径改为容器内相对路径。生成的任务目录结构README 中给出的布局eigent-bench-NNNN/ ├── task.toml # Harbor 元数据 ├── instruction.md # 任务问题 ├── environment/ │ ├── Dockerfile # Eigent 环境 评测依赖 │ └── workspace/ │ └── .env.development ├── tests/ │ ├── test.sh # 入口 → evaluate.py │ ├── evaluate.py # checkergrader → reward.txt │ ├── checker_N.py # 从 benchmark/checker/ 复制 │ ├── grader_N.py # 从 benchmark/grader/ 复制 │ └── config.json # 任务配置 权重 └── solution/ └── solve.sh # oracle 解决方案转换完成后终端会输出Done. Tasks written to 输出目录如果某个任务失败会记录失败计数如Generation complete: 3 succeeded, 0 failed out of 3生成日志中出现Failed to generate task时该任务的 JSON 配置需要单独检查。第二步用 oracle 验证环境正确性跑真实 agent 之前先用 oracle 跑一遍确认环境和评测链路没问题。README 给出的验证命令harbor run \ -p datasets/eigent-bench \ -a oracle \ --env docker-a oracle使用任务自带的solution/solve.sh把 answer 文件拷进 workspace作为标准答案。README 说明 oracle 验证的预期结果是score 1.0如果 oracle 都跑不到满分说明任务生成或 Docker 环境有问题应先排查再评测真实 agent。用 agent 运行评测环境验证通过后用指定模型运行评测harbor run \ -p datasets/eigent-bench \ -a claude-code \ -m anthropic/claude-sonnet-4-20250514 \ --env docker只跑单个任务时加-t指定任务 IDREADME 示例只跑任务 0即 hello world 任务harbor run \ -p datasets/eigent-bench \ -a claude-code \ -m anthropic/claude-haiku-4-5-20251001 \ -t eigent-bench-0000 \ --env docker需要并发执行时加--n-concurrentharbor run \ -p datasets/eigent-bench \ -a claude-code \ -m anthropic/claude-sonnet-4-20250514 \ --env docker \ --n-concurrent 3Docker 环境与 reward 是如何计算的每个任务的 Dockerfile 基于python:3.11-slim安装sudo git curl创建/tests /logs/verifier /solution /workspace四个目录并把工作目录设为/workspace。task.toml 模板中还有几个直接影响运行资源的限制项verifier 超时 120 秒、agent 超时 600 秒、镜像构建超时 600 秒、容器 2 CPU / 4096 MB 内存 / 5120 MB 存储。评测入口是容器内的 test.sh它执行python3 /tests/evaluate.py --config /tests/config.json --working-dir $WORKING_DIR --output-dir /logs/verifierWORKING_DIR默认为/workspace。evaluate.py 依次调用 config.json 里列出的 checker逐个执行check(working_dir)和 grader逐个执行grade(working_dir)返回(completed, total)然后按公式计算 reward 并写入/logs/verifier/reward checker_weight × checker_score grader_weight × grader_scorechecker_scorechecker 通过与否的得分checker 失败时为 0.0grader_scorecompleted_milestones / total_milestones范围 0.0–1.0权重即生成任务时传入的--checker-weight/--grader-weight默认 0.5 / 0.5。reward.txt和metrics.json就写在这个输出目录里如果 evaluate 以非零码退出且没有产生reward.txttest.sh 会补写一个0.0。读取结果运行结束后结果写入jobs/timestamp/目录jobs/timestamp/ ├── result.json # 总体结果 ├── job.log # 构建 运行日志 └── eigent-bench-NNNN__id/ ├── agent/ # agent 日志和轨迹 │ ├── claude-code.txt # agent 原始输出 │ └── trajectory.json # ATIF 轨迹 └── verifier/ ├── metrics.json # checker/grader 明细 └── test-stdout.txt # verifier 输出核对单个任务得分时看该 trial 的verifier/metrics.json含 reward、checker_score、grader_score、每个脚本的明细跨任务汇总看result.json排查构建或运行问题看job.log。强制重建 Docker 镜像Harbor 会缓存 Docker 镜像。修改了任务的 Dockerfile 后想强制重建先清理 Harbor 的构建缓存再重跑# Clear Harbors Docker build cache docker builder prune -f # Then rerun — Harbor will rebuild the image harbor run -p datasets/eigent-bench -a oracle --env docker注意docker builder prune -f会清除本机构建缓存不删除已构建的镜像影响范围是机器上所有 builder 缓存执行前确认没有其他依赖这些缓存的构建任务。相关文档任务格式与命令参考backend/benchmark/harbor/README.md原始 benchmark 的运行方式直接调 Eigent API与添加新任务的格式说明backend/benchmark/README.md其中的 dataset JSON 结构就是 adapter 的输入来源【免费下载链接】eigentEigent: The Open Source Cowork Desktop - Local and Free Alternative to Claude Cowork and Codex项目地址: https://gitcode.com/GitHub_Trending/ei/eigent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考