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

Lesson 01: Paneを分割してエージェントを起動する

Herdr Agent Automation · 所要時間: 5〜10分
前提: Herdrをターミナルマルチプレクサとして使用中
📖 この回の一次情報源

Agent automation — herdr公式ドキュメント
3つのプリミティブ、agent start/prompt/wait/readのリファレンス。このレッスンの裏付けとして参照してください。

何を学ぶか

Herdrのagent automationは、CLIやスクリプトから「別のPaneにエージェントを起動し、プロンプトを送り、完了を待つ」ことを可能にする仕組みです。あなたはすでにHerdrで手動でPaneを分割してエージェントを動かしています。この回では、それをコマンドだけでやります。

ゴール: herdrのCLIだけでPaneを分割し、そこにエージェントを起動する体験をすること。

3つのプリミティブ

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の操作が先。

① pane split ② agent start ③ agent prompt ④ agent wait / read

ハンズオン: やってみよう

Herdrセッション内のターミナルで、以下を順番に実行してください。

現在のPaneの隣に新しいPaneを作る

$ split=$(herdr pane split --current --direction right --no-focus)
$ echo "$split" | jq .

JSON が返ってきます。--no-focus は、フォーカスを今のPaneに残したまま新しいPaneを作るフラグです。新しいPaneが右側に現れるのを確認してください。

新しいPaneのIDを取り出す

$ review_pane=$(printf '%s\n' "$split" | jq -r '.result.pane.pane_id')
$ echo "新しいPaneのID: $review_pane"

w1:p3 のような形式のIDが表示されます。これが以降のコマンドで使うアドレスです。

そのPaneにエージェントを起動する

あなたの環境には agyopencode がインストールされています。ここでは agy を使います:

$ herdr agent start helper --kind agy --pane "$review_pane"

ポイント:

コマンドはHerdrがエージェントを検出するまで待ちます(デフォルト30秒)。右側のPaneで agy が起動し、プロンプト入力待ちになるのが見えるはずです。

💡 opencode を使いたい場合

--kind opencode に変えるだけです。

エージェントの状態を確認する

$ herdr agent list

helper という名前のエージェントが idle 状態で表示されれば成功です!

$ herdr agent get helper

エージェントの詳細情報(kind, pane_id, status)が JSON で確認できます。

何が起きたか

あなたは今、CLIコマンドだけで以下を実行しました:

  1. 現在のPaneの隣にPaneを分割した(pane split
  2. 返ってきたJSONからPane IDを取り出した(jq
  3. そのPaneにエージェントを名前付きで起動した(agent start

これが「オーケストレーション用のエージェントが別Paneにエージェントを起動する」の基本骨格です。次のレッスンでは、このエージェントにagent promptでタスクを送り、agent waitで完了を待ち、agent readで結果を読む一連の流れを実践します。

クイズ

理解度チェック。答えを考えてから開いてください。

Q1: agent startは新しいPaneを作るか?

❌ いいえ。agent startは既存のシェルPaneを必要とします。Paneの作成はpane splitworkspace createで先に行います。

Q2: --no-focusフラグの目的は何か?

カーソルフォーカスを現在のPaneに残したまま、バックグラウンドで新しいPaneを作成するためです。オーケストレーション・スクリプトでは、スクリプトが動いているPaneにフォーカスを残す必要があります。

Q3: エージェント名の制約は何か?

[a-z][a-z0-9_-]{0,31} — 小文字英字で始まり、小文字英数字・アンダースコア・ハイフンで構成され、最大32文字。ライブエージェント間で一意である必要があります。