Keepresso
Keepresso
使用 Keepresso

用 keepresso CLI 从命令行让 Mac 保持唤醒

György
审核
György
更新于 Jul 23, 2026 2 min

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 对任何人都可用。setclear 会通过管理员辅助程序执行一项系统级更改,因此只有当**偏好设置的“自动化”下的“允许自动化修改唤醒计划”**开启时才有效。它默认关闭。

相关内容

获取 Keepresso

免费开源,支持 macOS 14 及以上版本。安装它,按你的方式让 Mac 保持唤醒。

更多「使用 Keepresso」内容

让 Mac 保持唤醒指定时长
启动一个定时保持唤醒会话,让你的 Mac 在下载或渲染期间保持唤醒,之后自动睡眠。
合盖状态下保持 MacBook 唤醒
阻止 MacBook 在合盖时睡眠,支持电池供电,不需要外接显示器,也不需要电源线,使用一款免费开源的应用。
只在真正需要时保持唤醒:智能触发器
设置条件,让 Keepresso 只在应用运行、通话进行、接通电源等情况下才保持 Mac 唤醒,不该醒着的时候绝不多醒一秒。
用自动化租约让 AI 智能体和脚本使 Mac 保持唤醒
给 AI 智能体和脚本一种安全的方式来让 Mac 保持唤醒。自动化租约是有界的、会自动到期的,还配有一个 MCP 服务器和一个内置的智能体技能,把整套协议教给你的智能体。