コンテンツにスキップ
このページの翻訳は LLM によって生成されています。誤りに気づいた場合は GitHub で issue を開いてお知らせください。

セッション状態と復元

Herdr には複数の状態管理経路があります。それぞれが異なる問題を解決します。

ケースプロセスは動き続けるレイアウトは戻る直近の画面は戻るエージェントの会話は再開する
デタッチと再アタッチはいはいはい (ライブのターミナルから)はい (プロセスが止まらないため)
サーバー再起動いいえはいペイン画面履歴が有効な場合のみエージェントネイティブのセッション復元がある場合のみ
--handoff なしのアップデート互換性のあるサーバーは動き続ける。再起動が必要なサーバーは停止/再起動が必要な場合がある再起動後は戻るペイン画面履歴が有効な場合のみエージェントネイティブのセッション復元がある場合のみ
--handoff ありのアップデート対応する稼働中サーバーではベストエフォートはいはい (ハンドオフが成功すればライブのターミナルから)はい (ハンドオフが成功すればプロセスが動き続けるため)

以下のセクションでそれぞれの経路を説明します。

通常のデタッチでは Herdr サーバーは動き続けます。ペイン、シェル、エージェント、サーバー、テスト、コマンドプロセスはそのサーバー内で動き続けます。

ctrl+b q でクライアントをデタッチします。あとで再アタッチします:

Terminal window
herdr

元のプロセスが一度も止まらないため、これが最も強力な永続化経路です。

Herdr サーバーが停止して再起動すると、元のペインのプロセスは失われています。Herdr は保存されたセッションの形を復元します: ワークスペース、タブ、ペイン、cwd、レイアウト、フォーカスです。

スナップショット復元は、動作中のシェル、サーバー、テスト、その他任意のプロセスを保存しません。より強力な復元経路が使えないペインは、保存されたディレクトリで新しいシェルとして戻ってきます。

ペイン画面履歴は、サーバーの完全な再起動後に直近のターミナル内容を復元します。復元されるのは Herdr が表示できるものであって、元のプロセスではありません。

ペイン出力にはシークレット、トークン、プロンプト、コマンド出力が含まれうるため、これはデフォルトで無効です。Settings > Experiments > pane screen history から、または次の設定で有効にします:

[experimental]
pane_history = true

有効にすると、Herdr は保存したペイン履歴を session.json の隣の session-history.json に保存します。Herdr の設定/セッションディレクトリはターミナル履歴と同じ感覚で扱ってください。

エージェントネイティブのセッション復元

Section titled “エージェントネイティブのセッション復元”

一部のエージェントは自分の会話セッションを resume できます。Herdr は、公式インテグレーションが報告したセッション参照を使って、Herdr サーバーの再起動後に対応エージェントのペインを再起動できます。

これはデフォルトで有効です。無効にするには:

[session]
resume_agents_on_restore = false

Herdr が resume するのは、現行の公式 Herdr インテグレーションを通じてネイティブセッション参照を報告したペインだけです。

クライアントがアタッチしてターミナルサイズとテーマのコンテキストを提供すると、Herdr は各ペインがフォーカスされるのを待たずに、ワークスペースとタブをまたいで復元対象のエージェントペインを resume します。

エージェントネイティブのセッション復元には、次の Herdr インテグレーションバージョン以上が必要です:

エージェント最低 Herdr インテグレーションバージョンresume コマンド
Pi2pi --session <path-or-id>
OMP3omp --resume=<path-or-id>
Claude Code6claude --resume <id>
Codex5codex resume <id>
Cursor Agent CLI1cursor-agent --resume <id>
GitHub Copilot CLI2copilot --resume=<id>
Devin CLI2devin --resume <id>
Droid2droid --resume <id>
Kimi Code CLI3kimi --session <id>
Qoder CLI2qodercli --resume <id>
OpenCode5opencode --session <id>
Kilo Code CLI1kilo --session <id>
Hermes Agent2hermes --resume <id>

インストール済みインテグレーションのバージョンは herdr integration status で確認できます。古いインテグレーションは herdr integration install <agent> で再インストールしてください。

未対応、欠落、無効、重複、または古くなったセッション参照は、保存されたペインディレクトリで通常のシェルとして復元されます。

あるペインにエージェントネイティブのセッション復元が適用される場合、Herdr はそのペインでは保存済みペイン履歴のリプレイではなくエージェントセッションの resume を行います。

ライブハンドオフは、稼働中の Herdr サーバーを置き換える必要があるアップデートやリモートアタッチのフローのためのものです。古いサーバーにライブペインを新しいサーバーへ移すよう依頼し、サーバー交換をまたいでペインのプロセスが動き続けられるようにします。

これはスナップショット復元、ペイン履歴リプレイ、エージェントネイティブのセッション復元とは異なります。ハンドオフは現在のプロセスを生かし続けようとします。他の経路は、古いサーバーが停止した後に状態を再構築します。

ライブハンドオフは実験的機能で、オプトインです:

Terminal window
herdr update --handoff
herdr --remote workbox --handoff

素の herdr update と素の herdr --remote workbox は、デフォルトでは通常の再起動/停止フローを使います。

herdr update --handoff は Herdr 自身のアップデーターが管理するインストールにのみ適用されます。Homebrew、mise、Nix のインストールはそれぞれのパッケージマネージャーで更新されるため、そこでは herdr update は無効化されており、ライブハンドオフは実行できません。