用 keepresso CLI 从命令行让 Mac 保持唤醒
Keepresso 附带一个小巧的命令行工具,让你可以从终端、shell 脚本、Makefile 或 CI 任务里控制它,不需要伸手去点菜单栏。命令名是 keepresso,它有两种工作方式:可以和菜单栏应用通信,也可以像内置的 caffeinate 一样自己独立让 Mac 保持唤醒。
安装这个命令
如果你是用 Homebrew 安装的 Keepresso,keepresso 命令已经在你的 PATH 里了,不需要做任何事:
brew install --cask gyorgysh/keepresso/keepresso
如果你是从 DMG 安装的应用,这个工具就在应用包内部,你的 PATH 还不知道它的存在。手动链接一次:
sudo ln -s /Applications/Keepresso.app/Contents/Helpers/keepresso /usr/local/bin/keepresso
确认它已经接好:
keepresso version
控制应用
这些命令会发送给 Keepresso 应用,如果它还没运行会自动启动它。它们是菜单功能的可脚本化版本。
keepresso start # 启动一个不限时长的会话
keepresso start --for 90 # 启动一个 90 分钟的会话
keepresso start --until 18:00 # 运行到指定的时间点
keepresso stop # 结束当前会话
keepresso toggle # 开启或关闭
这样,一个长时间任务就能在开始时唤醒 Mac,结束时再让它睡眠:
keepresso start
make release
keepresso stop
读取状态
keepresso status 会告诉你当前是否有会话正在运行,它的退出码也方便在脚本里做判断分支:
0表示 Mac 正被保持唤醒1表示没有2表示应用没有运行
keepresso status && echo "awake" || echo "asleep"
加上 --json 可以得到机器可读的结果:
keepresso status --json
同样的会话状态也会被镜像写入一个文件,这样菜单栏工具、状态栏,或者小组件都可以在不启动任何东西的情况下读取它:
~/Library/Application Support/Keepresso/status.json
它包含当前状态以及 ISO 8601 格式的时间戳。
独立保持唤醒,不需要应用
有时候你根本不想牵扯到应用,只是想让这一个 shell 会话让 Mac 保持唤醒,就像 caffeinate 那样。在这种模式下,keepresso 进程本身持有电源断言,它一退出 Mac 就可以重新睡眠。
keepresso -i # 保持唤醒,直到你按下 Ctrl-C
keepresso -t 3600 # 保持唤醒指定的秒数
keepresso -w 5123 # 保持唤醒,直到进程 5123 退出
keepresso -d # 同时让显示器保持唤醒(可与上面的选项组合使用)
keepresso -u # 声明用户活动:立即唤醒显示器
最实用的用法是把保持唤醒和某个命令或 shell 的生命周期绑在一起:
keepresso -w $$ & # 只要这个 shell 还活着就保持唤醒
ffmpeg -i in.mov out.mp4 & keepresso -w $! # 保持唤醒,直到编码完成
因为这些保持唤醒的行为都是真实的 macOS 电源断言,它们会出现在 pmset -g assertions 的输出中,也会出现在 Keepresso 自己的活动面板里,和其他任何让 Mac 保持唤醒的应用并列显示。
自动化租约,供脚本和智能体使用
如果脚本崩溃,一个有 start 却没有 stop 的会话可能把 Mac 永远钉在唤醒状态。对于无人值守的自动化,改为获取一份租约:这是一种有界的授权,带有时间限制,持有者必须不断续期。如果工具挂掉,租约会到期,Mac 就可以重新睡眠。
ID=$(uuidgen)
keepresso lease acquire --id "$ID" --tool my-script --task "nightly render" --ttl 600
keepresso lease heartbeat --id "$ID" # renew before half the TTL elapses, on a loop
keepresso lease release --id "$ID" # done, let the Mac rest
keepresso lease list --json # every live lease, machine-readable
有效的租约会带着倒计时显示在菜单里,Keepresso 会把它们全部合并起来,还有一个最长生命周期(上限 7 天),这是心跳无法延长的上限。完整的协议、MCP 服务器以及一键智能体技能,都在让 AI 智能体使 Mac 保持唤醒中介绍。
唤醒计划
CLI 还可以读取系统的计划唤醒,并在你允许的情况下修改它们:
keepresso wake status # read the schedule, always allowed
keepresso wake set --at "2026-07-24 07:30" # one-shot wake
keepresso wake set --repeat MTWRF --time 07:30 # repeating wake
keepresso wake clear
status 对任何人都可用。set 和 clear 会通过管理员辅助程序执行一项系统级更改,因此只有当**偏好设置的“自动化”下的“允许自动化修改唤醒计划”**开启时才有效。它默认关闭。
相关内容
- 通过快捷指令、Raycast 或脚本控制 Keepresso 介绍了快捷指令动作以及用于免终端自动化的
keepresso://URL scheme。 - Keepresso 对比 Amphetamine 与 KeepingYouAwake 说明了 Keepresso 和内置
caffeinate命令之间的关系。
更多「使用 Keepresso」内容
