OpenClaw 工作區、openclaw.json 與 ~/.openclaw 狀態隔離(共享租用 Mac mini,2026)
把 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(按域調整)驗證再宣稱勝利。
cd 某處再運行 OpenClaw,則 plist 不完整。
在香港、日本、韓國、新加坡、美國保持 plist 模板一致;把區域端點放進由絕對路徑引用的小 env 文件,便於審計時 diff 可讀。
事故手冊:狀態中毒 vs 真實模型退化
- 從
launchctl print輸出捕獲運行中網關的pwd。 - 對該 cwd 下的
openclaw.json做哈希,與自認為已部署的 git 標籤比對。 - 列出狀態子目錄的大小與 mtime;留意暴漲的 SQLite 或 JSONL。
- 禁用新流量,排空隊列,快照日誌。
- 把中毒狀態挪到一旁——不要刪除——以便覆盤保留證據。
- 在乾淨的 VmMac 金絲雀主機上重放失敗請求。
- 結案前記錄修復屬於配置、磁盤還是模型。
我們在 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」或「共享緩存」的事故數。若非零,物理規律同意你需要另一臺主機。