Hermes Agent: デリゲート

最終更新:2026-08-31

デリゲートはHermes Agentの管理能力です。複雑なタスクに直面すると、サブエージェントを作成して分担し、最後に結果を集約します。まるでプロジェクトマネージャーがチームメンバーにタスクを割り当てるようなものです。

💡 ヒント: デリゲート機構はHermesが複雑なタスクを処理するキーとなる能力です。メインエージェントがタスクを分解し、サブエージェントに割り当て、進捗を監視し、結果を集約して、並列で効率的に実行します。

📋 前提知識: 第7課 スキルシステム、第8課 ツールとツールセット

1. 学ぶ内容

# 内容
デリゲート機構の原理
サブエージェントの作成と設定
タスク分解と割り当て
並列実行と調整
結果集約と品質チェック

2. ストーリー

(1) 課題:大タスクの直列実行は遅すぎる

Bobがエージェントに大規模プロジェクトの分析を依頼。エージェントはファイルを順次レビューし、20ファイルで30分かかった。複数人で同時にレビューできないか?

(2) 解決策:サブエージェントへのデリゲートで並列処理

BASH
me: プロジェクト全体のコード品質をレビューして
Agent: プロジェクトには20ファイルあります。5つのサブエージェントを作成して並列レビューします:
  🤖 Sub-Agent-1: src/api/ (4 files)
  🤖 Sub-Agent-2: src/models/ (5 files)
  🤖 Sub-Agent-3: src/utils/ (4 files)
  🤖 Sub-Agent-4: src/views/ (4 files)
  🤖 Sub-Agent-5: tests/ (3 files)
  
  [並列実行中...] 8分で完了
  
  📊 集約レポート:
  - セキュリティ問題: 3件
  - パフォーマンス問題: 5件
  - 型の問題: 7件
  - 提案: ...

3. デリゲート機構の原理

(1) メインエージェント → サブエージェントアーキテクチャ

100%
graph TB
    A[メインAgent] --> B[タスク分解]
    B --> C1[サブAgent 1]
    B --> C2[サブAgent 2]
    B --> C3[サブAgent 3]
    
    C1 --> D[結果集約]
    C2 --> D
    C3 --> D
    
    D --> E[品質チェック]
    E --> F[最終出力]
    
    A -.->|監視| C1
    A -.->|監視| C2
    A -.->|監視| C3

(2) デリゲートタイプ

タイプ 説明 シナリオ
並列デリゲート サブエージェントが同時実行 複数ファイルレビュー、複数ソース検索
直列デリゲート サブエージェントが順次実行 依存関係のあるタスク
条件付きデリゲート 結果に基づいて次を決定 人の確認が必要なステップ
再帰デリゲート サブエージェントがさらにサブを作成 超大規模タスク

4. サブエージェントの作成と設定

(1) 自動作成

BASH
# 会話中にデリゲートをトリガー
me: このリポジトリの全Pythonファイルのコード品質を分析して

Agent: 15個のPythonファイルを検出。3つのサブエージェントを作成して並列分析:
  - サブエージェント "analyzer-1": 5ファイル処理
  - サブエージェント "analyzer-2": 5ファイル処理
  - サブエージェント "analyzer-3": 5ファイル処理
  
  各サブエージェントの設定:
  - モデル: gpt-4o-mini(コスト節約)
  - ツール: fs_read, code_python
  - スキル: python-quality-check

(2) 手動設定サブエージェント

YAML
delegate:
  # サブエージェントテンプレート
  sub_agent_template:
    model: "gpt-4o-mini"        # 小規模モデルでコスト節約
    max_tokens: 2048
    timeout: 120
    
    # 使用可能ツール
    tools:
      - fs_read
      - code_python
      - web_search
    
    # 使用可能スキル
    skills:
      - code-review
      - test-runner
    
  # デリゲート戦略
  strategy:
    max_sub_agents: 5            # 最大5サブエージェント
    min_task_size: 1             # 各サブエージェント最低1タスク
    cost_limit: 0.10             # 1回のデリゲート最大コスト

5. タスク分解と割り当て

(1) 自動分解

BASH
me: React 19、Vue 4、Svelte 5の最新機能を調査して

Agent: [タスク分解]
  全タスク: 3フレームワークの調査
  分解戦略: フレームワーク別に割り当て
  
  🤖 Sub-Agent-1: React 19の調査
    → web_search("React 19 features")
    → web_scrape("react.dev/blog")
    
  🤖 Sub-Agent-2: Vue 4の調査
    → web_search("Vue 4 features")
    → web_scrape("vuejs.org/blog")
    
  🤖 Sub-Agent-3: Svelte 5の調査
    → web_search("Svelte 5 features")
    → web_scrape("svelte.dev/blog")
    
  [並列実行...]

(2) カスタム分解ルール

YAML
delegate:
  decomposition:
    # ファイルタイプ別分解
    - trigger: "プロジェクトをレビュー"
      strategy: "by_file_type"
      group_by: "extension"
      
    # ディレクトリ別分解
    - trigger: "リポジトリを分析"
      strategy: "by_directory"
      max_per_group: 10
      
    # タスクタイプ別分解
    - trigger: "調査"
      strategy: "by_topic"
      identify_entities: true

6. 並列実行と調整

(1) 実行監視

BASH
# デリゲート実行状態の確認
/delegate status

# 出力例:
# ┌─────────────┬──────────┬─────────┬──────────┐
# │ Sub-Agent   │ Status   │ Progress│ Cost     │
# ├─────────────┼──────────┼─────────┼──────────┤
# │ analyzer-1  │ ✅ Done  │ 5/5     │ $0.03    │
# │ analyzer-2  │ 🔄 Run   │ 3/5     │ $0.02    │
# │ analyzer-3  │ ⏳ Wait  │ 0/5     │ $0.00    │
# └─────────────┴──────────┴─────────┴──────────┘

(2) エラー処理

YAML
delegate:
  error_handling:
    on_sub_agent_fail: "retry"     # retry / skip / abort
    max_retries: 2
    retry_delay: 5
    
    on_timeout: "partial_result"   # partial_result / abort
    timeout_per_task: 120
    
    on_cost_exceed: "warn"         # warn / pause / abort

(3) 結果集約

BASH
Agent: [サブエージェント結果の集約]
  
  📊 総合分析レポート
  
  ソース: 3サブエージェント、計15ファイル分析
  
  問題統計:
  ├── 🔴 重大: 2件
  │   ├── api/auth.py: SQLインジェクションリスク
  │   └── utils/crypto.py: ハードコードされたキー
  ├── 🟡 警告: 5件
  └── 🔵 提案: 8件
  
  優先修正: まず2件の重大問題を修正
  予想修正時間: 30分

7. 高度なデリゲートシナリオ

(1) 再帰デリゲート

BASH
me: monorepo全体のコード品質を分析して

Agent: Monorepoに5つのパッケージがあります。5つのサブエージェントを作成:
  各サブエージェントは内部でさらにディレクトリ別に分解...
  
  🤖 Sub-Agent-frontend → 3つの孫エージェントを作成
  🤖 Sub-Agent-backend → 4つの孫エージェントを作成
  🤖 Sub-Agent-shared → 直接処理
  🤖 Sub-Agent-infrastructure → 直接処理
  🤖 Sub-Agent-tests → 2つの孫エージェントを作成

(2) 人機協調デリゲート

BASH
me: リリースフローを完了して

Agent: リリースフローには人の確認が必要です。ステップごとに実行します:
  
  Step 1: [自動] コードレビュー → ✅ 合格
  Step 2: [自動] テスト実行 → ✅ 合格
  Step 3: [確認待ち] stagingにデプロイしますか?
  me: 確認
  Step 4: [自動] stagingデプロイ → ✅ 完了
  Step 5: [確認待ち] productionにデプロイしますか?
  me: 確認
  Step 6: [自動] productionデプロイ → ✅ 完了
  Step 7: [自動] チームに通知 → ✅ 完了

❓ よくある質問

Q サブエージェントとメインエージェントはメモリを共有しますか?
A 長期メモリとユーザーモデルは共有しますが、ワーキングメモリは独立しています。サブエージェントはユーザーの嗜好を知っていますが、メインの会話コンテキストは妨害しません。
Q サブエージェントは最大いくつ作成できますか?
A デフォルト最大5個。delegate.strategy.max_sub_agentsで調整可能。多すぎるとコストと調整のオーバーヘッドが増加します。
Q サブエージェントはどのモデルを使用しますか?
A デフォルトはgpt-4o-miniでコスト節約。メインエージェントと同じモデルに設定することも可能。
Q 並列実行で競合は発生しますか?
A ファイル書き込み操作は自動的にロックされ、並行競合を回避します。読み取り専用操作は制限なし。
Q デリゲートのコストはどう計算されますか?
A サブエージェントのToken消費は独立して計算されますが、メインアカウントに統合されます。/delegate statusでリアルタイムに各サブエージェントのコストを確認可能。
Q サブエージェントの失敗は全体に影響しますか?
A 設定によります。デフォルトでは失敗タスクをスキップし、完了分を集約します。全中止に設定することも可能。

📖 まとめ


📝 練習問題

  1. 基本(⭐): エージェントにデリゲート機構で3つの異なるトピックを並列検索させ、サブエージェントの作成と結果集約を観察してください。
  2. 中級(⭐⭐): サブエージェントに異なるモデル(gpt-4o-mini)を使用するよう設定し、コスト節約効果を確認し、直列実行との所要時間を比較してください。
  3. 上級(⭐⭐⭐): monorepoの全プロジェクトコードレビューを処理する再帰デリゲートスキームを設計し、エラー処理とコスト制御戦略を含めてください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%