指南

合上盖子出门,让 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 把这几条限制关掉,不插电、不接显示器,合上盖子照样醒着

Amphetamine 5.3.2 的关于窗口:药丸图标,说明它永久免费无广告无内购,下面显示已让这台 Mac 保持唤醒 10 天 18 小时
它会记账。这台机器已经被它按着醒了十天多 —— 这个数字也提醒你,忘了关它是真的会一直开着。

比命令行强在三件事:菜单栏有图标,一眼知道现在开着没;能设定时(跑两小时自动撤); 能绑条件(比如「这个 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,别跟你随手敲命令的那个混在一起。

不管用哪个办法,回来记得撤 —— 机器根本没睡过,电池一直在掉。 Amphetamine 点一下就完事;命令那条是 sudo pmset -a disablesleep 0

Render diagnostics