**AIエージェントハーネス設計(2026年9月版)**

「AIエージェント ハーネス 設計」というクエリから、**実用的で生産性が高く、安全なAgent実行環境(Harness)の設計**を求めていると解釈しました。以下に2026年現在のベストプラクティスをまとめます。

### 1. Agent Harnessとは

Agent Harnessは、単なるReActループではなく、**LLMを動力とするエージェントを「制御・装備・監視・安全確保」するための統合ランタイム**です。

主な責務:
- Toolの標準化登録・安全実行
- 状態・記憶の永続化と圧縮
- Human-in-the-Loop(確認ゲート)
- Multi-agent / Sub-agent協調
- 完全な観測可能性(Observability)
- 安全性(Sandbox、Sentinel、Guardrails)
- 再現性・評価・コスト制御

### 2. 2026年の主要な思想(X上の最新議論より)

- **Minimal Harness**(〜200行):ループ + Tool登録/ディスパッチ + 結果回灌 + 履歴圧縮 + 危険確認ゲートの5部品で完結。フレームワークに依存せず裸で書くアプローチ。
- **哲学別分類**(VWC氏の整理):
- **pi**:nvim並みの拡張性を持つ「究極の個人用coding harness」。Subagentは標準搭載せず、SDK/RPCで埋め込みやすい。
- **fx**:超軽量ランタイム。大量のAgentをspawnするのに向く。Subagent標準搭載。
- **DeepSeek Harness**:Everything is a Plugin。Agentic Loop自体を差し替え可能。プラットフォーム構築向き(やや重め)。

また、Meta Museのような**Sentinel(監視システム)+ Isolated VM**による安全アーキテクチャや、プロンプトではなくOS/コードレベル(AST gate)で不変条件を強制する動きも強まっています。

### 3. 推奨全体アーキテクチャ

```mermaid
graph TD
subgraph Harness [Agent Harness Core]
Supervisor[Supervisor / Orchestrator]
Loop[Swappable Agentic Loop
(ReAct / Plan-Execute / Custom)]
Safety[Safety & Governance Layer
(Confirmation Gate + Sentinel)]
end

User[User / Task] --> Supervisor
Supervisor --> Loop
Loop --> Tools[Tool Registry
(Schema + Danger Flag + Permission)]
Loop --> Memory[Memory Manager
(Session + Vector + Graph + Filesystem)]
Loop --> LLM[LLM Router
(o-series / Claude / Grok / Local)]

Safety --> Loop
Safety --> Human[Human-in-the-Loop]

Observer[Observability Layer
(OpenTelemetry + LangSmith-like)] --> Dashboard[Monitoring / Evaluation Dashboard]
Observer --> Loop
Observer --> Memory

Tools --> Sandbox[Execution Sandbox / Isolated VM]

classDef core fill:#1e3a8a,stroke:#60a5fa,color:white
class Harness,Supervisor,Loop,Safety core
```

### 4. 主要コンポーネント詳細

| コンポーネント | 設計ポイント(2026年推奨) | 具体例 |
|---------------|-------------------|------|
| **Execution Engine** | Swappableにする(LoopをPlugin化) | ReAct, Plan-and-Execute, Reflexion, OpenAI Swarm風 |
| **Tool Registry** | `@register`デコレータ + JSON Schema + `is_dangerous`フラグ | 実行前にConfirmation Gateを通す |
| **Memory System** | 複数レイヤー(Session記憶 + Vector + Knowledge Graph + Persistent Filesystem) | 長時間実行時は要約エージェントで圧縮 |
| **Safety Layer** | Sentinelパターン + 危険度別対応(Block / Confirm / Sandbox) | Meta Muse風 + Llama-Guard系 |
| **Supervisor** | タスク分解・ルーティング・Subagent生成 | LangGraphのStateGraphを基盤に |
| **Observability** | すべてのステップをTrace。LLM-as-Judgeで自動評価 | LangSmith / Phoenix / 自前OpenTelemetry |
| **Evaluation Harness** | ベンチマーク(SWE-Bench, AgentBench系)を常に走らせる | 自己改善ループの基盤に |

### 5. ミニマルハーネス実装例(200行程度で動くコア)

Luke氏の整理を基にした本質的な5部品です:

```python
class MinimalAgentHarness:
def __init__(self, llm, max_turns=15):
self.llm = llm
self.max_turns = max_turns
self.tools = {} # name -> (func, schema, is_dangerous)
self.messages = [] # 会話履歴
self.session_id = str(uuid.uuid4())

def register_tool(self, name, func, schema, is_dangerous=False):
self.tools[name] = (func, schema, is_dangerous)

async def run(self, task: str):
self.messages = [{"role": "user", "content": task}]

for turn in range(self.max_turns):
response = await self.llm.generate(self.messages) # tool_calls付き

if not response.tool_calls:
return response.content # 終了

for tool_call in response.tool_calls:
name = tool_call.name
args = tool_call.args

if name not in self.tools:
continue

func, _, is_dangerous = self.tools[name]

# 5. 確認ゲート
if is_dangerous:
if not await self._human_confirm(name, args):
self.messages.append({"role": "tool", "content": "User refused this tool call."})
continue

# 実行 → 結果回灌
try:
result = await func(**args)
self.messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": str(result)
})
except Exception as e:
self.messages.append({"role": "tool", "content": f"Error: {e}"})

# 4. 履歴圧縮(長くなったら要約)
if len(self.messages) > 30:
self.messages = await self._compress_history(self.messages)
```

これをベースに、Memory、Supervisor、Tracingを徐々に追加していくのが現実的です。

### 6. プロダクション設計の重要ポイント

- **KV-Cache効率化**:システムプロンプトとTool Schemaを極力減らす(Lazy loading)。
- **Reward Hacking対策**:重要な不変条件は自然言語プロンプトではなく、**コード/AST/OSレベルで強制**(例:テスト減少をコミット時にブロック)。
- **Persistent State**:単なる会話履歴ではなく、Filesystem + DBをエージェントが自由に使えるようにする(Deep Agents風)。
- **Safety by Design**:高リスク操作は必ずIsolated VM/Sandboxで実行し、Sentinelが監視。

### 技術スタック例(2026年)

- **軽量派**:自前Minimal Harness + fx/pi思想
- **生産性派**:LangGraph(StateGraphが非常に強い)+ カスタムSafety Layer
- **フルプラットフォーム派**:DeepSeek Harness風のPluginアーキテクチャ
- 記憶:PGVector + SQLite + File System
- 観測:LangSmith相当の自前システム or Phoenix

必要であれば、特定のユースケース(Coding Agent、Research Agent、企業内RAG Agentなど)に特化した詳細設計、または特定のコンポーネントの深掘りもできます。

どの方向をさらに詳しく知りたいですか?
(Minimal実装の完成版、Safety Sentinelの詳細、Multi-agent Supervisor設計、Evaluation Harnessなど)