OWN NEWS GATHER
← 戻る
Anthropic Blog

Claude Code開発チームが解説する「エージェント型ループ(Agentic Loop)」の概念と4つの活用パターン

要点

  • AIエージェントが停止条件を満たすまで作業を繰り返す「ループ」の定義と、Claude Codeにおける4つの分類を整理して解説する。

  • ユーザーの指示で起動する「ターンベース・ループ」は、自己検証手順をスキル(SKILL.md)として文書化することで効率化できる。

  • 明確な終了基準がある複雑なタスクには、目標値と上限試行回数を指定して繰り返し実行させる「ゴールベース・ループ(/goal)」が適している。

  • 定期的な処理や外部システムとの連携には時間間隔で再実行する「タイムベース・ループ」を使い、人間が介入しない定常業務には「プロアクティブ・ループ」を構築する。

  • すべてのタスクに複雑なループが必要なわけではないため、最もシンプルな解決策から始めてパターンを選択的に使うことが推奨される。

  • コーディングエージェントの利用において、単純に指示を入力する(プロンプトを投げる)だけでなく、「ループ(Loop)」を設計することに関心が高まっている。Claude Codeの開発チームは、ループを「エージェントが停止条件を満たすまで作業サイクルを繰り返すこと」と定義し、4つのタイプに分類している。本記事では、各ループの特徴や適した用途、トークン使用量を抑えながら品質を維持するためのアプローチを解説する。

1. ターンベース・ループ(Turn-based loops)

ユーザーのプロンプトをトリガーとして実行される手動のサイクルである。エージェントがコードの確認、編集、テストなどを繰り返したのち、タスクの完了を自己判断するか、追加の文脈(コンテキスト)が必要になった時点で停止し、ユーザーに応答を返す。定常的なプロセスやスケジュールの一部ではない、短時間のタスクに適している。

たとえば、「いいねボタンの作成」を依頼されたエージェントは、コードを読み込み、編集し、テストを実行した上で、動作すると判断した成果物をユーザーに返す。ユーザーは手動で動作を確認し、次のプロンプトを入力する。これがターンベース・ループである。

このループの効率を高めるには、プロンプトを具体的に記述することに加え、エージェントの検証手順を定義する設定ファイルである「SKILL.md」を活用して自己検証プロセスを改善することが有効である。手順をドキュメント化してエージェントに自動検証させることで、手動の確認回数を減らすことができる。

SKILL.mdによるフロントエンド変更の検証例:

  • 開発サーバーを起動し、ブラウザで編集したページを開く。
  • 新しいボタンや入力欄などをクリックし、期待通りに状態が変化することを確認してスクリーンショットを撮影する。
  • ブラウザのコンソールで、新しいエラーや警告が表示されていないことを検証する。
  • モデルが外部ツールを制御するための規格である「Chrome Devtools MCP」を利用して、パフォーマンストレースとCore Web Vitals(ウェブサイトの健全性を示す重要指標)の監査を実行する。
  • いずれかのステップで失敗した場合は修正を行い、最初の手順から再実行する。

2. ゴールベース・ループ(Goal-based loop)

複雑なタスクでは、1回の指示と応答(ターン)だけで作業を完了させるのが難しい。こうした検証可能な終了基準を持つタスクには、目標達成まで繰り返し試行させるゴールベース・ループ(/goal)が適している。

本機能では、ユーザーがリアルタイムにプロンプトを入力して処理を起動し、設定した目標に到達するか、あらかじめ指定した上限のターン数に達した時点で停止する。エージェントが処理を終了しようとするたびに、評価用のモデル(エバリュエーターモデル)が目標条件を満たしているかを判定し、未達成であれば再度作業に戻す。これにより、エージェントが自己判断で途中で作業を終了してしまうのを防ぐ。

使用する際は、具体的な完了条件と、試行回数の上限(例:「5回試行した後に停止する」)を明示することが推奨される。

  • 具体例: /goal get the homepage Lighthouse score to 90 or above, stop after 5 tries.(ホームページのLighthouseスコアを90以上に引き上げ、5回の試行後に停止する)

3. タイムベース・ループ(Time-based loop)

指定した時間間隔でプロンプトを自動実行するサイクルである。インプットのみが変化する定期的な作業(毎朝のSlackメッセージの要約など)や、外部システム(コードレビューの反映やCIのテスト失敗など)の状況変化に応じてアクションを起こしたい場合に適している。

ローカル環境で時間間隔を指定して実行するコマンドが「/loop」である。

  • 具体例: /loop 5m check my PR, address review comments, and fix failing CI(5分おきにプルリクエストを確認し、レビューコメントへの対応と失敗したCIの修正を行う)
    このローカルのループは、ユーザーのPC上で動作するため、PCの電源を切ると停止する。これに対し、現在リサーチプレビュー中の機能である「/schedule」を使用すれば、処理をクラウド上に移行して定期実行させることが可能となる。

4. プロアクティブ・ループ(Proactive loops)

リアルタイムでの人間の介入なしに、イベントやスケジュールに基づいて実行される自律的なサイクルである。各タスクは設定したゴールを達成した時点で終了し、システム全体の定常処理はユーザーがオフにするまで継続する。バグレポートの処理、課題(イシュー)の優先順位付け(トリアージ)、コードの移行作業、依存関係のアップデートなど、よく定義された定期的な業務フローに適している。

このループは、前述の基本機能(プリミティブ)や、エージェントが自律的に動作する「オートモード」、現在リサーチプレビュー中の「ダイナミック・ワークフロー」などを組み合わせて構築する。
トークン消費を抑えて効率的に運用するためには、定常的な確認や単純作業には処理速度の速い軽量な小型モデルを割り当て、重要な判断が必要な局面のみ最高性能のモデルに処理をルーティングする設計が効果的である。

フィードバック対応の構築例:

  1. /schedule を使って、新規の報告がないかを定期的に確認する。
  2. /goal を使って完了条件を定義し、さらに「skills」で具体的な検証手順を文書化する。
  3. これらをダイナミック・ワークフローによって統合し、長時間の処理を実行するループを形成する。

補足

すべての開発タスクに複雑なループを設計する必要はない。最もシンプルな解決策からアプローチを始め、タスクの性質に応じてこれらのパターンを選択的に導入することが推奨される。

元URL