它会偷看我的东西吗?
不会。它不需要辅助功能、屏幕录制、自动化、完全磁盘访问权限——这些在 macOS 上都属于重权限,它一个都没申请。
它只申请两样:
- 管理员密码——仅在安装后台服务时输入一次。用于改
pmset睡眠设置这类必须 root 的操作。 - 通知——可以拒绝。拒绝后强力模式到点时不弹横幅提醒,其余功能完全正常。
蓝牙权限在 macOS 15 上是可选的:拿到就用私有 API 关,拿不到就退回系统命令并如实报告结果。
所有状态、快照和历史报告都存在你本机 ~/Library/Application Support/HeadlessKnightMaster/ 下。App 不联网,不上传任何东西。
需要哪些权限?为什么我看到的是系统弹窗?
你在系统设置里看到的弹窗是 macOS 自己发的,App 只是触发了它。三个可能出现的:
- 管理员密码:装后台守护进程
com.headlessknight.helper时。装完就不再问。 - 通知:首次发通知时。可以拒绝。
- 蓝牙:macOS 15 上关闭蓝牙需要授权。可以拒绝,退回命令行方式执行。
如果哪个弹窗一直挡着,点「拒绝」也能继续用——App 会在报告里把这件事标出来,而不是假装成功。
它怎么知道有没有被唤醒?
出门时记一个日志时间戳(logAnchor),回来时读 pmset -g log 里从那个点往后的睡眠与唤醒记录,按行首特征分类:
- 行首
DarkWake→ 暗唤醒 DarkWake to FullWake且持续不足 5 秒 → 通知唤醒due to UserActivity/ HID / 全唤醒超过 5 秒 → 真实唤醒
判定区间从出门后第一条 Entering Sleep 开始,到最后一次唤醒事件结束。如果一条都没有,报告会直说「这次没睡成」,不会含糊过去。
日志会滚动,所以锚点是必需的;时间差按 UTC 算,跨时区也不会算错。
为什么我的电脑不睡?
最常见的原因是 disablesleep=1——系统在全局层面禁止了睡眠。这一层优先级最高,杀多少进程都没用,因为它压根不靠进程来阻止。
其次是进程断言:任何一个 App 都能申请「别让我睡」。播放音频的 Chrome、跑着任务的 Electron 应用、某些系统进程都算。
第三层是网络唤醒(womp),内核级的,只能关设置。
你可以用 App 自带的体检命令看自己机器上具体是谁在挡:
/Applications/无头骑士大师.app/Contents/MacOS/Knight --diagnose
它会打印出所有持有睡眠断言的进程、持续时长、当前的 pmset 设置、蓝牙状态和定时唤醒任务。只读,不改任何东西。
只插一块屏 / 只用 MacBook 行不行?
都可以。拔线判断是按显示器 ID 做的,不是数数量:
- Mac mini / Studio(单屏):拔掉后在线显示器集合为空 → 成立
- MacBook + 外接屏:只剩内置屏 → 外接屏的 ID 消失了 → 成立
- 无头 MacBook(内置屏被拆):残影屏顶上时数量仍是 1,但基线 ID 不见了 → 成立
另外还比对了 EDID 的厂商与型号,防止影子屏沿用原屏 ID 的极端情况。
如果你的显示栈特别古怪,拔线页上还有一个「现在就让电脑睡眠」的按钮兜底,不会把你卡在这一页出不了门。
关蓝牙有什么影响?
关掉蓝牙,等于一次性关掉一整串后台唤醒源:接力、隔空投送、Apple Watch 解锁、Sidecar、通用剪贴板、连续互通相机、即时热点、蓝牙键鼠,还有离线查找。
需要特别提醒的是离线查找:蓝牙关着的时候,如果机器丢了且对方不开机,就定位不到了。这是硬件层面的取舍,App 没有办法两全。
如果出门时蓝牙耳机正连着,开始前会提示你「关闭蓝牙会断开耳机」。
强力模式是什么?需要手动开启吗?
需要手动开启,默认是关的。开关在 App 的设置页 → 强力模式,打开之后才生效。
开启后,外出期间如果机器连续醒着满 10 分钟,它就强制让机器睡下去,动手前有 30 秒倒计时可以取消。
默认关是因为它会在你其实还坐在电脑前的时候打断你——这是必须你自己点头的开关,不该替你做主。
有两个例外它不会动手:显示器插着的时候,或者有远程登录会话的时候——这时候你显然在用它。
它存在的意义是兜住那些「请求了睡眠但没真睡着」的情况,以及被误触弄醒之后没人管的情况。
背包里挤压键盘或触控板,会不会把它弄醒?
会。而且软件拦不住——按键和触控板是硬件级输入,系统一收到就把机器叫醒了,任何 App 都没有介入的余地。
想从物理上避免,请给它加一层遮挡:套一个 A 面水晶壳,或者用 3D 打印一块盖板盖住键盘和触控板。这一步不做,误触唤醒就一定会发生。
这个软件要解决的是另外两件事:一是防止「假睡眠」——界面说睡了、键盘灯还亮着;二是误触把它弄醒之后,再把它按回睡眠(需要先手动打开强力模式)。
所以正确的组合是:物理遮挡挡住误触 + 强力模式负责按回去。缺一半都还会漏。
忘记结束外出模式怎么办?
插上显示器时(这个动作本身会唤醒机器),App 会弹一次通知提醒你「欢迎回来,别忘了结束外出模式」。
如果通知被无视了,菜单栏图标会一直是实心的(外出中状态)。点它就能看到报告并结束模式,App 会按快照把一切恢复原样。
万一上一次退出时恢复失败,快照会被保留而不是清掉,首页会显示「上次没能恢复原设置」和一个「重试恢复」按钮。这是为了避免一个会自我固化的错误:一旦快照被清掉,下一次拍到的「原始设置」就是已经被改脏的值,从此再也恢复不回来。
怎么卸载?
把 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
蓝牙、共享服务、Time Machine 这些改动,在 App 里正常点「知道了」恢复时会一并还原。如果卸载前没恢复过,手动打开蓝牙、重新启用共享服务即可。
它收费吗?
不收费。没有广告、没有内购、没有付费版、没有遥测、没有账号,也不需要联网——除了你下载它那一次。
这是一个自己做的工具,能用就行。
兼容性
- 系统
- macOS 13 Ventura 及以上
- 架构
- Apple Silicon(arm64)
- 形态
- 菜单栏 App,没有 Dock 图标
- 网络
- 不需要
Intel Mac 暂时没有构建版本。
还有一部分功能是硬件层面的、软件管不了的:键盘任意键唤醒、触控板被压、电源键、Touch ID、磁吸配件靠近。这些在「不做什么」里有完整说明。