深入理解OpenClaw技术架构与实现原理(下)

411 字

深入理解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

...(内容截断,完整内容请查看原文)


本页由自动化脚本生成,待人工审核补充