部落格
在咖啡廳遠端寫程式:開發者實用指南
Mac 在家,你在咖啡廳只帶手機。如何高效又安全地繼續寫程式。
繼續查看該欄目下的產品與工程更新。
瀏覽此分類有一個開發者情境反覆出現:Mac 在家或辦公室執行,Claude Code 正在處理任務,而你在別處只有一部手機。可能是咖啡廳、機場候機室,也可能是公園長椅。
本指南涵蓋在這些環境下遠端寫程式的實際考量——不是理想化的「數位遊牧」願景,而是讓它可靠、安全運作的具體操作。
出門前的準備
遠端寫程式需要在出門前做好準備,你沒辦法用手機從零搭建基礎設施。
Mac 端(出門前):
- 伺服器已啟動——Tactic Remote 的 Mac 應用程式已開啟且伺服器處於執行狀態
- Cloudflare Tunnel 已啟用——區域網路模式僅在同一網路下可用,遠端存取需要隧道
- API Key 已設定——Cloudflare Tunnel 連線必需
- 防休眠已開啟——Tactic Remote 在伺服器執行時會阻止 Mac 休眠,但請確認 Mac 不會按排程關機
- 測試隧道連線——將手機切到行動網路,確認能透過隧道 URL 連線
iPhone 端:
- Tactic Remote 已安裝,連線設定已儲存
- Cloudflare 連線模式已設定(隧道 URL + API Key)
- 通知已啟用,以便 Claude 完成任務時收到提醒
關鍵點:在家時就測試好一切。 在咖啡廳只靠手機除錯連線問題非常痛苦。
咖啡廳 WiFi:到底會出什麼問題
公共 WiFi 給遠端開發帶來三個具體問題:
1. 強制入口網頁阻斷 WebSocket 連線
大多數咖啡廳 WiFi 需要你先在強制入口網頁接受條款才能通訊。在此狀態下 WebSocket 連線會靜默失敗——手機以為已連上 WiFi,但 WebSocket 交握根本沒有完成。
解決方案: 先開啟 Safari 確認能正常載入網頁,然後再開啟 Tactic Remote。如果連線失敗,關閉 WiFi 再重新開啟——有時強制入口網頁狀態會卡住。
2. 網路切換導致斷線
手機可能在 WiFi 和行動網路之間切換,或在同一場所的不同 WiFi 存取點之間切換。每次切換都會導致 WebSocket 連線斷開。
Tactic Remote 的處理方式: 自動重新連線,採用指數退避(最多 5 次嘗試,重試間隔最長 15 秒)。偵測到重新連線後,會執行多階段狀態恢復來還原終端機狀態。你會看到短暫的「重新連線中...」狀態,然後終端機輸出重新出現。
你可以做的: 如果重新連線太慢,手動切到行動網路。Cloudflare Tunnel 在任何網路連線上都能運作,行動網路通常比不穩定的咖啡廳 WiFi 更可靠。
3. 頻寬和延遲波動
終端串流傳輸非常輕量——遠少於視訊通話的資料量。但延遲會影響介面的回應速度。在良好的 WiFi 下,按鍵即時顯示;在壅塞的網路上,會有明顯延遲。
實際影響: 對於「發射後不管」工作流(發送任務、等待通知),延遲無關緊要。它只影響即時互動——發送提示、檢視即時輸出、審批操作。如果網路差,就批次處理互動:看完輸出、想好要說什麼、輸入完整提示、一次發送。不要嘗試逐字元互動。
「發射後不管」工作流
最高效的遠端寫程式模式不是即時監控 Claude,而是這樣的:
- 從手機發送一個明確界定的任務
- 放下手機享受咖啡
- Claude 完成後收到通知
- 查看結果並發送下一個任務
這種模式之所以有效,是因為 Claude Code 在面對清晰、有邊界的提示時表現最好:
- 「修復 auth 模組中的失敗測試」(有邊界,成功標準明確)
- 「為 src/routes/ 中所有 REST 端點加入輸入驗證」(範圍具體)
- 「將 UserService 重構為建構子注入」(架構意圖清晰)
「改善程式碼庫」這樣含糊的提示在桌前就不好用,在手機上更糟,因為你很難在任務執行中途修正方向。
行動端的任務規模
一個實用的經驗法則:手機發出的每個任務應當可以不需要你的輸入就完成。 如果 Claude 需要問澄清問題,你得在場回答。如果任務是自包含的,Claude 可以在你不看的時候執行。
好的「放著不管」任務:
- 有明確重現步驟的 bug 修復
- 為現有程式碼補充測試
- 套用特定模式的重構
- 處理程式碼審查意見
需要你在場的任務:
- Claude 不確定的架構決策
- 每一步都取決於你偏好的多步驟功能開發
- 涉及 Claude 沒見過的外部服務的操作
公共網路安全
當你的程式開發命令經過公共 WiFi 傳輸時,安全性很重要。
已受保護的內容
透過 Cloudflare Tunnel 使用 Tactic Remote 提供:
- TLS 加密——WebSocket 連線使用
wss://,手機與 Cloudflare 之間的流量是加密的 - API Key 認證——隧道連線必需,防止未授權存取
- 無暴露連接埠——你的 Mac 不會向網際網路開放任何連接埠,Cloudflare 從你的 Mac 向外發起隧道連線
這意味著同一咖啡廳 WiFi 上的人無法:
- 看到你的終端機輸出(已加密)
- 向你的 Mac 發送命令(需要 API Key)
- 甚至發現你的 Mac 在執行程式開發伺服器(無入站連接埠)
仍需注意的事項
- 螢幕可見性——旁人看你肩膀就能看到終端機輸出,可能包含 API Key、資料庫憑證或敏感程式碼。處理敏感資料時使用手機防窺螢幕貼。
- API Key 儲存——Tactic Remote 連線設定中包含 API Key。如果有人拿到你解鎖的手機,可能擷取它。請使用 iOS Face ID / 密碼鎖。
- 共享剪貼簿——如果使用 Mac 與手機之間的 Universal Clipboard 要小心。Mac 剪貼簿上的敏感內容可能出現在手機上。
電池與連線規劃
長時間遠端寫程式需要關注的實際後勤問題:
電池: Tactic Remote 對電池消耗很小——WebSocket 連線大部分時間處於閒置狀態,偶爾有資料突發。相比視訊會議或地圖應用程式,電量影響極小。螢幕是主要的電量消耗來源,任務間隙關閉螢幕,依靠通知即可。
行動網路備選: 如果咖啡廳 WiFi 不可靠,行動網路通常更好。Cloudflare Tunnel 在任何網路連線上都能運作。4G/5G 延遲通常優於壅塞的公共 WiFi。
離線時段: 如果完全斷網,你的 Mac 仍在執行。Claude Code 在 tmux 工作階段中繼續處理目前任務。重新連線後,工作階段狀態仍在。你不會遺失工作——只是在恢復連線前無法監控或互動。
一次真實的咖啡廳寫程式
實際使用起來是這樣的:
2:15 PM——到達,點咖啡 手機連上 WiFi,開啟 Safari 清除強制入口網頁,開啟 Tactic Remote。透過 Cloudflare Tunnel 5 秒內連線成功。
2:17 PM——開始任務
開啟專案的現有工作階段。輸入:「CI 在 user-auth 分支失敗了。檢查失敗的測試並修復。」
2:18 PM - 2:45 PM——喝咖啡,看文章 手機震動一次:Claude 發現 3 個失敗測試,都與一個已更改的 API 簽章有關。它修復了匯入並更新了斷言。
2:46 PM——查看並繼續 開啟工作階段,瀏覽 Claude 的輸出。修改看起來正確。輸入:「執行完整測試套件驗證全部通過。」
2:47 PM - 3:10 PM——繼續喝咖啡,回覆郵件 手機震動:「任務完成。」47 個測試全部通過。
3:11 PM——最後一個任務 輸入:「以 'fix: update auth tests for new API signature' 為提交訊息 commit 並 push。」
3:12 PM——完成 Claude 確認已 push。在手機上查看 GitHub 確認 CI 變綠。關閉應用程式。
總主動寫程式時間:大約 5 分鐘。實際產出:一個真實的 bug 修復,已提交並推送。咖啡廳只是個地點——工作發生在你的 Mac 上。
不適合的情境
坦白說:
- 複雜除錯——逐步執行程式碼、檢查變數狀態、閱讀長堆疊追蹤。不管用什麼工具,在手機螢幕上做這些都很困難。
- 設計審查——檢視 UI 變更、對比版面配置。需要更大的螢幕。
- 多檔案瀏覽——理解大型 PR 或閱讀不熟悉的程式碼。筆電更合適。
- 專案初始設定——建立設定檔、搭建環境、安裝相依套件。在桌前完成。
咖啡廳工作流最適合委派明確界定的任務和審查結果。它不是專注桌面工作的替代品——而是其延伸。