AI / 自動化 2026 年 4 月 22 日

OpenClaw 預備環境與正式環境 launchd 設定隔離:2026 租賃 Mac mini 手冊(VmMac)

VmMac 工程團隊 2026 年 4 月 22 日 約 21 分鐘閱讀

單台租賃的 Apple Silicon Mac mini上交付 OpenClaw 的平台工程師遲早會遇到聽起來很無聊、後果卻很嚴重的危機:預備環境實驗污染正式閘道器——因為兩個世界讀取同一狀態目錄、共用 LaunchAgent 標籤前綴,或綁定同一本機連接埠。這份 2026 手冊說明如何讓主機具備兩種可稽核人格:分離的 OpenClaw 主目錄前綴、互不衝突的 plist 標籤、明確的 LimitLoadToSessionType 選擇,以及值班能用 grep 核對的環境變數優先順序表。請與 祕密與 plist 安全無頭與 GUI 工作階段指南閘道器恢復一起閱讀,避免重新啟動變成自我斬首的自動化迴圈。

VmMac 在香港、日本、韓國、新加坡與美國提供節點及 SSH 與選用 VNC設定檔隔離仍是你的契約。

單機上的兩種人格,避免共享式失憶

把預備環境與正式環境視為兩支碰巧共享電源與 NVMe 的艦隊:需要分離的設定根日誌路徑API 金鑰——絕不是「同一金鑰換模型」。若以符號連結把預備目錄指到正式,你會重現共享建置代理最糟的部分:不穩定佇列、無法解釋的頻率限制,以及無人信任的午夜 diff。把命名方案寫成疲憊人類也能執行:OPENCLAW_HOME_STGOPENCLAW_HOME_PRD 僅出現在 LaunchAgent plist 的 EnvironmentVariables 字典裡,而不是可能被互動式 SSH 工作階段改寫的 shell profile。

  • 數值護欄:兩個閘道器同時運行時 NVMe 至少保留 40 GB 空閒;SQLite 佇列與本機模型快取爭用同一塊磁碟預算。
  • 數值護欄:除非已測量餘量,否則合併進行中的出站 webhook 扇出用戶端上限為 30;突發流量會「有禮地」讓預備環境拖垮正式環境。
  • 數值護欄:即便供應商不要求,也每 14 天輪換預備環境權杖;陳舊憑證會變成複製貼上事故源。

目錄版面:狀態、日誌與「絕不同步此處」紀律

將兩套根放在 /usr/local/var/openclaw-* 等營運擁有前綴下——不要放桌面,也不要靠近 iCloud 路徑。在香港、日本、韓國、新加坡、美國保持相同版面,讓以 rsync 為基礎的診斷指令稿行為一致。本節請與 結構化日誌與輪替 配對,避免預備環境在長週末把磁碟寫滿並擠掉正式環境日誌。

磁碟衛生:若預備環境 JSONL 在沒有保留作業的情況下每天成長超過 2 GB,在修復輪替前阻止任何設定晉升——靜默丟日誌比響亮丟佇列更糟。

LaunchAgent 標籤、ThrottleInterval 與 LimitLoadToSessionType

使用不同的反向 DNS 標籤,例如 com.yourorg.openclaw.gateway.stgcom.yourorg.openclaw.gateway.prd;絕不要僅大小寫不同。將 ThrottleInterval閘道器恢復 中的最壞重新啟動時間對齊,避免 launchd 在正式仍在排空通訊端時反覆拉起損壞的預備環境 plist。若預備環境需要 GUI 輔助偵錯,僅對該 plist 將 LimitLoadToSessionType 設為包含 Aqua;正式環境保持無頭以降低 TCC 暴露面。

連接埠、回環綁定與 StandardOutPath 衛生

預設將預備環境綁定到 127.0.0.1:18789,正式環境綁定到 127.0.0.1:18790——若內部標準已佔用這些連接埠可調整,但保持奇偶拆分便於值班記憶。確保兩個代理的 StandardOutPathStandardErrorPath 永不指向同一檔案;交織日誌會在 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 會在程式碼審查中立即暴露,而不是客戶示範現場。

晉升前七步冒煙與回復手冊

  1. 解除載入預備環境 plist;用 lsof 確認連接埠已關閉。
  2. 匯出預備環境狀態 tarball 供鑑識——勿在正式復用。
  3. 用金絲雀權杖對預備環境監聽器執行合成 webhook。
  4. 跨區域 diff plist;除主機名外差異應為零。
  5. 載入正式 plist;確認健康端點在 12 秒內回傳 200
  6. 回放正式佇列深度基線;若高於基線 3 倍則告警。
  7. 記錄回復:解除載入 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 才會從示範變成基礎設施。

先在備用區域演練雙 plist

定價 頁在區域內再加一台 Mac mini,練習晉升而不危及主閘道器。