为什么需要它
你以为它睡了,它没有。
把外接显示器当服务器、带出门的 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 里点「知道了」恢复原样时就会一并还原。
它收费吗?
不收费,没有广告,没有内购,没有遥测,没有账号。它也不联网——除了你自己去下载它那次。