ハーネスエンジニアリング徹底解説!世界一わかりやすくハーネスエンジニアリングを教えます
概要
「ハーネス」はAIモデルを取り巻く外側の仕組み全般を指す言葉で、馬や犬を制御する馬具に由来する。モデル(脳みそ)は判断するだけで検索や送信などの実行は行わず、それを担うのがハーネスであり、ベンダーや論者によって定義の広さが異なるだけで本質は同じだと解説する回。
主なポイント
- ハーネスは元々「動物を制御する馬具」の意味で、AIを思い通りに動かす仕組みという比喩として使われている
- モデル(Opus/Sonnet/GPTなど)はあくまで「脳みそ」で判断するだけ、検索・ファイル操作・送信などはモデルの外側=ハーネスが担う
- 定義には主に4種類ある: (1)モデル以外すべてを指す最も広い定義、(2)Claude CodeやCodexなど製品そのものを指す定義、(3)呼び出し→実行→結果判定を繰り返す実行ループのみを指す狭い定義、(4)製品が用意する仕組みの外側にユーザー自身が付け足す部分を指す定義(参考資料・出力形式・確認フロー・AGENTS.md/CLAUDE.mdの中身など)
- LangChainは「エージェント=モデル+ハーネス」と定義しており、これが実務的にわかりやすい
- ハーネスの機能は「見せる(材料を渡す)・使わせる(ツール接続)・繋ぐ(工程間の受け渡し)・止める(危険操作前の確認)・確かめる(出力の検証と修正)」の5つに整理できる
- 実践の第一歩はAGENTS.md/CLAUDE.mdのようなメイン指示ファイルを作り、docsフォルダ配下にworkflow.mdやcheck.md、examplesなど補助ファイルを置いて、メインファイルから「作業前にこれを読む」と明示的にリンクすること
- より高度なハーネス設計として、エージェントスキルやフック(セッション開始・終了・ユーザー入力時などに発動するプログラム)でエージェントの挙動をプログラム的に制御できる
- 同じモデルでも検索や資料アクセスの有無などハーネスの設計次第でアウトプットの質が大きく変わり、製品間のUX差もモデル性能差だけでなく外側の設計差に起因することが多い
- 失敗を毎回その場で指摘するのではなく、原因となった不足情報(例:「宛先は上司」)を指示ファイルに書き込んで恒久的に解消することが重要
実践に使えること
- Claude CodeならCLAUDE.md(Codexの場合はAGENTS.md)をメインの指示ファイルとして整備し、そこに最重要ルールと補助ファイルへの「作業前に読む」導線を書く
- docs/やexamples/のようなフォルダに用途別のMarkdown(進め方・確認基準・良い出力例など)を分けて配置し、メインファイルから明示的に参照させる
- AIに繰り返し同じ指摘をするのではなく、その原因となる前提情報を指示ファイルに恒久的に書き込んで再発を防ぐ
- どんな資料を渡すか・どのツールに接続するか自体をAIに相談し、自分に合ったハーネス設計を一緒に考えてもらう
- Google Drive・Slack・カレンダーなどMCP/コネクター経由でAIがアクセスできる情報源を増やし、判断力を活かせる範囲を広げる
- 送信など不可逆な操作の前に人が確認する仕組みを意図的に組み込み、「任せられる範囲を広げる」設計として活用する