**AIエージェント ハーネス設計(2026年現在のベストプラクティス)**

「モデルはエンジン、ハーネスは車(またはOS)である」という考え方が2026年現在、AIエージェント開発の主流となっています。プロンプトエンジニアリング → コンテキストエンジニアリングの次に来るのが**ハーネスエンジニアリング**です。性能の大部分はモデル本体ではなく、ハーネス(外側の制御・構造化レイヤー)で決まります。

### 1. ハーネスとは何か

ハーネス(Harness)は、LLMを**薄く(thin)保ち**、知能の大部分を外部に押し出すアーキテクチャです。以下の3次元を外部化し、それらを仲介(mediate)する仕組みです:

- **Memory(記憶)**:Working Context、Semantic Knowledge、Episodic Experience、Personalized Memory
- **Skills(技能)**:Operational Procedures、Decision Heuristics、Normative Constraints(制約)
- **Protocols(プロトコル)**:Agent↔User、Agent↔Agent、Agent↔Tools/Environmentの契約

これらを統括するのが**Mediator Layer**(Sandboxing、Observability、Evaluation、Approval Loops、Orchestration、Compression/Observation Cleaning)です。

### 2. 推奨アーキテクチャ(High-Level)

```mermaid
graph TD
subgraph "Core Harness Engine"
Executor[State Machine\nLangGraph-like Graph Executor]
InnerLoop[Inner Loop\nReasoning + Tool Call]
OuterLoop[Outer Loop\nGovernance + Intervention]
end

subgraph "Externalized Intelligence"
Memory[Memory Layer\n4階層 + Lifecycle Manager]
Skills[Skills Layer\nProcedures + Heuristics + Constraints]
Protocols[Protocols Layer\nCommunication Contracts]
end

subgraph "Mediators / Operational Layer"
Cleaner[Observation Cleaner\n+ Compression]
Guardrails[Guardrails + Manifest Gate]
Evaluator[Evaluator + Reflection\nLLM-as-Judge]
Sandbox[Sandbox + Execution Env]
Orchestrator[Sub-agent Orchestrator\n+ Supervisor]
Observability[Observability + Tracing]
end

User[User / Task] --> Protocols
Executor <--> InnerLoop
Executor <--> OuterLoop
InnerLoop <--> Memory & Skills
OuterLoop <--> Cleaner & Guardrails & Evaluator
AllLayers[All Layers] <--> Observability
```

**設計原則**:
- **Thin Model, Thick Harness**:モデルは推論と構造化出力に特化。複雑なロジックはハーネスに置く。
- **Everything is Observable & Intervenable**:全てのステップでトレース可能、人間が介入可能。
- **Progressive Autonomy**:完全自律ではなく、危険操作前はManifest(変更予定の可視化)→ Approval Gateを挟む。
- **Inner Loop vs Outer Loop**:Innerは通常のReasoning、OuterはHallucination Loop打破、予算管理、ポリシー強制を担当。

### 3. 各レイヤーの詳細設計

#### Memory Layer
- **Working Context**:現在のタスク状態(LangGraph StateのようにPydanticで厳格定義)
- **Semantic Memory**:Vector DB(長期知識)
- **Episodic Memory**:過去の実行トレース(成功/失敗パターン)
- **Procedural Memory**:学んだ手順・スキル
- **Lifecycle Manager**:忘却ポリシー、圧縮、関連性スコアリングを実装

#### Skills Layer
- 単なるツール呼び出しではなく、「この状況ではこの手順を使い、この制約を守れ」という**heuristics + normative constraints**を保持
- スキルはバージョン管理され、評価結果で自動強化される

#### Protocols Layer
- Agent-User Protocol:Manifest提示 → 承認フロー
- Agent-Agent Protocol:構造化ハンドオフ(JSON Schema厳格)
- Agent-Tool Protocol:Tool calling前にValidation

#### Mediator Layer(最も重要)

1. **Observation Cleaning**(特にコーディングエージェントで必須)
- 生のターミナル出力やAPIレスポンスをそのままモデルに入れない
- クリーナー(別LLM or ルールベース)が「重要な情報のみ」を抽出して渡す
- これがないとノイズで判断を誤る

2. **Outer Loop**
- Hallucination Loop検出(同じツールを繰り返し呼ぶなど)
- 予算・トークン・時間制限の強制
- ポリシー違反時のエスカレーション

3. **Guardrails + Manifest Gate**
- ファイル変更、外部API呼び出し、コード実行前に「これからこうします」というManifestを生成・表示
- 人間承認 or 自動ポリシーチェック

4. **Evaluation & Reflection**
- 各ステップ後 or タスク終了後にLLM-as-Judgeでスコアリング
- 失敗ケースをEpisodic Memoryに蓄積

5. **Observability**
- 全てのイベントを構造化ログ(LangSmith相当のシステム必須)
- ダッシュボードでAgentの思考プロセスを可視化

### 4. 実装時の推奨パターン(2026年)

- **実行エンジン**:LangGraph(またはその後継のstateful graphフレームワーク)。状態遷移を明示的にグラフ化できるものが最強。
- **構造化出力**:Pydantic v2 + LLMのstructured outputを徹底。JSON Schemaをプロトコルとして活用。
- **Sandbox**:E2Bのようなセキュア実行環境 or 自前コンテナ。
- **Memory実装**:Vector DB + Graph DB(知識グラフ) + イベントログDBの組み合わせ。
- **Multi-Agent**:Supervisorパターン + 明確な役割分担 + 構造化ハンドオフ。

### 5. 開発ロードマップ例

1. **Phase 0**:シンプルなReActループ + 基本Tracing
2. **Phase 1**:Inner/Outer Loop分離 + Observation Cleaner導入
3. **Phase 2**:Memory 4階層 + Skillsとしてheuristic登録
4. **Phase 3**:Manifest Gate + Approval Loop + 高度な評価ループ
5. **Phase 4**:実験管理(MLflow-like) + 自動改善サイクル

### まとめ

2026年現在、**「良いモデル + 弱いハーネス」より「普通のモデル + 強力なハーネス」**の方が圧倒的に実用的です。OpenAIが社内プロダクトをほぼ人間の手を借りずに100万行構築できた事例も、ハーネス設計の勝利です。

ハーネスこそが製品(Harness is the Product)であり、競争優位性になります。

具体的に実装したい部分(例:Observation Cleanerのコード設計、Memory階層の実装、Outer Loopのロジック、コーディングエージェント特化ハーネスなど)があれば、深掘りして設計書や擬似コードをお出しします。

どの方向を詳しく知りたいですか?