harness2(Harness²)は Google Research のチームが 2026-10-08 に GitHub で公開した研究コードだ。エージェントを動かす外側の仕組み(ハーネス)を、正解を見せないまま書き換えて磨く。2026-10-18 時点で Star は 1.1k、fork 93、コミットは3件、タグとリリースは無い。Linux に入れ、認証情報なしで動くデモとテストまでを動かした。
WHAT IT REPLACES何を代替するか
ハーネスの手直しを改善役のモデルに回させる
人がハーネスを直す
失敗ログを読んでプロンプトを書き換える
- 直す部品と理由は人の頭の中
- 次のタスクに教訓が残りにくい
Harness²
モデルの重みは固定、外側だけ書き換える
- 8つの部品を候補として試走して比べる
- 採用版と教訓をドメインごとに保存
30秒でわかるHarness²(2026-10-18時点)
- ・正体:Google Research の論文 arXiv:2610.14224 の実装。Apache-2.0、pyproject の版は 0.1.0。Google の公式製品ではないとREADMEに明記
- ・何ができる:1タスクごとにハーネスの編集を提案し、同じタスクで試走し、違いから合成する。採用した版と教訓はドメインごとの書庫に残し、次のタスクで読む
- ・実測:
harness2-demoが2.45秒で完走(試走28回・改善役32回)。テスト5件も通過。モデルを呼ぶベンチマーク実行は未検証 - ・注意:ベンチマークを回すには Vertex AI と ADC 認証が要り、1タスクあたり実行 4×k 回・改善役 3×k 回の API 費用がかかる
| 名前 | 何か | この記事との関係 |
|---|---|---|
| Harness²(google-research/harness2) | エージェントのハーネスを自動で磨く研究コード | 本記事の対象 |
| Stokke Harness² | ストッケのベビーチェア用ハーネス | 別物。日本語で harness2 を検索すると上位を占める |
| Harness(Harness Inc.) | CI/CD などソフトウェア配信の商用サービス | 別物 |
エージェントの枠組み全体の選び方はAIエージェントフレームワーク比較2026|LangGraph・CrewAI・Dify等9種をStar数・実コードで検証にまとめている。
Harness²(harness2)の考え方と書き換える部品
READMEはハーネスを「モデルをエージェントとして動かすための周りの仕組み」と定義する。プロンプト、道具、メモリ、スキル、指揮の流れがそれに当たる。そのハーネスを最適化する作業を Harnessing と呼び、Harness² はそれを2段の再帰で回す。人が手で進めるハーネスエンジニアリングのうち、部品の書き換えと比較を自動にする。
| 段 | 何をするか | 何を見て決めるか |
|---|---|---|
| タスク内の再帰 | 編集を提案(Propose)→ 同じタスクで試走(Probe)→ 合成(Compose) | 実行どうしの振る舞いの違い。正解のフィードバックは使わない |
| ハーネス改善の再帰 | 採用したハーネスと、証拠のある教訓を「改善ハーネス」に足す | 次の同じドメインのタスクが読む |
人がハーネスを直すと、どの部品をなぜ変えたかは人の頭の中に残る。Harness² は、変えた部品・試走で何が起きたか・採用の理由をファイルに書く。次のタスクの改善役はそのファイルを読む。
人の手直しに代わって Harness² が書き換えるのは次の8部品で、モデルの重みには触れない。
| 役割 | 部品 |
|---|---|
| 文脈を組む | システムプロンプト・ガードレール・メモリ・スキル |
| 道具の口 | 道具の説明(tool guidance)・スクリプト |
| 委任 | サブエージェント |
| 中間処理 | プラグイン |
同じ「エージェントが自分を直す」発想でも、Warp の事例は人が整えた手順書をエージェントが日々更新する運用の話だった(WarpのAIエージェントが毎日自己改善する仕組み)。Harness² は候補を実際に走らせて比べる手続きと、その記録の形をコードで固定した点が違う。
harness2の仕組み:Propose–Probe–Compose と改善ハーネス
TWO LEVELS OF RECURSION1タスクの流れ
1タスクごとに提案・試走・合成して、教訓を書庫に戻す
書庫
改善ハーネス
- 基準版を実行
- 編集を提案
- 同じ課題で試走
- 違いから合成正解は見せない
- 成果物を選ぶ
- 教訓を記録
タスク内
Propose–Probe–Compose
--k 1 で1回。parallel は幅、sequential は深さ
タスク間
採用版と教訓を保存
同じドメインの後続タスクだけが読む
再帰の回し方は2通りあり、--k が試行の予算になる。
| 指定 | 動き(docs/EXPERIMENTS.md) |
|---|---|
--k 1 |
提案・試走・合成を1回。採用の後に振り返り |
--k K --mode parallel |
全体に効く候補(invariant)と領域向けの候補(domain)を K 個ずつ試走し、K 通りに合成する。幅を探る |
--k K --mode sequential |
提案・試走・合成を K 回続け、前の結果と証拠を次に持ち越す。深く詰める |
改善ハーネスの実体は Markdown とファイルの木だ。harness2/core/library.py の説明どおり、デモの出力には次の形で残った。
| パス | 中身 |
|---|---|
library/k2/agg/accounting/INDEX.md |
そのドメインの採用例の索引。各エントリの「cue(どんな時に効くか)」が並ぶ |
…/harnesses/ledger-1/harness/ |
採用したハーネスの全ファイル。要約ではなく木ごと持つ |
…/harnesses/ledger-1/EXPERIENCE.md |
採用の理由・各編集の結果・教訓(cue / lesson / evidence / confidence) |
書庫は実行の名前とモードごとに分かれ、同じドメインの先に終わったタスクだけが読む。改善役に渡す材料からは、採点基準や模範解答のファイルを名前で弾く仕掛けがある(leak_globs。デモでは reference_answer.txt)。
harness2をインストールしてデモを動かす
README の手順どおりに入れた。モデルの認証情報は使っていない。
git clone --depth 1 https://github.com/google-research/harness2.git
cd harness2
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -e '.[render]'
harness2-demo --output runs/demo --k 2
導入は3.3秒で、追加されたのは openpyxl・python-pptx など8パッケージだった(本体の必須依存は空)。デモは Local demo: 2 tasks completed; 0 failed. を出して2.45秒で終わった。
デモの題材は、正負の金額が混ざった台帳の合計だ。基準版のスクリプトは正の値だけを足すので、ledger-1(100.25・−20.10・5.00)で Total: 105.25 を返す。改善役が if amount > 0 を消す編集を出し、採用版は Total: 85.15 を返した。EXPERIENCE.md には「credits と debits が混ざる台帳では両方の符号を足す」という教訓が残り、2件目の ledger-2 は書庫に1件ある状態から始まった(library_entries_before が 1)。
注意点として、デモの改善役と選択役は台本だ。選択役は台帳を足し直して合う出力を選ぶので、本番の「正解なしで比べる」判断を再現したものではない。デモが確かめているのは、試走の回数、ファイルの置き場所、書庫の読み書きという配管の部分になる。
採用版と教訓は次のコマンドで読める。
cat runs/demo/library/k2/agg/accounting/harnesses/ledger-1/EXPERIENCE.md
出力には adopted: agg1、各編集の結果(verdict: helped)、cue・lesson・evidence・confidence の4項目が並ぶ。
続けて、ベンチマーク側の入口を設定なしで実行した。
harness2-setup lab --dry-run
harness2-check --bench lab
--dry-run は取得・パッチ適用・環境作成の計画を表示して終了コード0で終わる。LAB の本体は harveyai/harvey-labs で、OpenCode は v1.14.18 に固定して取得する。harness2-check は HARNESS2_SOLVER_MODEL is required など8件を挙げて終了コード1になった。モデルは呼ばずに、設定と依存の不足だけを見ている。
検証環境:Linux(x86_64)・Python 3.12.3・uv 0.11.32/2026-10-18
- ・commit 1cfe254(2026-10-14 の「Fix arXiv link」)を clone
- ・demo の出力:試走28回・改善役32回・2タスクとも ok
- ・
python -m pytest -q tests:5 passed(pytest は別に入れた) - ・README は
cp .env.example .envと書くが、1cfe254 には .env.example が含まれていない(MANIFEST.in には記載がある)
未検証の範囲
- ・モデルを呼ぶすべての経路(改善役・実行役・採点役)と、論文の改善幅の再現
- ・
harness2-setupの実行と、JobBench・LAB・WorkBuddy-Bench のデータ取得 - ・Codex 実行役と
harness2-bridge
harness2でベンチマークを回すのに要るもの
WHAT IT TAKES本番で要るもの
キー無しで動くのはharness2-demoだけ
ベンチマークを回すときに要るもの:
- Vertex AI のプロジェクトと ADC 認証
- Node.js 20+・OpenCode か Codex・ベンチのデータ
- 1タスクで実行 4×k 回・改善役 3×k 回の API 費用
- 採点基準の取得を防ぐ通信の遮断
LAB は全 1,143 タスク。まず --max-tasks 1 から
| ベンチマーク | 中身 | 追加で要るもの | 上流 |
|---|---|---|---|
| JobBench | 職種ごとの専門業務 | Hugging Face から公開データを取得(アカウント不要) | Job-Bench/job-bench-eval |
| LAB | 法務の業務。全1,143タスク | Pandoc・Poppler | harveyai/harvey-labs |
| WorkBuddy-Bench | オフィス・Web・コード | Docker。ライセンスに地域の制限があり、使う前に読むよう案内がある | Tencent/workbuddy-bench |
複数の実行環境をまとめて動かす仕組みが要るなら、Omnigentとは|Claude CodeやCodexを差し替えるメタハーネスのほうが近い。Harness² は実行環境の差し替えではなく、ハーネスの中身を書き換える研究だ。
費用
harness2 --help は、1タスクあたり実行役の試走が 4×k 回、改善役のセッションが 3×k 回と書く。--max-tasks はドメインごとの上限で、全体の上限ではない。利用額の上限を決めるオプション --max-usd は Issue #4 で提案されている段階だ。
モデル
同梱の設定は Vertex AI の Gemini を実行役と採点役に使う。改善役は Vertex 経由の Claude か Gemini を選べる。Codex を実行役にするときは、harness2-bridge が LiteLLM で Gemini を Responses API の形に変える。ほかの Responses API 互換エンドポイントも環境変数で指定できる。
通信の制限
リリースは実行役の通信を制限しない。Codex はサンドボックスを切って動く。docs/EXPERIMENTS.md によると、検証の実行中に Codex が指示なしで JobBench の採点基準 RUBRICS.json を取得した例があった。評価の前に huggingface.co・github.com などをネットワーク側で遮断するよう求めている。
手作業のハーネス調整とHarness²の比較
| 観点 | 人が手で直す | Harness²(parallel) | Harness²(sequential) |
|---|---|---|---|
| 変える対象 | 人が決めた部品 | 8部品の候補を全体向け・領域向けに K 個ずつ | 前の版を K 回続けて直す |
| 判断の材料 | 人の評価や正解 | 同じタスクでの試走の違い(正解は使わない) | 同上。証拠を持ち越す |
| 残るもの | コミットや人のメモ | 採用版の木と EXPERIENCE.md | 同上 |
| 費用 | 人の時間 | 1タスクで実行 4×k 回・改善役 3×k 回 | 同上 |
| 合う場面 | 少数の決まったタスク | 候補を広く試したい | 1つの方向を詰めたい |
使い分けの基準は「正解を用意できるか」と「API 費用をどこまで払えるか」の2つだ。採点基準を書ける業務なら、正解を使う評価のほうが判断ははっきりする。Harness² が狙うのは、READMEの言う「開かれた世界」、つまりハーネスを設計した時点で想定していないタスクが来る場面になる。完成品のハーネスを1つ選んで使いたいなら、Strands harnessとはのような既製の構成のほうが手早い。
論文の報告値と、Harness²を試す前の判断
README の要約によると、論文では3つの業務ベンチマークと4つのモデル・ハーネスの組み合わせで評価した。Harness² の1ステップで、GLM-5 と Gemini 3.5 Flash の成績が元のハーネスより上がったという。
| ベンチマーク | 論文の報告(最大の改善幅) |
|---|---|
| WorkBuddy-Bench | 11.5 ポイント |
| JobBench | 4.5 ポイント |
| LAB(部分合格率) | 11.8 パーセントポイント |
いずれも論文の報告値で、本記事では再現していない。タスク内の再帰の予算を増やすとさらに伸びた、ともREADMEは書く。
この記事の結論
- ・向いている人:Vertex AI の予算があり、エージェントのハーネス改善を研究として測りたい人。まず
harness2-demoで書庫の形を見て、--max-tasks 1から始める - ・待ったほうがよい人:自分の業務タスクにすぐ当てたい人。独自タスクの入口と利用額の上限は Issue で提案されている段階で、タグ付きのリリースもまだ無い
参照ソース
・google-research/harness2(公式リポジトリ) — README・docs/SETUP.md・docs/BENCHMARKS.md・docs/EXPERIMENTS.md・LICENSE(commit 1cfe254、2026-10-18確認)
・Harness²: Recursive Agent Harnessing for an Open World(arXiv:2610.14224) — 論文(数値はREADMEの要約から引用)
・harness2 の Issues — #4(–max-usd の提案)・#5(–bench local の提案)、2026-10-18確認
・harveyai/harvey-labs・Job-Bench/job-bench-eval・Tencent/workbuddy-bench — 各ベンチマークの上流





