← 一覧に戻る

Harness Engineering(ハーネスエンジニアリング)調査レポート

2026年4月2日 08:40 更新
MD から自動変換されたページです。内容について質問があれば右下の ? ボタンからどうぞ。

作成日: 2026-04-02 調査方法: WebSearch(Anthropic公式 / OpenAI / Martin Fowler / Google Cloud / HumanLayer / LangChain 他21ソース)+ 現行ハーネス分析 対象: AIエージェントの振る舞いを制御するシステム設計全般、特にClaude Code + 秘書体制

この文書は何か

「ハーネスエンジニアリング」とは、AIエージェントに何をさせ、何をさせないかを決める設計技法のこと。 Claude Codeの文脈では CLAUDE.md / hooks / skills / memory / rules / plugins がハーネスに相当する。

馬に付ける「馬具(ハーネス)」のイメージ: 馬(AI)の力を活かしながら、暴走を防ぎ、意図した方向に進ませる仕組み。

進化の系譜

世代 焦点 設計対象 時期
プロンプトエンジニアリング 何を聞くか 命令文 2022-2024
コンテキストエンジニアリング 何を見せるか 推論時のすべてのトークン 2025
ハーネスエンジニアリング 環境をどう設計するか 外部制約・フィードバック・インフラ 2026

基本方程式

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

モデルはコモディティ(汎用品)。ハーネスがモート(競争優位の堀)だ」—— 同じモデルでも、ハーネスの差だけでタスク完了率60% vs 98%の開きが生まれる。

定量的な実証データ

事例 介入内容 成果
Vercel v0 ツールを15→2に削減 精度80%→100%、トークン-37%、速度3.5倍
LangChain Terminal Bench ハーネス改善のみ(モデル変更なし) 52.8%→66.5%(順位30位→5位)
OpenAI Codex(5ヶ月間) 3〜7名でハーネス設計 PRを1人あたり3.5本/日
Hashline実験 行編集フォーマット変更のみ Grok Code: 6.7%→68.3%(+10倍)
Manus 6ヶ月でハーネスを5回書き直し 信頼性の継続改善

出典: harness-engineering.ai, aakashgupta.medium.com, philschmid.de


1. ハーネスエンジニアリングの7原則

原則1: レイヤード制御(重層的な制御)

ハーネスは1枚の巨大プロンプトではなく、役割の違う複数の層で構成する。

第1層: アイデンティティ層(誰として振る舞うか)
  └── CLAUDE.md の基本原則、紅莉栖モード等
  └── 更新頻度: 低(月単位)

第2層: ドメイン知識層(何を知っているか)
  └── rules/(ファイルパターンで自動注入)、skills、memory
  └── 更新頻度: 中(週単位)

第3層: 行動制約層(何をしてはいけないか)
  └── hooks(PreToolUse/PostToolUse/Stop で自動チェック)
  └── 更新頻度: 中(問題発生時)

第4層: ランタイム状態層(今何をしているか)
  └── タスク管理、コンテキスト、進捗追跡
  └── 更新頻度: 高(リアルタイム)

第5層: フィードバック層(何を学んだか)
  └── memory更新、パターン蓄積
  └── 更新頻度: セッション単位

なぜレイヤーに分けるか: 各層の更新頻度が異なるため。人格設定を毎セッション変える必要はないが、タスク状態はリアルタイムで変わる。層を分けることで、必要な部分だけを更新・注入できる。

原則2: 自律性と制御のスペクトラム

完全制御 ←────────────────────────→ 完全自律
  hookで      構造化       プロンプト    緩い         制約
  強制的に    テンプレート   のルール    ガイドライン    なし
  ブロック    で形を固定    で指示      で方向性提示

ベストプラクティス: まず制御寄りで始めて、信頼性が確認できたら徐々に自律度を上げる。 秘書パターンでは、dispatch/検証は制御寄り、文脈収集は自律寄りが適切。

原則3: コンテキスト経済学

ハーネスに注入するトークンには全てコストがある:

リソース コスト 最適化戦略
指示トークン 作業に使えるコンテキストが減る Progressive Disclosure(必要な時だけ詳細を読み込む)
メモリトークン 指示と競合する 原則を保存、手順は保存しない(手順はコードから再導出可能)
hookの実行時間 ツール呼び出しごとに遅延 hookはシンプルに。複雑なロジックは外部スクリプトに委譲
サブエージェント 別コンテキストを消費 調査はサブエージェントに、判断はメインコンテキストに

原則4: 強制力の勾配

弱い強制 ←──────────────────────→ 強い強制
  自然言語の    XML/JSONの     hookによる      状態マシンに
  お願い       テンプレート    チェック        よる遷移管理

調査で判明した最大の知見: ハーネスの失敗のほとんどは、指示が間違っていたからではなく、強制力が弱すぎたから。「プロンプトに書いた」から「hookで強制する」への移行が、信頼性向上の最大のレバレッジポイント。

(参考: 秘書体制で実証済み。prompt.mdに「検証しろ」と書いても検証せず完了報告した事例 — 2026-03-31)

原則5: フィードバックループ設計

セッションN: エージェントがミスする
  ↓
人間が修正する
  ↓
memoryに修正を記録(理由=WHYと共に)
  ↓
セッションN+1: memory読み込み → 行動が変わる
  ↓
それでも失敗 → hookによる強制に昇格
  ↓
安定的に成功 → プロンプトのみに緩和を検討

失敗 → 学習 → 改善のサイクルを仕組みとして持つ。 個人の記憶力に依存しない。

フィードバックループの理論的背景として、OODA(Observe→Orient→Decide→Act)ループとReflexionフレームワーク(短期記憶+長期記憶のデュアルアーキテクチャ)が参考になる。ただし「考えすぎ問題」(Overthinking)もあり、フィードバックの深さにはバランスが必要。

出典: tao-hpu.medium.com, humanlayer.dev/blog/skill-issue

原則6: 永続的エラー防止(Permanent Error Prevention)

エージェントがミスをするたびに、そのミスが二度と起きないようハーネスを改修する。「ミスを直す」のではなく「ミスが生まれない環境を設計する」。

現行の秘書体制では、これがmemory(feedback_*.md)として実装されている。さらに強化するなら、N回同じfeedbackが出たらrules/やhookに昇格させる仕組みが考えられる。

原則7: 軽量設計命令(Build to Delete)

ハーネスはモデルの弱点への仮定を内包する。 モデルが改善されれば、ハーネスも軽量化できる。

設計原則: 削除しやすく設計する。各ハーネスコンポーネントに「なぜ必要か(どのモデルの弱点を補うか)」を記録しておけば、モデル更新時に削除判断ができる。

出典: aakashgupta.medium.com, philschmid.de


2. エージェント間の協調パターン

Orchestrator-Worker-Verifier パターン

ユーザー → オーケストレーター(秘書)
              ├── Worker A(コーディングセッション)
              ├── Worker B(調査エージェント)
              └── Verifier(オーケストレーター自身 or 別エージェント)
役割 責任 やってはいけないこと
オーケストレーター 計画、dispatch、検証、報告 自分で実作業をする(判断が鈍る)
Worker 指示された作業の実行 指示の範囲を超える「改善」
Verifier 完了条件との照合 作業者の自己申告を鵜呑みにする

サブエージェント委譲パターン

メインコンテキスト(高価・有限)→ サブエージェント(安価・使い捨て)
  - メインが保持: 判断、進捗、ユーザー嗜好
  - サブが担当:   検索、分析、探索
  - 戻り値:       圧縮されたサマリーのみ

Google Cloud: 12の協調パターン分類

パターン 概要 秘書体制との関連
Single Agent 単一エージェント+ツール 各作業セッション
Sequential A→B→C の順序実行 dispatch→作業→検証
Parallel 複数エージェント並列、後で合成 複数セッション同時dispatch
Loop 終了条件を満たすまで繰り返し 検証→再送信ループ
Review & Critique 生成+批評の分離 Codexレビュー
Coordinator 中央が分解・振り分け 秘書の中核パターン
Human-in-the-Loop 人間承認チェックポイント WAIT状態

出典: docs.cloud.google.com/architecture

Anthropicの Planner-Generator-Evaluator パターン

長時間アプリ向けに実証された3役割構成:

重要な洞察: GeneratorとEvaluatorを分離することで、「GAN(敵対的生成ネットワーク = 生成と批評を競わせる手法)的アプローチ」が実現する。Evaluatorを懐疑的にチューニングする方が、Generatorを自己批判的にするより遥かに容易。

秘書体制では: 秘書=Planner(意図整理+作業指示書)、作業セッション=Generator(実装)、秘書の検証フェーズ=Evaluator(完了条件照合)。さらにCodexがEvaluatorの一部を担っている。

出典: anthropic.com/engineering/harness-design-long-running-apps

検証の3段階

段階 方式 強度 適用場面
自己検証 同じエージェントが自分の出力をチェック コスト最小だが見落としやすい
交差検証 別エージェント/別モデルがチェック Codexレビュー等
自動検証 プログラムでチェック(テスト、lint) 検査可能な条件に最適

3. 「秘書パターン」のハーネス設計要点

3.1 意図の保存(Intent Preservation)

秘書パターンの最大の失敗モードは 意図のドリフト(元のユーザー指示が委譲の過程で薄まる)。

対策:

3.2 コミュニケーション非対称性

ユーザー → 秘書:   高帯域(自然言語、全文脈)
秘書 → Worker:     中帯域(構造化指示)
Worker → 秘書:     低帯域(完了シグナル、簡潔な結果)

Worker → 秘書 の帯域が最も狭いため、秘書がproactiveに結果を確認しに行く必要がある(tmux capture-pane等)。

3.3 失敗モードの分類

種類 内容 対策
Silent completion Workerが「完了」と言ったが実際はやっていない 検証ステップ
Intent misinterpretation Workerが違うことをした 構造化作業指示書
Partial completion 70%しかできていない 完了条件チェックリスト
Context loss 秘書が元の意図を忘れた 状態の永続化(DB)
Cascade failure ステップ3のエラーが伝播 チェックポイント/ロールバック

4. 現行ハーネスの分析

4.1 現行構成(7レイヤー)

レイヤー 実装 役割
CLAUDE.md /Users/aiharataketo/CLAUDE.md 基本原則、ツール指定、TDD定義、コンテキスト管理
Rules .claude/rules/ に7ファイル ファイルパターン別の自動注入(TypeScript、Cloudflare、秘書、Remotion等)
Hooks settings.json に多数定義 SessionStart(紅莉栖モード注入)、Pre/PostToolUse(変換・ブロック)、Stop、Notification(ntfy転送)
Skills 50+スキル パターンマッチでトリガー(plan-viewer、ffmpeg、TDD等)
Memory 25+メモリファイル ユーザー嗜好、フィードバック、プロジェクト情報、参照情報
Plugins 35+プラグイン スキル/エージェント/フック/MCPの束(remotion-voicevox、codex、plugin-dev等)
Scripts .claude/scripts/ 自動変換(plan-viewer HTML化)、アイドル監視

4.2 うまくいっている点

  1. レイヤード設計が自然に実現されている — CLAUDE.md(原則)→ rules(ドメイン知識)→ hooks(強制)→ memory(学習)の4層が機能している

  2. フィードバックループが回っている — memoryに失敗事例と教訓が蓄積されている(25+件)。特に秘書関連のフィードバックメモリが充実(10件以上)

  3. Progressive Disclosureが効いている — rules/のファイルパターンマッチにより、TypeScriptを触る時だけTypeScriptルールが注入される。全ルールを常時ロードしないのは正しい

  4. 3層防御が既に設計済み — secretary-orchestration-bestpractice.md で「構造化プロンプト → 報告テンプレート → hook強制」の設計が完了している

  5. サブエージェント戦略が明確 — Sonnetデフォルト、Opus昇格の判断基準が文書化されている

4.3 改善ポイント

改善1: CLAUDE.md の肥大化リスク

現状: CLAUDE.mdは約100行で、基本原則からツール指定、TDD定義、外部ツール連携、リポジトリ作成時のルールまで混在している。

問題: 第1層(アイデンティティ)と第2層(ドメイン知識)が混在。「外部ツール連携」「plan-viewer」「リポジトリ作成時」はドメイン知識であり、基本原則と同じ層に置くとコンテキスト消費が増える。

改善案: rules/ へのプロモーション。ファイルパターンでトリガーできるものは rules/ に移す。

リスク: 移しすぎるとCLAUDE.mdが薄くなり、基本的な振る舞いすら不安定になる可能性。移行は段階的に、1つずつ効果を確認しながら。

改善2: メモリの構造化不足

現状: 25+メモリファイルがフラットに配置。MEMORY.mdのインデックスは機能しているが、メモリの種類(user/feedback/project/reference)ごとの一覧性が弱い。

問題: メモリ数が増えるとインデックスが長くなり、200行上限に近づく。また、秘書関連のfeedbackメモリが10件以上あり、個別に読むコストが高い。

改善案:

改善3: Hook設計の一元管理不在

現状: hookは ~/.claude/settings.json に直書き + 各プラグインの hooks.json に分散。

問題:

改善案:

改善4: スキルのトリガー精度

現状: 50+スキルが存在し、各スキルのトリガーパターンが description に記載されている。

問題:

改善案:

改善5: コンテキスト予算の可視化

現状: CLAUDE.md に「50%超えたらcompact提案」のルールがある。

問題: 現在のハーネス全体(CLAUDE.md + 注入されるrules + memory + hookのstdout)が消費するトークン数が可視化されていない。「ハーネスの固定コスト」が不明。

改善案:


5. CLAUDE.md のベストプラクティス

基本ルール(HumanLayer / ETH Zurich研究)

3つの必須要素

要素 内容
WHAT 技術スタック、プロジェクト構造 「Hono + Cloudflare Workers + D1」
WHY プロジェクトの目的、各コンポーネントの役割 「非エンジニアが電話リマインドを自動化するため」
HOW ビルド手順、テスト方法、検証フロー 「tsc → biome → vitest の順で検証」

Progressive Disclosure

CLAUDE.mdにすべてを詰め込まない。別ファイルに分け、必要なときだけ参照させる:

出典: humanlayer.dev/blog/writing-a-good-claude-md, humanlayer.dev/blog/skill-issue


6. コンテキスト管理の深掘り

「ダムゾーン」問題(Chroma Research)

コンテキスト長が増えると性能が劣化する。質問とコンテキストの意味的類似度が低いほど劣化が急峻。ツール呼び出し・ファイル読み込み・中間結果の積み重ねが複合的にノイズを増やす。コンテキストウィンドウを大きくしても解決しない(haystack=干し草の山が大きくなるだけ)。

Hightouchのファイルバッファリングパターン

大きな結果をコンテキストに詰め込まず、write_file でセッション固有の一時ストレージにバッファリング。コンテキストにはポインタ(ファイルの場所と説明)のみ残す。

→ 秘書体制では、サブエージェントの結果を一時ファイルに書いてサマリーだけ返す設計に相当。

長時間エージェントの3つのコンテキスト戦略

戦略 概要 秘書体制での対応
コンテキストリセット 新鮮なコンテキストで新エージェント起動。構造化引き継ぎ session-bootstrapエージェント
コンパクション 古い会話履歴を要約・圧縮 手動 /compact + Obsidian書き出し
動的サブエージェント タスクを独立スレッドに分離。要約のみ親に返す サブエージェント委譲(Sonnetデフォルト)

重要: Opus 4.5以降は「コンテキスト不安」の挙動が改善されている。ハーネスの複雑さはモデルの進化とともに軽減できる(原則7: Build to Delete)。

出典: anthropic.com/engineering/harness-design-long-running-apps, amplifypartners.com


7. Anthropic / OpenAI 公式ドキュメントからの知見

Anthropicの5つのエージェントパターン

  1. Prompt Chaining(プロンプト連鎖): タスクを順次ステップに分解し、各ステップに検証ゲートを設ける
  2. Routing(ルーティング): 入力を分類して専門のハンドラーに振る
  3. Parallelization(並列化): 独立したサブタスクを同時実行
  4. Orchestrator-Workers: 中央のエージェントが専門のWorkerに委譲
  5. Evaluator-Optimizer: 生成 → 評価 → 改善のループ

最も重要な指摘: 「最もシンプルなアーキテクチャで目的を達成せよ」

OpenAIのハーネスエンジニアリング提唱

OpenAIはCodexの運用を通じて「ハーネスエンジニアリング」を公式に提唱(2026年)。3〜7名のチームが5ヶ月でハーネス設計に集中し、1Mラインのコードを生成、PRを1人あたり3.5本/日のペースで処理。

「シッピングへのバイアス」原則: ハーネスの設定は、エージェントが実際に失敗したときにだけ行う。事前の理想設計はしない。

Martin Fowlerの3カテゴリフレームワーク

  1. コンテキストエンジニアリング: ナレッジベースの継続的充実、動的コンテキストアクセス
  2. アーキテクチャ的制約: 決定論的カスタムリンター、構造テスト、モジュール境界の強制
  3. エントロピー管理(ガベージコレクション = 増殖する乱雑さの回収): 定期的なドキュメント一貫性チェック、アーキテクチャ違反の自動検出

Claude Code固有のTips

出典: openai.com/index/harness-engineering, martinfowler.com, anthropic.com/engineering, humanlayer.dev


8. 秘書体制ハーネスの改善ロードマップ

Phase 1: 計測(1日)

やること 方法 目的
ハーネス固定コストの計測 全注入テキストのトークン数を計算 「何%がハーネスに使われているか」の現状把握
hookインベントリ作成 settings.json + 全プラグインのhooks.json を一覧化 「何が何を防いでいるか」の可視化
メモリ棚卸し 全memoryファイルの最終更新日と内容をレビュー 古い/重複/解決済みの特定

Phase 2: 整理(2-3日)

やること 方法 目的
CLAUDE.mdのスリム化 ドメイン知識をrules/に段階的にプロモーション 第1層と第2層の分離
メモリ統合 秘書feedbackメモリ10件→1-2件に統合 インデックス圧縮
トリガーパターン監査 skill-evaluatorで全スキルのdescriptionを評価 誤トリガー防止

Phase 3: 強化(既存設計の実装)

secretary-orchestration-bestpractice.md の Phase 1 が未実装なら、そこが最優先:

Phase 4: 進化


9. まとめ: ハーネスエンジニアリングの本質

ハーネスエンジニアリングの核心は、以下の3つのバランスを取ること:

バランス1: 自律性 vs 制御

バランス2: コンテキスト充実 vs コンテキスト節約

バランス3: 仕組みの複雑さ vs 運用の確実さ


参考ソース(21件)

公式ドキュメント

  1. OpenAI: Harness engineering — leveraging Codex in an agent-first world
  2. Anthropic: Effective harnesses for long-running agents
  3. Anthropic: Harness design for long-running applications
  4. Martin Fowler: Harness Engineering
  5. Google Cloud: Choose a design pattern for your agentic AI system
  6. Claude Code Docs: Hooks reference

実践・分析記事

  1. HumanLayer: Skill Issue — Harness Engineering for Coding Agents
  2. HumanLayer: Writing a good CLAUDE.md
  3. LangChain: The Anatomy of an Agent Harness
  4. Amplify Partners: How Hightouch built their long-running agent harness
  5. Addy Osmani: Code Agent Orchestra

概念・フレームワーク

  1. Aakash Gupta: 2025 Was Agents. 2026 Is Agent Harnesses.
  2. Steven Cen: From Prompt Engineering to Harness Engineering
  3. Philipp Schmid: The importance of Agent Harness in 2026
  4. Epsilla: Harness Engineering Evolution
  5. harness-engineering.ai: What Is Harness Engineering?
  6. NxCode: Harness Engineering Complete Guide
  7. madplay.github.io: Beyond Prompts and Context
  8. Tao An: Agent Feedback Loops — From OODA to Self-Reflection

論文

  1. VMAO (arxiv 2603.11445) — Plan-Execute-Verify-Replan loop
  2. arXiv 2603.05344: Building AI Coding Agents for the Terminal

既存設計書(内部)

📝 質問モード — テキストを選択してね
✓ 質問を送信しました