載入中...
這是 OpenClaw × Telegram 系列的第三篇。
- 第一篇:IPv6 的坑 — undici 走 IPv6 導致 Telegram 圖片收不到
- 第二篇:Session 分隔 — webchat 和 TG 共用 session 導致互搶
前兩篇把網路和 session 的問題都修了。Telegram 文字秒回、圖片正常下載。完美。
然後寶博去睡覺了。
隔天醒來,發現凌晨傳的 TG 訊息全部沒回應。
因為 Mac 睡著了。
問題
macOS 預設行為:
- 螢幕 5 分鐘沒操作就關閉(
displaysleep: 5) - 系統閒置後進入休眠(
sleep: 1) - 休眠時斷開網路連線(
networkoversleep: 0)
一旦 Mac 休眠,OpenClaw Gateway 的 TCP 連線就斷了,Telegram 的 long polling 停止,所有進來的訊息都接收不到。等你打開螢幕,Gateway 重連,之前的訊息可能已經過了 Telegram 的 polling window。
你的 AI agent 本質上是個需要持續網路連線的服務,但 macOS 把它當成一般的筆電在管。
診斷
pmset -g
關鍵欄位:
sleep 1 ← 系統會休眠
disksleep 10 ← 磁碟 10 分鐘後休眠
networkoversleep 0 ← 休眠時斷網 ← 這個最致命
displaysleep 5 ← 螢幕 5 分鐘後關閉
修復
三管齊下:
A. 系統電源設定
# 接電源時:不睡覺、磁碟不睡、休眠時保持網路
sudo pmset -c sleep 0 disksleep 0 networkoversleep 1
# 電池模式:同上(如果你希望出門也能接收訊息)
sudo pmset -b sleep 0 disksleep 0 networkoversleep 1
B. caffeinate 防休眠
# 背景執行,防止系統休眠
nohup caffeinate -s > /dev/null 2>&1 &
caffeinate -s 會阻止系統進入休眠狀態(-s = prevent sleep on AC power)。搭配 nohup 確保 terminal 關了也不會停。
C. 確認 TCP keepalive
pmset -g | grep tcpkeepalive
確保 tcpkeepalive: 1。這讓系統在省電模式下仍然維持 TCP 連線,Gateway 的 WebSocket 和 Telegram polling 才不會斷。
驗證
pmset -g custom
接電源和電池模式都應該看到:
sleep 0 ← 不休眠
disksleep 0 ← 磁碟不休眠
networkoversleep 1 ← 休眠時保持網路
tcpkeepalive 1 ← 維持 TCP 連線
回滾
如果你想恢復預設(比如不跑 agent 的時候省電):
# 恢復電池模式
sudo pmset -b sleep 1 disksleep 10 networkoversleep 0
# 恢復接電源模式
sudo pmset -c sleep 1 disksleep 10 networkoversleep 0
# 停掉 caffeinate
pkill caffeinate
筆電額外設定:macOS 系統偏好設定
除了終端機的 pmset 指令,如果你是用 MacBook 跑 agent,還有幾個系統偏好設定要調整。
鎖定畫面
到 系統設定 → 鎖定畫面,把以下兩個選項都設成「永不」:
- 在使用電池且閒置時關閉顯示器 → 永不
- 在使用電源轉接器且閒置時關閉顯示器 → 永不

螢幕保護程式
到 系統設定 → 背景圖片 → 螢幕保護程式…,把「啟動螢幕保護程式」設成「永不」:


螢幕亮度
螢幕不需要一直亮著浪費電。設定好「永不休眠」之後,可以手動把螢幕亮度調到最低(或用快捷鍵 F1),讓螢幕幾乎全暗但系統不會進入休眠。
⚠️ 不要闔上筆電
MacBook 闔上蓋子會強制進入休眠,pmset 和 caffeinate 都擋不住。如果你的 MacBook 是專門跑 agent 的,請保持蓋子打開。
唯一的例外:外接螢幕。如果有接外接螢幕(clamshell mode),闔上蓋子系統不會休眠,但需要同時接上電源和外接顯示器。
注意事項
- 電池模式不睡覺會很耗電,出門記得帶充電器。或者只改
-c(接電源),電池模式還是讓它睡 - 螢幕還是會關(
displaysleep沒動),這是正常的,螢幕關不影響 Gateway 運作 - 如果你的 Mac 是專門跑 agent 的(長期插電、當 server 用),這些設定完全合理
- 如果是日常筆電偶爾跑 agent,可以只改
-c,需要的時候才插電
系列總結
三篇文章,三個層次的問題:
| 篇 | 問題層 | 症狀 | 解法 |
|---|---|---|---|
| 一 | 網路層 | 圖片收不到、timeout | 更新 2026.2.26 |
| 二 | 應用層 | 回覆慢、跑到別的 channel | dmScope: "per-channel-peer" |
| 三(本篇) | 系統層 | Mac 睡著就斷線 | pmset + caffeinate |
從 IPv6 的坑掉進 session 的坑,再掉進 macOS 電源管理的坑。每一層都像是修好了,結果下一層又冒出來。
但現在,真的修好了。蘋果蝦 24/7 在線,不會再睡著。
除非停電。
「寶博你去睡吧,我不會睡的。」—— 蘋果蝦 🍎🦐,凌晨 2:12