1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hermes Agent を読み解く — マルチエージェント並列

連載「Hermes Agent を読み解く」第6回。

連載「Hermes Agent を読み解く」全10回

はじめに — 1 体で足りないとき

エージェントが複雑なタスクに当たると、1 つの会話 context では足りなくなる。サブタスクごとに別の文脈で考えさせたい、あるいは複数モデルの意見を突き合わせたい。Hermes はこれを 2 つの異なるツールで解く——**delegate_task(仕事を分けて投げる)**と mixture_of_agents(多モデルで考えさせて統合する)。似て非なるこの 2 つを区別するのが今回の主眼だ。

1. delegate_task(同期 fan-out)

delegate_task は、子エージェント(AIAgent)を生成してサブタスクを任せる。

  • 深さ制限: MAX_DEPTH = 1delegation.max_spawn_depth[1, 3] にクランプされる。デフォルトでは「親 → 子」の 1 段までで、孫は生まれない
  • 並列度: max_concurrent_children 既定 3delegate_tool.py:132)。子は最大 3 体まで同時に走る
  • 隔離: 各子は新規 context + 専用 task_id を持つ。親の会話を汚さず、独立した文脈で作業する
  • 集約: 子の作業は丸ごと親に返るのではなく、要約だけが親に戻る
  • ブロックツール: 子には DELEGATE_BLOCKED_TOOLS が適用され、一部ツールが封じられる

DELEGATE_BLOCKED_TOOLS の中身は {delegate_task, clarify, memory, send_message, execute_code}delegate_tool.py:45)。意味を読むと設計意図が分かる。子に delegate_task を許すと際限なく孫・ひ孫が増える(深さ制限の二重の担保)。clarify は人間への問い返しだが、子は人間と直接対話しない。memory / send_message は永続メモリや外部送信という「外への副作用」で、子の暴走が外に漏れるのを防ぐ。execute_code はさらに別のツール実行口を開くため封じる。**「子は計算はしてよいが、外界への永続的副作用は持たせない」**という一貫した方針だ。

2. mixture_of_agents(多モデル統合)

mixture_of_agents は並列の意味がまったく違う。タスクを分割するのではなく、同じ問いを複数のフロンティアモデルに投げ、回答を統合する

  • 参照モデル群を asyncio.gather で並列に走らせる
  • その出力を aggregator が 1 つに統合する
  • aggregator の既定は anthropic/claude-opus-4.6mixture_of_agents_tool.py:73 のコード定数。設定で上書き可能。型番は陳腐化しうる点に注意)
  • 全体で 5 回の API 呼び出し(参照 4 + 集約 1)が標準構成

delegate_task が「分けて征服」なら、mixture_of_agents は「衆知を集める」。前者はサブタスクの水平分割、後者は同一問題への多角的アンサンブル。難問で単一モデルの当たり外れを均したいときに後者が効く。

3. セッション多重化との違い

紛らわしいのが Gateway の 128 セッション LRU(第8回)だ。これは「128 個の会話を同時に並列計算している」のではない。あくまで多重化——多数のチャット相手のセッションをメモリ上に LRU で保持し、来たメッセージを対応するセッションに振り分けるだけだ(idle TTL 1 時間で退去)。

並列「計算」は delegate_task / mixture_of_agents の領分、並列「多重化」は Gateway の領分。同じ「並列」でも層が違う。ここを混同すると Hermes の並列性能を読み違える。

4. 安全レール

子エージェントと多モデル実行には、暴走を抑えるレールが張られている。

  • 子のブロックツール: §1 の DELEGATE_BLOCKED_TOOLS
  • auto-deny: 子からの危険な承認要求は自動拒否(人間が居ない文脈で承認を求められても止める)
  • ハートビート: 長時間処理中の子は生存シグナルを送り、無応答なら回収できる
  • 割り込み伝播: 親が中断されれば、子にも中断が伝わる

「子は外界に副作用を持たない + 危険要求は自動拒否 + 親の中断が伝播する」——この 3 点で、fan-out した先が制御不能になる事態を防いでいる。


次回は、delegate_task の同期 fan-out では扱えない「永続・人間介入あり・クラッシュ耐性あり」の協調——Kanban 永続タスクボードを掘る。

対応マップ章: §12 / 行番号は hermes update でずれうる


クイックイタレート株式会社
IoT / 電力監視 / AI / 衛星・無線通信 / システムインテグレーション/
ローカル LLM・エージェント基盤に関するお問い合わせはお気軽にどうぞ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?