# 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]]
## 横断的知見
- 今後の取り込みで、複数ソース間の関係を追記する。
## 未解決の問い
- この概念をどのソース群で継続的に検証するか。
## 出典
- [[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)