Harness Engineering 101: LLMは脳、ハーネスは身体
Harness Engineering 101: The LLM is the brain, the harness is the body (github.com)
要約
この記事は、AIエージェントをゼロから構築するための「Harness Engineering」という概念を解説しています。LLM(大規模言語モデル)を「脳」と見なし、そのLLMとの対話や状態管理を行うプログラムを「ハーネス」(身体)と定義します。このシリーズでは、単純なPythonコードで約300行のトイエージェントを段階的に開発しながら、AIエージェント構築における基本的なパターンと課題を16章にわたって掘り下げていきます。
全文翻訳
Harness Engineering 101
LLMは脳。ハーネスは体。
バージョン 1.1、2026年10月。
AI利用に関する開示:私は、WSO2 MI Copilot、WSO2 BI Copilot、およびOne Codeを構築して学んだことから、各章を自分で作成しました。Claude CodeとOne Codeを使用して、各章が回答(Mintoピラミッド)から始まるように並べ替え、英語を洗練させ、図を生成し、チャートを描画するコードを記述しました。
最初の原則からAIエージェントを構築することに関するブログシリーズで、書籍としても出版されています。
📖 オンラインで読む: https://isuruwijesiri.com/harness-engineering-101/
LLM APIはステートレスです。各ターン、会話全体をJSON配列として送信し、テキストを受け取ります。「ハーネス」とは、その配列を構築、維持、保護するプログラムです。この分野で「エージェント」と呼ばれるものはすべて、その単一のループに対する一連のパッチであり、各パッチは具体的な問題が発生したために存在します。このシリーズは、その単一のアイデアを16章にわたって展開し、その過程でプレーンなPythonで約300行のトイエージェントを成長させます。
私はOne Codeでも同じアイデアを使用しています。これはpi上に構築されたオープンソースのコーディングエージェントです。
レンダリングされた書籍は、上記のリンクからオンラインで読むのが最適です。GitHubでソースを読みたい場合は、以下の順序で章を追ってください。完全な紹介は、書籍のランディングページにあります。
読む順序
各章は同じ構造を持っています:障害、最小限のパッチ、パッチのコスト。
Part I — ワイヤー(何も魔法ではない)
| # | 章 | 修正される障害 |
|---|---|---|
| 1 | それは単なるJSON配列です | 「このものとどうやって話せばいいの?」 |
| 2 | 脳: 次のトークンブラックボックス | 「なぜそのように振る舞うの?」 |
| 3 | ツール: 関数にマッピングされたJSON | 脳は世界に触れることができない |
| 4 | エージェントループ | 1回のツール呼び出しでは不十分 |
| 5 | キャッシング: なぜ順序が重要なのか | 配列を再送信すると高価になる |
Part II — 長時間実行(プレッシャー下の配列)
| # | 章 | 修正される障害 |
|---|---|---|
| 6 | コンテキストは予算であり、バッグではない | ウィンドウがいっぱいになる |
| 7 | サブエージェント: コンテキストをフォークする | 1つの配列ではすべての作業を保持できない |
| 8 | 実行ループのステアリング | タスクの途中で脳が漂う |
| 9 | バックグラウンドワークと時間 | ループは同期的。世界はそうではない |
Part III — エコシステム(すでに理解しているものを命名する)
| # | 章 | 修正される障害 |
|---|---|---|
| 10 | すべてのフレームワークは第1章のラッパーである | 抽象化の不安 |
| 11 | ボディの拡張: MCP、スキル、遅延ロード、フック | 機能が配列に収まらない |
| 12 | 配列のデバッグ | 見えないプロンプトは修正できない |
Part IV — 信頼、ドメイン、データ
| # | 章 | 修正される障害 |
|---|---|---|
| 13 | 反射とガードレール | ループが愚かなことをする |
| 14 | ケーススタディ: コーディングエージェント | ボディはどれくらい特化する必要があるか? |
| 15 | RAGはもともとハーネスパターンだった | 1つのアイデアに対する千の名前 |
エピローグ
- あなた自身のものを構築する: 完全なトイハーネス、注釈付き
付録 — 高度なトピック
スタンドアロンのピース。必要に応じて読んでください。
- A. 1つのハーネス、複数の脳: モデルルーティング、プロンプトティア、コストエンジニアリング
- B. ワークツリーと分離: 並列エージェントに世界の個別のコピーを与える
- C. モードとプランモード: ハーネス強制オペレーティングステート(コーディング固有)
- D. リトライ、レート制限、ストリーミング: 地味な配管、およびワイヤ上でのストリーミングの仕組み
リポジトリレイアウト
| パス | 内容 |
|---|---|
src/*.md | 章と付録(書籍ソース) |
src/SUMMARY.md | 書籍の目次 |
src/harness/ | 実行可能なトイハーネス、ステージごとに1つのファイル |
src/diagrams/ | 図ジェネレーターとその生成されたPNG |
book.toml | mdBook設定 |
scripts/sync-to-blog.sh | 書籍をビルドし、ブログにマウントして提供する |
書籍のローカルビルド
cargo install mdbook mdbook-mermaid # または: brew install mdbook (+ mdbook-mermaid バイナリ)
mdbook serve --open # http://localhost:3000 でライブリロードプレビュー
mdbook build # 静的サイトを ./book にビルド
mdbook-mermaid はインラインのmermaid図をレンダリングします。これがないと、それらのブロックは生のコードとして表示されます。
定量的図の再生成
cd src/diagrams && python3 gen_all.py # Python 3.10+, matplotlib
ライセンス
このリポジトリはデュアルライセンスです:
- 散文(すべての章と付録、
src/下の.mdファイル)は、Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)の下でライセンスされています。クレジットを表示すれば共有できますが、商業的に使用したり、改訂版を公開したりすることはできません。全文はLICENSEにあります。 - コード(
src/harness/およびsrc/diagrams/下の.pyファイル、およびそれらから書籍の章に複製されたコードスニペット)は、MITライセンスの下でライセンスされています。クレジットを表示して、自由に利用してください。
© 2026 Isuru Wijesiri。