为什么需要它
你以为它睡了,它没有。
把外接显示器当服务器、带出门的 Mac,睡眠这件事有三层机制在跟你作对。 市面上的工具通常只处理其中一层——杀了一批进程,然后告诉你「搞定了」, 结果键盘灯还亮着。
系统设置本身就不许睡
disablesleep=1、sleep 0 —— 这是最高优先级的一层,也是绝大多数工具忽略的一层。开着它的时候,杀再多进程也睡不着。
程序在撑着不睡
任何一个 App 都可以向系统申请「别让我睡」。播放中的 Chrome、跑着任务的 Electron 应用、甚至某些系统进程都会。这层只能靠终止持有者来解。
网络唤醒
网卡随时可能把机器摇醒。这是内核层的事,只能关掉 womp 来解。
无头骑士大师按 L1 → L2 → L3 的顺序依次处理,并且每一步都读回真实状态来确认。 做不到的事,它会直说做不到,而不是假装成功。
怎么用
出门前,四步。
全程只有一个窗口。没有设置页要翻,没有模式要选,就是点一下。
点一下菜单栏图标
图标是个公文包。在家时是描边的,程序运行中不需要找 Dock,因为它压根没有 Dock 图标。
点「开始外出模式」
它会扫出所有正在阻止睡眠的程序,逐个列给你看,附上原因和已经撑了多久。10 秒倒计时,你随时可以反悔。
看到「可以拔掉显示器了」
这是一个动作指令,不是状态汇报。绿勾下面列着已经完成的事:关了几个程序、锁了什么设置、关了蓝牙。拔线,然后它自己睡过去。
回来插上线,点图标看报告
这次很干净,还是被唤醒了几次、几点几分、因为什么。报告里只给一条你能照着做的建议。
它做什么
出门时会做的九件事。
按顺序执行。哪一步失败,它会告诉你失败在哪,并让你决定要不要继续。
关掉阻止睡眠的程序
扫出所有持有睡眠断言的进程,告诉你它们在撑什么、撑了多久,然后按顺序退出。退不掉就再用力一次。
锁定系统睡眠设置
关掉 disablesleep、把空闲睡眠改回正常、清掉 womp、powernap、tcpkeepalive,让 L1 这层彻底放行。
关闭蓝牙
关掉蓝牙控制器。顺手解决接力、隔空投送、Apple Watch 解锁、连续互通相机等等一整串后台唤醒源。
暂停 Time Machine
备份任务本身就是阻止睡眠的主力之一。出门前先暂停,回来再恢复。
关闭共享服务
按端口监听判断,而不是按开关:445、5900、548 没人监听,才算真的关掉了。
清掉定时唤醒
那些「明早七点自动唤醒一次」的系统任务会一个一个把机器叫起来,出门时不该留着。
拔线后自动睡眠
按显示器 ID 判断你拔的是哪块屏,不是数数量——这是实机踩过坑之后改的写法。倒计时结束就请求睡眠。
确认真的睡着了
请求睡眠之后不是直接切状态,而是回读系统日志确认真的进入了睡眠。没睡成就重试,最多三次,然后老老实实停在原地告诉你。
回来时全部恢复原样
每项独立恢复,单项失败不影响其他项。万一有项恢复不了,快照会被保留——下一次不会拍到一个已经被改脏的「原始设置」。
回来之后
三种唤醒,只有一种值得打扰你。
macOS 的唤醒日志里混着三种东西。把它们混为一谈会让你每次出门都焦虑, 所以无头骑士大师把它们分开算:
判定规则建立在真实日志样本上,并且有排除规则兜底: 刚插上显示器那一下的唤醒不算,因为你人就在旁边。误报一次,你下次就不信它了。
它不做什么
有些事它做不到,说在前面。
这个产品第一版在真机上「一次都没成功」——软件界面显示一切正常, 实际键盘灯一直亮着。复盘之后定了规矩:宁可说做不到,不许说假话。 所以下面这些限制,我们写在最显眼的地方,而不是藏进 FAQ。
- 硬件按键唤醒拦不住。键盘上任意一个键、触控板被压、电源键、Touch ID——这些是硬件级的,软件没有介入的余地。
- 关掉蓝牙后「离线查找」会失效。机器真丢了、对方不开机,就定位不到了。这一条请你自己权衡。
- 关闭共享服务后,局域网访问不了。需要别人从网络访问这台机器的话,别用这个模式。
- 定时唤醒任务只取消,不恢复。回来之后那些定时任务需要你自己重设。
- 没有 Apple 开发者签名,没做公证。第一次打开会被 Gatekeeper 拦一下,需要右键 → 打开。往后正常双击。
- 移动 App 位置会让开机自启失效。如果你把它从「应用程序」里挪走,记得回去重新勾一次。
关于「关程序」的诚实说明
关闭程序可能丢失未保存的内容,所以每次都会先列出清单、给你 10 秒反悔, 并且在检测页写明原因。能关的关,关不掉的停下来问你要不要继续, 绝不在报告里假装都成功了。
开源
源码就摆在那里。
这个 App 的全部代码都在 GitHub 上,MIT 许可。你可以自己编译,也可以先看看它到底碰了什么—— 一个要改你系统睡眠设置的工具,源码不该藏起来。
下载
三分钟装好。
下载并拖进「应用程序」
DMG 里就是「无头骑士大师」。拖到左边「应用程序」文件夹里,完事。
第一次打开:右键 → 打开
没有开发者签名,macOS 会拦一下。在「应用程序」里右键点图标 → 打开 → 再点一次「打开」。之后就正常双击了。
授权一次,仅此一次
修改系统睡眠设置需要管理员权限。输入一次密码,之后不再询问。通知权限可以拒绝,不影响核心功能。
21360f2acd4ea44ca97c5e7a8e43c2d619d98a92d4070403a1a6aac20c82c97b常见问题
还有疑问?
完整的问答在常见问题页面,这里是最常被问到的几条。
它会偷看我的东西吗?
不会。它不需要辅助功能、屏幕录制、自动化、磁盘访问权限——这些在 macOS 上都是重权限,它一个都没要。
它只申请两样东西:一次管理员密码(装后台服务用,装完就不再问),以及通知权限(可以拒绝,核心功能不受影响)。
所有状态和历史报告都存在你自己机器的 ~/Library/Application Support/HeadlessKnightMaster/ 下,不上传任何地方。
它怎么知道有没有被唤醒?
出门时记一个日志时间戳,回来时读 pmset -g log 里从那个时间点往后的睡眠/唤醒记录,按「暗唤醒 / 通知唤醒 / 真实唤醒」分类。
中途 App 被杀、系统重启、或者日志滚动都不影响——状态文件在磁盘上,时间锚点也在。
没插显示器,只有一台 MacBook 怎么办?
也能用。拔线判断是按显示器 ID 做的,不是数数量,所以内置屏被拆掉、残影屏顶上来的情况也认得出来。
如果你的显示栈特别古怪,拔线页上还有一个「现在就让电脑睡眠」的按钮,不会把你卡在这一页出不了门。
怎么卸载?
把 App 拖进废纸篓,然后执行下面这条命令清掉后台服务和状态文件:
sudo rm -f /Library/PrivilegedHelperTools/com.headlessknight.helper \
/Library/LaunchDaemons/com.headlessknight.helper.plist
sudo rm -rf ~/Library/Application\ Support/HeadlessKnightMaster
sudo rm -f ~/Library/LaunchAgents/com.headlessknight.app.plist
关掉蓝牙和共享服务等改动,在 App 里点「知道了」恢复原样时就会一并还原。
它收费吗?
不收费,没有广告,没有内购,没有遥测,没有账号。它也不联网——除了你自己去下载它那次。