# Harness Engineering AI エージェント(特に [[Codex]] のようなコーディングエージェント)を囲む**足場・制約・フィードバックループの完全な環境**を設計・維持する工学的規律。[[OpenAI]] が 2026 年 2 月に提唱した概念で、エージェントが安定した長時間の自律実行を行えるようにする。 ## 定義 > The name they gave to that environment — and to the emerging discipline of building it — is a harness. プロンプトエンジニアリング・コンテキストエンジニアリングとは異なる第三の設計層: | 概念 | 中心課題 | スコープ | |------|--------|--------| | プロンプトエンジニアリング | メッセージの表現・構造 | 単一ターン | | コンテキストエンジニアリング | 情報の可視性管理 | コンテキストウィンドウ | | **ハーネスエンジニアリング** | 運用環境全体の設計 | 数時間に及ぶ自律実行 | ## 主要要素 ### 1. コンテキストファイル(AGENTS.md / CLAUDE.md) エージェントへの共有理解を提供する機械可読ドキュメント。肥大化を防ぎ、構造化されたドキュメントへのインデックスとして機能させる。OpenAI 事例では 100 行のインデックス + `/docs/` ディレクトリに縮小。 ### 2. 機械的強制(Mechanical Enforcement) カスタムリンターと CI による依存関係の強制。OpenAI 事例での依存フロー: ``` Types → Config → Repo → Service → Runtime → UI ``` 違反時に自動修正指示をエージェントのコンテキストに注入する「一方向依存関係バリデーション」。 ### 3. フィードバックループ エージェントが自身の出力を検証するための観測環境: - Chrome DevTools Protocol(スクリーンショット) - LogQL(ログクエリ) - PromQL(メトリクス監視) ### 4. ガベージコレクション バックグラウンドエージェントによる技術負債の継続スキャンと自動リファクタリング PR 提出。 ### 5. エージェント間レビュー(Agent-to-Agent Review) レビューを人間からエージェントに委譲し、人間は高水準の設計判断に集中。 ## エンジニアの役割変化 ハーネスエンジニアリングにより、エンジニアの仕事は以下に移行する: - **環境を設計する**(Design the environment) - **意図を仕様化する**(Specify intent) - **フィードバックループを構築する**(Build feedback loops) ## OpenAI 実験の成果 [[OpenAI-Harness-Engineering]] によると、3 名のエンジニアが 5 ヶ月で以下を達成: - 100 万行の本番コード生成 - 1,500 本超の PR マージ - 平均 3.5 PR/エンジニア/日 - 手書きコード: **0 行** ## 実装事例・成果データ | 事例 | 変化 | 成果 | |------|------|------| | [[OpenAI]] Codex プロジェクト | ハーネス全体設計 | 100 万行・1,500 PR・手書き 0 行 | | [[Symphony]] 採用チーム | オーケストレーション層追加 | PR マージ 500% 増 | | Hashline | 編集フォーマット変更のみ | Grok Code Fast: 6.7% → 68.3% | | LangChain | ハーネス改善 | ベンチマーク: 52.8% → 66.5%、順位: 30 位台 → 5 位 | ## 設計哲学 > 「最良のハーネスコンポーネントは削除されるよう設計されている」 モデルが向上するにつれて、かつて必要だった制約は不要になる。ハーネスはモデルの現在の限界を補う一時的な足場であり、常に削減可能な余地を意識して設計する。 ## エージェント自己評価問題への対処 ### コンテキスト不安(Context Anxiety) エージェントがコンテキスト上限を感知して早期終了する問題。対策: 大きなコンテキスト枠を公開しつつ実使用を制限。 ### 自己評価バイアス エージェントが自身の出力を過大評価する問題。GAN から借用した生成器・評価器分離パターンで対処。 ## 関連概念・エンティティ - [[Codex]] — ハーネスエンジニアリングの主要対象エージェント - [[Symphony]] — ハーネスエンジニアリング原則のオープンソース実装 - [[OpenAI]] — 概念の提唱組織 - [[agentic SRE]] — SRE 文脈でのエージェント自律実行(関連領域) ## Anthropic のハーネス設計知見 [[OpenAI]] が概念を提唱した同時期に、[[Anthropic]] 側も独立して類似の知見を蓄積した。 ### Initializer + Coding エージェント(Justin Young, 2025-11-26) [[Justin Young]] による [[@2025__Anthropic Engineering Blog__Effective Harnesses for Long-Running Agents]] は、**マルチコンテキストウィンドウ**問題——各セッション終了時にエージェントがメモリを失う問題——に特化したハーネス設計を報告する。 - **Initializer エージェント**(初回):`init.sh`・進捗ファイル・JSON フィーチャーリスト・初期 git コミットを作成 - **Coding エージェント**(後続):固定シーケンス(git ログ確認 → 1 機能選択 → サーバー起動 → E2E テスト → 実装)で再現性を確保 - JSON フィーチャーリスト:モデルが Markdown より誤修正しにくいため JSON を使用 - Puppeteer MCP によるブラウザ E2E テストが品質向上に寄与 ### Planner + Generator + Evaluator(Prithvi Rajasekaran, 2026-03-24) [[Prithvi Rajasekaran]] による [[@2026__Anthropic Engineering Blog__Harness Design for Long-Running Application Development]] は、**自己評価バイアス**と**コンテキスト不安**に対応する 3 エージェント構成を提示する。 - **コンテキストリセット**:圧縮ではなく白紙再開でコヒーレンス保持 - GAN 着想の**ジェネレータ・エバリュエータ**分離で自己評価バイアスを構造的に解消 - Playwright MCP で実際のブラウザ操作を伴う評価(スクリーンショット・DOM 検査) - Solo vs フルハーネス比較:20 分/$9(動作不可)vs 6 時間/$200(高品質) - Opus 4.6 でスプリント分解を削除——**荷重仮定の再評価**の好例 > 「ハーネスの各コンポーネントは、モデルが単独ではできないことに関する仮定をエンコードしている。それらの仮定はストレステストする価値がある。」—— [[Prithvi Rajasekaran]] ## 学術的体系化: RSI 文脈でのハーネス設計パターン(Weng, 2026) [[Lilian Weng]] は [[@2026__Lil'Log__Harness Engineering for Self-Improvement]] で、[[OpenAI]]・[[Anthropic]] の実務ブログが個別に報告してきたハーネス設計知見を、[[Recursive Self-Improvement]](RSI)という統一的な研究文脈のもとで学術的に体系化した。 ### 3つの設計パターン 1. **Workflow Automation** — plan → execute → observe/test → improve の目標指向ループ。[[Andrej Karpathy]] の autoresearch リポジトリが典型例。 2. **File System as Persistent Memory** — ハーネスはワークフロー全体をコンテキストに保持せず、恒久的な状態はファイルに保持する。`bash` 経由のファイル読み書き編集能力が基礎技能となる。 3. **Sub-agent and Backend Jobs** — 並列サブエージェントとバックエンドジョブの監視。並列性を明示的・検査可能にすることが要点(出力がチャットコンテキストのみに存在すると陳腐化・不可視化する)。 ### ハーネス最適化の進行段階 `instruction prompts → structured context → workflow → harness code → optimizer code` の順に最適化対象が進行し、モデルが強く賢くなるほどより複雑で汎用的な対象へ移行する。この進行は、本ページ「設計哲学」節の「最良のハーネスコンポーネントは削除されるよう設計されている」という OpenAI の知見と同型の洞察であり、ハーネスコード自体・さらにはハーネスを最適化するコード(optimizer code)へと対象が深まっていく方向性を示す。 Weng はこの先の研究動向を [[コンテキストエンジニアリング]](ACE・MCE)、[[ハーネス自己進化]](Meta-Harness・Self-Harness・AHE)、[[進化的探索によるエージェント設計]](ADAS・AFlow・AlphaEvolve 系)の3系統に整理しており、それぞれ独立した concept ページで詳細を扱う。(Source: [[@2026__Lil'Log__Harness Engineering for Self-Improvement]]) ## デザイン史の類比からの独立到達: Mitchell Hashimoto の実践(広木大地, 2026-03-24) [[Mitchell Hashimoto]]([[HashiCorp]] 共同創業者、Vagrant/Terraform の開発者)は、OpenAI・Anthropic の実務ブログ群とは独立に、同じ「ハーネス」という語で類似の実践を行っている。[[@2026__NewsPicks__ソフトウェアの工業化とアーツ&クラフツ運動]]([[広木大地]])が報告する彼のアプローチは「エージェントがミスするたびに、同じミスが二度と起きないよう CLAUDE.md への制約追記・テスト追加・リンタールール追加でハーネスを構築する」というもので、OpenAI 版と同様に「エージェントの出力品質を、エージェント自身の賢さではなく周囲の環境設計によって制御する」という核心思想を共有する。 広木はこの実践を、[[William Morris]] のアーツ&クラフツ運動から [[Walter Gropius]] のバウハウスに至る150年のデザイン史の弁証法(正→反→合)における「合(統合)」の2026年版として位置づけ、特にバウハウス予備課程(Vorkurs)——学生が素材に手で触れその抵抗や性質を身体で学ぶ教育——と構造的に対応させた。「エージェントという素材の失敗モードを観察し、その知見をハーネスに変換する」という営みは、素材を知り尽くして初めて設計ができるという Vorkurs の思想と同型だと論じる。(Source: [[@2026__NewsPicks__ソフトウェアの工業化とアーツ&クラフツ運動]]) ## 横断的知見 - **実務ブログ(OpenAI・Anthropic)と学術サーベイ(Weng)の関係**: [[OpenAI-Harness-Engineering]] と Anthropic の2記事([[@2025__Anthropic Engineering Blog__Effective Harnesses for Long-Running Agents]]・[[@2026__Anthropic Engineering Blog__Harness Design for Long-Running Application Development]])はいずれも実務者の一次報告(具体的な数値成果・実装詳細)である一方、[[@2026__Lil'Log__Harness Engineering for Self-Improvement]] はこれらを RSI という理論的文脈に位置づけ、Meta-Harness・Self-Harness 等のより新しい学術研究との橋渡しを行う。3つの実務パターン(Initializer+Coding、Planner+Generator+Evaluator、GC タスク)は、Weng の「ハーネス最適化の進行段階」でいえば "workflow" 〜 "harness code" の中間に位置する具体例と読める。(Source: [[OpenAI-Harness-Engineering]], [[@2025__Anthropic Engineering Blog__Effective Harnesses for Long-Running Agents]], [[@2026__Anthropic Engineering Blog__Harness Design for Long-Running Application Development]], [[@2026__Lil'Log__Harness Engineering for Self-Improvement]]) - **実務者3系統(OpenAI・Anthropic・Hashimoto/広木)の定義の力点差**: OpenAI 版は「足場・制約・フィードバックループの完全な環境」という工学的・システム設計的定義を中心に置く一方、[[Mitchell Hashimoto]] の実践を紹介する[[@2026__NewsPicks__ソフトウェアの工業化とアーツ&クラフツ運動]]はデザイン史(アーツ&クラフツ→バウハウス)の類比を通じて「エージェントという素材の性質を手で知り尽くした上での制約設計」という職人的認識論を強調する。同じ「ハーネス」という語・同じ核心思想(環境設計による品質制御)に、異なる知的系譜から独立に到達している点が横断的に見える。(Source: [[OpenAI-Harness-Engineering]], [[@2026__NewsPicks__ソフトウェアの工業化とアーツ&クラフツ運動]]) - **「ハーネス」という語は、コーディングエージェントの実行環境設計だけでなく、AI 機能を組み込んだアプリケーション全体を取り囲む決定論的コード層にも独立に用いられる**: OpenAI・Anthropic・Hashimoto の実務知見(本ページ主要部)はいずれもコーディングエージェント([[Codex]] 等)を長時間自律実行させる環境設計を対象とするのに対し、`Observability Engineering` 第21章([[Phillip Carter]] 寄稿)は LLM 搭載アプリケーション(Honeycomb の Query Assistant・Canvas)において、AI にツールを提供する・入出力の誤りを補正する・AI とエンドユーザーの通信を仲介する、という「配管」の役割を担うコードを同じく「harness」と呼ぶ。適用対象(エージェントの実行環境 対 アプリケーションの実行時補正)は異なるが、「モデルの現在の限界を、周囲の決定論的コードで構造的に補う」という核心思想は共通しており、Query Assistant の`COUNT`演算子JSON補正(エラー率25%→14%)は、本ページ「設計哲学」節が述べる「モデルが向上するにつれて不要になる一時的な足場」の具体例として読める。(Source: [[OpenAI-Harness-Engineering]], [[@2026__OReilly__Observability Engineering 2E - Chapter 21 Observability for Large Language Models]]) → [[LLMアプリケーション信頼性]] - **「本番でのテスト」の必然性は、コーディングエージェント文脈とLLMアプリケーション文脈の双方で独立に到達される**: Anthropic の Planner+Generator+Evaluator(本ページ既述)がコンテキスト不安・自己評価バイアスへの対処として本番相当の評価環境(Playwright MCP でのブラウザ操作)を重視するのと同様に、`Observability Engineering` 第21章は「LLM アプリケーションは環境・ユーザーをまたいで同じ挙動をしないため、伝統的な網羅的テストケースでは不十分であり test in prod が必須」と述べる。ハーネスは静的なテスト環境ではなく、本番テレメトリと評価を結ぶ学習ループの一部として設計される点が両文脈に共通する。(Source: [[@2026__Anthropic Engineering Blog__Harness Design for Long-Running Application Development]], [[@2026__OReilly__Observability Engineering 2E - Chapter 21 Observability for Large Language Models]]) → [[GenAI オブザーバビリティ]] ## 未解決の問い - OpenAI 版の「足場・制約・フィードバックループ」という工学的定義と、広木大地が紹介する Mitchell Hashimoto の「素材の性質を手で知り尽くした上での制約設計」という職人的認識論は、同一実践の異なる説明語彙か、それとも実装上異なるアプローチに帰結するか。 - コーディングエージェントの実行環境としての「ハーネス」(本ページ主要部)と、LLM 搭載アプリケーションの実行時補正層としての「ハーネス」(`Observability Engineering` 第21章)は、将来的に1つの統一概念として体系化されるべきか、それとも適用対象の違い(開発時 対 実行時、エージェント 対 アプリケーション)ゆえに別概念として維持すべきか。 - Weng の3パターン(Workflow Automation / File System as Persistent Memory / Sub-agent and Backend Jobs)と、Anthropic の Planner+Generator+Evaluator・OpenAI の GC タスクは、どこまで同一の設計原則の異なる呼称か、どこから実装上の差異が本質的に異なるか。 - この概念をどのソース群で継続的に検証するか。 ## 出典 - [[OpenAI-Harness-Engineering]] (2026-02-11, OpenAI) - [[@2025__Anthropic Engineering Blog__Effective Harnesses for Long-Running Agents]] (2025-11-26, [[Justin Young]], Anthropic) - [[@2026__Anthropic Engineering Blog__Harness Design for Long-Running Application Development]] (2026-03-24, [[Prithvi Rajasekaran]], Anthropic) - [[@2026__Lil'Log__Harness Engineering for Self-Improvement]] (2026-07-04, [[Lilian Weng]]) - [[@2026__NewsPicks__ソフトウェアの工業化とアーツ&クラフツ運動]] (2026-03-24, [[広木大地]]、[[Mitchell Hashimoto]] の実践紹介) - [[@2026__OReilly__Observability Engineering 2E - Chapter 21 Observability for Large Language Models]] ([[Phillip Carter]]、Honeycomb Query Assistant/CanvasにおけるLLMアプリケーション実行時補正としての「harness」)