zshell

AI エージェントとの作業

作業への集中と判断権を保ちながら、コーディングエージェントに Zshell のペイン間で分担・連携させます。

Zshell の自動化は、主に AI コーディングエージェント向けです。エージェントが Zshell のペインを操作し、別のエージェントと連携するための安全な手段を提供します。新しく覚える必要のあるコマンド言語ではありません。

AI 連携は標準で有効です。普段どおりエージェントと会話してください。現在使っているペインからフォーカスを奪わずに、バックグラウンドのペインを作り、作業担当を起動し、コマンドを実行し、結果を待って報告できます。

コマンドの結果を待つ

テストやビルドなど終了するコマンドでは、エージェントがコマンド自身の終了コードと実行時間を待ち、保存された最近のターミナル出力を確認できます。待機がタイムアウトしてもコマンドは実行を続け、同じタスクを再度待機できます。待機中もフォーカスは移りません。Zshell が起動した元のローカル zsh に空のプロンプトが必要です。入れ子のシェル、SSH、独自の起動プログラムには対応していません。最近の出力には以前のコマンドやプロンプトが含まれる場合があり、長さも制限されます。完全な記録が必要なら、出力をファイルに保存するよう依頼してください。

元のシェルを終了または置き換える exit、logout、exec の直接実行は拒否されます。これらは /bin/sh -c で子プロセスとして実行してください。

設定

設定 → 自動化 → AI を確認してください。標準でオンです。以前無効にした場合は再び有効にし、新しいターミナルを開くか、すでに実行中のエージェントを再起動します。

Zshell は Codex、Claude Code、Gemini CLI、Grok Build、OpenCode、Cursor Agent、Aider、Amp、Pi に対応します。 この機能と競合する既存のエージェント設定が見つかると、その設定は変更せず、スイッチを元の状態に戻し、設定画面にエラーを表示します。

普段の言葉で依頼する

求める結果をエージェントに伝えます。たとえば次のように依頼できます。

対象のテストをバックグラウンドのペインで実行して、失敗するものを教えて。

この不具合を別の Codex エージェントに任せて、その結果をレビューして。

API を担当するエージェントにスキーマの準備状況を聞き、テスト担当のエージェントに回答を渡して。

隣で開発サーバーを起動し、準備ができるまで待って URL を教えて。

バックグラウンドのエージェントが完了したか確認して。止まっているなら、何が必要か教えて。

エージェントが代わりに Zshell の自動化インターフェースを操作します。自動化コマンドを入力したり暗記したりする必要はありません。

ペイン間でエージェントを連携させる

関連する作業を複数の Zshell ペインに分け、主担当のエージェントに調整を依頼できます。 たとえば一方が API、もう一方がテストの更新を担当します。調整役は特定の担当に発見事項を尋ね、追加依頼を送り、必要な結果を別の担当に渡して、まとめた回答を返せます。各担当は異なる対応コーディングツールでも構いません。

並行作業で文脈をコピーする手間を省けます。各エージェントは自分のペインで会話を保持し、調整役は相手に必要な質問、更新、結果だけを渡します。

追加依頼を送っただけでは作業完了ではありません。調整役は担当の完了を待ち、結果を読み、成果を確認します。 また、別のエージェントからのメッセージをあなたの承認として扱うことはありません。権限、認証情報、信頼の判断、破壊的操作は引き続きあなたが決定します。

実行中も作業を続ける

分担したペインは、表示を求めない限りバックグラウンドに留まります。提供元のネイティブなライフサイクル連携が状態を報告すると、Zshell はペインとタブに表示します。

状態意味
実行中(Working)エージェントが作業を進めています。
対応待ち(Blocked)あなたからの入力、承認、その他の判断が必要です。
完了(Done)バックグラウンドで完了し、まだそのペインを表示していません。

Zshell は Codex、Claude Code、Pi、OpenCode、Grok のネイティブなライフサイクルイベントを優先し、その次にプログラムの明示的な報告を使います。状態バッジにカーソルを合わせるか Agents を開くと、情報源、待機理由、進捗率、子タスクを確認できます。Codex のフックは /hooks で確認し、信頼する必要があります。Zshell はこの確認を省略しません。

ネイティブな報告がない場合、認識済みエージェントの現在の画面下部だけを範囲を限定して調べます。画面からの推定には情報源が表示され、完了の報告、通知、zshell +agent wait の完了条件には使われません。承認も行いません。ペインと実際の結果を確認してください。

プログラムは zshell +agent report で進捗を報告し、zshell +agent clear で自身の報告を消去できます。120 秒間更新がない場合や、所有プロセスの終了時に報告は失効します。

連携機能がエージェントの完了や入力要求を報告したとき、Zshell は通知を送ることもできます。 Cmd+Shift+A で、対応が必要と報告された次のエージェントへ移動します。

アカウントの使用量と上限

設定 → 自動化 → アカウント使用量(Account Usage)には、Claude Code と Codex の取得可能な利用上限を表示します。使用率、報告されている場合のリセット時刻、最終更新時刻を確認できます。 使用量を更新(Refresh Usage)で最新の取得可能なデータを読み直します。

Codex では、アカウントの上限を報告できる CLI がインストールされ、ログインしている必要があります。 Claude Code の使用量は、Zshell が提供元のステータスラインから使用量報告を受け取った場合に表示されます。 このセクションは使用量データがある場合だけ表示され、対応する集計期間は提供元とアカウントによって異なります。これはアカウントの上限であり、フォーカス中のセッションのトークン総数ではありません。

基本的な流れ

  1. Zshell ターミナルで普段のコーディングエージェントを起動します。
  2. 範囲を絞った作業の分担、バックグラウンド処理、別のエージェントとの連携を依頼します。
  3. 分担した作業がプロジェクトの配置に表示されている間も、現在のペインで作業を続けられます。
  4. 利用できる場合は、提供元が報告する実行中・対応待ち・完了バッジを確認します。ライフサイクルを報告しないツールでは、ペインを開いて会話やターミナル出力を確認します。
  5. Git パネルで生成されたファイルと差分をレビューし、残す変更を決めます。

判断権はあなたにあります

  • エージェントの自動化は現在の Zshell プロジェクト内に限定され、別のプロジェクトやウィンドウのペインにはアクセスできません。
  • 明示的に求めない限り、バックグラウンド作業がフォーカスを奪うことはありません。
  • Zshell は権限、認証情報、信頼、破壊的操作の確認にあなたの代わりに答えません。提供元が対応待ちを報告したエージェントは、その判断をあなたへ返します。
  • 完了の報告は結果をレビューする合図であり、エージェントの変更を自動承認するものではありません。

エージェントが Zshell を使わない場合

  • 設定 → 自動化 → AI が有効か確認します。
  • 有効化より前から開いていたターミナルなら、新しい Zshell ターミナルを開きます。
  • 有効化した時点ですでに動いていたエージェントを再起動します。
  • 設定画面にセットアップエラーが表示されていないか確認します。
  • この流れで作業させたい場合は、「バックグラウンドの Zshell ペイン」や「Zshell の別のエージェントに分担」と明示して依頼します。

元の会話を再開する

エージェントの会話を再開 が有効なら、元の PTY が利用できないペインを復元すると、そのペインに記録された Claude Code、Codex、Pi、OpenCode の会話を再開します。同じディレクトリを使う複数のペインも、別々の会話を保持します。

既存のプロバイダー設定に Claude Code と Codex の SessionStart フック、Pi 拡張、OpenCode TUI プラグインを追加します。他の設定、フック、プラグイン、JSONC コメントは保持します。要求された場合は Claude Code の信頼確認でフックを有効にし、Codex の /hooks で新しいフックを承認してください。インストール前から動作していたエージェントは再起動が必要です。

対象は連携から報告された検証済みのルート会話です。共有 Codex app-server セッションは、検証済みの会話 ID がペインと一致する場合に対応し、曖昧な場合は紐付けません。リモートホスト上の会話についてはリモートセッションの共有を参照してください。OpenCode は TUI プラグイン API が必要で、古いバージョン、ヘッドレスサーバー、opencode attach は対象外です。子エージェントが親ペインの会話を置き換えることはありません。Pi は保存済みセッションファイルが必要です。

検証済み ID、元の作業ディレクトリ、Pi ファイルがない場合は新しいシェルを開きます。CLI が見つからない場合もシェルに戻ります。任意の起動コマンドの再実行や最新会話の選択はしません。削除された会話などのプロバイダーエラーは CLI が表示します。

保存した会話を検索して再開する

エージェント → エージェントの会話履歴、プロジェクトサイドバー上部の時計ボタンを開きます。タイトル、プロバイダー、プロジェクト、会話 ID、作業ディレクトリ、設定ディレクトリでプロジェクト横断検索ができます。最新 200 件の検証済みローカル会話を保存し、エージェントやペインの終了後、アプリの再起動後も参照できます。最近 はアーカイブされていない一致結果を 20 件表示し、すべて はアーカイブ済みの記録も含め、アーカイブ済み はその記録だけを表示します。

開いている会話には 会話を表示、保存した会話には 会話を再開 を選びます。既存のペインを再利用し、存続する PTY に再接続するか、元の作業ディレクトリと設定でプロバイダーの指定の会話を再開します。手動再開には AI 連携が必要ですが、自動再開の設定はオフでも利用できます。作業または設定ディレクトリがない場合や、Pi ファイルがないか ID が一致しない場合は、新しいペインを作る前にエラーを表示します。

アーカイブ は「最近」から記録を隠し、アーカイブを解除 は元に戻します。削除… は Zshell の履歴記録のみを削除し、プロバイダーの会話ファイルは残します。

Zshell ペイン内では zshell +agent history --all と zshell +agent resume --id HISTORY_UUID がそのペインのプロジェクトを対象にします。通常の外部ターミナルでは Zshell を起動したままプロジェクト UUID を取得し、明示的に指定します:

zshell +agent history projects
zshell +agent history --project PROJECT_UUID --all
zshell +agent resume --project PROJECT_UUID --id HISTORY_UUID --focus

CLI の再開はバックグラウンドが既定です。フォーカスを移すには --focus を付けます。複数ウィンドウで開いたプロジェクトには history projects の --window WINDOW_UUID を指定します。複数のアプリが起動中なら CLI が示す専用接続ファイルの絶対パスを --connection PATH に指定します。これらの指定は外部ターミナル用で、ペイン内のプロセスは元のプロジェクト範囲を維持します。

プロジェクトのイベントを購読する

Zshell のターミナル内で zshell +events を実行すると、そのプロジェクトとウインドウの変更を NDJSON で購読できます。--pane UUID、繰り返し指定できる --event NAME、--once、--timeout MS(0 は無期限)に対応します。ポーリングは行いません。

セッションやペインの作成・終了、フォーカス、Agent の進捗・注意・完了、コマンド終了を通知します。最初の stream.ready は sequence 0、以降は一致したイベントごとに増加します。各行は version、event、stream_id、sequence、Unix ミリ秒の time、project_id、data を含みます。履歴の再送はありません。タスク結果は +pane wait --task UUID で確認できます。

上限は 32 購読、各キュー 256 フレーム・1 MiB、各フレーム 64 KiB です。遅延時は可能なら stream.lagged を送信して切断し、2 秒書き込めない接続も閉じます。遅延・予期しない切断・連番エラーは非ゼロ終了です。再購読して現在の状態を確認してください。所有ターミナルの終了、トークン更新、別プロジェクト/ウインドウへの移動で購読は終了します。外部制御と --project は非対応です。環境変数を削除しても権限は広がりません。--once の未一致タイムアウトは 124、それ以外は 0 です。

zshell +events --event command.task.finished --once --timeout 30000

pane.updated: data.from → data (tab_id, pane_id, terminal_id, content).