
字节笔记本
2026年9月24日 · 约 7 分钟读完
herdr --remote 实测:一行命令接管远程 Mac mini
家里或者工位上放一台 24 小时开机的 Mac mini,跑各种 agent 和后台任务,几乎是现在做 AI 工具开发的标配。麻烦的从来不是把它跑起来,而是每次想上去看一眼、改个东西的时候。
VNC 太重,截图糊,延迟也让人心烦。tmux 能保住会话,但每次都要重新 attach,屏幕截图这种东西还得手动 scp 来 scp 去。用 agent 干活的时候,粘贴一张截图给它看,经常就卡在这一步。
herdr 的 --remote 模式把这几件事一次性解决了。
herdr 是什么
herdr 是一个用 Rust 写的单文件终端复用工具,体积大概十兆左右,专门为管多个 AI coding agent 设计的。跟 tmux 的区别在于,它知道每个 pane 里跑的 agent 是空闲、正在工作、卡住等待输入、还是已经跑完了,侧边栏会直接显示这些状态,不用自己配 hook 或者盯着终端猜。
--remote 是它的远程接管模式。本地的 herdr 变成一个瘦客户端,通过 SSH 连到远程机器,在那边启动或者接上已经存在的 herdr server,再把整个界面流回本地终端。这跟直接 ssh 进去手动跑 herdr 是两回事,区别主要在剪贴板图片能不能通,后面细说。
两边都要装
本地笔记本和 Mac mini 上都装一次,版本尽量对齐:
# 本地笔记本和 Mac mini 都要跑这一行,装同一个版本最省心
curl -fsSL https://herdr.dev/install.sh | sh
# 装完检查一下版本号有没有对上
herdr --version || {
echo "herdr 没装上,检查网络,或者手动去 https://herdr.dev 下载对应平台的二进制"
exit 1
}如果两边架构一致,比如都是 Apple Silicon,herdr 在检测到远程没装的情况下也能自动把本地二进制拷过去,或者去 herdr.dev 拉对应版本。但手动装一次更保险,版本不对齐容易在协议握手的地方出奇怪的问题。
给 Mac mini 起个别名
在 ~/.ssh/config 里配好,--remote macmini 才能直接认得这个名字,不用每次打全地址:
# ~/.ssh/config
Host macmini
HostName 192.168.1.20 # 换成 Mac mini 的局域网 IP 或者公网域名
User pan # 换成登录 Mac mini 用的用户名
Port 22 # 改过端口的话这里同步改
IdentityFile ~/.ssh/id_ed25519 # 用哪把私钥登录,按实际情况填配完先手动验证一遍能不能连上,免得后面 herdr 报错的时候分不清是网络问题还是它自己的问题:
# 单独验证一下 SSH 通不通,跳过这一步排查会很麻烦
ssh macmini "echo 连接正常" || echo "SSH 本身就连不上,先解决这个"一行命令接管
# 接管 Mac mini
herdr --remote macmini
# 连不上的话大概率是 SSH 层面的问题,用这行单独排查握手过程
ssh -v macmini跑起来之后,本地终端里看到的就是 Mac mini 上那个 herdr server 的完整界面,键位、分屏、agent 状态一个不少。笔记本这时候基本上就是个显示器加键盘,真正干活的进程全在 Mac mini 上。
剪贴板和图片为什么能通
因为 client 是跑在本地的,herdr 能读到本地系统的图片剪贴板,把图片自动拷贝到远程的一个临时文件,再把路径粘贴进对应的输入框,所以本地 Cmd+V 直接就能把一张图丢给跑在 Mac mini 上的 agent,比如 Claude Code。
这里有个容易踩的坑:如果顺序反了,先 ssh macmini 进去,再在远程手动敲 herdr,那 herdr 就完全跑在服务器端,读不到本地桌面剪贴板,图片粘贴会退化成普通文本粘贴,图直接就丢了。一定要在本地敲 herdr --remote macmini,而不是进去之后再跑。
另外,GitHub 上有个还没关的 issue(#205)记录了 macOS 通过 --remote 连到 Linux server 的场景下,Claude Code 里 Cmd+V 贴图偶尔会悄悄失效,既不报错也不出现占位符,但换成本地起 herdr 或者纯 SSH 加 tmux 反而正常。如果贴图没反应,先怀疑是不是这个已知问题,别急着怀疑自己配置错了。
断线、关盖之后状态怎么保住
ctrl+b 然后 q 是 detach。Mac mini 上的 pane 和 agent 进程不受影响,继续在后台跑。
不管下次是换了台电脑、还是用手机上的 SSH client 再跑一次 herdr --remote macmini,接回来的都是同一个 session,同样的 panes,同样的状态。这也是它比 tmux 省心的地方,tmux 本身不知道哪个 agent 卡住了,哪个已经跑完了,接回去还得自己一个个 pane 翻。
多个项目分开管理
按项目开不同的命名 session,互相不串:
# 新建或者接回一个叫 blog-writing 的 session
herdr session attach blog-writing
# 看看 Mac mini 上现在都有哪些 session 在跑
herdr session list
# 项目收尾了,杀掉对应 session 释放资源
herdr session kill blog-writing键位走本地还是走远程
默认 --remote 用的是本地 herdr 的键位快照,attach 那一刻的配置,方便保留本地肌肉记忆,即使远程 server 上的配置不一样。想强制用 Mac mini 上 herdr 自己的配置,就加这个参数:
herdr --remote macmini --remote-keybindings server写在最后
herdr 解决的其实是一个很具体的落差:agent 已经学会自己跑很久了,但管理这些 agent 的工具还停留在 tmux 那个年代,只有 pane,没有状态。--remote 模式再往前走一步,把剪贴板和图片这种本来需要额外配一套桥接方案才能解决的问题,直接内置进了 SSH 连接本身。
对已经有一台 24 小时开机 Mac mini 当远程 agent 入口的人来说,这基本上是把 VNC、tmux attach、scp 传图这三件事一次性省掉了。唯一要记住的规矩就是:永远从本地敲 --remote,不要先 ssh 进去再跑。



