← /teach Study Portal (herdr) に戻る /teach lesson

Lesson 03: マルチエージェント・オーケストレーションの実践

Herdr Agent Automation · 所要時間: 10分
リンク: Lesson 01 | Lesson 02 | クイックリファレンス
📖 この回の一次情報源

Agent automation: Recipes
エージェント連携の公式レシピとベストプラクティスです。

何を学ぶか

これまでのレッスンで、Herdr をコマンドから操作する個々の部品を学びました:

今回は、これらを組み合わせて「Coder エージェント」と「Reviewer エージェント」の2つを同時に起動し、パイプラインで自動連携させるオーケストレーション・スクリプトを作成・実行します。

オーケストレーションのアーキテクチャ

Orchestrator
(メインPane)
→ 分割・起動 → Coder
(右Pane)
→ コード作成完了 → Reviewer
(右下Pane)

Orchestrator が司令塔となり、ターミナル上の Pane レイアウトを自在に構築して子エージェントたちに協調作業をさせます。

用意されたスクリプト: scripts/orchestrator.sh

ワークスペースの scripts/orchestrator.sh に完成版スクリプトを用意しました:

#!/usr/bin/env bash
# 1. 右側に Coder 用 Pane を分割
split_coder=$(herdr pane split --current --direction right --no-focus)
coder_pane=$(printf '%s\n' "$split_coder" | jq -r '.result.pane.pane_id')
herdr agent start coder --kind agy --pane "$coder_pane"

# 2. Coder の下に Reviewer 用 Pane を分割
split_reviewer=$(herdr pane split "$coder_pane" --direction down --no-focus)
reviewer_pane=$(printf '%s\n' "$split_reviewer" | jq -r '.result.pane.pane_id')
herdr agent start reviewer --kind agy --pane "$reviewer_pane"

# 3. Coder にタスク依頼 & 完了待機
herdr agent prompt coder "fib.py を作成して" --wait --timeout 120000

# 4. Reviewer にレビュー依頼 & 完了待機
herdr agent prompt reviewer "fib.py をレビューして" --wait --timeout 120000

# 5. 結果を集約して表示
reviewer_output=$(herdr agent read reviewer --source recent-unwrapped --lines 30)
echo "$reviewer_output"

ハンズオン: スクリプトを実行してみよう

Herdr ターミナルで実行

現在の Herdr ターミナルからスクリプトを実行します:

$ ./scripts/orchestrator.sh

opencode を使いたい場合は ./scripts/orchestrator.sh opencode で実行できます)

画面の動きを観察する

  1. 画面右側に新しい Pane が開き、coder エージェントが起動する
  2. さらにその下に Pane が開き、reviewer エージェントが起動する
  3. coder がコードを書き始める
  4. coder が書き終えると、reviewer が動き出す
  5. 完了後、元の Pane にレビュー結果が表示される

終わった後のクリーンアップ

エージェントを終了させたい場合は、それぞれの Pane に ctrl+cexit を送るか、手動で Pane を閉じることができます:

# エージェントに終了キーを送信
$ herdr agent send-keys coder ctrl+c
$ herdr agent send-keys reviewer ctrl+c

応用パターン

パターン用途実装のコツ
パイプライン型
(今回の例)
実装 → レビュー → テストの直列リレー agent prompt --wait で順次バトンタッチする
ファンアウト型
(並行実行)
複数モジュールの並行実装、複数テストの並行実行 agent prompt を各エージェントに投げた後、ループでそれぞれの agent wait を待つ
エージェント自身が親になる型 AI エージェントが自律的にヘルパーを召喚する AI に herdr コマンドを実行するツール権限を与えるだけで実現可能

クイズ

Q1: 3つのエージェントを同時に並行処理させるための正しいコマンドフローは?

各エージェントに agent prompt--wait なし)を順に送った後、それぞれに対して agent wait を実行して全員の完了を待ちます。

Q2: エージェントが別タブで動いている場合、フォーカスしていなくても結果は取れるか?

はい。agent read はバックグラウンド(未フォーカスの done 状態)のターミナルからも直接テキストを読み取れます。