让 Claude Code 在 Mac 上通宵运行:睡眠、合盖、SSH 断线一次解决
你给 Claude Code 安排了一个长任务,然后合上笔记本去做别的事。回来一看,会话停了。
很多时候,这不是 Claude Code 出问题,也不是电脑坏了,而是 macOS 进入了睡眠。
Mac 一旦睡眠,后台程序会被暂停,网络会断开,SSH 连接也会掉线。对于需要长时间运行的 AI 编程任务来说,这就会造成“跑到一半突然断掉”。
这篇文章会用很简单的方式,告诉你怎么让 Mac 保持运行,让 Claude Code 可以安心跑长任务。
Mac 睡眠时到底发生了什么?
Mac 睡眠时,不是直接把程序关掉,而是把程序“冻结”。
也就是说:
- CPU 不再继续运行你的进程
- Claude Code 没有被删除
- 任务只是被暂停了
- 等电脑醒来后,程序理论上还会继续
但问题在于,等 Mac 醒来时,原来的网络连接可能已经超时了,API 请求也可能失败了。于是任务看起来就像中断了一样。
还要记住一个关键点:
- 锁屏不会让 Mac 睡眠
- 屏保也不会让 Mac 睡眠
- 真正会让 Mac 睡眠的,通常是睡眠计时器、低电量,或者合上笔记本盖子
所以,想要 Claude Code 长时间运行,核心就是阻止 Mac 进入睡眠。
方法 1:只让当前任务运行期间不睡眠
如果你只是临时跑一个任务,可以用 macOS 自带的 caffeinate 命令。
它的作用很简单:只要这个命令还在运行,就不让电脑进入空闲睡眠。
# 使用 caffeinate 阻止系统进入空闲睡眠
# claude 是你想运行的命令,这里以 Claude Code 为例
caffeinate -i claude
如果你希望运行期间屏幕也不要关闭,可以加上 -d 参数。
# -i:阻止系统空闲睡眠
# -d:阻止屏幕睡眠
# 适合需要一直观察屏幕内容的场景
caffeinate -di claude
这个方法的好处是简单,不需要改系统设置。
但它也有局限:
- 它不能阻止 MacBook 合盖睡眠
- 任务结束后,效果也就结束了
- 下次运行任务时,需要重新加上这个命令
方法 2:直接让整台 Mac 不睡眠
如果你有一台台式 Mac,或者笔记本一直插着电源,推荐直接把系统睡眠关掉。
这也是比较适合长期跑 AI 任务的方式。
# 关闭整机自动睡眠,0 表示永不睡眠
sudo pmset -a sleep 0
# 关闭硬盘自动休眠,避免磁盘过一会儿停止响应
sudo pmset -a disksleep 0
# 让屏幕 10 分钟后关闭,可以省电
# 屏幕关闭不会影响终端里的后台任务
sudo pmset -a displaysleep 10
# 开启网络唤醒,方便以后通过局域网唤醒电脑
sudo pmset -a womp 1
这里有一个重点:屏幕可以关,但电脑不要睡。
对于终端任务来说,屏幕亮不亮不重要,重要的是系统还在运行,网络还在线,进程没有被暂停。
方法 3:让 MacBook 合盖后也不睡眠
很多开发者会直接合上 MacBook 盖子,然后让它继续跑任务。
但 MacBook 合盖后,默认会进入睡眠。
如果你想合盖也不睡眠,可以使用下面这个命令。
# 强制禁用睡眠
# 执行后,即使合上 MacBook 盖子,系统也会继续运行
sudo pmset -a disablesleep 1
如果以后想恢复正常合盖睡眠,可以执行:
# 恢复合盖睡眠行为
# 把 1 改回 0,表示取消强制禁用睡眠
sudo pmset -a disablesleep 0
这个方式很有效,但要注意两件事:
- 合盖运行会影响散热,不要把电脑放在包里、床上、沙发上,最好放在硬质桌面上
- 如果没插电源,电池会持续消耗,电量耗尽可能导致电脑非正常关机
所以,如果你要用这个方式跑通宵任务,最好插上电源,并保证散热。
方法 4:让终端会话更稳,防止 SSH 断线或窗口关闭
有时候,Mac 其实没有睡眠,但任务还是没了。
这种情况可能是:
- 终端窗口被关掉了
- SSH 连接断了
- 网络短暂波动,导致会话挂掉
这时可以用 tmux。
tmux 可以理解成一个“后台终端”。即使你关闭终端窗口,或者 SSH 断开,里面的程序还可以继续运行。
先安装并启动:
# 使用 Homebrew 安装 tmux
brew install tmux
# 新建一个名为 agent 的 tmux 会话
tmux new -s agent
# 在 tmux 会话里启动 Claude Code
claude
启动后,你可以按:
Ctrl + b,然后按 d
这表示临时离开 tmux 会话,但里面的任务不会停止。
之后想回来继续看,可以执行:
# 重新连接到名为 agent 的 tmux 会话
tmux attach -t agent
这个方法特别适合远程连接 Mac 跑任务。
比如你晚上在公司或家里启动任务,然后带着手机或另一台电脑离开。只要网络和电源正常,任务就还在。
方法 5:电脑重启后也能自动恢复
有些情况无法避免,比如:
- 系统更新后自动重启
- 突然停电后电脑关机
- 电脑意外重启
重启之后,如果没有人登录,很多任务不会自动运行。
如果你希望 Mac 像一台小服务器一样长期工作,可以做两件事:
- 给专门跑任务的账户开启自动登录
- 配置 LaunchAgent,让电脑登录后自动创建
tmux会话并启动任务
这样就更接近真正的无人值守运行。
如果你打算长期这样做,还建议考虑:
- 使用稳定电源
- 给电脑配备 UPS 不间断电源
- 保持散热良好
- 尽量不要频繁移动机器
什么时候应该换一台机器跑任务?
上面这些方法都有效,但它们会把你的笔记本变成一台“不能随便带走的服务器”。
如果 Claude Code 开始经常通宵运行,或者需要连续跑很多小时,很多人会选择单独找一台设备。
常见选择有:
- 家里闲置的 Mac mini
- 一台 Linux 主机,前提是你不需要 Xcode
- 云端 Mac
- 托管的 Mac mini,由服务商帮你维护
如果你只是偶尔跑长任务,用现有 MacBook 加设置就够了。
如果你经常需要让 AI 编程工具 7×24 小时运行,单独准备一台常开机会更省心。
常见问题
-
caffeinate能让 MacBook 合盖后继续运行吗?
不能。MacBook 合盖开关的优先级更高。要合盖运行,需要接电源并连接外接显示器、键盘、鼠标,或者使用sudo pmset -a disablesleep 1。 -
锁屏或屏保会让 Claude Code 停止吗?
不会。锁屏和屏保不会让 Mac 睡眠。只要系统没有进入睡眠,终端任务就可以继续。 -
这些方法适用于 Codex CLI 吗?
适用。Codex CLI 也是终端进程,同样会受到 macOS 睡眠、合盖、SSH 断线影响。 -
可以用手机远程阻止 Mac 睡眠吗?
一般不行。你可以在手机上通过 SSH 或远程控制启动任务,但如果 Mac 已经决定睡眠,远程很难临时阻止。正确做法是提前在 Mac 上设置好电源策略。 -
最稳的组合是什么?
如果是笔记本,推荐:插电源、关闭自动睡眠、使用tmux、注意散热。
如果需要合盖运行,再考虑disablesleep。
如果任务很重要,最好使用专门的常开设备。
直达网址:https://macrun.dev/guides/claude-code-stops-when-mac-sleeps?ref=devto