Agent automation — herdr公式ドキュメント
3つのプリミティブ、agent start/prompt/wait/readのリファレンス。このレッスンの裏付けとして参照してください。
Herdrのagent automationは、CLIやスクリプトから「別のPaneにエージェントを起動し、プロンプトを送り、完了を待つ」ことを可能にする仕組みです。あなたはすでにHerdrで手動でPaneを分割してエージェントを動かしています。この回では、それをコマンドだけでやります。
ゴール: herdrのCLIだけでPaneを分割し、そこにエージェントを起動する体験をすること。
Agent automationのすべては3つのレイヤに分かれます:
| プリミティブ | 責務 | 主なコマンド |
|---|---|---|
| Layout | ターミナルの場所を作る | workspace create, tab create, pane split |
| Pane | 生のターミナルを制御する | pane run, pane send-text, pane read, pane wait-output |
| Agent | 認識されたエージェントをライフサイクルで制御する | agent start, agent prompt, agent wait, agent read |
Paneはエージェントの有無にかかわらず存在する。Agentは、そのPane内で動いている認識済みプロセスのこと。
agent startは既存のシェルPaneを必要とし、新しいPaneを作らない。だからLayoutの操作が先。
Herdrセッション内のターミナルで、以下を順番に実行してください。
$ split=$(herdr pane split --current --direction right --no-focus)
$ echo "$split" | jq .
JSON が返ってきます。--no-focus は、フォーカスを今のPaneに残したまま新しいPaneを作るフラグです。新しいPaneが右側に現れるのを確認してください。
$ review_pane=$(printf '%s\n' "$split" | jq -r '.result.pane.pane_id')
$ echo "新しいPaneのID: $review_pane"
w1:p3 のような形式のIDが表示されます。これが以降のコマンドで使うアドレスです。
あなたの環境には agy と opencode がインストールされています。ここでは agy を使います:
$ herdr agent start helper --kind agy --pane "$review_pane"
ポイント:
helper はこのエージェントに付ける名前([a-z][a-z0-9_-]{0,31}形式)--kind agy は起動するエージェントCLIの種類--pane はStep 2で取得したPaneのIDコマンドはHerdrがエージェントを検出するまで待ちます(デフォルト30秒)。右側のPaneで agy が起動し、プロンプト入力待ちになるのが見えるはずです。
--kind opencode に変えるだけです。
$ herdr agent list
helper という名前のエージェントが idle 状態で表示されれば成功です!
$ herdr agent get helper
エージェントの詳細情報(kind, pane_id, status)が JSON で確認できます。
あなたは今、CLIコマンドだけで以下を実行しました:
pane split)jq)agent start)これが「オーケストレーション用のエージェントが別Paneにエージェントを起動する」の基本骨格です。次のレッスンでは、このエージェントにagent promptでタスクを送り、agent waitで完了を待ち、agent readで結果を読む一連の流れを実践します。
理解度チェック。答えを考えてから開いてください。
agent startは新しいPaneを作るか?❌ いいえ。agent startは既存のシェルPaneを必要とします。Paneの作成はpane splitやworkspace createで先に行います。
--no-focusフラグの目的は何か?カーソルフォーカスを現在のPaneに残したまま、バックグラウンドで新しいPaneを作成するためです。オーケストレーション・スクリプトでは、スクリプトが動いているPaneにフォーカスを残す必要があります。
[a-z][a-z0-9_-]{0,31} — 小文字英字で始まり、小文字英数字・アンダースコア・ハイフンで構成され、最大32文字。ライブエージェント間で一意である必要があります。