Skip to content

サブエージェント委譲

源码版本v2026.7.20

職務

delegate_tool が主 agent のサブタスクを隔離されたサブエージェントに委譲する:サブエージェントは自身の対話、自身のターミナル、自身のツールセットを持ち、走り終えたら最終結果だけを親に返す。これで「コンテキストコストゼロ」のパイプラインを実現する——親 agent のコンテキストはサブタスクの過程詳細に汚染されない。サブエージェントは ThreadPoolExecutor worker で走り、危険コマンドはデフォルトで auto-deny(auto-approve に設定可能)。

主要ファイル

データフロー

  1. 主ループの provider が tool_call: delegate を返す。
  2. delegate_task:2426 が呼ばれ、サブタスク記述と任意の toolsets を受け取る。
  3. DaemonThreadPoolExecutor:2651 で worker を起動:
    • worker initializer が承認コールバックをインストール(tools/delegate_tool.py:102)、デフォルトで危険コマンドは auto-deny
    • サブエージェントは自身の対話コンテキストを構築し、run_conversation:588 を呼んでループを回す
    • サブエージェントのツール呼び出しは registry:765 を経る(親 agent が toolsets を制限可能)
  4. サブエージェント完了後、最終テキストだけを返し、delegate_task は tool_result:798 でラップして親 agent に戻す。
  5. 親 agent のコンテキストは tool 結果を一つ増やすだけで、過程に汚染されない。

まとめ

サブエージェント委譲 = コンテキスト隔離 + 危険コマンド管理。親 agent は結果だけを見て過程を見ない、これで長いパイプラインが過程ノイズで膨れ上がらない。安全デフォルトは auto-deny、バッチ/cron では opt-in で auto-approve 可能。ターミナル実行はサンドボックスバックエンドに落ちる。

非公式コミュニティ学習サイト。MIT ライセンスの NousResearch/hermes-agent ソースに基づく。