セッション状態と復元
Herdr には複数の状態管理経路があります。それぞれが異なる問題を解決します。
何が生き残るか
Section titled “何が生き残るか”| ケース | プロセスは動き続ける | レイアウトは戻る | 直近の画面は戻る | エージェントの会話は再開する |
|---|---|---|---|---|
| デタッチと再アタッチ | はい | はい | はい (ライブのターミナルから) | はい (プロセスが止まらないため) |
| サーバー再起動 | いいえ | はい | ペイン画面履歴が有効な場合のみ | エージェントネイティブのセッション復元がある場合のみ |
--handoff なしのアップデート | 互換性のあるサーバーは動き続ける。再起動が必要なサーバーは停止/再起動が必要な場合がある | 再起動後は戻る | ペイン画面履歴が有効な場合のみ | エージェントネイティブのセッション復元がある場合のみ |
--handoff ありのアップデート | 対応する稼働中サーバーではベストエフォート | はい | はい (ハンドオフが成功すればライブのターミナルから) | はい (ハンドオフが成功すればプロセスが動き続けるため) |
以下のセクションでそれぞれの経路を説明します。
ライブ永続化
Section titled “ライブ永続化”通常のデタッチでは Herdr サーバーは動き続けます。ペイン、シェル、エージェント、サーバー、テスト、コマンドプロセスはそのサーバー内で動き続けます。
ctrl+b q でクライアントをデタッチします。あとで再アタッチします:
herdr元のプロセスが一度も止まらないため、これが最も強力な永続化経路です。
スナップショット復元
Section titled “スナップショット復元”Herdr サーバーが停止して再起動すると、元のペインのプロセスは失われています。Herdr は保存されたセッションの形を復元します: ワークスペース、タブ、ペイン、cwd、レイアウト、フォーカスです。
スナップショット復元は、動作中のシェル、サーバー、テスト、その他任意のプロセスを保存しません。より強力な復元経路が使えないペインは、保存されたディレクトリで新しいシェルとして戻ってきます。
ペイン画面履歴のリプレイ
Section titled “ペイン画面履歴のリプレイ”ペイン画面履歴は、サーバーの完全な再起動後に直近のターミナル内容を復元します。復元されるのは 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 = falseHerdr が resume するのは、現行の公式 Herdr インテグレーションを通じてネイティブセッション参照を報告したペインだけです。
クライアントがアタッチしてターミナルサイズとテーマのコンテキストを提供すると、Herdr は各ペインがフォーカスされるのを待たずに、ワークスペースとタブをまたいで復元対象のエージェントペインを resume します。
エージェントネイティブのセッション復元には、次の Herdr インテグレーションバージョン以上が必要です:
| エージェント | 最低 Herdr インテグレーションバージョン | resume コマンド |
|---|---|---|
| Pi | 2 | pi --session <path-or-id> |
| OMP | 3 | omp --resume=<path-or-id> |
| Claude Code | 6 | claude --resume <id> |
| Codex | 5 | codex resume <id> |
| Cursor Agent CLI | 1 | cursor-agent --resume <id> |
| GitHub Copilot CLI | 2 | copilot --resume=<id> |
| Devin CLI | 2 | devin --resume <id> |
| Droid | 2 | droid --resume <id> |
| Kimi Code CLI | 3 | kimi --session <id> |
| Qoder CLI | 2 | qodercli --resume <id> |
| OpenCode | 5 | opencode --session <id> |
| Kilo Code CLI | 1 | kilo --session <id> |
| Hermes Agent | 2 | hermes --resume <id> |
インストール済みインテグレーションのバージョンは herdr integration status で確認できます。古いインテグレーションは herdr integration install <agent> で再インストールしてください。
未対応、欠落、無効、重複、または古くなったセッション参照は、保存されたペインディレクトリで通常のシェルとして復元されます。
あるペインにエージェントネイティブのセッション復元が適用される場合、Herdr はそのペインでは保存済みペイン履歴のリプレイではなくエージェントセッションの resume を行います。
ライブハンドオフ
Section titled “ライブハンドオフ”ライブハンドオフは、稼働中の Herdr サーバーを置き換える必要があるアップデートやリモートアタッチのフローのためのものです。古いサーバーにライブペインを新しいサーバーへ移すよう依頼し、サーバー交換をまたいでペインのプロセスが動き続けられるようにします。
これはスナップショット復元、ペイン履歴リプレイ、エージェントネイティブのセッション復元とは異なります。ハンドオフは現在のプロセスを生かし続けようとします。他の経路は、古いサーバーが停止した後に状態を再構築します。
ライブハンドオフは実験的機能で、オプトインです:
herdr update --handoffherdr --remote workbox --handoff素の herdr update と素の herdr --remote workbox は、デフォルトでは通常の再起動/停止フローを使います。
herdr update --handoff は Herdr 自身のアップデーターが管理するインストールにのみ適用されます。Homebrew、mise、Nix のインストールはそれぞれのパッケージマネージャーで更新されるため、そこでは herdr update は無効化されており、ライブハンドオフは実行できません。