harbor-cli について
Harbor CLI は、タスクやデータセットの準備から、エージェントの実行、試行結果の確認まで、ベンチマーク評価を管理します。ジョブの再開、失敗分析、アダプターのひな形作成、トレースのエクスポートにも対応します。
主な機能
- 01評価ジョブの実行と再開
- 02タスクとアダプターの作成・評価
- 03データセットの一覧表示とダウンロード
- 04Web UI での結果確認
- 05失敗の要約と試行のデバッグ
- 06ATIF 形式でのトレース出力
活用シーン
- 01ローカルタスクやデータセットでのエージェント評価
- 02タスク開発中の単一試行のデバッグ
- 03ジョブ内の失敗の確認
- 04ベンチマーク用アダプターとタスクの準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ harbor-framework/ skills --skill harbor-cliインストール後、Claude Code で/harbor-cliを入力して読み込まれたか確認します。
同梱ファイルreferences/flags.md
詳細
Harbor CLI リファレンス
Harbor CLI は、タスクの作成、エージェントの実行、結果の表示など、評価のライフサイクル全体を管理します。uv tool install harbor でインストールします。グローバルオプション:--version / -v。
すべてのコマンドのフラグ、型、デフォルト値を網羅した表については、references/flags.md を参照してください。
クイックリファレンス
| コマンド | 説明 |
|---|---|
harbor run | 評価を実行します(harbor jobs start のエイリアス) |
harbor jobs start | 評価ジョブを開始します |
harbor jobs resume | 中断されたジョブを再開します |
harbor jobs summarize | ジョブの失敗を AI で要約します |
harbor trials start | 単一のトライアルを実行します(デバッグ用) |
harbor trials summarize | 単一のトライアルを AI で要約します |
harbor datasets list | 利用可能なデータセットを一覧表示します |
harbor datasets download | データセットをダウンロードします |
harbor adapters init | 新しいベンチマークアダプターのひな形を作成します |
harbor adapters review | アダプターの構造と品質を AI でレビューします |
harbor tasks init | 新しいタスクのひな形を作成します |
harbor tasks check | タスクの品質を AI で評価します |
harbor tasks start-env | タスク環境を対話形式で起動します |
harbor tasks debug | タスクの失敗したトライアルを分析します |
harbor tasks migrate | Terminal-Bench のタスクを Harbor 形式に変換します |
harbor view | Web UI でジョブ/トライアルの結果を確認します |
harbor sweeps run | 評価スイープを順次実行します |
harbor traces export | トレースデータを ATIF 形式でエクスポートします |
harbor cache clean | Docker イメージとキャッシュディレクトリをクリーンアップします |
harbor admin | 管理コマンド(非表示) |
harbor run / harbor jobs start
主要なコマンドです。harbor run は harbor jobs start のエイリアスです。
デフォルト: エージェント = oracle、同時実行数 = 1、環境 = docker、出力先 = ./jobs。
主なフラグ:
| フラグ | 短縮形 | 説明 |
|---|---|---|
--path | -p | タスクディレクトリのローカルパス |
--dataset | -d | レジストリのデータセット(例:[email protected]) |
--config | -c | ジョブ設定の YAML/JSON ファイル |
--agent | -a | エージェント名(デフォルト:oracle)。複数回指定できます |
--model | -m | モデル識別子。複数回指定できます |
--n-concurrent | -n | 同時実行するトライアル数(デフォルト:1) |
--env | -e | 環境バックエンド(デフォルト:docker) |
--jobs-dir | -o | 出力ディレクトリ(デフォルト:./jobs) |
--agent-env | --ae | エージェントに環境変数を渡します:KEY=VALUE。複数回指定できます |
--agent-kwarg | --ak | エージェントのキーワード引数:key=value。複数回指定できます |
--task-name | -t | glob パターンに一致するタスクを含めます。複数回指定できます |
--exclude-task-name | -x | glob パターンに一致するタスクを除外します。複数回指定できます |
--n-tasks | -l | 実行するタスクの最大数 |
--quiet | -q | トライアルの進行状況を表示しません |
--debug | デバッグログを有効にします | |
--dry-run | 設定を表示して終了します | |
--disable-verification | テストの実行をスキップします | |
--no-cache | Docker ビルドキャッシュをスキップします | |
--artifact | トライアル後、環境からパスをダウンロードします。複数回指定できます | |
--timeout-multiplier | すべてのタイムアウトを調整します(デフォルト:1.0) |
環境のキーワード引数(--ek)、環境変数(--ee)、検証器のキーワード引数(--vk)、オーケストレーターのキーワード引数(--ok)、エージェントイメージ、再試行設定、トレースのエクスポート、フェーズごとのタイムアウト倍率に関する追加フラグは、references/flags.md に記載されています。
例
# Run local task with oracle (validates solution + tests)
harbor run -p ./my-task
# Run with a real agent
harbor run -p ./my-task -a claude-code -m anthropic/claude-sonnet-4-1
# Dataset evaluation with concurrency
harbor run -d [email protected] -a claude-code -m anthropic/claude-sonnet-4-1 -n 8
# Cloud environment
harbor run -d my-dataset -a claude-code -m anthropic/claude-sonnet-4-1 -e daytona
# From config file
harbor run -c eval-config.yaml
# Pass API key to agent
harbor run -p ./my-task -a claude-code -m anthropic/claude-sonnet-4-1 \
--ae ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY
# Run subset of tasks
harbor run -d [email protected] -a claude-code -m anthropic/claude-sonnet-4-1 \
-t "bash-*" -l 10
# Dry run
harbor run -d [email protected] -a claude-code -m anthropic/claude-sonnet-4-1 --dry-run
harbor jobs resume
中断されたジョブ、または一部のみ完了したジョブを再開します。
harbor jobs resume -p ./jobs/my-job-2025-01-15
harbor jobs resume -p ./jobs/my-job -f AgentTimeoutError
| フラグ | 短縮形 | 説明 |
|---|---|---|
--job-path | -p | config.json を含むジョブディレクトリのパス(必須) |
--filter-error-type | -f | 再開前に、このエラータイプに一致するトライアルを削除します。複数回指定できます。デフォルト:CancelledError |
harbor jobs summarize
ジョブ内のトライアルについて、AI を活用した失敗の要約を生成します。
harbor jobs summarize ./jobs/my-job
harbor jobs summarize ./jobs/my-job -m sonnet --all --overwrite
| フラグ | 短縮形 | 説明 |
|---|---|---|
job_path | ジョブディレクトリまたは親ディレクトリへのパス(位置引数) | |
--model | -m | モデル:haiku、sonnet、opus(デフォルト:haiku) |
--n-concurrent | -n | 同時クエリの最大数(デフォルト:5) |
--all / --failed | すべてのトライアル、または失敗したトライアルのみを分析します(デフォルト:--failed) | |
--overwrite | 既存の summary.md ファイルを上書きします |
harbor trials start
単一のトライアルを実行します。デバッグやタスク開発に便利です。
harbor jobs start との主な違い: 環境フラグは --env ではなく --environment-type で、出力先は --trials-dir です(デフォルト:./trials)。
| フラグ | 短縮形 | 説明 |
|---|---|---|
--path | -p | ローカルのタスクディレクトリへのパス |
--config | -c | トライアル設定 YAML/JSON |
--agent | -a | エージェント名(デフォルト:oracle) |
--model | -m | エージェントのモデル |
--environment-type | -e | 環境タイプ(デフォルト:docker) |
--trials-dir | 出力ディレクトリ(デフォルト:./trials) | |
--agent-env | --ae | エージェント用の環境変数:KEY=VALUE。繰り返し指定できます |
--agent-kwarg | --ak | エージェントのキーワード引数:key=value。繰り返し指定できます |
--no-cleanup | トライアル終了後も環境を保持します | |
--no-verify | テストの実行をスキップします |
フラグの全一覧(タスクのキーワード引数、Git オプションなど)は references/flags.md を参照してください。
# Test with oracle (validates solution + tests)
harbor trials start -p ./my-task
# Test with real agent
harbor trials start -p ./my-task -a claude-code -m anthropic/claude-sonnet-4-1
# Keep container for inspection
harbor trials start -p ./my-task -a claude-code -m anthropic/claude-sonnet-4-1 --no-cleanup
oracle エージェントは環境内で solution/solve.sh を実行し、その後、検証器が tests/test.sh を実行します。oracle の報酬が 1.0 にならない場合、テストまたはソリューションに不具合があります。
harbor trials summarize
harbor trials summarize ./trials/my-trial
harbor trials summarize ./trials/my-trial -m sonnet --overwrite
| フラグ | 短縮形 | 説明 |
|---|---|---|
trial_path | トライアルディレクトリへのパス(位置引数) | |
--model | -m | モデル:haiku、sonnet、opus(デフォルト:haiku) |
--overwrite | 既存の summary.md を上書きします |
harbor datasets
harbor datasets list
harbor datasets list
harbor datasets list --registry-url https://custom-registry.example.com
harbor datasets list --registry-path ./local-registry.json
--registry-url と --registry-path は同時に指定できません。デフォルトは Harbor のパブリックレジストリです。
harbor datasets download
harbor datasets download [email protected]
harbor datasets download [email protected] -o ./my-tasks --overwrite
| フラグ | 短縮形 | 説明 |
|---|---|---|
DATASET | 名前または name@version(位置引数) | |
--output-dir | -o | ダウンロード先ディレクトリ(デフォルト:~/.cache/harbor/tasks) |
--overwrite | キャッシュ済みでも再ダウンロードします |
harbor adapters
harbor adapters init
harbor adapters init my-benchmark
ベンチマーク名、アダプター ID、クラス名、説明、ソース URL、ライセンスを入力する対話形式のウィザードです。テンプレートファイルを含むアダプターディレクトリを作成します。
harbor adapters review
harbor adapters review -p adapters/my-benchmark
harbor adapters review -p adapters/my-benchmark --skip-ai -o report.md
harbor tasks
harbor tasks init
harbor tasks init my-task
harbor tasks init my-task -p ./custom-tasks
| フラグ | 短縮形 | 説明 |
|---|---|---|
name | タスク名(位置引数) | |
--tasks-dir | -p | 出力ディレクトリ(デフォルト:.) |
--no-pytest | test.sh での pytest をスキップします | |
--no-solution | ソリューションディレクトリの作成をスキップします | |
--include-canary-strings | 不正行為防止用のカナリア文字列を追加します | |
--include-standard-metadata | task.toml に完全なメタデータテンプレートを追加します |
harbor tasks check
ルーブリックに基づいて AI が品質を評価します。
harbor tasks check ./my-task
harbor tasks check ./my-task -m opus -o results.json
harbor tasks check ./my-task -r custom-rubric.toml
| フラグ | 短縮形 | 説明 |
|---|---|---|
task | タスク名またはパス(位置引数) | |
--model | -m | モデル:sonnet、opus、haiku(デフォルト:sonnet) |
--output-path | -o | JSON の結果の書き込み先 |
--rubric_path | -r | カスタムルーブリック(.toml、.yaml、.yml、.json) |
harbor tasks start-env
手動で確認するため、タスク環境を対話的に起動します。
harbor tasks start-env -p ./my-task
harbor tasks start-env -p ./my-task -e daytona
harbor tasks start-env -p ./my-task --agent claude-code -m anthropic/claude-sonnet-4-1
| フラグ | 短縮形 | 説明 |
|---|---|---|
--path | -p | タスクディレクトリへのパス |
--env | -e | 環境タイプ(デフォルト:docker) |
--all | -a | 解答とテストを含めます(デフォルト:true) |
--interactive / --non-interactive | -i | 対話型シェル(デフォルト:true) |
--agent | 環境にインストールするエージェント | |
--model | -m | エージェントに使用するモデル |
すべてのフラグについては references/flags.md を参照してください。
harbor tasks debug
AI を使用して、タスクの失敗した試行を分析します。
harbor tasks debug my-task-id -m sonnet
harbor tasks debug my-task-id --job-id my-job --jobs-dir ./jobs
| フラグ | 短縮形 | 説明 |
|---|---|---|
task_id | タスク ID(位置引数) | |
--model | -m | 分析に使用するモデル |
--job-id | 分析する特定のジョブ | |
--jobs-dir | ジョブを含むディレクトリ |
harbor tasks migrate
Terminal-Bench のタスクを Harbor 形式に変換します。
harbor tasks migrate -i ./old-tasks -o ./harbor-tasks
harbor tasks migrate -i ./old-tasks -o ./harbor-tasks --cpus 2 --memory-mb 4096
| フラグ | 短縮形 | 説明 |
|---|---|---|
--input | -i | Terminal-Bench のタスクディレクトリまたは親ディレクトリ |
--output | -o | 出力ディレクトリ |
--cpus | すべてのタスクの CPU 数を上書きします | |
--memory-mb | メモリ(MB)を上書きします | |
--storage-mb | ストレージ(MB)を上書きします | |
--gpus | GPU 数を上書きします |
harbor view
Web UI でジョブ/試行の結果を閲覧します。
harbor view ./jobs/my-job
harbor view ./jobs --port 9000
harbor view ./jobs --dev
| フラグ | 短縮形 | 説明 |
|---|---|---|
folder | 軌跡を含むディレクトリ(位置引数) | |
--port | -p | ポートまたは範囲(デフォルト:8080-8089) |
--host | バインドするホスト(デフォルト:127.0.0.1) | |
--dev | ホットリロード開発モード | |
--build | ビューアーを強制的に再ビルドします | |
--no-build | 自動ビルドをスキップします |
ジョブの概要、試行ごとの報酬値、エージェントの軌跡、テスト出力を表示します。
harbor sweeps run
スイープを連続して実行します。各スイープでは、すでに少なくとも 1 回成功しているタスクを除外し、残りの失敗タスクに注力します。
harbor sweeps run -c sweep-config.yaml
harbor sweeps run -c sweep-config.yaml --max-sweeps 5 --trials-per-task 3
harbor sweeps run -c sweep-config.yaml --hint "Try grep to find the file first"
| フラグ | 短縮形 | 説明 |
|---|---|---|
--config | -c | ジョブ設定ファイル(YAML/JSON) |
--max-sweeps | 最大スイープ数(デフォルト:3) | |
--trials-per-task | スイープごとのタスクあたりの試行数(デフォルト:2) | |
--hint | エージェントの kwargs に渡すヒント文字列 | |
--hints-file | タスク名からヒントへの対応を記述した JSON ファイル | |
--push / --no-push | エクスポートしたデータセットを HF Hub にプッシュします |
追加のエクスポート用フラグについては references/flags.md を参照してください。
harbor traces export
ATIF の軌跡をトレーニングデータセットとしてエクスポートします。
harbor traces export -p ./jobs/my-job
harbor traces export -p ./trials --filter success --push --repo my-org/traces
harbor traces export -p ./jobs/my-job --sharegpt --episodes last
| フラグ | 短縮形 | 説明 |
|---|---|---|
--path | -p | 試行ディレクトリ、または試行を含むルートディレクトリへのパス |
--recursive / --no-recursive | 再帰的に検索します(デフォルト:再帰検索) | |
--episodes | 試行ごとのエピソード(all または last、デフォルト:all) | |
--filter | success、failure、または all(デフォルト:all) | |
--sharegpt / --no-sharegpt | ShareGPT 形式の会話 | |
--push / --no-push | Hugging Face Hub にプッシュします | |
--repo | HF リポジトリ ID(org/name) |
追加のフラグ(--subagents、--instruction-metadata、--verifier-metadata、--verbose)については references/flags.md を参照してください。
harbor cache clean
Harbor の Docker イメージと ~/.cache/harbor を削除します。
harbor cache clean
harbor cache clean --force
harbor cache clean --dry
harbor cache clean --no-docker # Only clean ~/.cache/harbor
harbor cache clean --no-cache-dir # Only clean Docker images
| フラグ | 短縮形 | 説明 |
|---|---|---|
--force | -f | 確認をスキップします |
--dry | 削除せずにプレビューします | |
--no-docker | Docker イメージの削除をスキップします | |
--no-cache-dir | ~/.cache/harbor の削除をスキップします |
harbor admin upload-images
タスクの Docker イメージをビルドして、コンテナレジストリにプッシュします。ビルド済みイメージを使うワークフロー向けに、task.toml を docker_image で更新します。harbor --help には表示されませんが、完全に機能します。
harbor admin upload-images -r my-registry.io --tag 20260317
harbor admin upload-images -r my-registry.io --dry-run -f "bash-*"
主なフラグ:--tasks-dir / -t(デフォルト:tasks)、--registry / -r(必須)、--tag(デフォルト:今日の日付 YYYYMMDD)、--dry-run、--filter / -f、--push/--no-push(デフォルト:プッシュ)、--delete/--no-delete、--parallel / -n(デフォルト:1)、--update-config/--no-update-config、--override-config/--no-override-config。詳細は references/flags.md をご覧ください。
対応エージェント
| エージェント | CLI 値 | 備考 |
|---|---|---|
| Oracle | oracle | solution/solve.sh を実行します。デフォルトのエージェント |
| Nop | nop | 何もしません(ベースライン) |
| Claude Code | claude-code | ANTHROPIC_API_KEY が必要です |
| Aider | aider | |
| Codex | codex | |
| Cline CLI | cline-cli | モデル形式:provider:model-id |
| Cursor CLI | cursor-cli | |
| Gemini CLI | gemini-cli | GOOGLE_API_KEY または GEMINI_API_KEY が必要です |
| Goose | goose | モデル形式:provider/model_name |
| Mini SWE-agent | mini-swe-agent | |
| SWE-agent | swe-agent | |
| OpenCode | opencode | |
| OpenHands | openhands | LLM_API_KEY と LLM_MODEL が必要です |
| OpenHands SDK | openhands-sdk | |
| Qwen Coder | qwen-coder | |
| Terminus | terminus | Harbor 組み込みのエージェント |
| Terminus 1 | terminus-1 | |
| Terminus 2 | terminus-2 |
環境バックエンド
| バックエンド | CLI 値 | 説明 |
|---|---|---|
| Docker | docker | デフォルト。ローカルコンテナ |
| Daytona | daytona | Docker-in-Docker に対応したクラウドサンドボックス |
| E2B | e2b | E2B クラウドサンドボックス |
| GKE | gke | Google Kubernetes Engine |
| Modal | modal | GPU に対応したサーバーレス環境 |
| Runloop | runloop | Runloop クラウド環境 |
注:harbor run では --env / -e を使います。harbor trials start では --environment-type / -e を使います。
よくあるワークフロー
新しいタスクの作成とテスト
harbor tasks init my-task
# Edit: task.toml, instruction.md, Dockerfile, tests/test.sh, solution/solve.sh
harbor tasks check ./my-task
harbor trials start -p ./my-task # oracle validates tests
harbor trials start -p ./my-task -a claude-code -m anthropic/claude-sonnet-4-1
harbor view ./trials
ベンチマーク評価の実行
harbor datasets list
harbor datasets download [email protected]
harbor run -d [email protected] -a claude-code -m anthropic/claude-sonnet-4-1 -n 8
harbor view ./jobs
harbor traces export -p ./jobs/my-job --push --repo my-org/traces
失敗したタスクのデバッグ
harbor tasks start-env -p ./my-task # interactive shell in the container
# Inside: bash /tests/test.sh && bash /solution/solve.sh
harbor tasks debug my-task-id -m sonnet # AI analysis of failures
harbor trials start -p ./my-task # re-test with oracle
失敗したジョブの再開
harbor jobs resume -p ./jobs/my-job-2025-01-15
harbor jobs resume -p ./jobs/my-job -f AgentTimeoutError
harbor jobs summarize ./jobs/my-job
よくある注意点
API キー: ほとんどのエージェントでは、--ae を使ってキーを渡す必要があります。Claude Code には ANTHROPIC_API_KEY、OpenHands には LLM_API_KEY、Goose にはプロバイダー固有のキーが必要です。エージェントがすぐに失敗する場合は、キーを確認してください。
Docker を起動しておく必要があります。 Harbor はサンドボックス環境に Docker を使います。同時に実行するトライアルが多くネットワークが枯渇すると、失敗することがあります。harbor cache clean が役立ちます。
モデル名の形式はエージェントによって異なります。 Claude Code では anthropic/claude-sonnet-4-1、Cline CLI では provider:model-id(例:openrouter:anthropic/claude-opus-4.5)、Goose では provider/model_name を使います。モデル形式に関する ValueError は、通常、そのエージェントに適さない形式を指定したことを意味します。
--env と --environment-type の違い: harbor run では --env / -e を使います。harbor trials start では --environment-type / -e を使います。同じ短縮フラグですが、長い名前は異なります。
デフォルトのエージェントは oracle です。 -a を指定し忘れると、solve.sh を実行するだけの oracle エージェントが使われます。タスクの検証には問題ありませんが、実際の評価には適していません。
デバッグには --no-cleanup を使います。 harbor trials start に指定すると、トライアルの失敗後もコンテナが起動したままになるため、中を調べられます。
リトライのデフォルト設定では、よくあるエラーは除外されます。 --retry-exclude のデフォルトは AgentTimeoutError、VerifierTimeoutError、RewardFileNotFoundError、RewardFileEmptyError、VerifierOutputParseError です。これらは通常、一時的な障害ではなくタスクの問題を示しています。