Keepresso
Keepresso
使用 Keepresso

用自动化租约让 AI 智能体和脚本使 Mac 保持唤醒

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

一个通宵运行长时间任务的智能体,需要在工作时让 Mac 保持唤醒,任务结束后又让它睡眠。单纯的“保持唤醒开”只做到前一半,做不到后一半:如果工具崩溃或忘了关掉它,Mac 就会被永远钉在唤醒状态。自动化租约解决了这个问题。脚本或 AI 智能体会获取一份带时间限制的租约,在工作运行期间不断续期,并在结束时释放它。如果工具在任务中途挂掉,租约会自动到期,Mac 就可以重新睡眠。不会有任何东西意外地把机器一直撑在唤醒状态。

Keepresso 为此提供了完整的一套方案:keepresso lease 命令、任何支持 MCP 的智能体都能调用的 MCP 服务器,以及一个一键即可安装的内置智能体技能。

检测在旁观,租约会开口

Keepresso 已经有一个 AI 智能体触发器,能检测编程智能体何时真正在工作。已知的智能体(claudecursorcodexgeminipi 及同类工具)通过它们自身进程的活动来判断,这一侧完全不需要在智能体里做任何设置。如果想要精确的会话状态,可以在 AI 智能体条件下连接 Claude Code、Cursor、Codex 或 Antigravity,这也包括 Cursor 和 Antigravity 应用内置的智能体,它们没有自己的进程可供观察。只会提供你 Mac 上实际安装的工具,Keepresso 还会随时间重新检查每个连接,修复缺失或过期的钩子。

但检测只能覆盖 Keepresso 知道如何识别的智能体,而新的智能体每周都在出现。租约把方向反了过来:不再由 Keepresso 去猜,而是智能体自己告诉 Keepresso 它何时需要 Mac 保持唤醒、为了什么、持续多久,然后不断证明自己还活着。任何能运行命令或调用 MCP 服务器的工具都能做到,无论它叫什么、内部如何工作。两者配合得很好:检测覆盖那些你没想到的日常会话,租约覆盖那些有意为之的长时间任务,以及一切检测看不到的东西。

为什么用租约而不是 keepresso start

keepresso start 作为手动开关很好用,但自动化需要不同的保证:

  • 有界。 租约有一个 TTL,持有者必须不断续期,还有一个最长生命周期(上限 7 天),心跳永远无法把它延长。失控的任务无法让 Mac 保持唤醒超过这个上限。
  • 自愈。 没有心跳,就没有保持。崩溃脚本的租约会自行到期。
  • 干净地共享。 多个工具可以同时持有租约。Keepresso 会把它们合并起来,在最后一份结束后才让 Mac 睡眠,并在那时才执行你的会话结束动作,而不是提前执行。
  • 可见。 每一份有效的租约都会显示在菜单里,各自带有倒计时,并以获取它的工具和任务命名。

租约的生命周期

任务开始时获取一份租约。你自己指定 id(一个 UUID),为工具和任务命名,并以秒为单位设置 TTL:

ID=$(uuidgen)
keepresso lease acquire --id "$ID" --tool my-script --task "nightly render" --ttl 600

在 TTL 过去一半之前发送心跳,只要工作还在运行就循环发送。心跳也可以调整 TTL:

keepresso lease heartbeat --id "$ID"            # renew with the same TTL
keepresso lease heartbeat --id "$ID" --ttl 300  # renew and shorten it

任务完成后释放租约,这样 Mac 就不必等完剩下的 TTL:

keepresso lease release --id "$ID"

并列出当前有效的租约,包括你自己的和其他所有人的:

keepresso lease list --json

每个命令都接受 --json 以输出机器可读的结果,退出码也是为脚本准备的:0 表示成功,2 表示应用没有运行,3 表示租约未找到或已结束,4 表示租约在“偏好设置”里被关闭。

租约受**偏好设置的“自动化”**下的一个开关控制,默认开启。关掉它,每一次获取都会以退出码 4 被拒绝,因此自动化永远无法凌驾于你的选择之上。

从菜单里查看并停止它们

有效的租约会显示在菜单面板的状态卡片里,各自带有倒计时。主动权始终在你手里:**“停止”**会一次性结束所有租约,Mac 就可以重新睡眠。

Keepresso 菜单显示带有倒计时的活动自动化租约
菜单中的活动租约:任务、工具与倒计时。

一键教会你的智能体

你不必手动向智能体解释这一切。应用包内附带一个现成的保持唤醒技能,它会把整套协议教给智能体,既包括 keepresso 命令行,也包括 MCP 服务器,还有什么时候该用它:在一次长时间的构建、渲染、下载或通宵运行之前。在**偏好设置的“自动化”**里,可以直接从磁盘把它安装到智能体的技能文件夹中。对于没有技能文件夹的智能体,Keepresso 会改为把完整技能复制成可直接粘贴的说明:把它们粘贴给智能体一次,协议就学会了;或者把它们保存到智能体总会读取的全局配置文件里,例如 CLAUDE.mdAGENTS.md,这样以后每一个会话都已经知道如何以及何时让 Mac 保持唤醒。如果你更愿意自己接线,技能也存放在应用包内的 Keepresso.app/Contents/Resources/AgentSkill/keep-awake

Keepresso 的自动化偏好设置:允许自动化租约开关已开启,允许自动化修改唤醒计划开关已关闭,以及用于复制智能体说明、复制 MCP 配置和显示技能文件夹的按钮
自动化偏好设置:租约开关、唤醒计划的选择启用项,以及一键智能体设置。

MCP 服务器

对于会说 Model Context Protocol 的智能体,应用包内附带了 keepresso-mcp

/Applications/Keepresso.app/Contents/Helpers/keepresso-mcp

它提供了获取、心跳、释放和列出租约,读取 Keepresso 状态,以及读取系统唤醒计划的工具。MCP 是一个开放协议,所以这不限于编程智能体:任何支持 MCP 的应用都可以持有自己的租约,在工作期间让 Mac 保持唤醒。**偏好设置的“自动化”**里备好了可直接复制的配置片段,适用于 Claude Code、Gemini CLI、Grok 和 Codex。对于 Claude Code,只需一条命令:

claude mcp add keepresso -- /Applications/Keepresso.app/Contents/Helpers/keepresso-mcp

供自动化使用的唤醒计划(需选择启用)

自动化还可以读取系统下一次计划唤醒的时间,如果你允许,还能修改该计划:

keepresso wake status                          # always allowed, for anyone
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

读取始终允许。只有当**偏好设置的“自动化”下的“允许自动化修改唤醒计划”**开启时,才能修改计划。它默认关闭,因为定时唤醒是一项由管理员辅助程序执行的系统级更改。MCP 服务器在同样的规则下提供对应的工具。

为计划中的 AI 任务唤醒 Mac

租约和 CLI 覆盖的是已经在运行的工作。但有些智能体任务是安排在稍后执行的:比如设定在凌晨 3 点运行的 Claude Desktop 例行任务,或是按夜间节奏运行的 Codex 自动化。如果那时 Mac 已经睡着,任务就会被直接跳过。

计划 AI 任务功能不需要写任何脚本就能补上这个缺口。在偏好设置,自动化,计划 AI 任务下打开它,然后为每个你想唤醒的工具打开开关。Keepresso 会读取该工具已安排的定期任务,在每次任务开始前几分钟唤醒 Mac,并让它保持唤醒一小段时间,这样即使合着盖子任务也能照常执行。

Keepresso 的计划 AI 任务偏好设置,列出发现的例行任务:两个 Claude Desktop 任务和一个 Codex 任务,各自带有下一次运行时间和独立开关,上方是下一次唤醒时间和保持唤醒的时间窗口
Keepresso 找到的例行任务,各自带独立开关和下一次运行时间。

在你打开某个工具的开关之前,不会导入任何内容,而且每个例行任务都有自己独立的开关,所以你可以只为夜间报告任务唤醒,其余的忽略不管。如果列表是空的,说明这个工具目前还没有本地定期任务。

  • 按工具逐一开启。 Claude Desktop 和 Codex 默认都是关闭的,所以你不用的工具永远不会被唤醒。它只读取日程和任务名称,绝不会读取任务的提示词内容。
  • 只针对本地日程。 云端例行任务无论你的 Mac 是否唤醒都会在厂商的服务器上运行,因此会被忽略。这个功能只针对那些真正需要你的 Mac 保持唤醒的任务。
  • 对于更长时间的任务, 可以搭配租约使用:唤醒窗口负责把任务启动起来,之后由智能体持有租约,让 Mac 保持唤醒直到工作真正完成。
计划 AI 任务面板显示未找到任何例行任务,提示你在 Claude Desktop 的“例行任务,新建例行任务,本地”下添加一个,或在 Codex 中添加,并说明云端例行任务不需要唤醒
目前还没有需要唤醒的任务:面板会说明在哪里添加本地例行任务。

在底层,它使用的是和上面 CLI 的 keepresso wake 命令相同的定时唤醒机制,因此需要管理员辅助程序,接交流电时可靠(用电池时固件可能会跳过这次唤醒)。

你需要什么

  • Keepresso 1.17 或更新版本即可使用租约、MCP 服务器和 CLI 唤醒命令;计划 AI 任务功能则需要 1.18 或更新版本。安装步骤:Keepresso 入门指南
  • 若在 DMG 安装下使用 CLI,请链接一次命令
  • 若要修改唤醒计划或使用计划 AI 任务,需要管理员辅助程序和上面那些需选择启用的开关。

相关

获取 Keepresso

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