プログラミング
Agent-Manager: Claude Code, Codex, OpenCodeを実行するためのTmux TUI
Agent-Manager: A Tmux TUI for Running Claude Code, Codex and OpenCode (github.com)
要約
Agent-Managerは、Claude Code、Codex、OpenCode、GrokなどのAIコーディングエージェントを単一のターミナルから管理・実行できるTmuxベースのTUI(テキストベースユーザーインターフェース)ツールです。各エージェントは独立したtmuxセッションで実行され、マネージャーを終了しても動作を継続します。セッションの状態を一覧表示し、プロンプトの送信、セッションの作成、変更点の差分表示、コメントの追加などを簡単に行えます。
全文翻訳
Agent Manager
1つのターミナルからすべてのAIコーディングエージェントを実行します。
Claude Code、Codex、OpenCode、Grokを並べて実行し、それぞれ独自のtmuxセッションで実行するため、マネージャーを終了した後も動作し続けます。
どのエージェントが完了し、どれがスタックしているかを確認するためにターミナルのタブを検索する代わりに、すべてのセッションが1つのリストにライブステータスとともに表示され、折りたたみ可能で並べ替え可能なプロジェクトツリーにグループ化されます。
アタッチせずにいずれかに応答できます。スペースキーでセッションのペインに直接プロンプトを送信するか、選択したグループに新しいエージェントを起動します。
デッドセッションはvで、中断したところから復活します。
Ctrl+Rで、エージェントが変更した内容のフルファイル差分を構文ハイライト付きで開き、行に残したコメントはエージェントのペインに直接送られます。
サポートされているツール
ステータス検出は現在、Claude Code、OpenCode、Codex、Grokをサポートしています。
ビルドアウトオブザボックス。
他のCLIツールもセッションとして実行できます。[tools.<name>]ブロックにステータスルールを追加して、ライブステータスを取得します(設定を参照)。
インストール
Homebrew (macOS / Linux)
brew install yoanwai/tap/agent-manager
不足している場合はtmuxもインストールします。
Go
go install github.com/YoanWai/agent-manager@latest
Go 1.26+とtmuxが必要です。$(go env GOPATH)/binにインストールします。
プリビルドバイナリ
Releasesからダウンロードします(macOSおよびLinux、amd64/arm64)。
Windows
WSL2内で実行します。
agent-managerはtmux上で動作します。tmuxはLinux/macOSツールです。
WSLシェルで、Homebrewでインストールするか、ReleasesからLinuxバイナリを取得します。
アップデート
マネージャーは1日に1回GitHub Releasesをチェックし、新しいバージョンが出るとヘッダーに↑vX.Y.Z利用可能バッジを表示します。
インストールした方法でプルします。
brew upgrade yoanwai/tap/agent-manager # Homebrew
go install github.com/YoanWai/agent-manager@latest # Go
使用法
agent-manager
セッションはtmux(am_*名前空間)内で実行されるため、マネージャーが終了しても存続します。
セッション内では、Ctrl+Qでマネージャーに戻ります。
agent-manager --version でバージョンを表示します。
キー
キー アクション
n 新しいセッション(名前、ツール、ディレクトリ、オプションの開始プロンプト、グループピッカー)
g 新しいグループ(名前、親、デフォルトパス)
enter セッションをアタッチ / グループを折りたたむ
ctrl+q セッション内:マネージャーに戻る
K / J (または shift+↑ / shift+↓) 可視な兄弟間でセッションまたはグループを並べ替える
m セッションを別のグループに移動する
r セッションの名前を変更 / ツールを編集する。グループ名とデフォルトパスを編集する
v デッドセッションを復旧する(revive_command、例: claude --continue、会話を再開する)
a / u セッション、またはグループとそのサブツリー全体をアーカイブ / 復元する
d セッション、またはグループ+そのサブツリー全体を削除する
space クイックプロンプト:選択したセッションに応答するか、選択したグループでエージェントを起動する
ctrl+r 選択したセッションの変更を確認する:フルスクリーンでファイル全体の差分表示、行コメントをエージェントに送信する
f グループを折りたたむ / 展開する
s 設定(クイックスパウンツール、テーマ、レビューレイアウト)
t アーカイブ表示を切り替える
e 空のグループを表示 / 非表示にする
/ 検索
? ヘルプ
q 終了(セッションは実行を継続)
クイックプロンプト
スペースキーを押すと、サイドバーの下部にプロンプトバーがドッキングされます。
バーが開いている間、ターゲットはカーソルに従います(↑↓でナビゲートも可能)。
セッション行で、Enterキーを押すと、入力したテキストがセッションのペインに直接送信され、エージェントはアタッチせずにユーザーメッセージとして受け取ります。
バーは開いたままでクリアされ、次の応答の準備ができます。
グループ行で、Enterキーを押すと、そのグループに新しいエージェントがプロンプトを埋め込んで起動されます。グループのデフォルトパスが使用されます。
起動ツールは設定(s)のデフォルトから開始し、タブで切り替えます(claude ↔ opencode ↔ 設定済みの任意のツール)。フッターに現在の選択が表示されます。
エージェントはすぐにプロンプトの処理を開始します。
esc でバーを閉じます。
新しいセッションフォームのオプションのプロンプトフィールドは、同様の方法でエージェントを起動します。プロンプトをフラグの後ろでCLIが受け取るツールは、設定でそれを宣言します(設定を参照)。
セルフネーミングセッション
カスタム名なしで起動されたセッション(すべてのクイックスパウン、および名前を空白にしたフォーム)は、claude-a1b2のようなプレースホルダーを取得し、最初のプロンプトで、エージェントにagent-manager rename "<name>" を短いセッション名(単一のサブタスクではない)で実行するように求めます。
このディレクティブは、エージェントが明示的に指示しない限り、再度名前を変更しないように指示します。
最初のプロンプトがディレクティブを運べない場合(/スラッシュコマンド、またはプロンプトがない場合)、マネージャーはツールの入力ボックスがペインに表示されたときに、それを独自のメッセージとして送信します。
サブコマンドは名前をセッションごとのファイルにドロップします。マネージャーは次のポーリングでそれを拾い上げ、サイドバー行とtmuxステータスバーを更新します。
これは、エージェントがプロンプトを読み取り、1つのシェルコマンドを実行するだけでよいため、どのツールでも機能します。
自分で名前を付けたセッションはその名前を保持します。最初のプロンプトは、後で要求した場合にagent-manager rename が利用可能であることを通知するだけで、エージェントに今すぐ名前を変更するように指示しません。
後でエージェントにセッションの名前を変更するように依頼したり、セッション内のシェルから自分でagent-manager rename を実行したりできます。
レビュー対象のリポジトリの宣言
セッションの作業ディレクトリは、多くの場合、複数のリポジトリを保持するアンブレラフォルダであるため、レビューはエージェントがどのリポジトリを意味するかを推測することしかできません。
エージェントは、作業中のリポジトリを知っている場合、セッション内のシェルからagent-manager review-repo <path> を実行することでそれを伝えることができます。
サブコマンドは、パスがgitリポジトリ内にある(またはその中に座っている)ことを確認し、リポジトリのルートに解決し、セッションごとのファイルにドロップします。マネージャーは次のポーリングでそれを拾い上げ、次回開いたときにそのリポジトリでレビューを開きます。
gitリポジトリ内にないパスは拒否されるため、宣言は常に事実であり、推測ではありません。
エージェントは、agent-manager review-base <ref> をワークツリー内で実行することで、どのブランチに対して差分を取るかを宣言することもできます。refはそのリポジトリで検証され、セッションごとおよびリポジトリごとに保存され、それ以降「vs target」スコープがそれを使用します。
agent-manager review-base --clear は自動検出に戻ります。
保存されたrefが解決を停止すると、エラーとして表示され、Bはターゲットピッカー(リポジトリのブランチと自動エントリ)を開いて手動で設定またはクリアします。
エージェントは通常、gitワークツリーで動作し、ワークツリーごとに1つのブランチがあり、それらのワークツリーはディスク上のどこにでも存在できます。
宣言されたパスがワークツリーのルートである場合、それがどこにあっても受け入れられるため、1回のreview-repo呼び出しでリポジトリとレビュー対象のブランチの両方が名前付けされます。
レビューは固定順序でターゲットを解決します。
rまたはbで手動で選択したリポジトリは、マネージャーが実行されている間は勝ちます。
次に、エージェントが宣言したリポジトリ。
次に、ランキング(ダーティな作業ツリーが先、次に最も最近のコミット)。
選択または宣言されたパスがgitリポジトリでなくなり、レビューがステータスラインにそれを表示し、rで適切なものを選択できる場合。
MCP:エージェントがこれらのコマンドを発見する方法
マネージャーが起動または復旧するすべてのセッションは、agent-manager MCPサーバーを運びます。そのため、MCP対応エージェントは、rename、review_repo、review_baseをネイティブツールとして認識し、それらをいつ呼び出すかを示す説明が表示されます。プロンプトインジェクションなし、プロジェクトごとのセットアップなし。
サーバーは同じバイナリ(agent-manager mcp、stdio)にあり、環境を通じて呼び出し元セッションを識別します。
登録はツールごとです。
組み込みのclaude、codex、opencode、grokツールは自動的に登録されます。
claudeは生成された--mcp-configファイルを取得します。
codexは-c mcp_servers...オーバーライドを取得します。
opencodeはOPENCODE_CONFIGマージファイルを取得します。
grokは初回起動時に1回限りのgrok mcp add --scope userエントリを取得します。
カスタムツールは、設定セクションでmcp = "<style>" を使用してオプトインするか、mcp = "none" を使用してオプトアウトします。
CLIサブコマンドは、MCPの有無にかかわらず、どこでも機能し続けます。
差分レビュー
セッションでCtrl+Rを押すと、そのリポジトリのフルスクリーンのレビューが開きます。
左側には変更されたファイルと+/-カウントが表示され、右側には構文ハイライトと変更行が色付けされたファイル全体が表示されるため、すべての編集が完全なコンテキストで読み取れます。
矢印キーとCtrl+D/Ctrl+Uでファイルをスクロールします。
g/Gで先頭と末尾にジャンプします。
J/K(またはTab/Shift+Tab)でファイルを切り替えます。
n/Nで変更間をジャンプします。
uでユニファイドとサイドバイサイドを切り替えます。
sでスコープ(未コミット、ターゲット対、最終コミット、ステージング済み)をサイクルします。
スペースキーでファイルをレビュー済みとしてマークします。
作業ディレクトリに複数のリポジトリが含まれている場合