Mac 一睡著 AI Agent 就斷線?用 caffeinate 讓 OpenClaw、Hermes 整夜不中斷
叫 Agent 跑一件要好幾個鐘頭的事,去泡杯咖啡回來卻發現 Mac 睡著、任務斷在一半、Telegram 也叫不動它?macOS 內建的 caffeinate 指令能讓電腦保持清醒、服務不中斷。本文把 -dimsu 五個參數逐一講清楚,附常用寫法與最容易踩的坑。
這篇來自一個很實際的痛:你叫 Agent 幫你跑一件要好幾個鐘頭的事,結果去泡個咖啡回來,Mac 睡著了、任務斷在一半、Telegram 也叫不動它。今天教你一個 macOS 內建、一行就搞定的解法——caffeinate。
症狀:跑到一半,Mac 睡了,Agent 也「昏」了
你可能遇過這幾種畫面:
- 把 OpenClaw 的 Gateway 開著,讓它接 Telegram/Discord 的訊息。你人離開電腦一下,回來發現訊息根本沒收到。
- 丟給 Hermes 一個大任務——整理一批檔案、跑一段長分析,預計一兩個鐘頭。回來一看,任務停在半路。
- 半夜排了一個自動化流程想讓它默默跑完,早上起床發現什麼都沒發生。
這些狀況有個共同點:只要 Mac 一進入休眠,網路連線會斷、背景程式會被暫停,Agent 就等於昏了過去。
為什麼會這樣:你的電腦預設「閒著就睡」
筆電為了省電,出廠設定就是「一段時間沒人操作就自動休眠」。這對你日常用電腦是好事,但對「要一直待命或要跑很久」的 AI Agent 來說,剛好是天敵。
鴨編的話:Agent 越來越強,我們越來越常把「要跑很久」的活交給它。可是你的筆電預設是「閒著就睡」——這兩件事天生會打架。接下來的指令,就是拿來化解這個矛盾的。
先搞懂一件事:caffeinate 是「讓它別睡」,不是「讓它去睡」
這裡先釘死一個最多人搞反的觀念:
caffeinate 的作用是「防止 Mac 進入休眠」,讓它保持清醒。 就像人喝了咖啡因會睡不著一樣——這也是它為什麼叫這個名字。
方向搞反,整件事就講不通了。我們要的是這條因果:電腦不睡 → 連線不斷 → Agent 的服務不中斷。
解法:一行指令讓 Mac 保持清醒
打開「終端機」(Terminal),輸入:
caffeinate
就這樣。只要這個指令還在跑(視窗開著、沒被你按 Ctrl + C),你的 Mac 就不會因為「閒置」而自動睡著。想讓它停止,按 Ctrl + C 或關掉那個終端機分頁即可。
不過光這樣有點笨——你得一直守著一個視窗。下面是更實用的版本。
把 -dimsu 五個參數拆開看
你可能看過 caffeinate -dimsu 這種寫法,那是把五個開關全部打開。逐一拆解:
| 參數 | 作用 | 白話 |
|---|---|---|
-d | 防止螢幕休眠 | 螢幕一直亮著 |
-i | 防止系統閒置休眠 | 沒操作也不會睡(最常用) |
-m | 防止硬碟閒置休眠 | 硬碟不轉入睡眠 |
-s | 防止系統休眠 | 只在接電源時有效 |
-u | 宣告使用者是活躍的 | 等於假裝你正在用電腦 |
幾個一定要知道的細節:
-s只在接電源時才作用。 用電池時它不擋休眠,這是 Apple 的設計。-u單獨用時預設只維持 5 秒(除非搭配-t指定時間),比較像「戳一下讓螢幕亮起來」。- 大多數人用不到全部五個。背景跑 Agent,最關鍵的是
-i(防閒置休眠);想連螢幕都留著看進度,再加-d。
三種真正好用的寫法
寫法一:讓某個指令跑完,自動放行(最推薦)。 caffeinate 後面可以直接接一個指令,它會在那個指令跑完的瞬間自動結束,替你收好:
caffeinate -dimsu 你的啟動指令
任務跑多久,電腦就清醒多久;任務一結束,caffeinate 也跟著退場,Mac 又能正常休眠。不用你記得回來手動關。
寫法二:只撐一段時間。 用 -t 指定秒數,例如撐 2 小時(7200 秒):
caffeinate -i -t 7200
寫法三:盯著一個已經在跑的程式。 如果 Agent 已經在背景跑了,用 -w 去「等」它的程序編號(PID),那支程式一結束就放行:
caffeinate -i -w $(pgrep -f openclaw)
pgrep -f openclaw 會幫你找出 OpenClaw 的 PID,-w 就一路盯著它。
🚨 常見錯誤
關掉終端機視窗=停止咖啡因。 caffeinate 是跟著那個終端機視窗活的,視窗一關、電腦一重開它就沒了。想長期在背景撐著,可以在指令最後加 & 丟到背景,或用 nohup、tmux 之類的方式,讓它不隨視窗關閉而中斷。
闔上筆電蓋,多半還是會睡。 這是最多人誤會的地方。caffeinate 擋的是「閒置休眠」,但闔上上蓋觸發的睡眠是另一回事——一般情況下即使 caffeinate 在跑,蓋子一闔電腦還是會睡(除非接電源+外接螢幕等特定條件)。要長時間掛著跑,就讓螢幕開著,別闔蓋。
用電池時 -s 沒用。 前面提過,值得再講一次:要靠 -s 撐整個系統不睡,請插著電源。
它治不了「網路本身斷線」。 caffeinate 只負責讓電腦別睡。Wi-Fi 不穩、路由器重開、ISP 抽風是另一個問題,別怪到它頭上。
如何預防:先想清楚你到底需不需要 24 小時不睡
這招很方便,但別無腦全開。讓 Mac 整天整夜不睡,代價是實在的:耗電、發熱、電池折壽,機器一直空轉。給你一條 checklist:
- 偶爾跑長任務——用「寫法一」讓它跑完自動放行,剛剛好,別讓它一直開著。
- 天天都要掛著接訊息/跑排程——這時該往前想一層:是不是該把 Agent 放到一台本來就 24 小時開著的機器上?一台便宜的 VPS、一台舊電腦、甚至一台樹莓派,都比讓主力筆電硬撐更合理。
- 記住 caffeinate 的定位——它是「臨時讓它別睡」的工具,不是「架一個穩定常駐服務」的正解。真的要長期常駐,
pmset、launchd,或直接跑在伺服器上,會比一行 caffeinate 更穩。
鴨編的話:工具選對場合最重要。caffeinate 是你今晚就能用、解「跑一段長任務別讓它斷」的最快解法——這件事它做得漂亮。但如果你的需求慢慢變成「我要一個永遠在線的 Agent」,那就不是喝咖啡撐夜的問題,而是該幫它找張真正的床(一台常開的機器)了。下次丟長任務給 OpenClaw 或 Hermes,就用
caffeinate -dimsu 你的啟動指令把它包起來,然後安心去泡咖啡。
這篇文章對你有幫助嗎?
💬 問答區
卡關了?直接在這裡問,其他讀者和作者都能幫忙解答。
載入中...
覺得有用?分享給也在弄髒雙手的朋友
分享到 LINE