深入理解OpenClaw技术架构与实现原理(下)
深入理解OpenClaw技术架构与实现原理(下)
来源类型: 微信公众号文章
日期: 2026-06-02
标签: AI, OpenClaw, 记忆系统, 办公效率, 网络安全, 组网, 编程, 区块链, 物流, 数字化, 芯片, 大模型
原文链接: https://mp.weixin.qq.com/s/FUJEofqbK7vX-J64UX8Nkg
摘要
阿里妹导读 本文是《深入理解OpenClaw技术架构与实现原理(上)》的续篇,主要讲述从沙箱隔离到企业级智能体演进。 三、各系统模块讲解 3.8 SandBox 沙箱系统 Sandbox 是 OpenClaw 的 Docker 隔离层,用于在容器中执行 AI Agent 的工具操作,而非直接在主机上运行。 ## 3.8.1 核心目的 - 限制工具执行(exec、read、write、edit 等)的安全边界 - 减少模型执行意外操作时的"爆炸半径" - 提供可配置的隔离级别 ## 3.8.2 关键文件结构 - - - - - - - - - - src...
核心内容
阿里妹导读
本文是《深入理解OpenClaw技术架构与实现原理(上)》的续篇,主要讲述从沙箱隔离到企业级智能体演进。
三、各系统模块讲解
3.8 SandBox 沙箱系统
Sandbox 是 OpenClaw 的 Docker 隔离层,用于在容器中执行 AI Agent 的工具操作,而非直接在主机上运行。
3.8.1 核心目的
- 限制工具执行(exec、read、write、edit 等)的安全边界
- 减少模型执行意外操作时的"爆炸半径"
- 提供可配置的隔离级别
3.8.2 关键文件结构
-
-
-
-
-
src/agents/sandbox/├── types.ts # 核心类型定义├── config.ts # 配置合并逻辑├── context.ts # 入口点 - 解析沙箱上下文├── docker.ts # Docker 容器管理├── browser.ts # 隔离浏览器容器├── tool-policy.ts # 工具允许/拒绝策略├── validate-sandbox-security.ts # 安全验证├── fs-bridge.ts # 文件系统操作桥接└── prune.ts # 容器自动清理
3.8.3 沙箱模式
模式行为"off"不隔离,所有工具直接在主机运行"non-main"仅隔离非主会话(默认)"all"所有会话都隔离
3.8.4 容器作用域
作用域容器数量"session"每个会话一个容器(默认)"agent"每个 Agent 一个容器"shared"所有会话共享一个容器
3.8.5 工作区访问权限
权限挂载行为"none"完全隔离的工作区 ~/.openclaw/sandboxes"ro"只读挂载 Agent 工作区到 /agent"rw"读写挂载到 /workspace
3.8.6 安全限制
禁止的绑定挂载:
- 系统路径:/etc、/proc、/sys、/dev、/root、/boot、/run
- Docker socket:/var/run/docker.sock
-
根文件系统:/
禁止的网络模式: -
host(绕过网络隔离)
-
container:
(命名空间加入)
默认安全配置: -
只读根文件系统 (readOnlyRoot: true)
- 无网络 (network: "none")
- 丢弃所有能力 (capDrop: ["ALL"])
3.8.7 工具策略层级
隔离时工具过滤顺序:
- 全局工具策略
- Agent 特定策略
- Sandbox 工具策略(只能进一步限制)
- 子 Agent 策略
默认允许的工具:exec、read、write、edit、apply_patch、image 等
默认禁止的工具:browser、canvas、nodes、cron、gateway 及所有消息通道
3.8.8 配置示例
-
-
-
-
-
-
-
-
-
-
- { "agents": { "defaults": { "sandbox": { "mode": "non-main", "scope": "session", "workspaceAccess": "none", "docker": { "image": "openclaw-sandbox:bookworm-slim", "network": "none", "memory": "512m", "cpus": 1 }, "prune": { "idleHours": 24, "maxAgeDays": 7 } } } }}
3.8.9 CLI 命令
- openclaw sandbox list - 列出沙箱容器
- openclaw sandbox recreate - 强制重建容器
- openclaw sandbox explain - 调试当前配置
3.9 记忆管理
3.9.1 核心设计理念
OpenClaw 的记忆系统采用 "文件即真相" 的设计哲学:
- 存储介质:纯 Markdown 文件(人类可读可编辑)
- 索引机制:SQLite + 向量嵌入(机器可搜索)
- 工作模式:文件优先,索引辅助
3.9.2 记忆文件布局
-
-
~/.openclaw/workspace/├── MEMORY.md # 长期记忆(精选、持久化)└── memory/ └── YYYY-MM-DD.md # 每日记忆日志(append-only)
分层设计:
- MEMORY.md:长期记忆,存储决策、偏好、重要事实
- memory/YYYY-MM-DD.md:短期记忆,存储日常笔记、临时上下文
3.9.3 核心类型定义
-
-
-
-
-
type MemorySource = "memory" | "sessions";type MemorySearchResult = { path: string; // 文件路径 startLine: number; // 起始行号 endLine: number; // 结束行号 score: number; // 相关性得分 snippet: string; // 文本片段(~700 字符) source: MemorySource; // 来源类型 citation?: string; // 引用标注};
3.9.4 核心功能模块
记忆索引管理器 (MemoryIndexManager)
核心职责:
- 管理 SQLite 索引数据库
- 协调向量化搜索和全文搜索
- 监视文件变化并自动同步
-
处理 embedding 提供商
关键特性: -
单例模式:通过缓存避免重复实例
- 混合搜索:向量 + BM25 关键词
- 自动同步:文件监视 + 定时刷新
-
会话集成:delta 更新机制
记忆搜索工具 -
memory_search - 语义搜索
-
基于向量嵌入的语义检索
- 返回相关片段(路径 + 行号 + 得分)
- 支持 MMR 去重和时间衰减
-
memory_get - 定向读取
-
按路径读取特定记忆文件
- 支持行范围查询
- 安全检查(防止路径穿越)
3.9.5
...(内容截断,完整内容请查看原文)
本页由自动化脚本生成,待人工审核补充