作者信息
公众号:HelloRanceLee · 博客:https://blog.discoverlabs.ac.cn/
微信:en297171205· 小红书:HelloRanceLee随手附个广告 📚
我有《Obsidian 实战手册》¥29.9
预设文件夹和插件的 OB 模板仓库 ¥49.9(PDF+仓库)
以及《AI 实战手册》¥29.9
微信en297171205
🌐 English version →(海外用户请走 Gumroad 购买,$3.99)
它是做什么的
Mac 常醒助手 是一个 macOS 菜单栏小程序,用来自动切换 Mac 的睡眠策略。状态栏会一直显示当前状态:
| 接电源时 | 拔电源时 |
|---|---|
![]() |
![]() |
它的默认模式是 插电常醒:
- 接通电源时:尽量保持 Mac 常醒,适合下载、渲染、跑自动化任务、远程连接等场景
- 拔掉电源时:自动恢复正常休眠,避免离开电源后继续耗电
- 手动退出时:会先恢复正常休眠,不会把系统一直留在常醒状态
- 开机自动启动:默认跟随登录启动,也可以在菜单里取消勾选「开机自动启动」
它也提供 永不休眠 模式:无论是否接电源,都尽量保持常醒。
还提供 夜间休眠时段:你可以设个时段(比如 23:00-07:00)让 Mac 在你睡觉时也休眠,到结束时间它会自动唤醒并恢复插电常醒(合盖也能醒,系统级定时唤醒)。
适合谁
- 希望 Mac 接电源时不中断任务的人
- 经常远程连回家里 Mac 的人
- 需要让下载、同步、渲染、自动化脚本持续运行的人
- 想让 Mac 跟着自己作息走(白天常醒、夜里休眠)的人
- 不想每次手动改系统睡眠设置的人
如果你只是偶尔临时防止屏幕熄灭,系统自带设置或其他免费工具可能已经够用。
购买与激活
软件下载本身是公开的,但核心功能需要激活后才能使用。
- 售价:29.9 元
- 购买方式一:小红书直接下单 → http://xhslink.com/o/395H8sYsCxt(点开就是商品页,付完款我私信发激活码)
- 购买方式二:加微信 en297171205
- 备用入口:小红书可以搜账号 HelloRanceLee 也能找到我
- 付款后我会发你一个激活码
- 一个激活码绑定一台 Mac
未激活时,插电常醒 和 永不休眠 两个模式会置灰,程序会保持系统正常休眠。
加微信时请认准下面这个头像和名字,避免加错人:

完整安装教程
下面九张图按步骤走完一遍。
第 1 步:下载并解压
点击上方 下载最新版本 按钮拿到 MacAwakeGuard-安装包.zip,双击解压会得到一个 MacAwakeGuard-安装包 文件夹。打开这个文件夹,里面有 3 个文件:
1. 先双击我安装.command
2. MacAwakeGuard.app
3. 使用说明.md
建议直接下载到系统自带的 下载(Downloads) 文件夹,并在这里解压。正常解压后会出现 MacAwakeGuard-安装包 文件夹,下面的修复命令也按这个默认路径写好,可以直接复制。
⚠️ 请双击 1 号文件,不要直接双击 2 号 .app,否则会触发 macOS 的最丑陋拦截弹窗(看起来像病毒,实际不是)。
第 2 步:跑安装脚本
双击 1. 先双击我安装.command。请走 1 号脚本,不要双击 2 号 .app —— 1 号脚本会复制 App 到 ~/Applications/、清除安全标记、注册开机自启动。
如果你不希望它下次开机自动启动,安装完成后点菜单里的「开机自动启动」,取消勾选即可。以后升级重新安装,也会记住你的选择,不会偷偷改回自启动。
跑完终端会显示「安装完成」:

如果 1 号文件提示「没有正确的访问权限」
如果你看到下面这个弹窗,说明 1 号安装脚本的执行权限丢了:

处理方法:
- 打开 macOS 自带的 终端(按
Command + 空格,输入terminal,回车)。 - 复制下面这行,粘贴到终端里回车:
chmod +x ~/Downloads/MacAwakeGuard-安装包/"1. 先双击我安装.command"
- 回到 下载(Downloads)→ MacAwakeGuard-安装包 文件夹,重新双击
1. 先双击我安装.command。
如果 2 号 App 提示「无法打开」
如果你看到下面这个弹窗,通常不是软件坏了,而是你直接点了 2 号 App:

不要直接打开 2 号。请回到文件夹里,双击 1. 先双击我安装.command,让 1 号脚本来安装和启动。
⚠️ macOS 14(Sonoma)及以上的用户:第一次双击 .command 时 macOS 可能直接拦下(弹「Apple 无法验证 1. 先双击我安装.command…」对话框,按钮只有「完成 / 移到废纸篓」,没有 Open)。这是 macOS 14+ 加严了对未公证 .command 文件的拦截——按下面第 2.5 步走系统设置放行后,重新双击
1. 先双击我安装.command,这次就能跑通。
第 2.5 步:遇到 macOS 拦截弹窗 → 一次性放行
macOS 在两个时机可能弹拦截,走同一套放行流程,区别只是被拦的对象(.command 脚本 vs .app 文件),实际看你 Mac 命中哪种:
- 场景 A:你刚双击
1. 先双击我安装.command时直接被拦——弹窗标题写「未打开 “1. 先双击我安装.command”」,描述写「Apple 无法验证 “1. 先双击我安装.command” 是否包含可能危害 Mac 安全或泄漏隐私的恶意软件」。这种是 macOS 14+ 对未公证 .command 文件的检查,最常见。 - 场景 B:脚本跑完启动 App 时被拦——旧版 macOS 13 弹「(null)」并带 Open 按钮(直接点 Open 即可,跳到本节末尾的 macOS 13 路径);少数 macOS 14+ 配置也可能再拦一次 .app(弹「Apple 无法验证 MacAwakeGuard…」),按下面流程同样处理即可。
macOS 14(Sonoma)及以上:系统设置放行(一次性)
不管被拦的是 .command 脚本还是 .app 文件,三步操作放行:
第 1 步:弹窗里点 「完成」(千万不要点「移到废纸篓」——那会把脚本/App 直接删掉)。

第 2 步:打开 系统设置 → 隐私与安全性,往下滚到 「安全性」 段,找到 「已阻止 “1. 先双击我安装.command”(或 “MacAwakeGuard”)以保护 Mac」 那一行,点右边的 「仍要打开」。

第 3 步:弹新对话框「打开 “1. 先双击我安装.command”?」(或 “…/MacAwakeGuard”),按钮里有「移到废纸篓 / 仍要打开 / 完成」三个——点中间的「仍要打开」,然后输入 Mac 登录密码。

放行完成。接下来:
- 如果你是场景 A(.command 被拦):重新双击
1. 先双击我安装.command,这次会跑通整个安装;脚本最后会自动启动 .app(一般不再弹)。 - 如果你是场景 B(.app 被拦):菜单栏右上角直接出现 Mac 常醒助手图标,不用再做别的。
macOS 13 及更早:弹「(null)」直接点 Open
老版 macOS 在 .app 启动时弹「(null)」警告,按钮里有 Open:

直接点 Open 即可。一次性。.command 在老版 macOS 一般不会被拦。
为什么会弹这些拦截:Apple 公证要 99 美元/年的开发者账号,目前销量还小,暂时没做。代价是这一次手动放行。一次性的,macOS 会记住「你已批准」,以后开机自启动不再弹。
罕见情况下上面流程都失败:在 Finder 里右键
~/Applications/MacAwakeGuard.app→ 选「打开」绕过,同样一次性。
第 3 步:菜单栏看到「未激活」
点 Open 之后,屏幕右上角菜单栏会出现 Mac 常醒助手图标,标题显示「未激活」。点开看到菜单:

此时插电常醒、永不休眠都置灰用不了,需要先激活。
第 4 步:输入激活码
菜单点「输入激活码…」,弹窗里粘贴卖家发给你的激活码(HSGD- 开头):

点「激活」。
第 5 步:激活成功 → 复制权限配置
激活成功后弹窗:

点「复制权限配置」按钮。它会复制一段 sudoers 命令到剪贴板。会再弹一个提示:

第 6 步:打开终端
按 Command + 空格 打开 Spotlight,输入 terminal,回车打开终端:

第 7 步:粘贴权限配置
在终端里按 Command + V 粘贴刚才复制的命令,回车。会要你输入 Mac 登录密码(输密码时屏幕没回显是正常的,盲打就行)。看到 parsed OK 表示成功:

这条命令只授权本工具调用 pmset 切换睡眠开关与设置定时唤醒,不授权其他系统权限。配完一次永久生效。
第 8 步:点「立即刷新」
回到菜单栏 Mac 常醒助手,点「立即刷新」让它拿到新权限:

状态栏图标会从「未激活」变成「常醒」(如果当前接电源)。装上就忘掉它,菜单栏会根据电源状态自动切换。
菜单里的「开机自动启动」可以随时开关:勾选表示下次登录自动启动,取消勾选表示下次登录不自动启动,不需要打开终端。
第 9 步(可选):设置夜间休眠时段
如果希望 Mac 跟着你的作息走(你睡觉时它也睡,省电),点开「夜间休眠时段」子菜单:

点「设置时段…」输入开始和结束时间(HH:MM 格式,支持跨午夜如 23:00-07:00)。保存后:
- 进入时段(如 23:00):Mac 立即休眠,即使插着电也睡
- 时段内:自动维持休眠
- 结束时段(如 07:00):Mac 会自动唤醒并恢复插电常醒(系统级定时唤醒,合盖也能醒)
此功能仅在「插电常醒」模式下生效,「永不休眠」模式会覆盖它。
后续软件升级时,回到这个页面下载最新版,解压后重新运行 1. 先双击我安装.command 即可,旧激活码自动保留。
当前版本没有经过 Apple 公证(Apple 开发者证书 99 美元/年,没做是目前销量还小,暂时没做)。脚本启动 App 时 macOS 会弹一次首次启动警告——按你 macOS 版本走第 2.5 步介绍的两条路径之一(Sonoma+ 走系统设置 → 隐私与安全性 → 仍要打开;macOS 13 及更早直接点 Open)。一次性,以后开机自启不再弹。
更新日志
v1.8 · 2026-05-08
- 小更新(2026-05-30):菜单新增「开机自动启动」勾选项,用户可以直接开关登录自动启动,不再需要手动删除 LaunchAgent。升级脚本会尊重用户选择:如果用户关过自启动,重新安装新版不会自动改回开启
- 修复(中高):「夜间休眠时段」结束后保持唤醒——v1.7 之前在合盖 + 插电状态下,RTC 准点唤醒成功,但 App 没有在 wake 瞬间把
disablesleep设回 1,约 10 秒后被 macOSClamshell Sleep强制打回 sleep,导致本地 cron / agent 等定时任务跑不了。v1.8 注册NSWorkspaceDidWakeNotification(AppKit 层)+IORegisterForSystemPower(IOKit 底层)双路 sleep/wake 事件监听 - 新增(中高):wake handler 走"快速恢复路径"——wake 瞬间先抢
applySleepDisabled:1阻断 macOS Clamshell Sleep,再做完整状态 refresh。条件:已激活 + 插电常醒模式 + 不在夜间休眠时段 + AC 供电。永不休眠 / quiet hours 内 / 拔电状态都不抢锁,避免违背用户 intent - 行为不变:检查间隔默认仍是 30 分钟(不增加扫描频率);其他模式(永不休眠 / 不开 quiet hours)行为完全保持
v1.7 · 2026-05-07
- 修复(中高):Quiet Hours 状态机全面收紧——apply / cancel / 启动 / 激活四条路径任何一处
syncRepeatWakeSchedule失败时,都强制quietHoursEnabled=NO+ 持久化,并弹明确提示,不再留下"夜间休眠时段开着但没设自动唤醒"的半瘫 - 修复(高):激活流程改为完全异步——之前
sendLicenseRequest:用信号量在主线程同步等 15 秒,UI 冻结而且超时后回调写入栈变量是野指针风险。v1.7 改成 completion handler,URLSession 回调统一派发到主线程;菜单状态行新增"激活中…“显示进度;新增isActivationInProgress防多次连点造成并发请求 - 修复(中):
HSGRunCommand双 pipe 改并发读取——之前先读 stdout 再读 stderr 再 wait 的顺序,在子进程大量写 stderr 时仍可能死锁。v1.7 用dispatch_group_async并发读两个 pipe,再waitUntilExit,彻底消除任何 stderr/stdout 大小关系下的死锁 - 修复(中):
applicationWillTerminate+restoreAndQuit都补 best-effortcancelRepeatWake——之前菜单退出和系统正常终止路径只 restore disablesleep,遗漏了 App 设置的 pmset repeat,用户重启 Mac 后系统仍会半夜醒来 - 修复(中):安装脚本改用
osascript礼貌退出 + pkill fallback——CodeX 实测确认pkill -TERM和launchctl bootoutSIGTERM 都不会触发applicationWillTerminate,原方案依赖 pkill 触发清理是错的。v1.7 改成先 osascript 礼貌让 App 走标准 terminate 流程清状态,等最多 5 秒,超时再 pkill 兜底 - 修复(中):版本号比较前清洗
v前缀和-rc1后缀——之前远端误填v1.4/1.4-rc1会被 NSNumericSearch 永远判定有新版 - 修复(中):安装脚本不再无脑
rm -rfbundle——先杀旧实例(osascript polite + pkill fallback)等 1 秒让applicationWillTerminate把 disablesleep 还原干净再删,避免双 MacAwakeGuard 进程同时跑互相覆盖 pmset - 修复(低):
applyRepeatWakeAtHourpmset 写入成功但 canonical 读取失败时整体视为失败,不再留下"claimed=YES 但 canonical=空"的不可验证状态 - i18n:新增
status.activating、dialog.quiet_hours_auto_disabled.{title,body_format}、dialog.quiet_hours_off_partial.{title,body_format}(10 语言全覆盖)
v1.6 · 2026-05-07
- 修复:pmset 所有权检查现在 apply 和 cancel 两条路径都做——v1.5 只在 cancel 路径做 canonical 严格比对,apply 路径在
wakeScheduleClaimed=YES时仍跳过「已有 schedule 确认」弹窗,可能静默覆盖用户手动改过的 schedule。v1.6 在 apply 入口先验证所有权,不一致就清 claimed 状态让流程自然走确认弹窗 - 修复:用户在「已有 schedule 确认」弹窗点 Cancel 时,Quiet Hours 不再保存为开启——v1.5 这里有半瘫 bug:到点 Mac 会休眠但没设自动唤醒计划,等于"夜间睡了但早上不醒”。v1.6 改成 sync 失败时 revert 所有内存状态 + 不写 NSUserDefaults
- 修复:
pmset -g sched读取区分三态(成功有 events / 成功无 events / 命令失败)。用户手动pmset repeat cancel删过 schedule 后,App 的 cancel 会识别为"已无 events"清掉 claimed 状态返回成功,不再留下"检测到非本工具设置的定时唤醒"的错误提示 - 清理:删除旧版升级迁移逻辑——会制造"claimed=YES 但没 canonical"的状态,叠加 apply 路径所有权验证后反而每次启动多绕一圈
- i18n:新增
error.read_wake_schedule_failed(10 语言同步),用于pmset -g sched命令本身执行失败的情况
v1.5 · 2026-05-07
- 修复:
pmset repeat防误删机制升级——v1.4 只比对 hour/minute,可能误判同时刻的其他事件;v1.5 改成 canonical 字符串严格比对:App 设置 schedule 后立即记录pmset -g sched原始输出作为基线,cancel 前比对完整字符串;多条 repeating event 一律保守跳过 cancel - 修复:cancel 跳过后没清
wakeScheduleClaimed的 bug——v1.4 用户改过 schedule 后,下次再开 quiet hours 会跳过「已有 schedule 确认」弹窗静默覆盖;v1.5 失去所有权时立即清 claimed 状态,下次重新走确认弹窗 - 文档:英文页 Try-before-buy 验收清单去掉「(null) 警告可点击」的措辞(macOS 14+ 用户没有 Open 按钮,措辞会误导)
- 文档:海外邮件 Permission Setup Failed 模板的手动 sudoers fallback 规则同步 App
copyPermissionCommand完整版(之前少 4 条) - 仓库清理:
.claude/加入.gitignore
v1.4 · 2026-05-07
- 修复:「退出并恢复正常休眠」失败弹窗按钮文案不准确,改成「复制权限配置 / 重试 / 仍然退出」三个明确选项(之前第三个按钮复用「稍后」容易被误读为「暂不处理」)
- 修复:夜间定时唤醒的错误现在会显示在菜单状态行(之前
wakeScheduleError已经独立保存但没纳入菜单显示优先级,可能被普通刷新覆盖) - 修复:
pmset repeat cancel加防误删机制——cancel 前会比对当前系统pmset -g sched与 App 自己设过的 schedule(hour/minute/weekdays),不一致则跳过 cancel 并提示用户检查 - 文档:完整重写 macOS 14+(Sonoma)首次启动警告的处理流程:两种拦截场景(双击 .command 被拦 / .app 被拦)+ 通用系统设置放行流程 + 3 张图文示例
- 文档:国内 README 的 sudoers 授权范围说明补足,明确覆盖夜间唤醒所需的
pmset repeat和pmset schedule子命令
v1.3 · 2026-05-07
- 修复:Worker 端激活改用条件 UPDATE,杜绝两台机器几乎同时激活同一个码时的竞态覆盖
- 修复:夜间定时唤醒的设置错误现在用单独字段保留,不再被普通刷新覆盖;权限不足时弹窗提示重新复制权限配置
- 修复:从「永不休眠」切回「插电常醒」时,如果当前已经在夜间时段内,App 会立即让 Mac 休眠(之前会卡住直到下次时段开始)
- 修复:「退出并恢复正常休眠」如果 sudoers 失效,不再静默退出 — 弹窗提供「复制权限配置 / 重试 / 仍然退出」三个选择
- 修复:德语 .strings 文件中双引号未转义导致整个文件无法解析,德语用户现在能看到正确的本地化 UI
- 文案:「夜间休眠时段」开启时检测已有 pmset 计划的描述改为更准确的「弹窗提示,降低误覆盖风险」(之前的「完全保留」是过度承诺)
v1.2 · 2026-05-07
- 10 语言 UI:自动检测系统语言(中文 / English / 日本語 / Español / 한국어 / Deutsch / Français / Português / Русский)
- 新增:自动检查更新(每 24 小时静默检查一次,菜单可手动触发)
- 修复:开启「夜间休眠时段」前检测已有
pmset repeat计划并弹窗提示,降低误覆盖风险 - 修复:分发包签名实际生效(之前
codesign失败被吞掉,导致客户解压后被 Gatekeeper 严格验证拒绝) - 修复:服务端授权配置缺失时,错误信息从「激活码不存在」改为「授权服务配置缺失」,便于排查
v1.1 · 2026-05-06
- 新增:「夜间休眠时段」功能,到点 Mac 自动休眠 + 时段结束自动唤醒(即使合盖也能醒,系统级
pmset repeat wakeorpoweron) - 子菜单可设置时段(支持跨午夜)和检查间隔
v1.0 · 2026-05-04
- 首发:「插电常醒」+「永不休眠」两个核心模式
- 菜单栏图标显示当前状态
- 激活码 + 一码一台 Mac 绑定
如有问题欢迎到公众号 HelloRanceLee 留言。


