沙箱与内存
沙箱与内存¶
Docker 感觉受限——如何启用完整功能?
默认镜像以安全为先,并以 node 用户运行,因此不包含系统包、Homebrew 和捆绑浏览器。要获得更完整的设置:
- 使用
OPENCLAW_HOME_VOLUME持久化/home/node,以便缓存得以保留。 - 使用
OPENCLAW_IMAGE_APT_PACKAGES将系统依赖预置到镜像中。 - 使用
OPENCLAW_INSTALL_BROWSER=1将 Playwright Chromium 及其系统依赖预置到镜像中。
我能否在保留私信个人化的同时,让群组通过同一个智能体公开/沙箱化?
可以,前提是私密流量是私信(DM),公开流量是群组。设置 agents.defaults.sandbox.mode: "non-main",使群组/频道会话(非 main 键)在配置的沙箱后端中运行,而主私信会话保留在主机上。对 Docker 选择 backend: "docker",对 Podman 选择 backend: "podman"。通过 tools.sandbox.tools 限制沙箱会话中可用的工具。
设置指南:群组:个人私信 + 公开群组。关键参考:网关配置。
如何将主机文件夹绑定到沙箱中?
将 agents.defaults.sandbox.docker.binds 设置为 ["host:container:mode"](例如 "/home/user/src:/src:ro")。全局和每个智能体的绑定会合并;当 scope: "shared" 时,每个智能体的绑定将被忽略。对敏感内容使用 :ro;绑定会绕过沙箱文件系统隔离。
OpenClaw 会同时根据规范化路径和通过最深已存在祖先解析出的规范路径来校验绑定源,因此即使最终路径段还不存在,符号链接父目录逃逸也会以失败关闭(fail closed)。
参见 沙箱 和 沙箱 vs 工具策略 vs 提权。
内存如何工作?
OpenClaw 的内存是智能体工作区中的 Markdown 文件:memory/YYYY-MM-DD.md 中的日常笔记,以及 MEMORY.md 中的长期精选笔记(仅限主/私人会话)。
OpenClaw 还会在压缩总结对话之前运行一次静默的压缩前内存刷新,提醒模型先写入持久性笔记。它仅在工作区可写时运行(只读沙箱会跳过);可以使用 agents.defaults.compaction.memoryFlush.enabled: false 禁用。参见 内存。
内存总是遗忘事情。如何让它记住?
让机器人把事实写入内存:长期笔记放在 MEMORY.md,短期上下文放在 memory/YYYY-MM-DD.md。提醒模型存储记忆通常能解决问题。如果仍然遗忘,请确认 Gateway 每次运行时都使用相同的工作区。
内存会永久保留吗?有什么限制?
内存文件存储在磁盘上,除非删除,否则会一直保留;限制在于你的存储,而不是模型。会话上下文仍然受模型上下文窗口限制,因此长对话可能被压缩或截断——这正是内存搜索存在的原因,它只将相关部分拉回上下文中。
语义内存搜索是否需要 OpenAI API 密钥?
仅当你使用 OpenAI embeddings(默认供应商)时才需要。Codex OAuth 覆盖聊天/补全,但不授予 embeddings 访问权限,因此使用 Codex 登录(OAuth 或 Codex CLI 登录)不会启用语义内存搜索。OpenAI embeddings 仍然需要一个真实的 API 密钥(OPENAI_API_KEY 或 models.providers.openai.apiKey)。
要保持在本地,请将 memory.search.provider 设置为 "local"(GGUF/llama.cpp)。其他受支持的供应商包括:Bedrock、DeepInfra、Gemini(GEMINI_API_KEY 或 memory.search.remote.apiKey)、GitHub Copilot、LM Studio、Mistral、Ollama、OpenAI 兼容服务以及 Voyage。有关设置详情,请参见 内存 和 内存搜索。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw