第 14 章

第 14 章:运行 Job——harbor run 全指南

第 14 章:运行 Job——harbor run 全指南

Job 是 Harbor 的核心执行单元:一组 Trial 的编排容器,而每个 Trial 就是某个 agent 对某个任务的一次完整尝试。本章系统讲解 harbor run 的全部常用 flags,按"任务来源、agent、沙箱、并发、过滤、输出"分组拆解,并说明这些 flags 底层如何汇成一个 JobConfig。读完本章,你应当能针对任意评测场景拼出正确的 harbor run 命令。

14.1 Job 概念回顾

回忆第 1 章的核心概念:Task 是一个自带环境、指令、解法与验证器的评测单元;Trial 是"某个 agent 用某个模型在某个沙箱里做一次这个任务"的完整执行记录;Job 则是把一批 Trial 组织起来统一调度的编排单元。

harbor run 做的事情可以概括为一条流水线:

flowchart LR
    A[harbor run] --> B[解析任务来源 -p/-d/-t/--repo]
    B --> C[展开 Trial 列表 任务 x agent x attempts]
    C --> D[并发调度 -n]
    D --> E[agent 阶段]
    E --> F[verifier 阶段]
    F --> G[写入 jobs_dir -o/--job-name]

理解这条流水线后,所有 flags 的作用位置就一目了然:它们分别控制流水线某一段的行为。

14.2 指定任务与数据集(-p / -d / -t)

Harbor 支持多种任务来源,每种来源对应一组 flags:

来源 Flags 说明
本地数据集 -p <path/to/dataset> 目录下包含多个任务
本地单任务 -p <path/to/task> 直接指向一个任务目录
Harbor Hub 数据集 -d <org/dataset>@<ref> 从 Hub 拉取,@ref 可选
Harbor Hub 任务 -t <org/task>@<ref> 从 Hub 拉取单个任务
自定义 registry --registry-path 或 --registry-url 搭配 -d 使用
Git 仓库 --repo <org/repo-name> 搭配 -p 从 Git 仓库读取任务

对应示例命令:

# 本地数据集
harbor run -p "path/to/dataset" -a "agent" -m "model"

# 本地单任务
harbor run -p "path/to/task" -a "agent" -m "model"

# Harbor Hub 数据集与任务
harbor run -d "org/dataset@ref" -a "agent" -m "model"
harbor run -t "org/task@ref" -a "agent" -m "model"

# 自定义 registry(本地文件或 URL)
harbor run -d "dataset@version" --registry-path "path/to/registry.json" -a "agent" -m "model"
harbor run -d "dataset@version" --registry-url "url/to/registry.json" -a "agent" -m "model"

# Git 仓库中的任务
harbor run --repo "org/repo-name" -p "path/to/tasks" -a "agent" -m "model"

自定义 registry 与 Git 仓库的细节分别见文档 Registries 与 Git repos 页面。

14.3 选择 Agent 与模型(-a / -m / --ak)

-a 选择预集成的 agent(如 oracle、claude-code、codex),-m 指定模型名。模型名通常带 provider 前缀,例如 anthropic/claude-haiku-4-5。运行 harbor run --help 可以查看所有可用 agent。

harbor run -a "agent" -m "model" --ak reasoning_effort=high

--ak(agent kwargs)把集成特定的参数透传给 agent 构造器,上例即设置 reasoning_effort=high。自定义 agent 通过 import_path 接入,见第 9 章。

14.4 沙箱环境(-e)

-e 选择沙箱 provider,默认 docker,还支持 daytona、modal 等几十种预集成环境(见第 10 章)。相关 flags 还包括:

harbor run -p "path" -a "agent" -m "model" \
  -e "sandbox" --allow-agent-host "host" --override-memory-mb "memory-mb"
  • -e:指定沙箱类型;
  • --allow-agent-host:在 agent 阶段的网络白名单中额外放行某个主机;
  • --override-memory-mb:运行时覆盖任务声明的内存限制。

这些 flags 与 JobConfig 中 environment 字段的 CLI 入口一一对应。

14.5 并发与重试(-n / -k / -r)

harbor run -p "path" -a "agent" -m "model" \
  -n "concurrent" -k "attempts" -r "retries"
  • -n:最大并发 Trial 数,控制吞吐与成本的关键旋钮;
  • -k:每个"任务 × agent"组合的尝试次数(n_attempts),统计 pass@k 时常用;
  • -r:最大重试次数(max_retries),用于吸收偶发的超时与网络错误。

14.6 任务过滤(-l / -i / -x)

跑大数据集前先"切一小块"验证,是标准工作流:

harbor run -p "path" -a "agent" -m "model" \
  -l "max-tasks" -i "some-*-glob-pattern" -x "some-name"
  • -l:最多跑多少个任务;
  • -i:按 glob 模式包含匹配的任务名;
  • -x:排除指定名称的任务。

14.7 输出位置(-o / --job-name)

harbor run -p "path" -a "agent" -m "model" \
  -o "jobs-dir" --job-name "job-name"

-o 指定结果根目录(默认 jobs/),--job-name 指定本次 Job 的名称;省略时 Harbor 用当前时间 YYYY-MM-DD__HH-MM-SS 作为名称。

14.8 模拟用户(--user-agent / --user-model)

多轮交互任务需要一个"扮演用户"的 agent:

harbor run -p "path" -a "agent" -m "model" \
  --user-agent "user-agent" --user-model "user-model"

详见第 20 章的 Simulate a user 专题。

14.9 从 flags 到 JobConfig

CLI flags 只是语法糖:harbor run 在底层把所有 flags 组装成一个 JobConfig 对象再交给 runner。两种方式可以查看它:

# 运行前打印解析后的配置
harbor run --print-config ...

# 运行后查看落盘配置
cat /config.json

如果只想生成配置而不运行,用 harbor job init。已有的配置文件还可以与 CLI flags 组合,flags 覆盖配置中的同名值——这非常适合"一份基础配置 + 每次微调"的工作流:

harbor run -c "config.yaml" -m "another/model"

对经常重复的评测设置,官方建议把配置保存并纳入版本控制(详见第 15 章)。

14.10 在 Harbor Hub 上运行(--launch)

加上 --launch,Job 会被托管到 Harbor Hub 云端执行:

harbor auth login

harbor run -d "org/name" -a "agent" -m "model" \
  -n "concurrent" --one-off-secret "name=value" --launch

Hub 会负责:云端编排 Trial、执行每个 provider 的并发上限、在级联失败(如用量耗尽)时暂停、对限流做退避。之后你可以随时通过 UI 或 CLI 回来调试、触发重试、分享结果或监控进度。--one-off-secret 用于注入一次性密钥。

本章小结

  • Job 是一组 Trial 的编排单元,Trial 是 agent 对任务的一次尝试,harbor run 是启动 Job 的唯一入口。
  • 任务来源有六类:本地数据集/任务(-p)、Hub 数据集/任务(-d/-t)、自定义 registry、Git 仓库(--repo)。
  • -a 选 agent、-m 选模型、--ak 透传 agent 专属参数;harbor run --help 可列出全部可用 agent。
  • -n 控制并发、-k 控制尝试次数、-r 控制重试,三者共同决定成本与统计口径。
  • -l/-i/-x 用于在正式评测前切小样本调试。
  • 所有 flags 底层都会汇成 JobConfig,可用 --print-config 或 config.json 查看与复用。
  • --launch 把 Job 交给 Harbor Hub 云端托管,适合大规模、需要限流保护的评测。

延伸阅读