合上笔记本,会话就停了
很多人用 Claude Code 的节奏是这样的:在笔记本上开一个会话,给它一个要跑很久的任务,再用 /loop 让它每隔一段时间检查一次构建结果,或者用 /remote-control 把会话交给手机,人走开也能看进度、点批准。
问题在于,这两样东西都跑在你的笔记本上。一合盖、一休眠,进程就被挂起:/loop 不再按时触发,手机端的远程会话也跟着失联。笔记本在高负载下还会降频,几个会话同时编译时,最慢的往往不是模型,而是这台机器本身。
有人的解法是给笔记本装防休眠工具,有人把会话搬到云服务器上。前者让笔记本一直开着发热,后者在做 iOS/macOS 项目时会卡在一个现实问题上:Xcode、模拟器、签名工具链都需要一台真正的 Mac。
更省心的做法,是让会话「住」在一台常开的 Mac mini 上,笔记本和手机都只是遥控器。下面按步骤把这套组合搭起来。
准备清单
- 一台常开的新加坡 Mac mini,已安装 Claude Code,并用你自己的账号登录。
- 能通过 SSH 或 UU 远程连接进入这台机器,终端里装好 tmux(
brew install tmux)。 - 手机上装好 Claude 官方应用,并登录同一个账号。
- 一个要长期跑的项目目录,例如
~/work/myapp,已经是 git 仓库。
第一步:先确认机器不会睡
会话常驻的前提是机器本身不休眠。SSH 进 Mac mini 后先看一眼当前的电源设置:
pmset -g | grep -E 'sleep|disksleep|displaysleep'
sleep 一项应为 0。如果不是,可以在「系统设置 → 能耗」里关掉自动睡眠,显示器睡眠无所谓。为了保险,长任务期间再套一层 caffeinate:
caffeinate -dimsu -w $$ &
这条命令会在当前 shell 存活期间阻止系统睡眠,shell 退出后自动失效,不会留下常驻进程。
第二步:把 Claude Code 放进命名好的 tmux 会话
不要直接在 SSH 窗口里跑 claude,否则网络一断,会话就跟着 SSH 一起结束。先开一个有名字的 tmux 会话:
tmux new -s myapp -c ~/work/myapp
在 tmux 里启动 Claude Code:
claude
之后无论你是关掉 SSH 窗口、换网络,还是笔记本合盖,这个会话都还挂在 Mac mini 上。下次回来只要:
tmux attach -t myapp
建议每个项目一个 tmux 会话,名字和项目目录一致,方便手机上一眼找到。
第三步:在 Mac mini 上开启远程控制
在 tmux 里的 Claude Code 会话中输入:
/remote-control
按提示完成配对后,打开手机上的 Claude 应用,就能看到这个会话,可以查看输出、继续对话、处理权限确认。不同版本的命令名和入口可能有变化,以 /help 里列出的为准。
关键区别在于:现在会话的「本体」在 Mac mini 上。手机锁屏、笔记本合盖,都不会影响它继续跑,你只是暂时没在看而已。
第四步:用 /loop 做定时巡检
长任务里最常见的需求是「每隔一段时间看一下结果,出问题再叫我」。在同一个会话里可以这样交代:
/loop 20m 运行 xcodebuild -scheme MyApp -destination 'platform=macOS' build 的结果检查;如果失败,总结错误原因并停下来等我,不要自行修改签名配置
几点建议:
- 间隔别设太短。每次触发都会消耗额度,构建本身要几分钟时,20–30 分钟一次通常够用。
- 在提示里写清楚「失败就停下来等我」,并明确哪些东西不许它自己动,比如签名证书、发布配置、
main分支。 - 写操作和不可逆命令仍然交给权限确认,让它在手机上弹给你批准,而不是一开始就全部放行。
同样的,/loop 的具体语法以你当前版本的 /help 为准。
第五步:留一条 SSH / UU 远程的后备路径
远程控制适合看进度和拍板,但有些事还是要回到完整的桌面或终端:
- 需要看 Xcode 图形界面、模拟器画面时,用 UU 远程连接进 Mac mini 的桌面。
- 需要翻日志、跑脚本时,SSH 进去
tmux attach -t myapp。 - 手机端失联时,先 SSH 进去看 tmux 会话是否还在,再决定是否重新执行
/remote-control。
可以在 ~/.ssh/config 里给这台机器起个别名,省得每次输入地址:
Host sgmini
HostName 你的机器地址
User 你的用户名
ServerAliveInterval 30
ServerAliveInterval 能让空闲的 SSH 连接不那么容易被中间网络掐断。
第六步:每天收尾前做一次检查
常驻会话跑久了,容易积累看不见的状态。每天结束前花一分钟:
tmux ls # 还有哪些会话在跑
git -C ~/work/myapp status # 有没有未提交的改动
pmset -g assertions | grep -i prevent # 是否还有进程在阻止睡眠
不再需要的会话用 tmux kill-session -t 名字 关掉,别让旧会话一直占着额度和内存。
为什么要一台常开的整机
把会话从笔记本搬走,本质上是把「跑任务」和「看任务」分开。跑任务的那台机器需要满足几个条件:
- 一直开着:不合盖、不降频、不因为你出门就停。
- 是真正的 Mac:iOS/macOS 开发离不开 Xcode 和签名工具链。
- 网络环境稳定:Claude 的长会话、远程控制和 MCP 连接都怕频繁掉线,固定在一个稳定合规的使用环境里更省心。
- 整机独享:项目代码、登录状态和会话记录只在你自己的机器上,不和别人共用一台系统。
Zumac.Ai 提供的就是这类环境:位于新加坡的实体 Mac mini M6,整机独享,支持 SSH 与 UU 远程连接,FileVault 全盘加密,退租时抹机重装。新客户整机租用 ¥999/月起,季付 ¥2,697.30,半年付 6 送 1 为 ¥5,994,年付 12 送 2 为 ¥11,988;已购买客户续费保持原价。新客户首单自审核开通当天起租,续费及老客户新订单自付款当天起租。实际延迟取决于你本地的网络线路,建议先租一个月,把「tmux 常驻 → 远程控制 → /loop 巡检」这一套跑顺。
小结
/loop和/remote-control跑在哪台机器上,就受那台机器的休眠和降频影响。- 把 Claude Code 放进常开 Mac mini 上命名好的 tmux 会话里,笔记本和手机都只做遥控。
/loop间隔别太短,提示里写清楚「失败就停下等我」和禁止自动改动的范围。- 留好 SSH 和 UU 远程连接作为后备,每天收尾检查一次会话和未提交改动。
