常见问题

关于权限、行为边界、兼容性和卸载的说明。能直说的我们直说。

它会偷看我的东西吗?

不会。它不需要辅助功能、屏幕录制、自动化、完全磁盘访问权限——这些在 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、磁吸配件靠近。这些在「不做什么」里有完整说明。

还没解决?

先看看问题反馈页面,上面有收集诊断信息的方法——附上诊断报告的反馈能快很多。

去问题反馈