Anthropicによる長時間稼働エージェントのための効果的なハーネス
Anthropicは、AIエージェントが複数の離散的なセッションにわたって作業を行う際に発生する「メモリ損失」や進捗の不整合という問題を解決するために、特化したエージェント・ハーネスを開発しました。ワークフローをinitializer agentとcoding agentに分割することで、開発者はOpus 4.5のようなモデルが、単一のコンテキストウィンドウの制限を超える複雑でプロダクション品質のプロジェクトを完了できるようにすることが可能です。
長時間稼働エージェントの課題
標準的なエージェント・ハーネスは、新しいセッションが前の動作の記憶なしに開始されるため、複雑でマルチセッションのタスクにおいて失敗することがよくあります。Anthropicは、Claude Agent SDKを長期的なタスクに使用する際に、主に2つの失敗モードを特定しました。
- 過度な野心(One-shotting): エージェントが一度に多くの機能を実装しようとしすぎ、コンテキストウィンドウを使い果たし、プロジェクトを半分だけ実装された、ドキュメント化されていない状態にしてしまいます。
- 時期尚早な完了: 後続のエージェント・インスタンスが既存の進捗を確認し、すべての要件が満たされる前にプロジェクト全体が完了したと誤って宣言してしまうことがあります。
コンテキストの圧縮は役立ちますが、後続のエージェントが推測したり、復旧のためにトークンを浪費したりすることなく作業を再開するために必要な、明確で構造化された指示を提供するには、しばしば不十分です。
2エージェント・ソリューション
セッション間のギャップを埋めるために、Anthropicは2部構成のプロンプティング戦略を採用しています。基盤となるシステムプロンプトとツールは同一ですが、初期のユーザープロンプトが異なることで、2つの異なる役割を作成します。
1. The Initializer Agent
initializer agentは最初のセッションでのみ使用されます。その主な目標は、将来のすべてのエージェントを導く基盤を確立することです。主な出力は以下の通りです:
- Feature List: ユーザーの高レベルなプロンプトを詳細な要件に展開した包括的なJSONファイル(例:claude.aiのクローン作成における200以上の機能)。各機能は、最初は
"passes": falseとしてマークされます。 - Environment Setup: 開発サーバーの起動と基本的なエンドツーエンド・テストを自動化するための
init.shスクリプト。 - Tracking Infrastructure: 進捗を記録するための
claude-progress.txtファイルと、コードベースの状態を確立するための最初のgit commit。
2. The Coding Agent
後続のセッションでは、漸進的な進捗を担うcoding agentを使用します。上述の失敗モードを防ぐために、coding agentは厳格な運用ループに従います:
- Orientation: すべてのセッションは、
pwdを実行し、claude-progress.txtを読み、git logを確認し、feature_list.jsonファイルを読み取ることによって開始されます。 - Incremental Implementation: エージェントは一度に1つの機能のみに取り組み、コンテキストの枯渇を防ぎます。
- Verification: エージェントは、ユニットテストやコードの検査だけに頼るのではなく、ブラウザ自動化ツール(Puppeteer MCPサーバーなど)を使用して、人間のユーザーのように機能をエンドツーエンドで検証しなければなりません。
- Clean Handoff: セッションを終了する前に、エージェントは詳細なメッセージとともに進捗をgitにcommitし、進捗ファイルを更新して、環境が次のエージェントにとって「マージ準備完了」の状態であることを確実にします。
失敗モードと緩和策の要約
| Problem | Initializer Agent Action | Coding Agent Action |
|---|---|---|
| 時期尚早なプロジェクトの勝利 | 構造化されたJSON機能リストを作成する | 機能リストを読み取り、一度に1つの機能に取り組む |
| バグのある/ドキュメント化されていない状態 | gitリポジトリと進捗ファイルを確立する | ログ/進捗を読み取り、開始時に基本テストを実行し、終了時にcommit/更新する |
| 機能の早期完了 | 機能リストを作成する | 「合格」とマークする前に、エンドツーエンド・テストを通じて自己検証する |
| セットアップの摩擦 | init.shスクリプトを記述する |
init.shを実行してサーバーを起動し、状態を検証する |
技術的な制限と今後の方向性
改善は見られるものの、Anthropicは現在のブラウザ自動化における特定の制限を注意しています。例えば、ClaudeはPuppeteer MCPを通じてブラウザネイティブのアラート・モーダルを表示することができず、それがモーダルに依存する機能のバグにつながる可能性があります。
今後の研究では、テスト、QA、およびコードのクリーンアップに特化したエージェントを利用するマルチエージェント・アーキテクチャが、単一の汎用的なコーディング・エージェントよりも優れた性能を発揮するかどうかを調査する予定です。さらに、Anthropicは、これらのハーネス・パターンをWeb開発を超えて、金融モデリングや科学研究などの分野へ一般化することを目指しています。
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch