人工智慧與自動化 2026年4月29日

OpenClaw 工作區、openclaw.json 與 ~/.openclaw 狀態隔離(共享租用 Mac mini,2026)

VmMac Engineering Team 2026年4月29日 约 21 分钟阅读

OpenClaw 跑在 VmMac 租用的單臺 Apple Silicon Mac mini上的平臺工程師很快會發現:「在我 shell 裡能用」不等於「兩個 squad 在 launchd 下也能用」。脆弱的接縫幾乎從不是模型卡——而是工作區根目錄、納入版本庫的 openclaw.json 合約,以及歷史上落在 ~/.openclaw 下的每用戶狀態樹。當預發實驗把緩存寫在生產令牌旁邊,或部署後 WorkingDirectory 漂移,網關會讀錯文件,事故看起來像「LLM 退化」。本 2026 矩陣劃清邊界,並與 預發與生產 launchd 隔離密鑰與 plist 衛生多賬號隔離 配套,使香港、日本、韓國、新加坡、美國的 VmMac 主機保持乏味的一致。

安裝與部署 起步,用 幫助 理解訪問語義;當管理層認同最便宜的辦法是第二臺 mini而不是再花一週挖共享狀態時,打開 定價

工作區邊界:倉庫根與運行時檢出目錄

OpenClaw workspace 視為自動化檢出的目錄:應包含 openclaw.json、skills 清單以及你期望代碼評審覆蓋的倉庫內封裝。運行時生成的大型緩存、權重鏡像下載、草稿都應不進 git,除非有明確的製品策略。

在 VmMac 上常常根本不需要符號鏈接——清晰勝過小聰明。若工程師克隆到 ~/src/openclaw-tenant-a,而 launchd 仍指向上個月的 ~/build/openclaw,你會無休止排查。在與 SSH 堡壘同一頁記錄每個租戶的規範絕對路徑

  • Git 存意圖——默認值、特性開關、經審計的工具列表。
  • 磁盤存熵——緩存、日後需脫敏的會話記錄、臨時導出。
  • Plist 存膠水——環境、cwd、用戶會話、日誌路徑。

openclaw.json 作為合約:版本、評審與密鑰形態

openclaw.json 應像 API schema:穩定鍵、顯式默認值、僅在 JSON 方言允許處註釋。評審時拒絕夾帶長期 API 密鑰的 diff——它們屬於 密鑰衛生 描述的保管平面,而不是實習生都能 cherry-pick 的文件。

打標籤發版,才能回答「東京 03:14 跑的是哪份配置?」而無需 SSH。若必須熱修某區域,請分支、部署、合併——共享主機上的臨時雪花幾乎總比主人活得久。

護欄:若兩個租戶需要不同的 tools 允許列表,他們需要不同文件或不同用戶——絕不每天手工在同一路徑上切換兩次。

~/.openclaw 及其夥伴:絕不能碰撞的內容

用矩陣決定主目錄狀態前綴與工作區各自存放什麼。

製品 工作區 主目錄狀態
網關路由表 / 釘死的工具清單 是——已評審 JSON 否——避免腦裂
會話 cookie、設備配對 blob 否——絕不提交 是——chmod 收緊
結構化日誌 可選模板 是——體量大、輪轉
按開發者覆蓋 共享 CI 主機上絕不 僅限個人筆記本

有人問「能不能刪 ~/.openclaw 重置?」答案應引用手冊章節而非即興——刪除能修好中毒緩存,但若跳過導出步驟也會破壞合法配對。

單臺 Mac mini 上的多租戶矩陣

VmMac 擅長獨佔金屬,但財務有時強迫共享。誠實排序:

模式 隔離強度 運維負擔
每租戶獨立物理機 最高 最低戲劇性
同一主機不同 macOS 用戶 中——磁盤配額與 VNC 紀律
同一用戶不同目錄 低——人為失誤磁鐵 高——不停審計

若被迫採用第三行,至少強制執行不相交的 LaunchAgent 標籤、不相交的 localhost 端口,以及夜間對活動 plist 與 git 做 diff 的自動化。更好:遵循 預發隔離,直到財務批准另一臺 mini。

launchd WorkingDirectory、EnvironmentVariables 與路徑優先級

WorkingDirectory 不是裝飾——它決定 openclaw.json 內相對路徑如何解析以及加載哪棵 node_modules。對筆記本上會在 ~/.zshrc export 的變量,用顯式 EnvironmentVariables 配對。修改後務必用 launchctl print gui/$UID/com.example.openclaw(按域調整)驗證再宣稱勝利。

氣味測試:若 README 要求用戶先 cd 某處再運行 OpenClaw,則 plist 不完整。

在香港、日本、韓國、新加坡、美國保持 plist 模板一致;把區域端點放進由絕對路徑引用的小 env 文件,便於審計時 diff 可讀。

事故手冊:狀態中毒 vs 真實模型退化

  1. launchctl print 輸出捕獲運行中網關的 pwd
  2. 對該 cwd 下的 openclaw.json 做哈希,與自認為已部署的 git 標籤比對。
  3. 列出狀態子目錄的大小與 mtime;留意暴漲的 SQLite 或 JSONL。
  4. 禁用新流量,排空隊列,快照日誌。
  5. 把中毒狀態挪到一旁——不要刪除——以便覆盤保留證據。
  6. 在乾淨的 VmMac 金絲雀主機上重放失敗請求。
  7. 結案前記錄修復屬於配置磁盤還是模型

我們在 2026 年見到的大多數偽「模型質量」下滑,其實是陳舊的工具允許列表過期的 OAuth 刷新令牌堆在同一棵狀態樹裡——LLM 沒問題,文件系統有問題。

常見問題:租用 Mac mini 上的 OpenClaw 工作區與狀態

openclaw.json 是否應放在共享租用 Mac mini 的 git 裡? 可以——用於 schema 與非密鑰默認值,但絕不能作為密鑰的唯一歸宿——倉庫文件要與單一文檔化的密鑰平面及每租戶狀態前綴配對,使預發無法從磁盤讀取生產令牌。

什麼該放在 ~/.openclaw,什麼留在工作區檢出? 持久的機器本地緩存、設備配對與敏感運行時材料放在主目錄狀態樹;團隊已評審的配置留在工作區,並確保 launchd 顯式設置 WorkingDirectory。

如何在同一 VmMac 主機上隔離兩隊而不混淆 OpenClaw 狀態? 優先分離 macOS 用戶或分離主機;若必須共享,使用不相交的 OPENCLAW_HOME 風格前綴、不相交的 LaunchAgent 標籤與不同的 localhost 端口,遵循我們的預發隔離手冊。

launchd WorkingDirectory 會改變讀取哪個 openclaw.json 嗎? 相對路徑從 WorkingDirectory 與用戶環境解析;模糊的 cwd 是預發讀到生產工作區副本的首要原因——驗證後將 plist 釘為絕對路徑。

香港、日本、韓國、新加坡、美國的主機如何保持一致? 存儲同一 git 修訂的 openclaw.json,僅允許有意為之的區域環境覆蓋;每月 diff plist,拒絕無工單的臨時主機改動。

為何第二臺 VmMac Mac mini 比分攤狀態手術更便宜

把租戶拆到另一臺 mini,模糊的 chmod 謎題會變成可向安全團隊解釋的網絡可達邊界。邊際租金清晰落在 COGS;邊際工程師周的法醫合併往往不落賬。

若領導猶豫,展示上季度根因是「錯誤 cwd」或「共享緩存」的事故數。若非零,物理規律同意你需要另一臺主機。

複製狀態,而非謎團

為預發 OpenClaw 工作區再租一臺 VmMac Mac mini,使生產環境 ~/.openclaw 永不接觸實驗緩存。