Harness Engineering:2026 年にすべての AI エンジニアが知っておくべきこと

@sairahul1
英語1 か月前 · 2026年6月07日
1.1M
1.0K
177
54
3.3K

TL;DR

本書では、生の AI モデルを信頼性の高い本番システムへと変革するための制約とフィードバックループを構築する 2026 年の新たな学問分野「Harness Engineering」について解説します。

2026 年 2 月、OpenAI の小さなチームが 100 万行のプロダクションコードをリリースしました。

彼らは一行も手書きしませんでした。

AI エージェントが書いたのです。

人間が設計したのは、エージェントを信頼できるものにするシステムでした。

そのシステムには、今、名前がついています。

ハーネスエンジニアリング。

数週間のうちに、Anthropic はそれに関する 3 本の論文を発表しました。

ThoughtWorks はフレームワークを体系化しました。

Hugging Face の Philipp Schmid は、それを「2026 年で最も重要な分野」と呼びました。

新しいエンジニアリング分野が、たった 90 日で具体化したのです。

そして、AI インフラチーム以外のほとんど誰も、まだそれを理解していません。

この記事ですべてを説明します。

無駄な話はなし。学術的な専門用語もなし。これを実際に使うために必要な思考の枠組みだけをお伝えします。

保存してください。あなたはこれを二度読むことになります。

パート 1: ハーネスとは実際に何か(AI に対する考え方を変える概念)

1. ハーネスの定義

Rahul - inline image

ThoughtWorks による最もシンプルな定義:

エージェント = モデル + ハーネス

ハーネスとは、モデル以外のすべてです。

エージェントを軌道に乗せ続ける制約。ミスをキャッチするフィードバックループ。エージェントに自分の位置を伝えるドキュメント。使用を許可されたツール。

ハーネスを取り除く → 生の言語モデルが、コードベースを手探りで進むだけ。

適切なハーネスを追加する → プロダクションコードをリリースするシステム。

名前の由来は馬具です。

ハーネスとは、強力だが予測不可能な動物を有用な方向へ導くための手綱、鞍、馬銜(くつわ)のことです。

馬を賢くするのではありません。その力を有用にするための装備を設計するのです。

2. OS のアナロジー

Rahul - inline image

Philipp Schmid が最も優れた技術的枠組みを示しました:

コンピュータに例えて考えてみてください。

モデル = CPU(生の処理能力)

コンテキストウィンドウ = RAM(限られた揮発性の作業メモリ)

ハーネス = オペレーティングシステム(CPU が何を、いつ見るかを管理する)

エージェント = その上で動作するアプリケーション

あなたのモデルは強力です。

しかし、メモリを管理し、タスクをスケジューリングし、ルールを強制する OS がなければ、それは単なるシリコン片です。

ほとんどの人は、オペレーティングシステムなしでアプリケーションを動かしているようなものです。

だからこそ、彼らのエージェントはプロダクションで失敗するのです。

3. 2026 年に変わったこと

Rahul - inline image

LangChain は、Terminal Bench 2.0 で同じモデルを二度実行しました。

同じモデル。異なるハーネス。

→ 旧ハーネス:52.8% のスコア

→ 新ハーネス:66.5% のスコア

Vercel は逆の方向に進みました。

エージェントのツールを 80% 削除しました。

結果は? パフォーマンスの向上。

悪化ではありません。

2026 年の不都合な真実:

→ エージェントは決して難しい部分ではなかった。

→ ハーネスこそが難しい部分なのだ。

2025 年が AI エージェントがコードを書けることを証明した年だとすれば…

2026 年は、環境がモデルよりも重要であることを私たちが発見した年です。

パート 2: 5 つのハーネスアーティファクト(ハーネスが実際にどのようなものか)

4. AGENT.md / CLAUDE.md ファイル

Rahul - inline image

最も普遍的なハーネスアーティファクト。

コードベース全体に分散配置された Markdown ファイル。

エージェントは各セッションの開始時にこれらを読みます — チームに新しく加わったエンジニアのためのオンボーディングドキュメントのようなものです。

何を書くのか:

→ プロジェクトのコンテキスト

→ コーディング規約

→ アーキテクチャ上の決定

→ 「ここでのやり方」に関するガイダンス

→ 現在進行中の作業

OpenAI は AGENT.md と呼んでいます。

Anthropic は CLAUDE.md と呼んでいます。

Cursor は .cursorrules を使用しています。

名前は違います。原理は同じです。

主要なモジュールごとに 1 ファイル。プロジェクトの進化に合わせて更新します。

これがない場合:エージェントは毎回セッションを盲目的に開始します。これがある場合:エージェントは情報を得た状態でセッションを開始します。

5. JSON 機能リスト(進捗トラッカー)

Rahul - inline image

エージェントが複数のセッションにわたってアプリ全体を構築する場合、各セッションは空のコンテキストウィンドウで始まります。

既に完了したことをどうやって知るのでしょうか?

JSON ファイルです。

各エントリは以下を定義します:

→ 機能

→ その動作を確認する方法

→ 合格 / 不合格のステータス

エージェントはセッション開始時にこれを読みます。最も優先度の高い不合格機能を選びます。それを実装します。合格にマークします。コミットします。繰り返します。

なぜ Markdown ではなく JSON なのか?

Anthropic は、エージェントが Markdown よりも JSON を誤って上書きする可能性が低いことを発見しました。

小さな詳細です。しかし、6 時間の自律実行では非常に重要です。

6. セッション初期化ルーチン

Rahul - inline image

すべてのセッションは同じ方法で始まります。

毎回。例外なく。

Anthropic の 7 ステップ起動シーケンス:

  1. 作業ディレクトリを確認
  2. git ログと進捗ファイルを読む
  3. 機能リストで最も優先度の高い未完了項目を確認
  4. 開発サーバーを起動
  5. 基本的なエンドツーエンド検証を実行
  6. 1 つの機能を実装
  7. 説明メッセージと進捗更新を付けてコミット

これがない場合:

エージェントは最初の 20 分を、既に何が存在するかを把握するために浪費します。

毎回、車輪の再発明をしているようなものです。

これがある場合:

エージェントは即座に情報を得た状態で開始し、直接作業に移ります。

7. スプリント契約

Rahul - inline image

エージェントが 1 行のコードを書く前に:

2 つのエージェントが交渉します。

生成エージェントが提案します:

→ 何を構築するか

→ 成功をどのように検証するか

評価エージェントがレビューします:

→ 提案は完全か?

→ 成功基準は明確か?

両者が同意した後にのみ、実装が開始されます。

これは設計レビューです。

ただし、両方の参加者が AI である点が異なります。

なぜこれが重要か?

同じパスで計画と実行を行うエージェントは、信頼性の低い出力を生成します。

計画ステップは — AI によって行われたとしても — 出力品質を劇的に向上させます。

8. 構造化タスクテンプレート

Rahul - inline image

コーディングの前に:

ハーネスは実際のコードベースを分析します。

根拠のある影響マップを生成します:

→ 実際のファイルパス(幻覚ではないもの)

→ 実際に存在する実際のシンボル名

→ 従うべき既存のパターン

→ 具体的な受け入れ基準

その後、実装が開始されます。

これは明白に聞こえます。

しかし、ほとんどのチームはこれをスキップします。

エージェントはファイル構造を推測します。存在しない API エンドポイントをでっち上げます。コードベースに適合しないものを構築します。

実行前の根拠のあるコンテキスト → 大幅に優れた出力。

パート 3: 3 つの陣営(3 つのチームが同じ壁にぶつかり、3 つの異なるはしごを架けた)

9. OpenAI: 環境優先

Rahul - inline image

OpenAI の Codex チームは、途方もない問題を抱えていました。

100 万行のプロダクションコード。手書きはゼロ。

その規模では、すべての行をコードレビューすることはできません。

そこで彼らはそうしませんでした。

代わりに:

彼らは環境を徹底的に設計し、エージェントがそもそもレビュー可能な出力を生成するようにしました。

彼らのアプローチ:

→ 厳格な依存関係フロー(Types → Config → Repo → Service → Runtime → UI)

→ コードベース全体にわたる AGENT.md ファイル

→ CI/CD パイプラインに直接組み込まれたエージェント

哲学:環境を設計せよ。そしてエージェントを解き放て。

証明:Sora Android アプリ。エンジニア 4 名。28 日間。Play Store で 1 位。クラッシュフリー率 99.9%。

Codex は毎週、社内のプルリクエストの 70% を処理しました。

10. Anthropic: 実行者と評価者を分離する

Rahul - inline image

Anthropic は異なる問題を抱えていました。

エージェントに自身の出力を評価するよう依頼したとき:

それは自信満々にその作業を賞賛しました。

人間の観察者から見て、品質が明らかに平凡であったとしても。

自己評価は機能しません。

エージェントは学生であると同時に教師でもありました。

そして、自分自身にオール A を与えていたのです。

彼らの修正策:3 つの専門エージェント。

プランナー — 2 文のプロンプトを完全な製品仕様書に変換する

ジェネレーター — 機能を 1 スプリントずつ実装する

評価者 — ブラウザ自動化を使用して、実際のユーザーのように実行中のアプリをテストする

洞察:独立した評価者を懐疑的にすることは、ジェネレーターに自身の作業に対して批判的にさせることよりもはるかに簡単である。

結果:単独エージェント(ハーネスなし):$9、20 分 → 壊れたアプリ。完全ハーネス:$200、6 時間 → 洗練された UI を備えた動作するソフトウェア。

11. ThoughtWorks: 2×2 フレームワーク

Rahul - inline image

ThoughtWorks は別の角度からアプローチしました。

彼らは製品を構築していたわけではありません。

彼らは 50 以上のエンジニアリングチームが同じことで失敗するのを観察していました。

彼らの洞察:すべてのハーネス制御を 2 つの軸に沿って分類すること。

軸 1: いつ実行されるか?

→ フィードフォワード = エージェントが行動する前(ガイド)

→ フィードバック = エージェントが行動した後(センサー)

軸 2: どのように機能するか?

→ 計算的 = 決定論的、ミリ秒(リンター、型チェッカー、テストスイート)

→ 推論的 = LLM を使用、秒単位(コードレビューエージェント、意味分析)

2×2:

→ 計算的フィードフォワード:型システム、リンター、アーキテクチャルール

→ 計算的フィードバック:テストスイート、カバレッジ分析、ミューテーションテスト

→ 推論的フィードフォワード:仕様書、制約の説明

→ 推論的フィードバック:LLM コードレビュアー、動作バリデーター

フィードフォワードだけ、またはフィードバックだけでは機能しません。

両方が必要です。

パート 4: すべての陣営が同意する 5 つの原則(3 つのチームは決して連携しなかった。彼らは独立してここにたどり着いた。)

12. 原則 1: コンテキストは指示に勝る

Rahul - inline image

OpenAI:「1000 ページのマニュアルではなく、地図を与えよ。」

Anthropic:エージェントが常に自分の位置を把握できるように、JSON 機能リストと進捗ファイル。

Red Hat:タスクを生成する前に実際のコードベースを分析せよ。

ThoughtWorks:「フィードフォワード。」

異なる言葉。同じ発見。

エージェントに世界の現在の状態を示すことは、抽象的に何をすべきかを指示することよりも一貫して優れている。

→ 実際のファイルパスに基づく → コードベースに適合するコード

→ 曖昧な説明から作業する → 幻覚のファイルパスとでっち上げの API

教訓:エージェントが何かを入力する前に、自分がどこにいるかを正確に把握させよ。

13. 原則 2: 計画と実行は分離されなければならない

Rahul - inline image

OpenAI:人間が環境を設計し、エージェントが実行する。

Anthropic:専用のプランナーエージェントが、ジェネレーターがコードに触れる前に実行する。

ThoughtWorks:計画と実装の間に必須の人間レビューチェックポイント。

Red Hat:フェーズ 1(影響マップ)とフェーズ 2(実装)の間に厳格なゲート。

すべての陣営が独立してこれを発見した:

エージェントに同じパスで計画と実行をさせると、信頼性の低い出力が生成される。

計画ステップは人間が行う必要はない。

しかし、それは別のステップであり、実装が開始される前にその出力がレビューされなければならない。

14. 原則 3: フィードバックループは不可欠である

Rahul - inline image

OpenAI:CI/CD および可観測性システムに組み込まれたエージェント。

Anthropic:ブラウザ自動化を使用する専用の評価者エージェント。

ThoughtWorks:「センサー」として形式化。フィードフォワードのみのアプローチでは、ガイドが実際に機能するかどうかを確認できないと警告。

同じ原則への 3 つのアプローチ:

→ OpenAI は自動テストと CI を使用

→ Anthropic は別の LLM を使用

→ ThoughtWorks は両方を階層的に使用することを推奨

彼らは誰がフィードバックを提供するかについて意見が分かれる。

フィードバックが必要かどうかについては意見が一致している。

フィードバックのないハーネスは、単なる手順が増えたプロンプトに過ぎない。

15. 原則 4: 一度に一つのこと

Rahul - inline image

OpenAI:目標をより小さな構成要素に分割し、深さ優先で作業する。

Anthropic:スプリントごとに 1 つの機能を強制し、各機能の後にコミットする。

ThoughtWorks:段階的なライフサイクル(統合前 → 統合後 → 継続的監視)。

一度にあまりに多くのことをしようとするエージェント:

→ コンテキストを使い果たす

→ 一貫性を失う

→ 静かに要件を落とす

Anthropic のルーチン:

進捗を読む → 1 つの機能を選ぶ → 実装する → コミットする → 繰り返す

強制的なインクリメンタリズムは、成功しているすべてのハーネスに共通している。

16. 原則 5: コードベースこそがドキュメントである

Rahul - inline image

OpenAI:AGENT.md ファイルをリポジトリに埋め込む。

Anthropic:機能リスト、進捗ファイル、git 履歴をエージェントの継続性メカニズムとして保存する。

ThoughtWorks:「ハーネス可能性」— コードベースがエージェントにとってどれだけ読みやすいか — を測定する。

誰もエージェントのために別のナレッジベースを維持していない。

リポジトリが唯一の真実の情報源である。

慣習、制約、アーキテクチャ上の決定がコードベースにない場合、エージェントはそれを知ることができない。

実用的な意味:

→ コード整理に投資するチームは、無料でより良いエージェントパフォーマンスを得る。

→ 乱雑なリポジトリ + AI エージェント = カオス、ただし大規模に。

パート 5: パラドックス — 削除するために構築する(ハーネスエンジニアリングにおける最も直感に反する真実)

17. ハーネスの劣化は現実である

Rahul - inline image

Anthropic が Opus 4.5 から Opus 4.6 にアップグレードしたとき:

不可欠だったスプリント分解が、デッドウェイトになりました。

モデルの改善された計画能力により、それは冗長になりました。

3 月には耐荷重だったハーネスコンポーネントが、4 月にはオーバーヘッドになりました。

そして Opus 4.7 が登場しました。

モデルは自身の出力を検証し始めました。

評価者エージェントの職務記述書は縮小し始めました。

これが ハーネスの劣化 です。

ハーネスのすべてのコンポーネントは、モデルが何ができないかについての仮定をコード化しています。

モデルが改善されるにつれて → それらの仮定は期限切れになる → コンポーネントはオーバーヘッドになる。

Opus 4.5:スプリント分解 + スプリントごとの評価

Opus 4.6:スプリント分解なし + シングルパス評価(コスト 38% 削減)

Opus 4.7:モデルが自己検証を開始 → 評価者の役割はさらに縮小

18. 削除するために構築する

Rahul - inline image

Philipp Schmid のアドバイス:

「削除するために構築せよ。」

すべてのハーネスコンポーネントを削除可能になるように設計せよ。

各コンポーネントを定期的にテストし、それをオフにして出力品質が変化するかどうかを測定せよ。

変化しない場合:削除せよ。

Manus は 6 ヶ月でハーネスを 5 回リファクタリングした。LangChain は 1 年で 3 回再構築した。Vercel はツールの 80% を削除し、より良いパフォーマンスを得た。

これらは悪いエンジニアリングの兆候ではない。

急速に改善するモデルの上に構築することの自然な結果である。

死んだハーネスコンポーネントを抱えていると、実行のたびにトークンが消費される。品質の向上はゼロ。純粋な無駄である。

19. コストの現実

Rahul - inline image

Anthropic の A/B テストからの正直な数字:

→ 単独エージェント(ハーネスなし):$9、20 分 → 動作する UI、壊れたコア機能

→ 完全ハーネス(Opus 4.5):$200、6 時間 → 動作するソフトウェア、洗練された UI、正しい物理演算

これは 22 倍のコスト増加です。

機能する製品 vs スクリーンショットでしか正しく見えないデモの場合。

それが高いか安いかは、リリースの失敗があなたのチームにどれだけのコストをもたらすかに完全に依存します。

しかし、誰も話さないことがここにあります:

ハーネス + モデルの組み合わせは進化します。

$200 のハーネスは、1 回のモデルアップグレードで $124 になりました。

トレンドライン:

→ より良いモデル = よりシンプルなハーネス = より安い実行 = より速い出力

2026 年に勝っているエンジニアは、最高のコードを書いているわけではありません。

彼らは最高の制約を設計しているのです。

そして、それらの制約が役割を果たさなくなった瞬間に、喜んで捨てる覚悟があるのです。

まとめ

Rahul - inline image

あなたが今学んだすべて:

ハーネスとは何か:

→ 1. エージェント = モデル + ハーネス

→ 2. モデル = CPU。ハーネス = オペレーティングシステム。

→ 3. 同じモデル、より良いハーネス = +13% のパフォーマンス

5 つのハーネスアーティファクト:

→ 4. CLAUDE.md / AGENT.md — エージェントのためのオンボーディングドキュメント

→ 5. JSON 機能リスト — 進捗トラッカーとテストスイートを一つに

→ 6. セッション初期化ルーチン — 毎回同じ 7 ステップの起動

→ 7. スプリント契約 — エージェントがコーディング前に交渉

→ 8. 構造化タスクテンプレート — 実際のファイルパス、実際のパターン

3 つの陣営:

→ 9. OpenAI:環境を設計し、エージェントを解き放つ

→ 10. Anthropic:実行者と評価者を分離する

→ 11. ThoughtWorks:2×2 フィードフォワード/フィードバックフレームワーク

5 つの普遍的原則:

→ 12. コンテキストは指示に勝る

→ 13. 計画と実行は分離されなければならない

→ 14. フィードバックループは不可欠である

→ 15. 一度に一つのこと

→ 16. コードベースはドキュメントである

パラドックス:

→ 17. ハーネスの劣化 — 先月機能したものが今月は害になる

→ 18. 削除するために構築する — 死んだコンポーネントをテストし削除する

→ 19. コストの現実 — より良いモデル = よりシンプルなハーネス = より安い実行

2026 年に勝っているエンジニアは、最高のコードを書いているわけではありません。

彼らは最高の制約を設計しているのです。

そして、それらの制約が役割を果たさなくなった瞬間に、喜んで捨てる覚悟があるのです。

これが役に立ったなら:

→ あなたのネットワークのビルダーに届くよう、リポストしてください

→ 毎週このような情報を得るために @sairahul1 をフォローしてください

→ ブックマークしてください — あなたのエージェントが誤動作し始めたときに参照することになります

私は AI、製品構築、そして 2026 年に実際に機能していることについて書いています。

ワンクリック保存

YouMindでバイラル記事をAI深読み

ソースを保存し、的を絞った質問をし、主張を要約して、バイラル記事を再利用できるノートに変えます。すべてを1つのAIワークスペースで行えます。

YouMindを探索
クリエイターのために

あなたの Markdown をきれいな 𝕏 記事に

自分の長文を投稿するとき、画像・表・コードブロックを 𝕏 向けに整形するのは手間がかかります。YouMind は Markdown 全体を、そのまま投稿できるきれいな 𝕏 記事に変換します。

Markdown → 𝕏 を試す

解読すべきパターンをもっと

最近のバイラル記事

バイラル記事をもっと見る