跳转到内容
本页面的翻译由 LLM 生成。如果你发现翻译有误,请在 GitHub 上提交 issue 告诉我们。

会话状态与恢复

Herdr 有多条状态路径,它们解决的是不同的问题。

场景进程继续运行布局恢复最近的屏幕内容恢复智能体对话恢复
分离并重新连接是,来自实时终端是,因为进程从未停止
服务器重启仅在开启窗格屏幕历史时仅在有智能体原生会话恢复时
不带 --handoff 的更新兼容的服务器继续运行;需要重启的服务器可能要停止/重启重启后恢复仅在开启窗格屏幕历史时仅在有智能体原生会话恢复时
--handoff 的更新对受支持的运行中服务器尽力而为是,交接成功时来自实时终端是,交接成功时进程保持运行

下面的小节逐一解释这些路径。

普通分离会让 Herdr 服务器继续运行。窗格、shell、智能体、服务器、测试和命令进程都在该服务器中继续运行。

ctrl+b q 分离客户端。之后重新连接:

Terminal window
herdr

这是最强的持久化路径,因为原始进程从未停止。

如果 Herdr 服务器停止后再启动,原来的窗格进程已经不在了。Herdr 会恢复保存的会话形态: 工作区、标签页、窗格、cwd、布局和焦点。

快照恢复不会保留运行中的 shell、服务器、测试或任意进程。无法使用更强恢复路径的窗格,会在各自保存的目录中作为新 shell 回来。

窗格屏幕历史在服务器完全重启后恢复最近的终端内容。它恢复的是 Herdr 能展示的内容,而不是原来的进程。

它默认关闭,因为窗格输出可能包含密钥、令牌、提示词和命令输出。可以在 Settings > Experiments > pane screen history 中开启,或者:

[experimental]
pane_history = true

开启后,Herdr 把保存的窗格历史存放在 session.json 旁边的 session-history.json 中。请像对待终端历史一样对待 Herdr 的配置/会话目录。

一些智能体可以恢复它们自己的对话会话。Herdr 可以使用官方集成上报的会话引用,在 Herdr 服务器重启后重新启动受支持的智能体窗格。

这默认开启。关闭方法:

[session]
resume_agents_on_restore = false

Herdr 只会恢复那些通过当前官方 Herdr 集成上报了原生会话引用的窗格。

当客户端连接并提供终端尺寸和主题上下文后,Herdr 会跨工作区和标签页恢复符合条件的智能体窗格,不需要等每个窗格被聚焦。

智能体原生会话恢复需要以下版本或更新的 Herdr 集成:

智能体最低 Herdr 集成版本恢复命令
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> 重新安装过期的集成。

不受支持、缺失、无效、重复或过期的会话引用,会在保存的窗格目录中作为普通 shell 恢复。

如果某个窗格适用智能体原生会话恢复,Herdr 会对该窗格恢复智能体会话,而不是回放保存的窗格历史。

实时交接用于需要替换运行中 Herdr 服务器的更新和远程连接流程。它请求旧服务器把实时窗格转移给新服务器,让窗格进程跨服务器替换继续运行。

这与快照恢复、窗格历史回放和智能体原生会话恢复不同。交接尝试让当前进程活下去,其他路径则是在旧服务器已经停止之后重建状态。

实时交接是实验性功能,需要主动开启:

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

普通的 herdr update 和普通的 herdr --remote workbox 默认使用常规的重启/停止流程。

herdr update --handoff 只适用于由 Herdr 自带更新器管理的安装。Homebrew、mise 和 Nix 安装通过各自的包管理器更新,因此那些安装中 herdr update 被禁用,无法执行实时交接。