caffeinate 是什麼?讓 Mac 不睡、AI Agent 整夜不斷線(含怎麼停止)
caffeinate 是 macOS 內建指令,作用是防止 Mac 進入睡眠,讓 OpenClaw、Hermes 這類長時間跑的 AI Agent 不因電腦休眠而斷線。這篇白話講 caffeinate 是什麼、-dimsu 五個參數各做什麼、常用寫法,以及怎麼用 killall caffeinate 停止,附最容易踩的坑。
一句話:
caffeinate是 macOS 內建的指令,作用是「防止 Mac 進入睡眠」、讓電腦保持清醒。 把它套在 Agent 啟動指令前面(caffeinate -dimsu 你的指令),電腦就不會因為閒置而休眠、連線不會斷、長任務不會停在一半。想停止:killall caffeinate(詳見下方)。
關鍵字:caffeinate、caffeinate 是什麼、caffeinate 用法、Mac 不睡覺、防止 Mac 休眠、讓 Mac 保持喚醒、killall caffeinate、caffeinate -dimsu、-i -t -w、Mac 掛機不斷線
這篇來自一個很實際的痛:你叫 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 之類的方式,讓它不隨視窗關閉而中斷。但丟到背景後就不能用 Ctrl + C 停了——要收掉它,執行 killall caffeinate,一次結束所有還在跑的 caffeinate。
闔上筆電蓋,多半還是會睡。 這是最多人誤會的地方。caffeinate 擋的是「閒置休眠」,但闔上上蓋觸發的睡眠是另一回事——一般情況下即使 caffeinate 在跑,蓋子一闔電腦還是會睡(除非接電源+外接螢幕等特定條件)。要長時間掛著跑,就讓螢幕開著,別闔蓋。
用電池時 -s 沒用。 前面提過,值得再講一次:要靠 -s 撐整個系統不睡,請插著電源。
它治不了「網路本身斷線」。 caffeinate 只負責讓電腦別睡。Wi-Fi 不穩、路由器重開、ISP 抽風是另一個問題,別怪到它頭上。
如何預防:先想清楚你到底需不需要 24 小時不睡
這招很方便,但別無腦全開。讓 Mac 整天整夜不睡,代價是實在的:耗電、發熱、電池折壽,機器一直空轉。給你一條 checklist:
- 偶爾跑長任務——用「寫法一」讓它跑完自動放行,剛剛好,別讓它一直開著。
- 天天都要掛著接訊息/跑排程——這時該往前想一層:是不是該把 Agent 放到一台本來就 24 小時開著的機器上?一台便宜的 VPS、一台舊電腦、甚至一台樹莓派,都比讓主力筆電硬撐更合理。
- 記住 caffeinate 的定位——它是「臨時讓它別睡」的工具,不是「架一個穩定常駐服務」的正解。真的要長期常駐,
pmset、launchd,或直接跑在伺服器上,會比一行 caffeinate 更穩。
常見問題
caffeinate 是什麼?
caffeinate 是 macOS 內建的一個指令,作用是防止 Mac 進入睡眠、讓電腦保持清醒。名字來自「咖啡因(caffeine)」——就像人喝了咖啡會睡不著。它最常拿來讓長時間跑的程式(例如 AI Agent、長分析、整夜排程)不因電腦休眠而中斷。
caffeinate 怎麼停止/關掉?
看你怎麼開的:在終端機前景跑的,按 Ctrl + C 就停;如果是加 & 丟到背景、或用 nohup/tmux 跑的,執行 killall caffeinate 一次結束所有還在跑的 caffeinate。另外,用「寫法一」caffeinate 你的指令 的話,接的指令一跑完它就自動退場,不用你手動停。
caffeinate 和 pmset 差在哪?
caffeinate 是「臨時、跟著某個工作或視窗」讓 Mac 別睡,工作一結束就恢復正常;pmset 則是改「系統電源管理設定」的工具,適合長期、全域地調整休眠行為。臨時掛個長任務用 caffeinate;要一台機器長期常駐,用 pmset/launchd 或乾脆跑在伺服器上更穩。
用電池時 caffeinate 有效嗎?
部分有效。-i(防閒置休眠)用電池時仍然有效,但 -s(防系統休眠)只在接電源時才作用——這是 Apple 的設計。要靠 caffeinate 撐整晚,建議插著電源。
鴨編的話:工具選對場合最重要。caffeinate 是你今晚就能用、解「跑一段長任務別讓它斷」的最快解法——這件事它做得漂亮。但如果你的需求慢慢變成「我要一個永遠在線的 Agent」,那就不是喝咖啡撐夜的問題,而是該幫它找張真正的床(一台常開的機器)了。下次丟長任務給 OpenClaw 或 Hermes,就用
caffeinate -dimsu 你的啟動指令把它包起來,然後安心去泡咖啡。
這篇文章對你有幫助嗎?
💬 問答區
卡關了?直接在這裡問,其他讀者和作者都能幫忙解答。
載入中...
覺得有用?分享給也在弄髒雙手的朋友
分享到 LINE