合上盖子出门,让 Mac 上的 agent 继续跑
agent 跑到一半你要出门。合上笔记本,它就停了 —— 而 caffeinate 在这件事上帮不了你。
先说为什么 caffeinate 没用
大多数人第一反应是 caffeinate -i, 然后发现合盖照睡不误。这不是命令用错了:caffeinate 发的是一个「别因为闲置而睡」的 power assertion,而合盖是一个显式的睡眠请求 —— 系统把它当成你主动下的命令,任何 assertion 都盖不过去。
所以 caffeinate 能防的是「泡杯咖啡回来屏幕黑了」,防不了「合盖装包走人」。这两件事在 macOS 里走的是两条路。
推荐:Amphetamine
App Store 上的免费应用,作者 William Gustafson 从 2014 年做到现在。永久免费、无广告、无内购 —— 这在「免睡眠」这类工具里不多见。
对这件事关键的是它的合盖模式(Closed-Display Mode): macOS 原生的 clamshell 要求你接着电源、外接显示器和键盘,缺一样就睡; Amphetamine 调公开 API 把这几条限制关掉,不插电、不接显示器,合上盖子照样醒着。

比命令行强在三件事:菜单栏有图标,一眼知道现在开着没;能设定时(跑两小时自动撤); 能绑条件(比如「这个 app 在跑就别睡」)。出门前点一下、回来关掉,这个流程它顺, 底下那个命令不顺。
不想装 app:一条命令
要让合盖之后系统继续跑,得关掉系统睡眠本身:
sudo pmset -a disablesleep 1-a 是「所有供电方式都算」, 插电和用电池都生效。改完 pmset -g 能看到当前设置。
用完记得关回去:
sudo pmset -a disablesleep 0- 它关的是系统睡眠,不只是合盖睡眠。开着的时候机器一直醒着,不是「合盖才不睡」。
- 没有计时器,也没有菜单栏图标。不像 caffeinate 关掉终端就恢复 —— 你不手动关,它一直在。
- 合盖 + 不插电 + 满载 = 散热最差的组合。铝壳合上就没了大半散热面积,长时间跑重活会烫、会降频。这条对 Amphetamine 同样成立。
- Apple 没有公开文档说明这个参数。当临时手段用,别写进开机脚本。
那 caffeinate 什么时候用
盖子开着、只是怕它闲置睡过去的时候。它最好使的形态是挂在一条命令上 —— 命令跑完自己就撤了,不用记得关:
caffeinate -i npm run build常用的几个标记:-i 防闲置睡眠、-d 防屏幕睡眠、-m 防硬盘睡眠、-s 只在插电时防系统睡眠。 也可以 -t 3600 顶一小时。
配合 herdr 用
这套组合拳的意义在于:机器不睡了,agent 的进程就还在 herdr 的 pane 里跑着。 你人在地铁上,用手机开 herdr-web 就能看它到哪一步了 —— 面板一览里那一行 会告诉你它是在跑、跑完了,还是在等你回话。
出门前值得顺手做的两件事:确认机器接着电源(能插就插,散热和续航都省心), 以及在 herdr 里把长任务放进独立的 pane,别跟你随手敲命令的那个混在一起。
sudo pmset -a disablesleep 0。