防瞌睡

anti-sleep
分类通用
作者Agentic Awesome Skills 社区
许可MIT
评分4.60/5
使用14.6K

Anti-Sleep (macOS caffeinate)

使用场景

  • 当用户希望 Mac 在执行长时间监督任务期间保持唤醒时使用。
  • 当构建、下载或自动化运行不应被睡眠中断时使用。

使用内置的 caffeinate 命令保持 Mac 唤醒,无需安装。

快速上手 — 标准命令

bash
caffeinate -d -i -t 7200    # 全功率:屏幕保持开启 + 禁止闲置睡眠,持续 2 小时

时长参数为 -t <秒>:2小时 = 7200,7小时 = 25200,一夜(9小时) = 32400。

强度级别

| 标志 | 效果 |
|---|---|
| -i | 仅防止系统闲置睡眠(屏幕仍可能变暗/锁定) |
| -d | 防止显示器睡眠(屏幕保持开启) |
| -d -i | 默认选择 — 屏幕开启 + 系统唤醒 |
| -d -i -s | 增加 -s:即使在交流电电源语义下也防止睡眠;-s 仅在接通电源时有效 |
| -u -t 1 | 模拟用户活动 — 立即唤醒显示器 |

除非用户另有要求,否则默认使用 -d -i -t <seconds>

绑定到进程而非定时器

bash
caffeinate -d -i -w <PID>          # 直到该进程退出才唤醒(非常适合构建任务)
caffeinate -i npm run build       # 包装一个命令;当命令结束时退出

在可见终端中运行 (cmux 面板)

建议在用户自己的终端面板中运行,以便可见且易于通过 Ctrl+C 停止。在 cmux 中(如果涉及面板交互,请先阅读 cmux 技能):

bash
cmux send --surface surface:<N> "caffeinate -d -i -t 25200\n"

否则将其作为后台 Bash 任务运行。切勿用它阻塞你自己的前台 Shell。

验证与监控

bash
pgrep -fl caffeinate                       # 是否在运行?显示具体标志
ps -o etime= -p <PID>                      # 已运行多长时间
pmset -g assertions | grep -i deny        # 确认睡眠断言(assertions)是否激活

注意: caffeinate 不会打印任何内容且会占用提示符 —— 看起来像“卡住了”或像没按回车一样。它并没有卡住。请通过 pgrep 验证,而不是观察终端。

过期: 使用 -t 时,时间到期后它会静默退出 —— 没有通知。如果用户在数小时后询问“是否还在运行?”,请先检查 pgrep;它可能已经过期。

键盘背光

caffeinate 无法保持键盘背光开启 —— 键盘背光有独立的闲置定时器,在 Apple Silicon 上没有 CLI/API(2026-07 研究结论)。解决方法是手动一次性设置:系统设置 > 键盘 > “在闲置多久后关闭键盘背光” > 从不。

提前停止

bash
pkill -f "caffeinate -d -i"    # 或在运行它的面板中按 Ctrl+C

启动后:向用户确认 PID、标志以及到期的时间点。

局限性

  • 改编自 davidondrej/skills;在执行前请验证本地路径、工具、凭据和代理功能。
  • 对于命令执行、远程访问、调度、浏览器自动化或文件修改工作流,请先获得用户的明确批准并确认目标环境。