README.zh-CN.md

June 2, 2026 · View on GitHub

English  ·  简体中文  ·  Español  ·  日本語  ·  Français  ·  Deutsch

本翻译由社区或机器生成,可能落后于英文版 README。请以英文版本为准。请参阅 English README

Sleepless: keep your Mac awake with the lid closed

合盖、使用电池、没有外接显示器,照样让 MacBook 保持唤醒。
一个菜单栏开关,配自动关闭定时器和电量下限截止,让你永远不会把电耗光。

CI Release Downloads Stars License: MIT Platform: macOS 26, Apple Silicon

Build provenance: attested (SLSA) Checksums: SHA-256 Telemetry: none Install: Homebrew cask

Sleepless demo: flip the switch, set an auto-off timer, drag the battery-floor slider

Note

合上盖子会让 Mac 睡眠,基于 caffeinate 的应用(KeepingYouAwake 之类)从设计上就改变不了这件事。Sleepless 切换的是唯一能做到的那个设置,pmset disablesleep,再配上安全机制,所以你大可放心地把它忘掉。

安装

brew install --cask aboudjem/tap/sleepless
/Applications/Sleepless.app/Contents/Resources/grant.sh   # one-time passwordless grant
其他方式
直接下载获取最新发布版本,解压到 /Applications,然后在 系统设置 → 隐私与安全性 → 仍要打开 里批准它(它是临时签名 ad-hoc)。
从源码构建git clone https://github.com/Aboudjem/Sleepless.git && cd Sleepless && ./install.sh(不会有 Gatekeeper 提示)。

然后点击菜单栏里的咖啡杯,拨动开关,合上盖子。

功能特性

一个开关点击菜单栏里的咖啡杯,拨动开关。
⏲️自动关闭定时器1 小时或 2 小时,带实时倒计时,到点关闭。
🔋电量下限电池供电时在 5–50% 自动关闭(默认 15%)。
🪫Low Power Mode电池供电下若 LPM 开启,自动让位。
🖥️无需转接合盖、电池供电即可。不用显示器,不用 HDMI 插头。
🚀登录时启动可选,默认关闭,始终以关闭状态启动。
🪶小巧且原生一个 AppKit 文件。无 Dock 图标、守护进程或 kext。

菜单栏图标: 空杯 = 关闭 · 满杯 = 唤醒 · 满杯加一个点 = 电池供电下唤醒(自动关闭生效中)。

Sleepless 与其他方案对比

SleeplessAmphetamineKeepingYouAwakecaffeinate
合盖、无显示器时保持唤醒✅ ¹⚠️ ²❌ ³
电池供电✅ 开盖⚠️ ⁴
自动关闭定时器
低电量时自动关闭
开源✅ MIT❌ App Store✅ MITApple
价格免费免费免费免费

数据截至 2026-06。¹ 使用 pmset disablesleep 并把标志读回来;具体表现取决于硬件和 macOS 版本。² 有记载支持合盖显示模式,但被普遍反映会在电源切换时于 Apple Silicon 上失效(AE #28);应用本身闭源。³ 从设计上就做不到合盖唤醒,因为它封装的是 caffeinate#66)。⁴ caffeinate -i 可在电池供电下运行;-s 仅在接通电源时有效。

用它来……

  • 🤖 合盖跑完通宵任务:智能体运行、构建、渲染、ML 训练。
  • 📡 从包里共享一个热点。
  • ⬇️ 让大文件下载、上传或备份继续运行。
  • 🖥️ 让本地服务器或 SSH 会话保持可达。

Tip

设一个你信得过的电量下限(比如 20%)再加一个定时器,你就能放心走开,不用一直盯着电量。

工作原理

Sleepless 切换 pmset disablesleep(内核的 SleepDisabled 标志),把它读回来让菜单栏绝不撒谎,并在到达你的电量下限、进入 Low Power Mode、定时器结束或重启时把它还原。GUI 应用没法输入密码,所以安装程序会加一条范围严格限定的 sudoers 规则,只允许两条命令

<you> ALL=(root) NOPASSWD: /usr/bin/pmset -a disablesleep 0, /usr/bin/pmset -a disablesleep 1
  • 无法被放宽。 sudoers 按字面匹配参数,没有通配符。
  • 没有可劫持的东西。 没有守护进程、辅助脚本或 shell。它直接调用 /usr/bin/pmset
  • 始终可逆。 重启、电量下限、定时器,或 ./uninstall.sh(它会证明授权已经清除)。

验证一个下载,无需 Apple 账户:

shasum -a 256 -c SHA256SUMS
gh attestation verify Sleepless-*.zip -R Aboudjem/Sleepless

完整威胁模型、为何无法上架 App Store,以及审计指南:SECURITY.md · docs/AUDIT.md

常见问题

pmset disablesleep 在 Apple Silicon(M1/M2/M3)上还有效吗?

有效。pmset -a disablesleep 1 会在 Apple Silicon 上设置内核的 SleepDisabled 标志,已在 macOS 26.3 上第一手确认,能让 Mac 在合盖、电池供电下保持唤醒。用 pmset -g | grep SleepDisabled 验证(应读作 1)。说它“不再有效”的说法,通常描述的是 caffeinate 或基于 caffeinate 的应用,那是另一套机制。

为什么装了 Amphetamine 或 KeepingYouAwake,合盖时 Mac 还是会睡眠?

那些工具用的是 macOS 电源断言,它能停掉空闲计时器,却无法覆盖硬件层面的合盖触发。KeepingYouAwake 封装的是 caffeinate,做不到合盖唤醒(#66)。而 Sleepless 使用的 pmset disablesleep 可以。

合盖运行安全吗?会过热或耗光电池吗?

对于下载、同步、共享热点这类轻量、无人看管的任务来说是安全的。完全合盖下长时间高负载会限制散热气流,所以请自己掂量。电量下限、Low Power Mode 自动关闭和定时器都会在 Mac 电量见底之前把它停下来。

它需要 sudo、内核扩展或后台守护进程吗?

它需要一条范围严格限定的 sudo 授权(两条精确的 pmset 命令),这样 GUI 应用才能在不弹密码提示的情况下切换设置。没有内核扩展,也没有守护进程。整个应用就是一个 AppKit 文件。

怎样停止它或移除它?

把开关关掉,或者让定时器或电量下限替你关掉它,正常睡眠就会恢复。重启同样会把它重置。./uninstall.sh 会移除应用、登录项和 sudoers 授权,然后证明授权已经清除。

为什么它没有公证?

它是一个个人的开源工具,没有付费的 Apple Developer ID,所以采用临时签名(ad-hoc)。从源码构建可以跳过 Gatekeeper,或者对预构建的应用使用 仍要打开。公证步骤记录在 docs/AUDIT.md 中。

参与贡献

欢迎提交 Issue 和 PR,尤其欢迎翻译以及来自其他硬件的测试报告。请参阅 CONTRIBUTING.md行为准则。Sleepless 会刻意保持小巧。

许可证

MIT © 2026 Adam Boudjemaa。

如果 Sleepless 帮你省去了一趟终端,点个 ⭐ 能帮助更多人发现它。