0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハーネスエンジニアリングとは ― AIエージェントの性能を決める「足場の層」を数字で読む

0
Posted at

AIエージェントを実務に載せると、モデルそのものの賢さより「その周りの作り込み」で結果が変わる、と気づくことが多い。同じモデルでも、指示やツール、やり直し方しだいで挙動は別物になる。この「モデルの周りの足場」を設計する仕事を、2026年に入って ハーネスエンジニアリング(harness engineering)と呼ぶようになった。
これは特定ツールの使い方ではなく、AIエージェントに生まれた新しい「層」の話だ。LLM(大規模言語モデル)をAPIで一度でも叩いたことがあるなら、自分で組んでいなくても、この見方はそのまま設計に効く。

まず「足場」と「束ねる層」を分けて読む

LLM単体は賢いが、指示待ちの「箱」でしかない。実用にするには箱の周りに足場が要る。指示を組み立てるプロンプト、ツール、記憶、失敗時の復旧手順、コストや権限のルール——このひとかたまりを エージェントハーネス(agent harness)、縮めてハーネス=足場と呼ぶ。この足場を設計するのが、さきほどのハーネスエンジニアリングだ。
この見方を広めた提唱者は「Agent = Model + Harness(エージェント=モデル+足場)」と定式化した。あるチームは、中身のモデルを変えず足場だけ作り替えて、ベンチマーク Terminal Bench で順位を上位30から上位5へ押し上げたと報告している。
メタハーネス は、こうした足場を一段上で束ねる層のことだ。つまり——ハーネス=足場そのもの、メタハーネス=足場を束ねる層、と読み分ければよい。

足場が増えると、なぜ「束ねる層」が要るのか

足場は各社・各ツールでばらばらに育った。すると、似た足場をコピペで作り直す、ある設定を別ツールへ移せない、数が増えるほどコストや権限を統べられない、という詰まりが起きる。
Databricksはこれを、サーバを一台ずつ手で管理した時代から、Kubernetesでサーバ群を宣言的に扱う時代への移り変わりになぞらえ、メタハーネスはその「一段上の抽象化」だという。束ねる層が提供するのは主に3つ。 合成(Composition)は足場を1行で差し替える。 統制(Control)はコストや権限の上限をポリシーとして強制する。 協働(Collaboration)は動いているセッションをURLで渡し、レビューや引き継ぎに使う。本記事は前の2つをコードで見て、協働は名前を挙げるにとどめる。
鍵は、どの足場も入り口と出口の形をそろえる共通インターフェースだ。 Omnigent は、DatabricksとNeonが2026年6月に公開した、この層のOSS実装(Apache 2.0ライセンス)である。

足場を「1行」で差し替える ― Omnigentの設定を読む

Omnigentは、1つのエージェントを短いYAML(設定ファイル)で定義する。次のキー名は、公式リポジトリのREADMEと同梱例 examples/polly/config.yaml に突き合わせたものだ。

# === Omnigent のエージェント定義(最小例)===
name: my_agent
prompt: あなたは有能なデータアナリストです。

executor:
  # 【Composition(合成)】足場の差し替えは、この1行を変えるだけ。
  # claude-sdk → codex / cursor / pi / openai-agents などに置き換えれば、
  # プロンプトもツールもそのままで、下の実行ハーネスだけが入れ替わる。
  # (コマンドラインからは `--harness <名前>` フラグでも切り替えられる)
  harness: claude-sdk

tools:
  # ローカルの Python 関数を、そのままツールとして渡す(スキーマは自動生成)
  word_count:
    type: function
    callable: mypackage.mymodule.word_count
  # MCP(Model Context Protocol = ツール/データ源をLLMにつなぐ共通規格)
  # 経由のツールも同じ書き方で足せる
  docs:
    type: mcp
    url: https://example.com/mcp

# 【Control(統制)】コストや権限を“プロンプトの外”でポリシーとして宣言・強制する。
policies:
  budget:
    type: function
    handler: omnigent.policies.builtins.cost.cost_budget
    factory_params:
      max_cost_usd: 5.00          # 1セッションの上限コスト(ハードキャップ)
      ask_thresholds_usd: [3.00]  # 途中で承認を挟む“ソフト”しきい値
  approve_shell:
    type: function
    # shell 実行やファイル書き込みの前に、必ず人間の承認を求める
    handler: omnigent.policies.builtins.safety.ask_on_os_tools

読みどころは3か所。 executor.harness の一行を claude-sdk から codex などに書き換えるか --harness フラグを渡すだけで、プロンプトもツールもそのままに下の足場だけが入れ替わる——これが「合成」だ。 type: mcp の MCP(Model Context Protocol)は、ツールやデータ源をLLMにつなぐ共通規格だ。 policies が「統制」で、 max_cost_usd でコスト上限、 ask_thresholds_usd で途中承認、 ask_on_os_tools でシェル実行前の人間承認を宣言する。肝は、これがお願いでなく層の強制ルールな点だ。同梱例は、pushやmergeは自動で進めつつ、force-pushや rm -rf / だけは常に拒否(DENY)する。

足場に賭ける海外企業 ― OpenAIとHarveyの数字

足場でそこまで変わるのか。実際に賭ける企業の数字で見る。
OpenAIは足場づくりを専門の規律として扱い、これをハーネスエンジニアリングと呼ぶ。同社の公開記事によれば、3〜7名のチームが手書きコード0行で、約100万行規模の社内プロダクトをコーディングエージェントCodexで約5か月で作ったという(1人1日およそ3.5件のプルリク)。やったのはモデルの改良ではなく、指示書 AGENTS.md を薄い「目次」にし、詳細は docs/ に置き、規約を lint で機械的に強制する足場を整えたことだ。
足場は品質だけでなくコストにも効く。法務向けAIのHarveyがFireworks AIと公開した構成は、オープンモデルのGLM 5.1(中国発の公開されたLLM)を主役に、難所だけ高性能なClaude Opusを「呼べる助言役」で使う。Fireworksの計測では、品質・コストの両面でOpus単体を上回ったという。

構成 100問中の全合格 費用
Opus 単体 14問 954ドル
GLM 5.1 + Opus助言役 18問 368ドル

数字の規模は大きいが、やっていることは、さきほどのYAMLと同じ——足場を差し替え、ポリシーで縛るだけだ。自分のPoC(試作)でも、引ける手綱は変わらない。

どこまで信じてよいか ― ハーネス論の3つの留保

冷静に見る留保を3つ。第一に、言葉の指す範囲がまだ揺れている。「足場=モデル以外のすべて」では広すぎて曖昧だという批判がある。第二に、事実上の標準がまだ無い。似た束ねる層が「1000ものAIネイティブ企業で独立に再発明されている」との観察もあり、これが避けて通れない基盤になるかは分からない。第三に、ここで挙げた数字はどれも当事者の公表値で、第三者が同条件で再現したデータはまだ乏しい——上位30から上位5へ、も単一チームの一例だ。個々の倍率や金額は鵜呑みにしないほうがいい。
それでも、モデルを大きくする以外に「足場を設計する」というレバーが立ち上がったこと自体は、コードでも海外企業の実践でも確かめられる。あなたのエージェント——これから組むものも含め——を一段上から束ねたら、何が楽になるだろうか。ハーネスエンジニアリングは、それを考える入口として持っておく価値がある。

参考文献

  1. Databricks - Introducing Omnigent: a meta-harness to combine, control, and share your agents - https://www.databricks.com/blog/introducing-omnigent-meta-harness-combine-control-and-share-your-agents
  2. Omnigent 公式リポジトリ(GitHub, Apache 2.0。エージェント定義YAML・executor.harness・policies の API 名の突合元) - https://github.com/omnigent-ai/omnigent
  3. Omnigent 公式サイト - https://omnigent.ai/
  4. Omnigent - examples/polly/config.yaml(サンドボックスの DENY 方針=force-push / rm -rf / の出所) - https://github.com/omnigent-ai/omnigent/blob/main/examples/polly/config.yaml
  5. Addy Osmani - Agent harness engineering(Agent = Model + Harness / Terminal Bench で Top 30→Top 5) - https://addyosmani.com/blog/agent-harness-engineering/
  6. OpenAI - Harness engineering(手書き0行・約100万行・1人1日3.5 PR・AGENTS.md / docs / lint) - https://openai.com/index/harness-engineering/
  7. Fireworks AI - Open-source agents with frontier advisors(Harvey:18/100・368ドル 対 14/100・954ドル) - https://fireworks.ai/blog/open-source-agents-frontier-advisors
  8. Martin Fowler - Harness engineering(概念粒度の揺れ・behavioral harness) - https://martinfowler.com/articles/harness-engineering.html
  9. Latent Space(swyx) - It's Meta-Harness Summer(系譜と「1000社で独立再発明」・標準不在の留保) - https://www.latent.space/p/ainews-its-meta-harness-summer
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?