OpenClaw 預備環境與正式環境 launchd 設定隔離:2026 租賃 Mac mini 手冊(VmMac)
在單台租賃的 Apple Silicon Mac mini上交付 OpenClaw 的平台工程師遲早會遇到聽起來很無聊、後果卻很嚴重的危機:預備環境實驗污染正式閘道器——因為兩個世界讀取同一狀態目錄、共用 LaunchAgent 標籤前綴,或綁定同一本機連接埠。這份 2026 手冊說明如何讓主機具備兩種可稽核人格:分離的 OpenClaw 主目錄前綴、互不衝突的 plist 標籤、明確的 LimitLoadToSessionType 選擇,以及值班能用 grep 核對的環境變數優先順序表。請與 祕密與 plist 安全、無頭與 GUI 工作階段指南、閘道器恢復一起閱讀,避免重新啟動變成自我斬首的自動化迴圈。
VmMac 在香港、日本、韓國、新加坡與美國提供節點及 SSH 與選用 VNC;設定檔隔離仍是你的契約。
單機上的兩種人格,避免共享式失憶
把預備環境與正式環境視為兩支碰巧共享電源與 NVMe 的艦隊:需要分離的設定根、日誌路徑與 API 金鑰——絕不是「同一金鑰換模型」。若以符號連結把預備目錄指到正式,你會重現共享建置代理最糟的部分:不穩定佇列、無法解釋的頻率限制,以及無人信任的午夜 diff。把命名方案寫成疲憊人類也能執行:OPENCLAW_HOME_STG 與 OPENCLAW_HOME_PRD 僅出現在 LaunchAgent plist 的 EnvironmentVariables 字典裡,而不是可能被互動式 SSH 工作階段改寫的 shell profile。
- 數值護欄:兩個閘道器同時運行時 NVMe 至少保留 40 GB 空閒;SQLite 佇列與本機模型快取爭用同一塊磁碟預算。
- 數值護欄:除非已測量餘量,否則合併進行中的出站 webhook 扇出用戶端上限為 30;突發流量會「有禮地」讓預備環境拖垮正式環境。
- 數值護欄:即便供應商不要求,也每 14 天輪換預備環境權杖;陳舊憑證會變成複製貼上事故源。
目錄版面:狀態、日誌與「絕不同步此處」紀律
將兩套根放在 /usr/local/var/openclaw-* 等營運擁有前綴下——不要放桌面,也不要靠近 iCloud 路徑。在香港、日本、韓國、新加坡、美國保持相同版面,讓以 rsync 為基礎的診斷指令稿行為一致。本節請與 結構化日誌與輪替 配對,避免預備環境在長週末把磁碟寫滿並擠掉正式環境日誌。
LaunchAgent 標籤、ThrottleInterval 與 LimitLoadToSessionType
使用不同的反向 DNS 標籤,例如 com.yourorg.openclaw.gateway.stg 與 com.yourorg.openclaw.gateway.prd;絕不要僅大小寫不同。將 ThrottleInterval 與 閘道器恢復 中的最壞重新啟動時間對齊,避免 launchd 在正式仍在排空通訊端時反覆拉起損壞的預備環境 plist。若預備環境需要 GUI 輔助偵錯,僅對該 plist 將 LimitLoadToSessionType 設為包含 Aqua;正式環境保持無頭以降低 TCC 暴露面。
連接埠、回環綁定與 StandardOutPath 衛生
預設將預備環境綁定到 127.0.0.1:18789,正式環境綁定到 127.0.0.1:18790——若內部標準已佔用這些連接埠可調整,但保持奇偶拆分便於值班記憶。確保兩個代理的 StandardOutPath 與 StandardErrorPath 永不指向同一檔案;交織日誌會在 webhook 去重調查中摧毀因果鏈。
環境變數優先順序矩陣(值班速查)
| 來源 | 預備環境優先順序 | 正式環境優先順序 | 事故提示 |
|---|---|---|---|
LaunchAgent plist EnvironmentVariables |
常駐程式情境勝過 shell | 常駐程式情境勝過 shell | 始終用 launchctl print gui/$(id -u)/com...stg 列印核對 |
SSH 工作階段的 ~/.zshenv |
僅適用於人類 | 不得覆寫 plist | 從 shell 移除祕鑰 |
狀態目錄內的 .env |
允許應用程式本機預設值 | 嚴格白名單 | 絕不要在 stg/prd 間做符號連結 |
launchctl print 無法證明哪條環境變數獲勝,值班就會猜——而猜測正是正式金鑰流入預備環境 Slack 機器人的方式。
當工程師要求「只換 API 金鑰複用正式 plist」時,用差異優先策略反擊:每個預備環境 plist 至少要在五個可見鍵上與正式不同——連接埠、標籤、日誌路徑、狀態根與節流旋鈕——這樣意外的 cp 會在程式碼審查中立即暴露,而不是客戶示範現場。
晉升前七步冒煙與回復手冊
- 解除載入預備環境 plist;用
lsof確認連接埠已關閉。 - 匯出預備環境狀態 tarball 供鑑識——勿在正式復用。
- 用金絲雀權杖對預備環境監聽器執行合成 webhook。
- 跨區域 diff plist;除主機名外差異應為零。
- 載入正式 plist;確認健康端點在 12 秒內回傳 200。
- 回放正式佇列深度基線;若高於基線 3 倍則告警。
- 記錄回復:解除載入 prd,從 git 標籤恢復上一版 plist。
閘道器恢復交叉連結與已知自動化陷阱
社群報告指出,在代理工作階段內部呼叫閘道器重新啟動會在某些 launchd 設定下導致行程結束卻無乾淨重拉——請把晉升設計為工作時間由人類先重新啟動閘道器。將執行手冊綁定到 安裝與部署指南,使「重裝服務」步驟版本固定,而非部落知識。
雙設定檔的五地域一致性檢查
每週在每個 VmMac 區域重複相同的七步晉升演練。分歧通常意味著路徑拼字錯誤或區域特定 plist 編碼,而不是神秘的雲端行為。保持 說明中心 範例與儲存庫中實際 plist 鍵一致。
常見問題:單台 Mac mini 上的預備與正式 OpenClaw
能共享一個 Node 二進位檔嗎?可以——全域固定版本;絕不共享狀態目錄。
預備環境應呼叫真實供應商 API 嗎?優先沙箱;若不可能,請限速並明確標記流量。
誰擁有回復?你的平台團隊;VmMac 不會回退 plist。
為何 2026 年 Mac mini M4 仍適合雙閘道器裸金屬
Apple Silicon Mac mini 為兩個閘道器行程、本機 SQLite 佇列與背景模型助手提供可預測的單租戶輸送量,且沒有吵鬧的鄰居。按區域租賃可把預備環境貼近開發者,同時讓正式環境貼近上游 SaaS 出口——無需為每位工程師買兩張實體桌。VmMac 的 SSH 優先工作流讓你能像應用程式程式碼一樣透過同一 git 流水線強制 plist 變更,並在香港、日本、韓國、新加坡與美國一致驗證。把 launchd 隔離當作產品品質而非管道瑣事——OpenClaw 才會從示範變成基礎設施。