OpenClawのサブエージェントと複数エージェント
バックグラウンド実行、アナウンスチェーン、深さの制限、そして子エージェントが決して得られないツール
エージェントを複数使いたいという問いに対して、OpenClawには2つの答えがあり、ドキュメントはこの2つをはっきり区別しています。サブエージェントは既存の実行から起動されるバックグラウンドの実行で、それぞれが専用のセッションを持ち、依頼元に結果をアナウンスし、バックグラウンドタスクとして追跡されます。一方、複数エージェントは個別に設定されたエージェントで、それぞれ独自のワークスペースとルーティングを持ちます。ここでは、サブエージェントとは何か、そのコスト、入れ子がどこまで深くなり結果がどう戻ってくるのか、子エージェントが決して持てないツール、そしてもう一方の「複数」がどこにあるのかを説明します。
サブエージェントとは、既存のエージェントの実行から起動される、バックグラウンドのエージェント実行です。
サブエージェントとは
- 親エージェントの下に専用のセッションキーを持ち、デフォルトではレビューのために依頼元へアナウンスを返し、実行ごとにバックグラウンドタスクの記録が作られます。目的は、メインの実行をブロックせずに並行して調査や時間のかかるツール作業を進めること、セッションと任意のサンドボックスによる分離、そして誤用しにくいツール群です。
- コンテキストとトークン使用量も独自です。ドキュメントのコストに関する注意では、サブエージェントには安価なモデルを設定してメインのエージェントには高性能なモデルを使い続けること、そして依頼元のトランスクリプトを子にフォークするのは本当に必要な場合だけにすることを勧めています。
- 実行は終わっても、セッションは終わりません。終了した実行はコントロールUIでは閲覧専用になり、親に戻る導線が付きます。永続的に表示されるセッションが作られるのはユーザーが求めた場合だけで、タスクが長かったとか、レポートを生成したといった理由では作られません。
入れ子構造と結果の戻り方
デフォルトでは、サブエージェントは深さ5まで再帰的に委任できます。調整項目として、起動の深さ(1から5)、エージェントあたりのアクティブな子の数(デフォルト5、最大20)、グローバルな並行実行レーンの上限(8)、デフォルトの実行タイムアウト、アナウンスのタイムアウトがあります。メインのエージェントは深さ0にあり、上限より浅いオーケストレーターは子を起動できますが、上限に達したリーフは起動できません。結果は1段ずつ上がっていきます。子孫は親にアナウンスし、親は子の結果をまとめてから上位へアナウンスし、メインのエージェントがユーザーに届けます。ドキュメントはエージェントに対し、ポーリングではなく完了イベントを待つこと、そして遅れて届いた完了には無言のno-replyトークンで応じることを指示しています。
子エージェントが決して得られないツール
- 深さにかかわらず必ず失われるもの:gatewayツール、エージェント一覧、セッションステータス、進捗カード、cron、message、セッション送信、会話ツール。これはターンごとにサブエージェントのセッションエンベロープから導かれる強制的な拒否で、通常の許可リストでは上書きできません。
- 深さの上限では、さらに次のものも失われます:サブエージェントのツール、セッション一覧、セッション履歴、起動。そのため、リーフが発言できる唯一の手段はアナウンスチェーンです。
- サブエージェントのツールポリシーでは、さらに拒否を追加したり、最終的な許可専用フィルターを設定したりできますが、そのフィルターでツールプロファイルが取り除いたツールを戻すことはできません。ドキュメントでは、codingプロファイルにブラウザがないことが例として挙げられています。
これらをよく起動するスケジュール実行についてはOpenClawの自動化の記事で、子エージェントが引き継げる分離についてはOpenClawのサンドボックスの解説の記事で扱っています。
複数エージェントとサブエージェントの違い
複数の設定済みエージェントは設定ファイルのエージェントごとのエントリーに置かれ、スキーマが許す範囲でそれぞれデフォルトを上書きでき、チャネルやルームがそれぞれにルーティングされます。DiscordとMatrixのページでは、どちらもギルドやルームをエージェントに割り当てる方法に触れています。サブエージェントは単一の実行の一時的な子で、ファイルで宣言されるのではなく、ツールによって起動されます。これらのエントリーが置かれる2つの区分については、OpenClawの設定ファイルの記事で説明しています。
Dialiでは
Dialiでは、各アシスタントがそれぞれ独立した分離インスタンスです。そのため複数エージェントとは複数のアシスタントを意味し、それぞれが独自のチャネルとワークスペースを持ちます。サブエージェントは1つのアシスタントの実行の内側にとどまり、深さとツールのルールも同じです。アシスタントについてはDialiのマネージドOpenClawホスティングのページを、アシスタントの数え方についてはDialiの料金のページをご覧ください。
- 子エージェントは専用のセッションで動き、上位へアナウンスします。
- デフォルトの深さは5。リーフは子を起動できません。
- cron、message、gateway、セッションのツールが子エージェントに与えられることはありません。
読むだけでなく、作ってみましょう
エージェントを設定してチャネルを選べば、いつも開いているアプリの中でエージェントが働き始めます。
