AI / 自動化 2026年5月11日

2026-05-11 OpenClaw 工作區根路徑倉庫白名單單體倉庫護欄——無頭租用 Apple Silicon 雲端 Mac(香港 / 東京 / 首爾 / 新加坡 / 美國

MacXCode 技術團隊 2026年5月11日 約 20 分鐘閱讀

無頭閘道在工具走出您本想編輯的儲存庫之前,幾乎都是「隱形」的。在香港、東京、首爾、新加坡與美國租用的 Mac mini M4 主機上,同一 UID 往往同時承載 OpenClawxcodebuild 車道與長期存在的簽章素材——因此「工作區」是一項安全屬性,而不是氛圍感。這份 2026-05-11 手冊把 檔案傳輸路徑策略launchd 環境變數與金鑰衛生工作階段 checkpoint 紀律並行車道隔離 串聯成明確的白名單根路徑、解析後的符號連結,以及當助手伸向 ~/Library 或相鄰 CI 目錄時必須失敗閉合的演練。

為何工作區護欄決定共享租用主機上的爆炸半徑

錯誤劃定根路徑,會把看似無害的檔案讀取變成「鑰匙圈鄰域」驚嚇:模型跟隨相對路徑、shell 在 launchd 下對 ~ 的展開與互動式工作階段不一致,或陳舊符號連結從「已授權」子樹指向另一租戶的檢出目錄。生產閘道因此發布檔案系統的正向清單——絕不能只依賴「模型的常識」。將這些清單與自動化工單綁定:每次合併基礎設施設定時,同時審查 OpenClaw 策略檔與相鄰 CI 封裝指令碼。

失敗閉合預設策略:若某路徑無法歸一化到白名單 realpath,則在呼叫原生工具之前拒絕——使用結構化日誌流水線中的關聯 ID 記錄拒絕事件。

結構:OPENCLAW_STATE_DIR、CI 檢出與 DerivedData 鄰接

將助手的持久狀態視為資料面儲存:既不要與暫時的 /tmp 複製放在一起,也不要與 Xcode DerivedData 這類會被清理工作中途刪掉的樹相鄰。文件化三個環——狀態環(checkpoint 與策略檔)、工作區環(您授權的 git 根)、草稿環(可丟棄的匯出)——並確保清理 cron 尊重環邊界。當 CI 與助手共享 UID 時,遵循並行車道文章中的隔離指引,避免競態導致鎖檔懸空。

  • 狀態環 —— 白名單的版本化片段 + 適用時的密封 JSON。
  • 工作區環 —— 每個儲存庫/業務線一個或多個絕對根路徑。
  • 草稿環 —— 位於依作業前綴劃分的 TMP 下的帶 TTL 目錄。

與檔案傳輸及 shell 工具策略聯動的白名單

2026-05-07 的檔案傳輸外掛預設偏向拒絕;工作區根應鏡像這些預設,使 fetch/列目錄無法沿符號連結跳到僅因符號連結跳躍才存在的父目錄。依環境(stagingprod)編碼根路徑,並二者都保留在 Git 中——維運透過 PR 晉升,而不是臨時 SSH 改檔案。團隊在單體倉庫中嵌入多個微服務時,依套件劃分命名空間根,防止偽裝成「隨便看看」的跨服務讀取。

稽核提示:每月對每一個已設定根執行 readlink -f 掃描;APFS firmlink 與企業 VPN 掛載可能在不改磁碟上設定文字的情況下改道路徑。

單體倉庫邊界:SwiftPM 巢狀、Xcode workspace 與 git 子模組

大型單體倉庫對助手暴露多個 Package.swift 清單與混合 Xcode 專案。若團隊對所有權邊界有分歧,應分別釘死根路徑——例如 /build/mobile/ios/platform/android——除非存在第二條白名單項,否則禁止橫向跳躍。子模組目錄僅在通過安全審核時繼承父級授權;否則將巢狀的 .git 目錄視為需更窄範圍的顯式根。

# 核准新根之前解析符號連結 /usr/bin/python3 - <<'PY' import os roots = ["/var/ci/job123/acme"] for r in roots: print(os.path.realpath(r)) PY

CI 與互動式助手並存時的檢出位置

暫時 CI 常把儲存庫複製到 /var/tmp 下帶雜湊的目錄,或自訂工作磁區;經 SSH 啟動的助手可能預設使用 ~/workspace。統一約定:依區域匯出 ASSISTANT_WORKSPACE_ROOT,並教導編排器只把檢出掛載在已授權前綴之下。當 GitHub Actions 自架標籤與 OpenClaw 路由到同一台 Mac 時,強制使用不同路徑,避免 PR 清理與助手相關草稿並發刪除。

launchd:向非互動閘道匯出根路徑

互動式 shell 會載入 profile 片段;守護程序不會。將白名單鏡像到 plist 的 EnvironmentVariables 或帶校驗和的引用 env 檔。在更新後透過受控的 launchctl kickstart 重新載入閘道,並依 健康探測 指引擷取 stdout——同時驗證 HTTP 就緒與針對禁用路徑的檔案系統探測。

決策矩陣:路徑意圖 vs 執行層

情境 風險 首選緩解
助手讀取儲存庫並跟隨 ../ 逃逸到相鄰服務的金鑰 正向前綴校驗 + 歸一化後拒絕 ..
指向桌面/文件的符號連結 無頭與 GUI 情境下 TCC 預期不同 解析符號連結目標;對照 macOS 隱私文件交叉檢查
共享 UID 的 CI 與助手 重疊目錄上的刪除競態 依編排 ID 劃分獨立的 TMPDIR 命名空間
緊急熱修分支 臨時放寬白名單卻無回復計畫 帶時限的白名單工單 + 自動到期

工作區治理的八步上線

  1. 透過稽核日誌清點過去 30 天內助手接觸過的每個檔案系統路徑。
  2. 編碼最小白名單;擴大範圍需 VPEng + 安全審核。
  3. 將策略合併入 Git;將校驗和附加到自動化發佈包。
  4. 依區域部署 plist/env 更新並配合健康 curl。
  5. 執行指令碼化拒絕測試,涵蓋符號連結逃逸。
  6. 培訓值班人員快速回復白名單 PR。
  7. 讓清理指令碼與草稿 TTL 合約對齊。
  8. 每季發佈回顧指標,比較拒絕與允許操作的比例。

工作區治理的 SLO 訊號

訊號 閾值 動作
未核准路徑嘗試 每閘道每週 > 3 凍結設定變更;回放事故追蹤
白名單相對 Git 漂移 任意未發佈的手改 回復主機;強制僅 PR 工作流程
符號連結稽核失敗 關鍵發現 > 0 阻擋發佈;重建解析根對應

常見問題

問題 實務答覆(2026-05-11)
根路徑是否應整段包含 /Users/ci 否——依流水線或租戶切片;整段根會抵消白名單意義。
助手能否在工作區外寫入快取? 僅能在宣告的草稿前綴內,並附配額與自動汰換。

為何 Mac mini M4 租用有利於檔案系統治理

高速 NVMe 與可預期的統一記憶體讓您在 symlink 稽核、三儲存庫並行複製與閘道健康檢查同時執行時不必把交換推到極限——這在事故迭代白名單時很重要。透過 定價頁 依區域規劃容量;在擴大根路徑之前,先把把握不準的同事導向 SSH/VNC 指南

租用策略可強制落地的建置機

港 / 日 / 韓 / 新 / 美 · SSH / 選用 VNC