Mac 怎么不休眠:让 Codex、Claude Code 和本地 AI Agent 持续运行
更新于

最快的答案取决于你说的“Mac 不休眠”到底是哪一种。
- 如果 MacBook 盖子一直打开,只是想让下载、构建或测试继续跑,
caffeinate通常够用。 - 如果你想合上 MacBook 盖子后任务还继续运行,就要处理“合盖休眠”,不能只靠普通防 idle sleep。
- 如果你在跑 Codex、Claude Code、Cursor agent、本地脚本、模型任务或自动化测试,一个看得见的开关比记一串
pmset命令更稳。
第三种场景建议用 Macchiato (opens in a new tab):一个轻量的 Mac 菜单栏工具,可以一键让 Mac 保持唤醒,包括合盖继续运行。
命令行方案本身不复杂,但很容易忘记收尾:
# Disable sleep, including lid-close sleep behavior.
sudo pmset -a disablesleep 1
# Restore normal macOS sleep behavior.
sudo pmset -a disablesleep 0真正重要的是第二条命令。难点通常不是“怎么禁用休眠”,而是 AI agent、构建任务或自动化跑完以后,记得把 Mac 恢复成正常会休眠的状态。
按场景快速选择
| 你搜索的问题 | 实际想解决的事 | 推荐做法 |
|---|---|---|
| “Mac 怎么不休眠” | 盖子打开时,让 Mac 暂时保持唤醒 | 用 caffeinate 或 Macchiato |
| “Mac 合盖不休眠” | 合上 MacBook 后任务继续运行 | 用 Macchiato 或 pmset disablesleep |
| “MacBook 合上盖子继续运行” | 带着电脑离开,但本地任务不能停 | 用可见开关,任务结束后恢复休眠 |
| “Codex 跑任务时 Mac 休眠怎么办” | Codex 正在本地改代码、跑命令或测试 | 离开前打开 Macchiato |
| “Claude Code 合盖还要继续跑” | Claude Code 正在执行长任务 | 打开防休眠,回来后关闭 |
| “AI Agent 被 Mac 休眠打断” | 本地 shell、浏览器、dev server 或测试进程被暂停 | 只在这个任务窗口内阻止休眠 |
| “怎么恢复 Mac 正常休眠” | 之前禁用了休眠,现在 Mac 不睡了 | 关闭 Macchiato,或运行 sudo pmset -a disablesleep 0 |
很多命令行答案只解决第一行。但现在更常见的问题发生在中间几行:你把一个本地 AI agent 放在那里跑,它还没结束,Mac 先睡了。
为什么先看场景,而不是先背命令
大多数人搜这个问题,不是想学习 macOS 电源管理。他们通常遇到的是一个很具体的中断:
- Codex 还在修改仓库、运行测试或验证改动;
- Claude Code 正在执行多步命令;
- 本地 AI agent 还在读文件、控制浏览器或等待工具调用;
- 数据导出、下载、视频转码、模型运行还没结束;
- 你需要合上 MacBook,离开桌面一段时间。
如果答案只说“运行 caffeinate”,可能解决错问题。caffeinate 对普通的空闲休眠很有用,但合盖是另一个层级:macOS 会把合上盖子当成更强的休眠信号,用来保护电池和散热。
所以这篇文章先按使用场景讲,再讲命令。你需要的是让任务稳定完成,而不是把系统长期改成不休眠。
为什么 caffeinate 现在经常不够用
caffeinate 仍然是“Mac 怎么不休眠”的经典答案。只要 MacBook 盖子打开,它适合很多短时间任务。
比如,这条命令会让 Mac 在命令运行期间保持唤醒:
caffeinate这条命令让 Mac 保持唤醒一小时:
caffeinate -t 3600这条命令让 Mac 在构建完成前保持唤醒:
caffeinate npm run build问题在于 2026 年的开发工作流已经变了。很多人不是在等一个下载完成,而是让 AI agent、本地 dev server、Notebook 任务、测试套件、视频导出或模型任务继续跑。
如果 MacBook 一直开盖放在桌上,caffeinate 通常可以接受。可一旦你想合盖、把电脑放到一边,或者带去另一个房间,同时还要让 agent 继续工作,就要考虑合盖休眠,而不是只考虑普通空闲休眠。
场景 1:开盖时让 Mac 暂时不休眠
这个场景适合你还在电脑附近,只是想等一个进程跑完。
常见例子包括:
- 文件下载;
- 包安装;
- build 或 test 命令;
- 短时间数据导出;
- 开会时保持本地 dev server 运行。
这种情况下,用一个有时间限制的命令就够了:
caffeinate -t 3600它会让 Mac 保持唤醒一小时。风险较低,因为你没有改变合盖行为,而且命令本身有自然的结束时间。
场景 2:MacBook 合盖不休眠,任务继续运行
这是很多简单答案会失效的场景。
MacBook 合盖后,macOS 默认会认为你明确想让它休眠。这对电池和散热是好事,但对正在跑长任务的本地环境不友好。
如果你确实需要合盖继续运行,可以用 Macchiato,或者直接用 pmset:
sudo pmset -a disablesleep 1任务结束后恢复正常行为:
sudo pmset -a disablesleep 0如果你经常这么做,建议用一个可见的开关,而不是靠记忆。合盖不休眠不是一个应该长期打开的默认状态。
场景 3:让 Codex、Claude Code 或本地 Agent 跑完
AI coding agent 改变了“休眠”问题的性质,因为你停下打字以后,工作可能还在继续。Codex、Claude Code、Cursor agent、本地浏览器 agent 和 Notebook agent 可能还在读写文件、跑测试、调用工具或等待命令完成。
可以按这个流程做:
- 启动 agent 任务。
- 确认这个任务适合无人值守地继续运行。
- 打开 Macchiato。
- 合盖,或者离开电脑。
- 回来检查结果,然后关闭 Macchiato。
这比让每个人都背一条终端命令更适合日常使用,因为菜单栏状态能直接回答一个关键问题:我现在的 Mac 还会不会正常休眠?
真正容易出错的是忘记恢复休眠
控制休眠本身不难,人的记忆才是风险。
常见流程是这样的:
- 启动一个长任务。
- 用终端命令禁用休眠。
- 合盖离开。
- 过一阵回来。
- 忘记恢复正常休眠。
最后一步最麻烦。如果休眠一直被禁用,Mac 会在你以为它该休息的时候继续耗电。用电池时,这会带来不必要的电量消耗;放进包里时,还可能出现发热。长期看,这也不是一个好的使用习惯。
所以对经常跑 Codex、Claude Code 或本地 agent 的人来说,一键开关比裸命令更实用。
推荐:用 Macchiato 做可见开关
Macchiato (opens in a new tab) 是一个 macOS 菜单栏小工具,专门服务这个工作流:长任务需要继续时保持 Mac 唤醒,包括合盖;任务结束后,用同一个开关恢复正常休眠。
核心行为很简单:
| Macchiato 状态 | 会发生什么 |
|---|---|
| 开启 | Mac 保持唤醒,包括合盖时 |
| 关闭 | macOS 恢复正常合盖休眠行为 |
这就是它的价值。你不需要回想自己到底开了哪个 shell tab、是否还有 caffeinate 在跑,也不用猜 pmset 现在是不是还处在禁用休眠状态。
如何安装 Macchiato
- 打开 Macchiato GitHub 仓库 (opens in a new tab)。
- 进入 Releases (opens in a new tab)。
- 下载打包好的
Macchiato.dmg。 - 打开 DMG,把应用安装到本地。
- 启动 Macchiato,通过菜单栏图标切换状态。
第一次使用时,macOS 可能会要求你在系统设置里批准 helper。这个授权是为了让 Macchiato 可以执行需要权限的休眠控制,而不是每次切换都让你输入管理员密码。
如何配合 Codex 或 Claude Code 使用
当 Codex、Claude Code 或其他本地 agent 需要在你离开后继续执行时,可以这样做:
- 启动 agent 任务、构建、模型运行或脚本。
- 从菜单栏打开 Macchiato。
- 需要移动或离开时再合上盖子。
- 回来后打开 Mac,检查任务结果。
- 任务不再需要继续跑时,关闭 Macchiato。
这特别适合 AI coding 工作流,因为很多工作发生在本机。如果 Mac 睡了,shell、本地服务器、浏览器自动化或测试进程都可能暂停,甚至直接失败。
对 Codex 用户来说,这适合它正在运行命令、修改文件或验证本地仓库改动的时候。对 Claude Code 用户来说,这适合它正在跑较长的 build、test 或自动化任务的时候。重点不是 Codex 或 Claude Code 有什么特殊的休眠设置,而是运行它们的 Mac 必须保持唤醒。
如果你想继续了解 AI coding 工作流,可以看 Codex 使用指南、并行 Code Agent、2026 年最佳 Vibe Coding 工具、Codex vs Claude Code Skills 和 Claude Code Jupyter 数据科学工作流。
Macchiato 底层做了什么
Macchiato 封装的是你本来要手动管理的系统行为。
最重要的恢复命令是:
sudo pmset -a disablesleep 0这会告诉 macOS 重新允许正常休眠。禁用休眠时,对应命令是:
sudo pmset -a disablesleep 1Macchiato 也会使用 macOS power assertions,让系统知道有一个应用正在有意保持机器唤醒。你可以用下面的命令检查这类 assertion:
pmset -g assertions | grep Macchiato也可以查看当前是否处于 SleepDisabled 状态:
pmset -g live | grep SleepDisabled大多数用户日常不需要这些命令。它们更适合用来调试、验证状态,或者在应用被强制退出后恢复现场。
什么时候直接用 pmset
只有在你明确想用终端控制,并且能记得恢复设置时,才建议直接用 pmset。
离开前,长任务需要继续跑:
sudo pmset -a disablesleep 1任务结束后:
sudo pmset -a disablesleep 0风险在于这个状态可能比任务活得更久。如果你运行了禁用命令,却忘记关掉,Mac 后面会继续表现得“不太正常”。一次性、可控的场景可以这么做;反复跑 AI agent 的日常工作,还是可见的菜单栏开关更安全。
常见坑
坑 1:把“屏幕熄灭”和“系统休眠”混为一谈
屏幕变黑不等于 Mac 睡了。你的屏幕可以关闭,但进程仍然在跑;也可能屏幕早就黑了,系统随后进入休眠。对后台任务来说,真正要关心的是系统休眠。
坑 2:以为 caffeinate 一定能解决合盖休眠
caffeinate 适合阻止空闲休眠。合盖行为更严格,可能打断你最想保住的那类本地任务。
坑 3:忘记恢复命令
如果你直接用过 pmset,现在想恢复正常行为,运行:
sudo pmset -a disablesleep 0坑 4:合盖后放进包里继续发热
如果 Mac 合盖后还在认真工作,它仍然会使用 CPU、网络、磁盘和电池。尤其在没接电源、放进内胆包或背包前,要注意温度和电量。
坑 5:所有任务都强行防休眠
不是每个任务都值得覆盖系统休眠。如果任务可以恢复、重跑,或者本来就适合放到云端,正常休眠反而是更好的默认选择。
排查流程
| 现象 | 先检查什么 | 处理方式 |
|---|---|---|
| 合盖后 Mac 还是睡了 | Macchiato 是否打开?helper 是否完成授权? | 打开 Macchiato,并在系统设置里批准 helper |
| Mac 现在不正常休眠 | 休眠是否还被禁用? | 运行 sudo pmset -a disablesleep 0,或关闭 Macchiato |
| 不确定 Macchiato 是否生效 | 看菜单栏状态,或检查 pmset -g assertions | 先关再开,确认任务开始前处于正确状态 |
| 电池异常掉电 | 可能仍在禁用休眠,或后台进程还在跑 | 恢复休眠,并检查正在运行的任务 |
| 终端命令之前有用,现在没用 | shell 会话、权限或系统状态变了 | 频繁切换时改用 Macchiato |
安全检查清单
合盖前,如果 Mac 还要继续跑任务,先确认:
- 长任务或高 CPU 任务尽量接电源。
- 不要把正在高负载运行的 Mac 放进密闭包里。
- 确认任务真的需要在本地继续运行。
- 任务结束后关闭 Macchiato。
- 状态不确定时,用
sudo pmset -a disablesleep 0恢复正常休眠。
实用的平衡点是:任务确实需要继续时让 Mac 保持唤醒;其他时间,让 macOS 继续负责电池和散热保护。
常见问题
Mac 怎么不休眠?
如果是开盖状态下的临时任务,可以在终端运行 caffeinate。如果是 MacBook 合盖继续运行,比如 Codex、Claude Code、本地 AI agent 或长时间构建,建议用 Macchiato,或者运行 sudo pmset -a disablesleep 1,任务结束后再用 sudo pmset -a disablesleep 0 恢复正常休眠。
MacBook 合盖后怎么不休眠?
用 Macchiato 这类合盖防休眠工具,或者直接运行 sudo pmset -a disablesleep 1。记得结束后关闭开关,或运行 sudo pmset -a disablesleep 0。
caffeinate 能让 Mac 合盖不休眠吗?
caffeinate 主要用于阻止系统在开盖、空闲状态下睡眠。合盖行为更严格,尤其在电池供电时,不建议只依赖 caffeinate。合盖继续运行更适合用 Macchiato 或 pmset 控制。
Codex 跑任务时,怎么避免 Mac 休眠打断?
从系统层面让 Mac 保持唤醒。启动 Codex 任务后打开 Macchiato,任务结束后关闭。Codex 本身不需要特殊的休眠命令,关键是运行 Codex 的 Mac 不能睡。
Claude Code 合上 MacBook 后怎么继续运行?
合盖前打开 Macchiato,或者运行 sudo pmset -a disablesleep 1。Claude Code 任务完成后,用 Macchiato 关闭防休眠,或运行 sudo pmset -a disablesleep 0。
为什么 AI Agent 会在 Mac 休眠后停止?
大多数本地 agent 依赖本机 shell、文件系统、浏览器、本地服务器或测试进程。macOS 一旦休眠,这些资源可能暂停、断开或停止推进。
合盖不休眠会伤 Mac 吗?
短时间、可控地使用通常没问题,但不应该长期当作默认状态。长时间合盖运行会消耗电量并产生热量,尤其是在没接电源或放进包里的时候。
恢复 Mac 正常休眠的命令是什么?
运行 sudo pmset -a disablesleep 0。这是禁用休眠后恢复正常睡眠行为的命令。
为什么用 Macchiato,而不是每次敲终端命令?
Macchiato 提供一个看得见的一键开关。你更容易知道当前 Mac 是否允许正常休眠,也更不容易在 AI agent、构建或脚本结束后忘记恢复。
相关指南
- Codex 使用指南
- 并行 Code Agent 详解
- 2026 年最佳 Vibe Coding 工具
- 2026 年 15 款最佳 AI 编程工具
- Claude Code 如何用于 Jupyter 数据科学工作流