Claude Code 的遠端控制功能非常實用:執行 claude remote-control(或在會話中輸入 /remote-control),然後用 Claude 應用程式掃描 QR code,你就能在沙發上用手機繼續操控會話。在 /config 中開啟推播通知,當需要操作時,許可權提示和問題就會以推播形式送達。
然而,當你闔上 MacBook 的蓋子,會話就會停止。這是為什麼呢?因為會話是在你的 Mac 上運行的,遠端控制只是它的視窗,而不是它的副本。當 Mac 進入睡眠模式時,Claude 就會停止運作。
文件也明確指出這一點:如果你的筆記型電腦進入睡眠或網路斷線,當機器重新上線時,Claude Code 會自動重新連線。所以它是在之後才重新連線。當 Mac 睡眠時,沒有任何程式會運行,你從手機發送的訊息會一直等到蓋子再次打開。
在沒有外接螢幕的情況下闔上蓋子,無論 caffeinate 設定如何,MacBook 都會進入睡眠模式。Claude Code 在工作時會運行 caffeinate -i,這只會阻止閒置睡眠,但無法阻止闔蓋睡眠。
自行解決方案
如果蓋子打開並連接電源,則無需任何操作。caffeinate -i 會在每次執行時保持 Mac 喚醒。如果螢幕亮度困擾你,pmset displaysleepnow 可以關閉螢幕而不讓電腦睡眠。
如果蓋子關閉(例如放在包包或床邊),唯一能阻止闔蓋睡眠的方法是執行:sudo pmset -a disablesleep 1。在你執行此操作之前,有兩點需要注意:這個設定會在重啟後仍然有效,如果你忘記之後執行 sudo pmset -a disablesleep 0,Mac 會在你的包包裡保持喚醒,導致電量耗盡並發熱。
請務必將電腦放在堅硬、通風的表面上。使用電池時,你最多只能獲得幾個小時的續航時間,而且一台喚醒但閒置的 Mac 會持續輪詢。如果 Mac 在回應中途進入睡眠,你會收到「在回應中途進入睡眠」的重試訊息。
知道何時完成
除了遠端控制本身的推播通知外,你還可以設定一個「停止掛鉤」(Stop hook)來通知你。我將這些(以及從掛鉤回答 AskUserQuestion 的方法)的複製貼上版本保存在 claude-code-hooks-recipes 中。
只在工作運行時執行
我開發了 Lidnight,這是一個選單列應用程式,它彌補了遠端控制的不足:它利用 Claude Code 和 Codex 的掛鉤,只在工作階段運行時保持 Mac 喚醒(即使蓋子關閉,使用電池也一樣)。一旦所有會話都安靜十分鐘,它就會恢復 disablesleep 設定,讓 Mac 進入睡眠。
它還會在開機時撤銷殘留的 disablesleep 設定,這樣即使程式崩潰,你的 Mac 也不會卡在喚醒狀態。遠端控制功能保持不變。你可以繼續用手機操作,讓蓋子保持關閉,當工作完成時,Mac 會自行進入睡眠。