用自動化租約讓 AI 代理人與指令碼保持 Mac 喚醒
通宵執行長時間任務的代理人,需要 Mac 在工作時保持喚醒,工作完成後進入睡眠。單純的「開啟保持喚醒」只做到前半段,卻做不到後半段:一旦工具當掉或忘了關閉它,Mac 就會永遠被釘在喚醒狀態。自動化租約正是為此而生。指令碼或 AI 代理人取得一份有時限的租約,在工作進行期間持續續約,並在結束時釋放它。如果工具在任務進行中掛掉,租約就會直接到期,Mac 便可再次睡眠。不會有任何東西不小心讓機器一直醒著。
Keepresso 為此提供了完整的一整套工具:keepresso lease 指令、任何支援 MCP 的代理人都能呼叫的 MCP 伺服器,以及可一鍵安裝的內建代理人技能。
偵測負責觀察,租約負責發話
Keepresso 早已內建一個 AI 代理人觸發條件,能偵測編碼代理人何時正在實際工作:Claude Code 可以透過選用啟用的 hook 回報自己的真實狀態,而已知的代理人(claude、codex、gemini 等)則根據它們自身處理程序的活動來判斷。這一側完全不需要在代理人裡做任何設定,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,因此自動化永遠無法凌駕你的選擇。
從選單查看並停止它們
運作中的租約會出現在選單面板的狀態卡片上,各自帶有倒數計時。主導權仍在你手上:Stop 會一次結束全部,Mac 便可再次自由睡眠。
一鍵教會你的代理人
你不必手動向代理人解釋這一切。應用程式包內附一個現成的保持喚醒技能,能教會代理人整套協定,同時涵蓋 keepresso 命令列和 MCP 伺服器,還有該在什麼時候使用它:在長時間建置、渲染、下載或通宵執行之前。在 偏好設定 → 自動化 下,可以直接從磁碟把它安裝到代理人的技能資料夾。對於沒有技能資料夾的代理人,Keepresso 則會把完整的技能複製成可直接貼上的指示:把它們貼進代理人一次,協定就學會了,或是把它們存進代理人每次都會讀取的全域設定檔,例如 CLAUDE.md 或 AGENTS.md,讓往後每個工作階段都已經知道該如何、以及何時讓 Mac 保持喚醒。如果你想自己動手接好它,這個技能也存放在應用程式包的 Keepresso.app/Contents/Resources/AgentSkill/keep-awake。
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 伺服器也依相同規則提供對應的工具。
你需要什麼
相關文章
- 用 keepresso CLI 從命令列讓 Mac 保持喚醒 涵蓋
keepressoCLI 的其餘部分。 - 長時間建置與編譯時讓 Mac 保持喚醒 說明由你自己執行的任務可以採用的觸發條件式做法。
- 在常駐運作的 Mac 上執行代理人?MyAgens 能為它配上一支從 Telegram 指揮的 Claude Code 代理人團隊。
更多「使用 Keepresso」內容
