Skip to content

持久会话与 Agent 管理

SSH 断开不应终止训练或 Agent。tmux 管理通用终端会话;Herdr 在此基础问题上进一步面向 Coding Agent 提供状态和工作区视图。

tmux

bash
tmux new -s experiment
tmux ls
tmux attach -t experiment
tmux kill-session -t experiment

默认前缀是 Ctrl-b

操作快捷键
分离会话Ctrl-b d
新建窗口Ctrl-b c
下/上一个窗口Ctrl-b n / Ctrl-b p
垂直/水平分屏Ctrl-b % / Ctrl-b "
在 pane 间移动Ctrl-b 后按方向键
进入复制模式Ctrl-b [

推荐每个研究项目或实验批次一个命名会话。tmux 能保持进程,却不能替代日志、Checkpoint 和作业调度:服务器重启或进程崩溃时,会话本身无法恢复训练状态。

一个清晰布局可以是:训练进程、实时日志、GPU 监控各占一个 pane。不要在多个 pane 中同时编辑同一文件,也不要把 pane 中的临时输出当作唯一实验记录。

Herdr

Herdr 的官方定位是 “to coding agents what tmux is to terminals”。它在 Agent 所在机器上运行,每个 Agent 使用真实终端,并在一个界面中显示 working、blocked、done 等状态;服务保持会话,使你关闭电脑后仍能通过 SSH 重新连接。

官方提供脚本、Homebrew 和 Nix 安装方式。安装命令具有供应链风险,执行管道脚本前应先查看内容;具体命令以 安装文档 为准。

Herdr 适合:

  • 同时推进多个仓库或 worktree。
  • 快速发现哪个 Agent 正在等待输入。
  • 从另一台电脑或手机重新接入。
  • 让 Claude Code、Codex、OpenCode 等共享一致的会话入口。

使用时仍要把边界写在仓库指令中,并让每个 Agent 负责独立目录或 worktree。会话复用器解决“进程在哪里”,不解决代码冲突、权限过宽和错误任务拆分。

如何选择

需要选择
运行训练、服务和普通 Shelltmux
管理多个 Coding Agent 并观察状态Herdr
已有成熟 tmux 配置,只偶尔使用 Agent继续使用 tmux
Agent 与普通任务混合两者可以并存,但避免重复嵌套过深

无论选择哪个工具,长期任务都应输出日志、定期保存状态,并能从一条明确命令恢复。

参考:tmux WikiHerdr 文档