OpenClaw Docker 沙盒配置與記憶體管理指南
寫程式最煩的就是環境隔離。你想讓 AI 幫你跑腳本,但又怕它把你的系統搞爛;你想讓它記住你的偏好,但又不希望它把私密對話洩漏到公開群組。這就是為什麼我們需要搞清楚 OpenClaw 的沙盒與記憶機制。
這篇文章會帶你了解如何平衡安全與功能,讓你的機器人既聰明又安全。
有專門的 Sandboxing 文件嗎?
Section titled “有專門的 Sandboxing 文件嗎?”有的。請參考 Sandboxing。如果你想看 Docker 相關的設定,請看 Docker。
覺得 Docker 限制太多?如何開啟完整功能?
Section titled “覺得 Docker 限制太多?如何開啟完整功能?”預設的 image 是以安全為重,並以 node 使用者執行,所以沒有內建系統套件、Homebrew 或瀏覽器。如果你需要更強大的環境:
- 使用
OPENCLAW_HOME_VOLUME來持久化/home/node,讓快取不會消失 - 透過
OPENCLAW_DOCKER_APT_PACKAGES把系統依賴裝進 image - 執行
node /app/node_modules/playwright-core/cli.js install chromium安裝 Playwright 瀏覽器 - 設定
PLAYWRIGHT_BROWSERS_PATH並確保該路徑有被持久化
我可以讓私訊保持私密,但讓群組在沙盒中運行嗎?
Section titled “我可以讓私訊保持私密,但讓群組在沙盒中運行嗎?”可以 —— 只要你的私密流量是 DMs,而公開流量是 groups。
設定 agents.defaults.sandbox.mode: "non-main",這樣群組或頻道的 session(non-main keys)就會在 Docker 裡跑,而主要的 DM session 則會留在主機上。
如何將主機資料夾掛載到沙盒中?
Section titled “如何將主機資料夾掛載到沙盒中?”將 agents.defaults.sandbox.docker.binds 設定為 ["host:path:mode"]:
{ agents: { defaults: { sandbox: { docker: { binds: ["/home/user/src:/src:ro"] } } } }}敏感內容建議使用 :ro(唯讀),並記住 binds 會直接穿透沙盒的檔案系統防護。
記憶功能是如何運作的?
Section titled “記憶功能是如何運作的?”OpenClaw 的記憶其實就是 agent 工作區裡的 Markdown 檔案:
- 每日筆記存放在
memory/YYYY-MM-DD.md - 整理過的長期筆記存放在
MEMORY.md(僅限 main/private sessions)
OpenClaw 還會執行 silent pre-compaction memory flush,在自動壓縮對話前提醒模型寫下持久的筆記。
機器人老是忘東忘西,該怎麼讓它記住?
Section titled “機器人老是忘東忘西,該怎麼讓它記住?”直接叫機器人 把這件事寫進記憶(write the fact to memory)。長期筆記屬於 MEMORY.md,短期上下文則進到 memory/YYYY-MM-DD.md。
如果它還是記不住,請檢查 Gateway 每次執行時是否都使用同一個工作區。
語義記憶搜尋需要 OpenAI API key 嗎?
Section titled “語義記憶搜尋需要 OpenAI API key 嗎?”只有當你使用 OpenAI embeddings 時才需要。Codex OAuth 只涵蓋 chat/completions,不包含 embeddings 的權限。
OpenClaw 支援 OpenAI, Gemini, 或 local 的 embedding 模型。如果你想完全跑在本地,請設定 memorySearch.provider = "local"。
記憶會永久保存嗎?有什麼限制?
Section titled “記憶會永久保存嗎?有什麼限制?”記憶檔案存在硬碟上,除非你手動刪除,否則會一直都在。限制取決於你的儲存空間,而不是模型。
不過 session context 仍然受限於模型的上下文視窗,所以長對話可能會被壓縮或截斷。這就是為什麼需要記憶搜尋 —— 它能把相關的部分重新抓回上下文中。
如果你在設定過程中遇到問題,可以詢問 AI Setup Assistant。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。