首页/文章/手机一断网 Claude Code 就掉线、长 diff 翻不回去?在新加坡 Mac mini 上配好 tmux 回滚缓冲与断线重连

手机一断网 Claude Code 就掉线、长 diff 翻不回去?在新加坡 Mac mini 上配好 tmux 回滚缓冲与断线重连

· Zumac.Ai

在手机上盯 Claude Code,最常见的两种崩溃并不是 Claude 出错,而是连接本身:一是地铁里、电梯里信号一晃,SSH 会话直接断开,屏幕上只剩一句「Broken pipe」;二是 Claude Code 一次吐出几百行 diff,远程终端的回滚缓冲被撑满,手机上想往回翻看它到底改了什么,结果什么都翻不到。

这两件事都可以在机器这一侧解决:让会话活在常开的 Mac mini 上,手机只当一扇随时可以关上又打开的窗户。下面是在新加坡 Mac mini 上的完整配置步骤。Claude 账号请使用你自己的;机器侧只负责提供一个稳定合规的使用环境。

先想清楚:断线时到底丢了什么

SSH 断开时,被杀掉的是「SSH 会话里直接跑的进程」。如果你是 ssh 登录后直接敲 claude,那么断线 = Claude Code 进程收到挂断信号 = 正在进行的任务中止。

所以原则只有一条:Claude Code 永远不直接挂在 SSH 会话上,而是挂在 tmux 里。SSH 只是用来「看」tmux,断了就重新看,任务本身不受影响。这在常开整机上尤其划算,因为 Mac mini 不合盖、不休眠,tmux 里的会话可以连续跑几天。

第一步:给 Claude Code 建一个固定的 tmux 会话

用 UU 远程连接或 SSH 登入新加坡 Mac mini,确认 tmux 已安装(tmux -V)。然后用一个固定名字启动会话:

# 已存在就接上,不存在就新建
tmux new-session -A -s claude

在这个会话里进入项目目录,再启动 Claude Code。-A 的好处是:不管你是第一次登录还是第十次重连,敲的都是同一条命令,手机上不用记「上次那个会话叫什么」。

第二步:调大回滚缓冲,长 diff 不再丢

tmux 默认只保留 2000 行历史,Claude Code 跑一次大重构就可能超过。编辑 ~/.tmux.conf:

# 回滚缓冲加到 5 万行(按你的内存余量调整)
set -g history-limit 50000
# 允许触屏/鼠标滚动,手机终端 App 里手指上滑就能翻历史
set -g mouse on
# 窗口标题显示会话名,多会话时不容易接错
set -g set-titles on

注意 history-limit 只对新建的窗口生效,改完要执行 tmux source-file ~/.tmux.conf,再开一个新窗口跑 Claude Code。

光靠滚屏在手机上仍然费劲。更实用的做法是把输出落盘,需要时直接搜索:

# 在 tmux 窗口内开启输出记录,所有内容追加写入日志
mkdir -p ~/claude-logs
tmux pipe-pane -o "cat >> ~/claude-logs/$(date +%F)-claude.log"

之后在手机上想找某次改动,用 grep -n "关键字" ~/claude-logs/*.log 或者 less +G 打开日志跳到末尾,比在小屏幕上滚几百屏可靠得多。Claude Code 本身做过哪些文件改动,最终仍以 git diff 和 git log 为准,日志只是辅助回看。

第三步:让 SSH 断线后自己接回来

手机网络切换时,SSH 往往要等很久才意识到连接已经死了。在手机 SSH App 或你的 ~/.ssh/config 里加上心跳:

Host zumac-mini
    HostName <你的机器地址>
    User <你的用户名>
    ServerAliveInterval 15
    ServerAliveCountMax 3
    # 登录后直接接上 claude 会话
    RequestTTY yes
    RemoteCommand tmux new-session -A -s claude

这样每 15 秒探测一次,约 45 秒无响应就判定断开;你重新点一下连接,落地就是原来的 Claude Code 画面,不需要再手动敲 tmux 命令。

第四步:要不要换 Mosh?

有人在信号很差的环境里改用 Mosh,它基于 UDP,网络切换时会话不中断,打字也有本地回显。它确实好用,但有两个前提:

  1. Mac mini 上要装好 mosh-server(已有 Homebrew 的话 brew install mosh);
  2. 你的连接路径要能放行 Mosh 使用的 UDP 端口。如果你是通过浏览器 SSH 或只转发 TCP 的通道连接,Mosh 就用不上。

所以建议顺序是:先把 tmux + 心跳配置做好,这在任何连接方式下都有效;连接路径确实支持 UDP 时,再把 Mosh 当作锦上添花。Mosh 本身不保存滚动历史,回看长输出仍然要靠上面的 tmux 缓冲和日志。

第五步:断线回来后的检查清单

重新接上会话,不要急着继续下指令,先花 30 秒确认状态:

tmux ls                       # 会话还在不在
tail -n 50 ~/claude-logs/$(date +%F)-claude.log   # 断线期间输出了什么
git -C ~/your-project status --short             # 有没有未提交的改动

如果 Claude Code 正停在权限确认上,说明它一直在等你,没有越权继续执行;如果日志显示任务已完成,就先看 git diff 再决定是否提交。

为什么放在常开的新加坡 Mac mini 上

上面这套配置在自己的笔记本上也能做,但笔记本一合盖、一睡眠,tmux 里的会话就跟着停,「断线不丢任务」也就失去了意义。把 Claude Code 放在一台常开的整机上,手机、平板、办公室电脑都只是不同的窗口,谁断了都不影响机器上的进度。

Zumac.Ai 提供位于新加坡的远程 Mac mini M6,整机独享,支持 UU 远程连接和 SSH,每台机器一个固定专属地址,浏览器即可 SSH / VNC。新客户整机租用 ¥999/月,季付、半年付、年付另有优惠。你在机器上用自己的 Claude 账号安装 Claude Code,按本文把 tmux、回滚缓冲和心跳配好,就能在任何地方随时接回同一个会话。实际连接体验取决于你本地的网络线路。

想先了解机器配置或开通流程,可以在 Telegram 联系 @singatao。

Zumac.Ai 新加坡 Mac mini M6,整机独享,¥999/月起,联系 Telegram @singatao。
查看方案与费用 · 帮助中心

返回首页 · 更多文章

Telegram 客服