ハーネスエンジニアリング
一行での定義
AIエージェントを取り囲む「足場」——ルール、ツール接続、検証、サンドボックス——を設計することで、モデル任せにせず結果を制御しようとする考え方。
提唱の経緯
2026年2月11日、OpenAI の Ryan Lopopolo が公開した記事「Harness engineering: leveraging Codex in an agent-first world」が初出。 手書きコード0行で社内向けプロダクトのベータを5か月かけて構築した実験の記録であり、そこで用いられた語である。
その後、Thoughtworks の Birgitta Böckeler が2026年4月2日に martinfowler.com で体系的な整理を発表している。
記録: このページは当初 Böckeler を提唱者としていた。
npm run build-heatが集めた HN の言及推移で、2026年3月に既に山があることが分かり、遡って OpenAI の記事に行き着いた。熱量データが記述の誤りを検出した実例。なお
openai.comは自動取得に対して 403 を返すため、この記事の内容は検索結果の要約に依拠している。原文と逐語で突き合わせていない。
定義の揺れ
この概念は status: contested である。 提唱者と後続の論者で、他の概念との関係の捉え方が食い違っている。
Lopopolo / OpenAI の定義(初出)
harness とは、Codex のような AI エージェントを取り囲む「足場・制約・フィードバックループの環境全体」であり、エージェントが安定して仕事をこなせるようにするもの、とされる。
harness engineering はエンジニアの役割の転換を指す。手でコードを書くことから離れ、環境を設計し、意図を明確に仕様化し、エージェントが自律的に構築・保守できるフィードバックループを作ることへ向かう。
特徴的なのは「手でコードを書くことを失敗とみなす」という立場である。人間が直接コードを書いたら、それはハーネスに機能が欠けている兆候だとされた。
Böckeler の定義(martinfowler.com)
「Agent = Model + Harness」 と置き、ハーネスとは「モデル自体を除いたすべて」を指すとする。さらに狭義には、利用者が構築する外部の制御システムを意味する。
制御を2種類に分ける。
- Guides(フィードフォワード制御) — 「エージェントの行動を予測し、行動前にそれを操向する」。ルール、ドキュメント、スクリプトなど
- Sensors(フィードバック制御) — 「エージェントの行動後に観察し、自己修正を支援する」。静的解析、テスト、AI審査など
さらに計算的制御(リンター、テスト。ミリ秒〜秒で動き信頼性が高い)と推論的制御(LLM判定。非決定的だが意味的判断ができる)を区別している。
重要: Böckeler は context engineering との関係を明示し、「ハーネス構築は文脈工学の特定形式である」 と述べている。つまり harness engineering ⊂ context engineering という包含関係で捉えている。
「世代交代」として捉える立場
一方で、日本語圏を中心に流通している整理では、プロンプト(〜2024)→ コンテキスト(2025)→ ハーネス(2026初頭)→ ループ(2026年6月〜) という直線的な世代交代として説明されることが多い。
この2つは両立しない。 Böckeler は包含関係(ハーネスはコンテキストの一形式)として述べているのに対し、世代交代の整理は置き換え関係(コンテキストの次にハーネスが来た)として述べている。
どちらが正しいと断定する材料は、現時点で持っていない。ただし提唱者本人の記述は包含関係のほうである点は記録しておく。
実務上の含意
Böckeler の整理が示す核心は、確率的な遵守を決定論的な制約に置き換えることにある。
プロンプトで「コーディング規約に従え」と頼むのと、規約違反時に PR を止める lint を配線するのとでは、性質が根本的に違う。前者はモデルが従ってくれることを期待するしかないが、後者は従わせる。
なお Böckeler は、フィードバック信号を「LLM の消費に最適化したカスタムメッセージ」として設計することを「肯定的な形のプロンプト注入」と表現している。
系譜
- 後続とされる概念: ループエンジニアリング
- ただし上記のとおり、これを「後続」と呼べるかは論者によって立場が分かれる
関連
facts/claude-code/hooks.md— Guides / Sensors に相当する仕組みの具体例facts/claude-code/sandboxing.mdfacts/codex/hooks.md— hook 定義のハッシュに対する信頼付与を持つfacts/gemini-cli/policy-engine.md— ポリシーを独立サブシステムとして持つ例