Your Agent Needs a Harness, Not a Framework(エージェントに必要なのはフレームワークではなくハーネスである)は、Inngest ブログの記事である。記事はハーネスという語の工学上の意味 — ワイヤーハーネス、テストハーネス、安全帯(セーフティハーネス)、すなわち自らは作業を行わずに構成要素をつなぎ、保護し、オーケストレーションする層 — から出発し、エージェントランタイムにも同じものが必要だと論じる。記事の見立てでは、LLM がエンジン、ツールが周辺機器、メモリがストレージであり、未解決の問いは、それらを何がつなぐのか、ループの途中で LLM がタイムアウトしたときに何が障害を受け止めるのか、2 つのメッセージの衝突を何が防ぐのか、イベントを適切なハンドラーと返信チャネルに何が振り分けるのか、ということである。記事は、どのエージェントフレームワークも独自のリトライロジック、状態の永続化、ジョブキュー、イベントルーティングを備えたこうしたハーネスを一から作っていると指摘する。
記事の答えは、永続的でイベント駆動のインフラストラクチャがすでにこれを解決しているというものである。すべての LLM 呼び出しやツール呼び出しをステップ — 独立してリトライ可能な作業単位 — にすれば、プロセスが落ちても完了済みの作業は永続化されており、イベントが関数間でトリガーを振り分け、同時実行制御が衝突を防ぎ、ステップ単位のトレースによってエージェントループの各反復が観測可能になる。これを示すために同社は Utah(Universally Triggered Agent Harness)を構築した。記事はこれを OpenClaw の永続的でクラウド対応版と説明し、リファレンス実装として公開している。
要点
- 記事の意味でのハーネスとは、自らは作業を行わずにエージェントの構成要素をつなぎ、保護し、オーケストレーションするものである。記事は、ハーネスが解決する問題 — リトライ、状態、同時実行、可観測性、スケジューリング — を、AI の問題ではなくインフラストラクチャの問題として位置づけている。
- すべての LLM 呼び出しとすべてのツール実行をステップにすることで、失敗した呼び出しは単独でリトライされ、それ以前の反復の結果はすでに永続化されているため再実行されない。
- トリガーを作業から切り離すことで、同じエージェントループを、チャットの Webhook、cron スケジュール、サブエージェントの呼び出し、関数間のイベントのいずれからも変更なしに起動できる。Utah の名前にある「universally triggered(あらゆる方法でトリガーされる)」はこのことを指している。
- エージェントを、イベントでつながった小さな関数 — メインループ、返信送信、即時の入力中インジケーター、グローバルな障害ハンドラー、定期実行のハートビート、サブエージェント関数 — に分割することで、それぞれが独自のリトライポリシー、同時実行制御、トリガー条件を持てる。
- サブエージェントは、独自のコンテキストウィンドウと、委譲ツールを除いた同じツール群を持つ別個の関数呼び出しとして実行でき、親に要約を返す。記事はこれを、エージェント間プロトコルを一切使わないオーケストレーションとして提示している。
- 会話をキーとした同時実行制御を、新しいメッセージが届いたら実行中のループをキャンセルするよう設定することで、1 つのチャットにつきエージェントの実行を 1 つに保ち、最新のコンテキストで再開させる。
- 著者らは、最も難しかった問題は LLM の呼び出しではなくコンテキスト管理だったと報告している。大きなツール結果のせいでループが返信せずにツールを延々と呼び出し続けるようになり、これに対して、古いツール結果の 2 段階の刈り込み、セッション単位のコンパクション、反復回数の上限が近づいたときの予算警告、コンテキストのオーバーフローエラー時の強制コンパクションで対処した。
- ステアリング — 実行中にユーザーが新しいメッセージを送ったときにどうすべきか — は未解決の問題として示されている。キャンセルして再開する方法は機能するが、処理中の作業が失われる。
背景
この記事は、自らが推奨するインフラストラクチャのベンダーによって書かれており、読者に Inngest を試すよう促して締めくくられている。そのため、既存のプリミティブがすでにハーネスを形成しているという主張は、その製品を推す論拠も兼ねている。根拠はチームが Utah を構築した自らの経験であり、測定結果は報告されていない。記事は Utah を個人用のシングルプレイヤー向けハーネスと説明し、マルチプレイヤー対応、ストリーミングやループ途中での進捗更新、ヒューマン・イン・ザ・ループによる承認、エージェント自身による自己拡張を、今後検討中の方向性として挙げている。接続を担うランタイム層を「ハーネス」と呼ぶこの用法は、このウィキにおけるこの用語のいくつかの捉え方の 1 つである。エージェントハーネス を参照。