调研时间:2026-10-13;调研方式:公开网络资料检索(GitHub 仓库页、官方文档、技术博客)。 约定:Star 数据为 2026-10-13 检索当日快照;凡检索中未能确认的信息统一标注为「未核实」,不做臆测;明确区分「开源」与「免费但闭源」。
Summary(摘要)
- caffeinate 是 macOS 官方自带工具(
/usr/bin/caffeinate,有官方 man page),通过向 IOKit 电源管理子系统申请 power assertion(IOPMAssertionCreateWithName等 API)阻止休眠。常用参数-d/-i/-m/-s/-u/-t/-w。它不能阻止笔记本合盖休眠。 - macOS 开源明星项目是 KeepingYouAwake(~6.9k stars,MIT,活跃维护,本质是 caffeinate 的菜单栏 GUI 封装)。经典 Caffeine(Lighthead,2006)在 2018 年开源后由社区继续维护。2025–2026 年涌现出一大批合盖防休眠开源小工具(lidless、decaf、stayawake 等),多由 AI coding agent 长任务场景驱动。
- Owly(joaolourencoo/owly):该 GitHub 地址不存在(404),无法核实;同名开源实现为 aarontaken/owly(2026 年新项目,仅 3 stars);Mac App Store 上的 Owly(FIPLAB)是闭源免费软件。
- Windows:开源首选 Microsoft PowerToys(含 Awake,MIT,~139k stars);轻量开源有 CHerSun/NoSleep(The Unlicense,269 stars)、stewardfurnace/caffeine-for-windows(MIT,Zhorn Caffeine 的开源复刻)。任务中提到的 “Insomnia(djoslin0)“在 GitHub 上无此仓库;经典 Windows 版 Insomnia 是 djoslin 的免费闭源小工具。
- Linux:caffeine-ng 的 GitHub 仓库已于 2022-11 归档,迁移至 Codeberg 后低活跃但未死(过去一年 22 次提交,GPL-3.0);GNOME Shell Caffeine 扩展活跃(支持到 GNOME 50);系统自带
systemd-inhibit是最直接的"Linux 版 caffeinate”;Wayland 有 Rust 写的 caddyglow/caffeinate 托盘抑制器。 - 开发者库:Python wakepy(MIT,253 stars,活跃)、Rust keepawake crate(MIT,月下载 ~2.9 万)、usrivastava92/wakeup(MIT,Rust,参数与 caffeinate 完全兼容的跨平台 CLI,可作库用)。Go、Java 均无主流专用库(Java 有 mrrpiano02/my-caffeine-app 小项目)。
- 特殊场景:NAS/服务器/Docker/CI 本质都是"宿主机防休眠”,用各平台自带方案即可(systemd-inhibit / caffeinate / PowerToys Awake),无专门开源项目;合盖场景是 macOS 开源工具的主战场。
1. caffeinate 命令本身:工作原理、参数与官方文档
工作原理
caffeinate 通过向系统电源管理子系统创建断言(create assertions)来改变系统休眠行为(man page 原文:“caffeinate creates assertions to alter system sleep behavior”)。底层是 IOKit 电源管理框架的 power assertions 机制,应用层 API 为 IOPMAssertionCreateWithName(断言类型如 PreventUserIdleSystemSleep、PreventUserIdleDisplaySleep 等)。如果指定了 utility,断言在该工具运行期间持续;否则断言持续到 caffeinate 进程退出——进程退出即自动释放,无需清理。
各平台原生机制对照(wakeup 项目文档整理的映射关系):
| caffeinate 参数 | macOS(IOKit 断言) | Linux(systemd-inhibit) | Windows(Power Request API) |
|---|---|---|---|
-d | kIOPMAssertPreventUserIdleDisplaySleep | (桌面相关,无通用等价) | PowerRequestDisplayRequired |
-i | kIOPMAssertPreventUserIdleSystemSleep | --what=idle | PowerRequestSystemRequired |
-m | kIOPMAssertPreventDiskIdle | (无等价) | (无等价) |
-s | kIOPMAssertPreventSystemSleep | --what=sleep | PowerRequestSystemRequired |
-u | kIOPMAssertUserIsActive | (无等价) | (无等价) |
常用参数
-d:防止显示器休眠-i:防止系统空闲休眠(无参数时的默认行为)-m:防止磁盘休眠-s:防止系统睡眠(默认仅 AC 供电时有效;加-b则电池供电也有效)-u:声明用户活跃(并唤醒显示器)-t N:持续 N 秒后自动退出-w pid:等待指定进程退出(wakepy 项目文档确认该参数存在;macOS 10.9 之前疑似缺失)
典型用法:
caffeinate # 一直保持唤醒,Ctrl+C 结束
caffeinate -u -t 3600 # 保持 1 小时
caffeinate -i make build # 编译期间不休眠
caffeinate -s caffeinate -t 7200 & # 后台运行示例
pmset -g assertions # 查看当前生效的断言
是否有官方文档
有。Apple 随 macOS 发布 caffeinate(8) man page(BSD System Manager’s Manual 第 8 节,位于 /usr/bin/caffeinate),Apple Developer Library 也曾托管该 man page(现可通过 Web Archive 访问)。这是官方文档。
重要限制:合盖
caffeinate 不能阻止 MacBook 合盖休眠(clamshell sleep)。KeepingYouAwake 的 README 明确回答 “Does it work on a MacBook with a closed lid? No."——合盖是另一套独立机制。合盖防休眠需要 sudo pmset -a disablesleep 1(全局开关,有风险,见第 6 节)或 Apple Silicon 外接显示器+电源时的官方 clamshell 模式。
来源:
- https://www.manpagez.com/man/8/caffeinate/osx-10.7.php(man page,index)
- KeepingYouAwake README 引用的 Apple 官方 man page 归档:https://web.archive.org/web/20140604153141/https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/caffeinate.8.html
- https://github.com/tiredjon/nosleepclaude(IOPMAssertion 机制说明,index)
- https://github.com/usrivastava92/wakeup(跨平台断言映射表,verified live 2026-10-13)
- https://github.com/newmarcel/keepingyouawake/blob/HEAD/README.md(合盖限制说明,index)
2. macOS 平台开源项目(重点)
2.1 KeepingYouAwake(newmarcel/KeepingYouAwake)—— macOS 开源首选
- 仓库:https://github.com/newmarcel/KeepingYouAwake
- Star:约 6,900(检索当日仓库页显示 6,902;2026-09-30 第三方档案记录 6,950)
- 许可证:MIT
- 维护状态:活跃。仓库 2026-08-15 仍有 push;当前版本 1.6.8 发布于 2025-09-12(此前 1.6.7 为 2025-07-18);未归档;作者 Marcel Dierkes 自 2014 年起维护
- 语言:Objective-C;官网 https://keepingyouawake.app/;支持 macOS 10.13+
- 与 caffeinate 的关系:本质是 caffeinate 的菜单栏 GUI 封装(README 原话:“The app is a small wrapper around Apple’s
caffeinatecommand line utility.") - 功能:一键阻止休眠;预定义时长或无限期;
brew install --cask keepingyouawake;Sparkle 自动更新;灵感来自已停更的经典 Caffeine - 局限:不支持合盖防休眠(官方明确)
- 来源:仓库页 + README + https://github.com/coreyhaines31/midnightoil/blob/HEAD/competitor-profiles/keepingyouawake.md
2.2 Owly —— 地址核实结论
- 任务中提到的
joaolourencoo/owly在 GitHub 上不存在(直接访问返回 404),其 star/许可证/维护状态均无法核实。可能的情况:仓库已删除、改名,或任务中的用户名/仓库名有误。 - 现存同名开源项目:aarontaken/owly(https://github.com/aarontaken/owly)——2026-05 发布 v1.0.0 的单文件 Swift(~700 行)菜单栏应用,仅 3 stars,极小众。两种模式:IOKit 断言防空闲休眠(无需权限)/ 强力模式
pmset disablesleep(一次性管理员授权,sudoers 严格限定两条 pmset 命令);退出自动恢复。LICENSE 文件存在但具体类型未在检索中确认。 - 同名闭源产品:Owly(FIPLAB Ltd)——Mac App Store 免费应用(id882812218),闭源,2.5 版(2026-02,重建适配 macOS Tahoe),App Store 4.7/5(382 评价),支持智能触发器/定时。
2.3 其他 macOS 开源菜单栏 / 命令行工具
经典 Caffeine 的开源延续(重要背景):
- 原版 Caffeine 由 Tomas Franzén(Lighthead Software)2006 年创建,2018 年以开源许可证释出源码,由 Michael Jones / IntelliScape Computer Solutions 继续维护,2022 年再次现代化。菜单栏图标素材在 domzilla/Caffeine 以 MIT 发布。
- iannuttall/caffeine(https://github.com/iannuttall/caffeinate):独立 Swift 重写版,MIT,macOS 14+,约 61 天前更新(活跃)。保留经典一键切换,新增 Agent Watch(Claude Code/Codex 工作时自动保持唤醒、等待输入时释放)、定时器、电池保护、合盖尽力模式、可查看其他阻止休眠的进程。
其他值得关注的开源项目:
| 项目 | 仓库 | 许可证 | 维护状态 | 一句话特点 |
|---|---|---|---|---|
| wakeup-mac | https://github.com/kartikk-k/wakeup-mac | MIT | 活跃(~99 天前) | in-process IOKit 断言(与 caffeinate 同机制,不起外部进程),倒计时 |
| ty-teo/stayawake | https://github.com/ty-teo/stayawake | MIT | 活跃(~134 天前) | 面向 AI agent;IOPMAssertion + 精确限定的免密 sudoers 实现合盖 |
| frikkern/insomnia | https://github.com/frikkern/insomnia | 未核实 | 活跃(~15 天前,2026 新项目) | 单文件 Objective-C 菜单栏应用,insomnia:// URL scheme 驱动 |
| Owlet | https://github.com/LushBinary/Owlet | 未核实 | 未核实 | IOKit 断言 + 可选合盖模式(pmset disablesleep)+ Sparkle 更新 |
| esyen | https://github.com/dhinsor/esyen | 未核实 | 未核实 | Python(rumps)封装 caffeinate+pmset,倒计时,退出即恢复 |
| nightcat | https://github.com/eliolewis77/nightcat | 开源免费(另有 $4.99 捐赠版) | 活跃(~19 天前) | 四档模式 + 合盖 + 安全网(定时关/低电量/过热策略),中英双语 |
| nosleepclaude | https://github.com/tiredjon/nosleepclaude | 未核实 | 活跃(~28 天前) | 极简开关,直接调 IOPMAssertionCreateWithName |
| wynnwu/nosleep | https://github.com/wynnwu/nosleep | 开源免费 | 活跃(~51 天前) | CLI(brew 安装),pmset disablesleep + 自动关闭定时器 + 15% 低电量熔断 |
合盖场景专用小工具(2025–2026 年集中涌现,多由 AI agent 长任务驱动,均开源):hord-brayden/lidless(拔电自动关防背包过热)、ch890333/ClosedLidGuard、NewTurn2017/vigil(CLI+热键)、bigbrainw/keepgoing、grishahq/decaf(agent 结束自动休眠)、sanamiy/awake(macOS 26+ 快捷键)、nstranquist/keepawake(Go)、stevenyu113228/keepawake(Bash+launchd 守护进程)、nicest-michael/keepawake(Swift)。
2.4 闭源对比项(注明:闭源,仅作对比)
| 产品 | 作者 | 价格 | 状态/版本 | 备注 |
|---|---|---|---|---|
| Amphetamine | William Gustafson | 免费 | 闭源;Mac App Store 独占;5.3.2(2023-11-10);4.8/5(3.2K 评价) | 功能最全(15+ 触发器、合盖模式、AppleScript);仅 helper 插件(Enhancer、Power Protect)在 GitHub 以 MIT 开源 |
| Lungo | Sindre Sorhus | $4 一次性(另有 Setapp) | 闭源;2.8.3(2026-09-15);4.8/5 | 设计极简主义,“focused features and great defaults” |
| Theine | Manuel Braun | 免费 | 闭源(Mac App Store id955848755) | 定时器、全局热键、低电量自动停用;明确声明合盖时不会阻止休眠 |
| Owly | FIPLAB Ltd | 免费 | 闭源(Mac App Store id882812218) | 智能触发器,4.7/5(382 评价) |
来源:
- https://github.com/iannuttall/caffeine(README + THIRD_PARTY_NOTICES.md,index)
- https://github.com/coreyhaines31/midnightoil/blob/HEAD/competitor-profiles/amphetamine.md(2026-09-30 档案,index)
- https://github.com/coreyhaines31/midnightoil/blob/HEAD/competitor-profiles/lungo.md(2026-09-30 档案,index)
- https://www.torrentmac.net/theine-3-4/(Theine 应用信息,index)
- https://github.com/coreyhaines31/midnightoil/blob/HEAD/competitor-profiles/owly.md(2026-09-30 档案,index)
3. Windows 平台
3.1 底层机制
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED):经典 Win32 API,线程级,进程退出自动释放。PowerCreateRequest / PowerSetRequest / PowerClearRequest:Vista+ 的 Power Request API,可用powercfg /requests查看。- Electron 应用可用
powerSaveBlockerAPI。
3.2 开源项目
| 项目 | 仓库 | 许可证 | Star(2026-10-13) | 维护状态 | 一句话特点 |
|---|---|---|---|---|---|
| PowerToys Awake | https://github.com/microsoft/PowerToys | MIT | ~139,000 | 活跃(v0.102 预览版 2026-10) | 微软官方工具集的防休眠模块:无限期/定时/保持屏幕常亮,托盘快捷切换 |
| CHerSun/NoSleep | https://github.com/CHerSun/NoSleep | The Unlicense(公共领域) | 269(verified live) | 公开未归档;v1.4.0+ 支持应用监控 | 极轻量(~180KB)托盘工具,每 10 秒调用 SetThreadExecutionState;可按监控应用自动启停;Scoop 安装;README 自述比 PowerToys 更轻、无需管理员权限 |
| stewardfurnace/caffeine-for-windows | https://github.com/stewardfurnace/caffeine-for-windows | MIT | 未在检索中给出 | 活跃(15 天前更新) | “Caffeine for Windows” 的开源复刻;README 明确声明与 Zhorn Software 无关;一键防休眠/灭屏/锁屏,托盘定时(1/2/4/8 小时),用官方 API 而非模拟按键,个人+商业免费 |
| stanley-projects/Insomnia | https://github.com/stanley-projects/Insomnia | 未核实 | 未给出 | 活跃(~35 天前,2026 新项目) | Electron 应用;powerSaveBlocker + 手动开关/进程监控/Claude Code hook 三信号;winget/scoop 分发 |
| little-insomniac/keep-computer-awake | https://github.com/little-insomniac/keep-computer-awake | 未核实 | 未给出 | 活跃(~62 天前) | Electron 跨平台(Win/Mac/Linux) |
| jNizM/stay-awake | https://github.com/jNizM/stay-awake | 未核实 | 未给出 | 未核实 | Windows 开源小工具 |
3.3 “Insomnia(djoslin0)“核实结论
- github.com/djoslin0/insomnia → 404,不存在,无法核实其开源状态。
- 经典 Windows 工具 “Insomnia”(djoslin 发布,约 2007 年):免费但闭源的便携小工具(窗口开着即防休眠;technibble 描述为 “small, freeware and portable application”),未公开发布源码。
- 注意区分:Kong/insomnia 是 API 客户端(与防休眠无关);nativescript-community/insomnia 是移动端插件。
3.4 闭源对比项(注明:闭源,仅作对比)
| 产品 | 作者/官网 | 价格 | 备注 |
|---|---|---|---|
| Caffeine(Zhorn Software) | https://www.zhornsoftware.co.uk/caffeine/ | 免费 | 闭源免费软件;便携(~14–40KB);经典 F15 按键模拟 / -stes(SetThreadExecutionState)模式;官网不提供源码 |
| Don’t Sleep | Nenad Hrg / https://www.softwareok.com/?Microsoft/DontSleep | 免费(含商业使用) | 闭源免费软件;阻止关机/待机/休眠/重启/注销/灭屏/屏保;定时器、CPU/网络条件触发、Please Sleep 模式;便携;v9.96+(2026-01 更新),支持 Win11/Server 2025 |
来源:
- https://learn.microsoft.com/.../windows/powertoys/(微软官方文档,index)
- https://www.ntcompatible.com/story/microsoft-powertoys-v010228140-preview-ships-commandline-tools-and-mouse-button-lock/(PowerToys 数据,index)
- https://github.com/CHerSun/NoSleep(verified live 2026-10-13)
- https://github.com/stewardfurnace/caffeine-for-windows(README,index)
- https://www.technibble.com/insomnia-repair-tool-of-the-week/(Insomnia 免费软件说明,index)
- https://betanews.com/article/keep-your-pc-awake-with-caffeine/(Zhorn Caffeine,index)
- https://www.softwareok.com/?Microsoft/DontSleep(Don’t Sleep 官网,index)
4. Linux 平台
4.1 caffeine-ng —— 已迁移、低活跃但未死
- 原 GitHub 仓库 https://github.com/WhyNotHugo/caffeine-ng:2022-11-06 被作者归档(只读),归档前 183 stars;README 标注已迁移。
- 现地址:https://codeberg.org/WhyNotHugo/caffeine-ng(Codeberg/Forgejo)。
- Star:Codeberg 上 13 stars(ecosyste.ms 数据)。
- 许可证:GPL-3.0(代码),图标 LGPL-3.0。
- 维护状态:低活跃但未死亡——过去一年 22 次提交、5 位提交者(commits.ecosyste.ms,约 1 个月前同步);40 个 open issues。
- 语言:Python;托盘常驻;全屏应用自动抑制或手动点击抑制;兼容实现
org.freedesktop.ScreenSaver的屏保(含 KDE)、gnome/mate-screensaver、XSS、Xorg+DPMS 等。2014 年 fork 自 Caffeine 2.4。
4.2 GNOME Shell 的 Caffeine 扩展 —— 活跃
- https://github.com/eonpatapon/gnome-shell-extension-caffeine
- 维护状态:活跃,支持 GNOME Shell 3.4 → 50(master 分支 v59 对应 GNOME 45–50;有用户实测 v60 在 GNOME 50 上 ACTIVE)。
- 功能:快速设置开关禁用自动挂起/屏保、滚动图标切换、定时器、通知、
gsettings命令行控制。Wayland 原生可用(扩展运行在 compositor 进程内)。 - 安装:extensions.gnome.org/extension/517/caffeine 或源码构建。许可证未在检索中确认。
4.3 系统自带方案
- systemd-inhibit(systemd 自带,无需安装)——“Linux 版 caffeinate"最直接的等价物:底层走 logind D-Bus Inhibitor 接口(
systemd-inhibit --what=idle:sleep:shutdown --who="backup" --why="nightly rsync" --mode=block rsync -a /srv/ /mnt/backup/ systemd-inhibit --list # 查看当前抑制锁org.freedesktop.login1.Manager)。注意:--what=idle仅对尊重 logind 的桌面环境有效;没有caffeinate -d的精确等价物。 - xdg-screensaver(xdg-utils 自带):
xdg-screensaver suspend <window-id>按窗口抑制屏保(X11 为主)。 - KDE:PowerDevil 自带电源管理与抑制支持;caffeine-ng 通过
org.freedesktop.ScreenSaver兼容 KDE。
4.4 Wayland 相关
- Wayland 空闲抑制依赖 compositor 实现的标准协议(idle-inhibit)与
org.freedesktop.ScreenSaverD-Bus API(GNOME/KDE 实现)。 - caddyglow/caffeinate(https://github.com/caddyglow/caffeinate):Rust 编写的 Wayland 专用空闲抑制器(注意:名字叫 caffeinate 但仅支持 Linux/Wayland,非跨平台复刻);daemon/client 架构(D-Bus IPC)、系统托盘、全局快捷键、自动关闭定时器、TOML 配置、CLI。更新于约 349 天前(低活跃)。
来源:
- https://github.com/WhyNotHugo/caffeine-ng(归档页,index)
- https://codeberg.org/WhyNotHugo/caffeine-ng(index)
- https://commits.ecosyste.ms/hosts/Codeberg.org/repositories/WhyNotHugo%2Fcaffeine-ng(提交统计,index)
- https://github.com/ivananishchuk/gnome-shell-extension-caffeine(README,index)
- https://manpages.ubuntu.com/manpages/bionic/man1/systemd-inhibit.1.html(man page,index)
- https://www.freedesktop.org/wiki/Software/systemd/inhibit(inhibitor 规范,index)
- https://evanhahn.com/systemd-inhibit-alternative-to-macos-caffeinate/(index)
5. 跨平台开发者库
| 语言 | 项目 | 仓库 | 许可证 | Star/热度(2026-10-13) | 维护状态 | 支持平台/后端 | 备注 |
|---|---|---|---|---|---|---|---|
| Python | wakepy | https://github.com/wakepy/wakepy | MIT | 253 | 活跃(2026 年多次提交) | Win: SetThreadExecutionState;macOS: caffeinate;Linux: D-Bus(GNOME/KDE/Cinnamon 的 SessionManager/ScreenSaver/PowerManagement) | API:keep.running(仅防挂起)/keep.presenting(防挂起+防锁屏);上下文管理器/装饰器;可白名单 Method;pip install wakepy;崩溃安全 |
| Rust | keepawake(segevfiner/keepawake-rs) | https://github.com/segevfiner/keepawake-rs | MIT | crates.io 月下载 ~28.8k(lib.rs);被 12 个 crate 依赖 | 活跃(53 天前更新) | macOS IOKit / Win SetThreadExecutionState / Linux D-Bus | 库 + CLI(cargo install keepawake -F bin,支持 -d/-i/-s/-w)+ 实验性 C 库 |
| Rust | wakeup(usrivastava92/wakeup) | https://github.com/usrivastava92/wakeup | MIT | 1(2026-07 新项目) | 活跃开发中(verified live) | macOS IOKit 全断言;Linux systemd-logind(-i/-s);Win Power Request API(-d/-i/-s) | 参数与 caffeinate 完全兼容(-dimsu -t -w [command]);零依赖 FFI;可作库(wakeup-core crate);Homebrew/crates.io/预编译二进制 |
| Go | — | — | — | — | — | — | 未发现主流 Go 专用库;惯例是 macOS 起 caffeinate 子进程 / Win 经 syscall 调 kernel32 / Linux 起 systemd-inhibit 子进程(例:hegade/kunai 的 internal/awake 设计) |
| Node.js | —(标准:Electron powerSaveBlocker) | 例:stanley-projects/Insomnia、little-insomniac/keep-computer-awake | 各异 | — | — | Electron/Chromium 经各平台原生 API | 未发现有影响力的纯 npm 通用库;Web 方案 keepawake.dev(Screen Wake Lock API + 静音音频,CC BY-SA 4.0) |
| Java | my-caffeine-app | https://github.com/mrrpiano02/my-caffeine-app | 未核实 | 未给出 | 低活跃(~455 天前) | 跨平台(Swing GUI) | 模仿 Zhorn Caffeine 的 F15 按键模拟;Java 无主流专用库 |
| Julia | NoSleep.jl | (dev.to 介绍) | 未核实 | 未给出 | 未核实 | Win/macOS/Linux 三段式后端 | with_nosleep() do ... end 块级 API;仅防空闲休眠 |
“直接命名为 caffeinate 的跨平台复刻"核实结论:
- ✅ usrivastava92/wakeup:Rust 编写的跨平台
caffeinate兼容 CLI(参数、默认值、语义完全对齐),可视为真正的跨平台 caffeinate 复刻。 - ✅ segevfiner/keepawake-rs:Rust 跨平台实现(CLI 参数为长选项风格
-d/-i/-s,与 caffeinate 语义对应但非完全兼容短参数)。 - ⚠️ caddyglow/caffeinate:虽叫 caffeinate,但仅 Linux/Wayland,不是跨平台复刻。
- ❌ 未发现 Go 语言编写的、具影响力的 caffeinate 复刻。
来源:
- https://github.com/wakepy/wakepy(commit 记录 + pycoders README 镜像,index)
- https://github.com/segevfiner/keepawake-rs(README,index);https://Lib.rs/crates/keepawake(下载量,index)
- https://github.com/usrivastava92/wakeup(verified live 2026-10-13)
- https://github.com/hegade/kunai/blob/HEAD/docs/superpowers/specs/2026-07-12-keep-awake-design.md(Go 三段式模式,index)
- https://github.com/danifernandezs/keep-awake/blob/HEAD/README.md(keepawake.dev,index)
- https://dev.to/metelkin/keep-julia-awake-nosleepjl-4pko(NoSleep.jl,index)
6. 特殊场景
6.1 NAS / 服务器防休眠
- Linux 服务器标准方案就是
systemd-inhibit(见 4.3):systemd-inhibit --what=idle:sleep:shutdown --mode=block <长任务>保护夜间备份等;可用busctl查询抑制器状态。注意它本质是与 logind 的协作协议,root 仍可强制执行。 - 未发现专门的"NAS 防休眠"开源项目。NAS 的"休眠"通常指**硬盘休眠(spin down)**而非系统挂起,由 NAS 系统自带设置控制;若 NAS 运行的是标准 Linux 发行版,同样适用
systemd-inhibit。 - macOS 当服务器:
caffeinate -s/-i常驻,或 KeepingYouAwake 常开。
6.2 Docker 场景
- 容器本身没有休眠概念;风险在于宿主机休眠(宿主机一睡,所有容器暂停)。无需专门工具,宿主机用各平台自带方案即可。
6.3 CI runner 场景
- 自托管 runner(GitHub Actions / GitLab Runner)所在机器休眠会导致 job 中断;同样归结为宿主机防休眠。macOS runner 常见做法是
caffeinate -i常驻;Linux 用systemd-inhibit或直接关闭休眠策略。
6.4 笔记本合盖使用(closed-clamshell / lid sleep)
这是 macOS 开源工具 2025–2026 年的主战场:
caffeinate不能阻止合盖休眠(第 1 节)。- 标准手段:
sudo pmset -a disablesleep 1(全局开关,不分电源——lidless 作者警告:拔电后放进背包会变成"密封隔热箱里的全速 CPU”,过热且耗尽电池);或 Apple Silicon 接电源+外接显示器/键鼠时的官方 clamshell 模式(原生支持,无需工具)。 - 开源工具的通用做法 = 按需开关
pmset disablesleep+ 安全护栏(拔电自动关、低电量熔断、退出/崩溃自动恢复):lidless、ClosedLidGuard、decaf、keepgoing、stevenyu113228/keepawake、wynnwu/nosleep、ty-teo/stayawake 等(详见 2.3)。 - Linux 笔记本合盖由 systemd-logind 的
HandleLidSwitch=(/etc/systemd/logind.conf)控制;应用可持handle-lid-switch低级抑制锁接管(来源:freedesktop.org logind.conf 文档)。 - Windows 笔记本合盖:在"电源选项 → 关闭盖子时"设为"不采取任何操作"即可,系统设置,无需工具。
7. 对比总结表
Star 统计日期:2026-10-13(检索当日;
*标注为 2026-09-30 第三方档案数据)。“维护状态"以最近提交/发布为准。
| 项目名 | 平台 | 语言 | 许可证 | Star | 维护状态 | 核心能力(一句话) | 适合人群 |
|---|---|---|---|---|---|---|---|
| caffeinate(系统自带) | macOS | C | Apple 系统组件 | — | 随系统 | 官方电源断言 CLI,-dimsu -t -w | 所有 Mac 用户/脚本 |
| KeepingYouAwake | macOS | ObjC | MIT | ~6,900* | 活跃 | caffeinate 的菜单栏 GUI 封装,一键+定时 | 普通 Mac 用户(开源首选) |
| iannuttall/caffeine | macOS | Swift | MIT | 未给出 | 活跃 | 经典 Caffeine 的现代重写,Agent Watch 联动 AI agent | Mac 用户(喜欢经典交互+agent 场景) |
| wakeup-mac | macOS | Swift | MIT | 未给出 | 活跃 | 进程内 IOKit 断言,无外部进程,倒计时 | Mac 用户(极简) |
| ty-teo/stayawake | macOS | Swift/Bash | MIT | 未给出 | 活跃 | AI agent 场景的合盖防休眠,精确限定 sudoers | 跑 AI agent 的 Mac 用户 |
| wynnwu/nosleep | macOS | Bash | 开源免费 | 未给出 | 活跃 | CLI 合盖防休眠,自动关闭+低电量熔断 | 终端用户/脚本 |
| aarontaken/owly | macOS | Swift | 未核实 | 3 | 新(2026-05) | 极简菜单栏:IOKit 断言/强力合盖双模式 | 极客(小众) |
| Amphetamine | macOS | — | 闭源 | — | 5.3.2(2023-11) | 功能最全的免费防休眠(15+ 触发器、合盖) | 普通 Mac 用户(不介意闭源) |
| Lungo | macOS | — | 闭源 | — | 2.8.3(2026-09) | $4 极简防休眠 | 普通 Mac 用户(愿付费、要设计) |
| Theine | macOS | — | 闭源 | — | 3.4(2021) | 免费极简,定时器+热键;不支持合盖 | 普通 Mac 用户 |
| Owly(FIPLAB) | macOS | — | 闭源 | — | 2.5(2026-02) | 免费,智能触发器 | 普通 Mac 用户 |
| PowerToys Awake | Windows | C# | MIT | ~139,000 | 活跃 | 微软官方:无限期/定时/屏幕常亮 | Windows 用户(开源首选) |
| CHerSun/NoSleep | Windows | C#/.NET | The Unlicense | 269 | 公开维护中 | 180KB 托盘工具,SetThreadExecutionState,可按应用自动启停 | Windows 用户(要轻量) |
| stewardfurnace/caffeine-for-windows | Windows | 未给出 | MIT | 未给出 | 活跃 | Zhorn Caffeine 的开源复刻,一键+定时 | Windows 用户(怀念 Caffeine 交互) |
| Caffeine(Zhorn) | Windows | — | 闭源 | — | 1.6.x | 免费便携经典小工具(F15/-stes) | 对比项 |
| Don’t Sleep | Windows | — | 闭源 | — | 9.96+(2026-01) | 免费,防关机/待机/休眠/重启全套 | 对比项 |
| caffeine-ng | Linux | Python | GPL-3.0 | 183(GitHub 归档)/ 13(Codeberg) | 低活跃(年 22 提交) | 托盘抑制,兼容多屏保/DE | 传统 X11/Linux 托盘用户 |
| GNOME Caffeine 扩展 | Linux(GNOME) | JS | 未核实 | 未给出 | 活跃(支持 GNOME 50) | 快速设置一键禁用自动挂起 | GNOME 用户 |
| caddyglow/caffeinate | Linux(Wayland) | Rust | 未给出 | 未给出 | 低活跃 | Wayland 空闲抑制+托盘+定时 | Wayland 用户 |
| systemd-inhibit | Linux | C | 系统组件 | — | 随 systemd | 系统自带的 inhibitor 锁 CLI | 所有 Linux 用户/脚本 |
| wakepy | 跨平台(库) | Python | MIT | 253 | 活跃 | 跨平台 keep-awake 库,两种 Mode | Python 开发者 |
| keepawake(Rust crate) | 跨平台(库+CLI) | Rust | MIT | 月下载 ~28.8k | 活跃 | 跨平台库+CLI,实验性 C 库 | Rust 开发者 |
| wakeup | 跨平台(CLI+库) | Rust | MIT | 1(新) | 活跃 | 参数与 caffeinate 完全兼容的跨平台 CLI | 终端用户/多平台脚本 |
已停止维护/归档:WhyNotHugo/caffeine-ng 的 GitHub 仓库(2022-11-06 归档,只读;项目迁至 Codeberg 继续低活跃维护);经典 Caffeine(Lighthead 原版停更,但 2018 年开源后由 IntelliScape/社区分支继续)。 地址不存在:joaolourencoo/owly(404)、djoslin0/insomnia(404)——任务中提及的这两个地址均无法验证。
8. 结论与推荐
普通 Mac 用户
- KeepingYouAwake(开源 MIT,~6.9k stars,活跃):一键菜单栏操作,
brew install --cask keepingyouawake即装即用,c
8. 结论与推荐
普通 Mac 用户
- KeepingYouAwake(开源,MIT):菜单栏一键操作,
brew install --cask keepingyouawake即装即用,是大多数人的终点。 - 不介意闭源的话,Amphetamine(免费)功能最全,十几种触发器,还支持合盖模式。
Windows 用户
- Microsoft PowerToys(含 Awake 模块,MIT):微软官方出品,无限期/定时/屏幕常亮全覆盖,是开源首选。
- 想要极轻量:CHerSun/NoSleep(The Unlicense,约 180KB),可按正在运行的应用自动启停。
Linux 用户
- GNOME 桌面:Caffeine 扩展(活跃维护,支持到 GNOME 50),快速设置里一键开关。
- 通用/脚本场景:系统自带的
systemd-inhibit,无需安装任何东西,是最直接的"Linux 版 caffeinate”。 - 偏好传统托盘:caffeine-ng(GitHub 已归档,项目迁至 Codeberg 后低活跃维护)。
开发者(需要在自己的程序里防休眠)
- Python:wakepy(MIT);Rust:keepawake(MIT,月下载近 3 万)。
- 想要一个开箱即用的命令行:wakeup(Rust,参数与 caffeinate 完全兼容,跨平台)。
运维 / 服务器 / CI
- 本质都是"宿主机防休眠”:Linux 用
systemd-inhibit包裹长任务(如夜间备份),macOS 用caffeinate -i常驻;笔记本合盖场景参考第 6.4 节的专用工具,注意拔电放包里有过热风险。