
BudHold 是一个基于 Swift、IOKit 与 SwiftUI 编写的原生电源保活与远程值守工具,仓库未随附许可证文件,使用前需先与作者确认授权方式。它阻止电脑进入睡眠,即使 MacBook 合上盖子且没有外接显示器,或者显示器被关闭,系统、网络与桌面图形帧缓冲仍保持活跃,让 VNC、屏幕共享或 SSH 可以随时连上,不会遇到黑屏或断联。二进制最低部署目标为 macOS 13,以 Universal Binary 同时原生支持 Apple Silicon 与 Intel 芯片,属于系统工具这一类。它不改动系统默认睡眠策略,开关关闭后立刻回到原状。

场景痛点
MacBook 合盖默认进入硬件休眠,想把笔记本留在家里远程跑任务、挂下载或做屏幕共享,常常一合盖就断联;家里的笔记本合盖静置一晚,第二天再连往往已经睡死,要走到机器前掀开盖子才能唤醒。单纯调高系统的空闲睡眠时限也管不住合盖这个动作,关屏后远控软件还容易抓到黑屏,屏幕共享对面只看到一块黑,自己远程操作不受画面亮度影响,只能重启或合盖重来。临时改 pmset 参数又记不住、用完关不掉。这个工具推荐里的值守思路,是把防休眠做成可开关的常驻程序,效率工具要解决的就是合盖即掉线这件事;至于数字生活里把机器留在原处值守的日常习惯,这个常驻开关正好补上缺口。
主要功能特点
- 实时获取当前 macOS 版本与硬件状态
- 自动通过
sw_vers、sysctl与IOKit获取当前系统版本(如macOS 27.0.1 (Build 26A434))、芯片型号(如Apple M4)、合盖传感器状态(AppleClamshellState)、内核休眠锁(SleepDisabled)、供电与电池百分比以及本机局域网/虚拟网 IP。
- 自动通过
- 三层防休眠架构(合盖 + 关屏均不睡眠)
- 第一层(IOKit 断言 +
caffeinate):同时持有PreventUserIdleSystemSleep与PreventUserIdleDisplaySleep断言,阻止系统空闲睡眠。 - 第二层(内核级合盖不休眠
pmset disablesleep):配置pmset -a disablesleep 1 tcpkeepalive 1 womp 1,阻止 MacBook 合盖时触发硬件休眠。 - 第三层(显示帧缓冲保活
IOPMAssertionDeclareUserActivity):当检测到显示器休眠或合盖时,周期性唤醒 GPU 帧缓冲渲染管线,解决 macOS 关屏/合盖后远控软件抓屏黑屏或画面卡死的问题。
- 第一层(IOKit 断言 +
- 物理熄屏挂机模式(背光 0% 防窥省电)
- 在开盖状态下,支持通过
DisplayServices将屏幕物理背光直接降至0%(屏幕全黑),但 GPU 图形渲染保持活跃,远程控制画面依然清晰流畅;本地按下Esc键或点击按钮即可恢复原本亮度。
- 在开盖状态下,支持通过
- 免密切换与电池防闷烧安全保护
- 一键配置免密切换:支持配置
/etc/sudoers.d/budhold,首次授权后,日常开关「合盖不休眠」无需每次弹窗输入密码。 - 低电量自动恢复休眠:当使用电池供电且电量低于设定阈值(默认
20%)时,自动解除合盖不休眠锁,防止将笔记本装入背包后过热或亏电。 - 支持定时模式与开机自启:支持不限时、1/2/4/8/24 小时定时保活,以及
LaunchAgent开机自启动。
- 一键配置免密切换:支持配置
三层防休眠架构
第一层用系统电源断言配合 caffeinate 阻止系统与显示器空闲睡眠。第二层用 pmset 写入 disablesleep、tcpkeepalive、womp 三项参数,阻止合盖触发硬件休眠。第三层在检测到合盖或关屏时周期性唤醒 GPU 帧缓冲渲染管线,避免远控抓屏黑屏卡死。三层叠加,系统与网络在合盖状态下仍保持响应。
物理熄屏挂机
开盖状态下,BudHold 通过 DisplayServices 把屏幕物理背光降到 0%,屏幕全黑但 GPU 渲染保持活跃,远程画面依然清晰,适合不想让旁人看到屏幕、又要机器继续运行的场合。本地按 Esc 或点按钮即可恢复亮度,不用重启。这套系统增强思路不改写系统电源策略,只在需要时挂上保活断言,退出后回到默认。
免密切换与低电量保护
配置 /etc/sudoers.d/budhold 后完成首次授权,日常开关合盖不休眠不再每次弹密码框,免密范围仅限执行 pmset。电池供电且电量低于默认 20% 阈值时,自动解除合盖不休眠锁,避免装在背包里持续运行积热亏电,低电量保护建议保持开启。手动恢复默认睡眠可执行 budhold off。
定时保活与开机自启
保活时长支持不限时与 1、2、4、8、24 小时几档,到点自动回到系统默认策略,适合只挂一段任务,24 小时档适合长时间挂任务,不限时则要配合低电量保护使用。LaunchAgent 方式开机自启,不必每次登录手动点开。状态页实时显示系统版本、芯片型号、合盖传感器状态、内核休眠锁、电池百分比与本机 IP,连上远端前可先确认休眠锁状态,方便排错。
状态栏界面与命令行双形态
图形界面常驻菜单栏,未启用时只显示简洁图标,启用后标出状态,⌘K 切换合盖不休眠、⌘B 切换熄屏挂机,界面跟随深浅色。点关闭、程序坞退出或 ⌘Q 都只是隐藏转后台,菜单里的「退出 BudHold」才结束程序。配套命令行提供开关、熄屏与免密配置子命令,适合写进脚本。作为实用软件,它把图形与命令两条路都留了出来。
自行编译与安全边界
项目用 Swift 包管理器构建,生成应用与命令行工具,仓库无预编译包,需自行打包编译签名。开启合盖不休眠后,别把未关机笔记本放进密闭包内以免积热。在Mac 优化增强这条线上它偏值守用途,系统优化之外也提醒保留低电量保护;软件工具的取舍在于免密与内核参数按说明配置。
官方网站
GitHub 访问
下载地址
https://pan.quark.cn/s/65901f7b034b
相关推荐







