1. 引言

1.1 背景

基于 OpenClaw 打造一个企业级的多领域 Agent 平台,通过分层可复用的技能(Skills)、用户级记忆管理以及安全的沙箱运行环境,实现灵活、可扩展且安全的自动化服务。

1.2 目标

目标 说明
分层技能库 分层分级管理的技能库,支持动态加载与版本控制
记忆管理 用户维度的长短期记忆管理,提升对话连贯性与个性化
沙箱隔离 沙箱池技术高效分配资源,保障多租户隔离与执行安全
标准接入 标准化用户接入流程,实现快速响应的对话服务

2. 总体架构

OpenClaw 平台采用微服务架构,核心模块包括:技能管理服务、记忆管理服务、沙箱生命周期管理服务、接入网关以及监控与运维服务。

┌──────────────────────────────────────────────────────────┐
│                    客户端(Web/App)                       │
└────────────────────────────┬─────────────────────────────┘
                             │ HTTPS/SSE
┌────────────────────────────▼─────────────────────────────┐
│              接入网关(API Gateway)                       │
│              认证限流、路由转发、协议转换                    │
└──────────────┬─────────────────────────────┬─────────────┘
               │                             │
               │ 用户请求                      │ 技能/记忆操作
┌──────────────▼───────────────┐  ┌──────────▼──────────────┐
│   沙箱生命周期管理服务          │  │    技能管理服务            │
│  · 沙箱池管理                  │  │  · 技能元数据管理          │
│  · 用户-沙箱绑定               │  │  · 技能存储(JuiceFS)     │
│  · 状态控制(激活/休眠/销毁)    │  │  · 版本控制与依赖管理      │
└──────────────┬───────────────┘  └──────────┬──────────────┘
               │ 分配沙箱 ID                   │ 技能加载
┌──────────────▼──────────────────────────────▼─────────────┐
│                沙箱运行环境(容器池)                        │
│  每个沙箱:隔离的容器(Docker)                              │
│  包含 Agent 运行时、挂载用户记忆卷                            │
└──────────────┬──────────────────────────────┬─────────────┘
               │ 读写记忆                      │ 存储快照
┌──────────────▼───────────────┐  ┌──────────▼──────────────┐
│      记忆管理服务              │  │  快照存储(JuiceFS/对象)  │
│  · 向量存储(长期记忆)         │  │  · 沙箱文件系统快照        │
│  · 短期记忆缓存(Redis)        │  │  · 用户记忆数据备份       │
│  · 记忆压缩与遗忘策略           │  │                          │
└───────────────────────────────┘  └─────────────────────────┘

2.1 关键组件说明

组件 职责 技术选型
接入网关 用户认证、流量控制、WebSocket 连接管理 基于天玑网关
技能管理服务 维护技能树,提供技能查询、下载、版本管理接口 JuiceFS 分布式文件系统
记忆管理服务 存储长期记忆(向量库)、缓存短期会话(Redis)、压缩与遗忘 ES + Redis
沙箱生命周期管理服务 管理沙箱容器的创建、分配、休眠、销毁 Kubernetes
沙箱运行环境 独立 Docker 容器运行 Agent 核心引擎,挂载 JuiceFS 动态加载技能和记忆 Docker + JuiceFS

3. 详细设计

3.1 技能管理(Skills Management)

3.1.1 多智能体联邦及技能树分层

在 OpenClaw 中,每个 Agent 都可看作一个独立的"数字员工"。采用"多智能体联邦"架构:为每个顶级领域创建独立 Agent,利用 OpenClaw 的 Gateway 层进行路由分发。

技能分层策略

层级 粒度 说明 示例
一级领域 Agent 粒度 对应顶级业务领域,拥有独立 Workspace 和人格设定(SOUL.md) 规划、履约
二级领域 技能目录 通过 TOOLS.md 中的命名空间进行逻辑分组 陆网规划、路由规划
三级原子技能 可执行单元 具体的 Python/Shell 脚本或 API 调用,由 Agent 动态调用 干支线规划与模式测算
┌─────────────────────────────────────────────────────────┐
│               OpenClaw Gateway(路由分发)                 │
├────────────────────┬────────────────────────────────────┤
│   规划 Agent        │         履约 Agent                  │
│  (SOUL.md)         │        (SOUL.md)                   │
│  ┌──────────────┐  │  ┌──────────────┐                  │
│  │陆网规划(ns)  │  │  │路由规划(ns)   │                  │
│  │ ├ 干支线规划  │  │  │ ├ 干支线履约  │                  │
│  │ ├ 模式测算   │  │  │ ├ 时效履约    │                  │
│  └──────────────┘  │  └──────────────┘                  │
└────────────────────┴────────────────────────────────────┘
3.1.2 技能存储与分发

技能代码及资源文件存储在 JuiceFS 文件系统中。JuiceFS 提供 POSIX 兼容接口,支持跨主机共享,便于沙箱容器挂载。

技能文件组织结构

skills/                    # 顶层目录(工作区 ./skills 或全局 ~/.openclaw/skills)
│
├── builtin-core/                      # 【层级1:基础内置技能】— 系统自带
│   ├── agent-browser/                  # 浏览器自动化技能
│   │   └── SKILL.md                    # 技能描述(YAML frontmatter + 说明)
│   ├── file-manager/                   # 文件管理技能
│   │   └── SKILL.md
│   └── system-command/                 # 系统命令执行技能
│       └── SKILL.md
│
├── productivity/                       # 【层级2:效率与办公】
│   ├── gog/                            # Google 套件集成
│   │   └── SKILL.md                    # 读写 Gmail/Calendar/Drive
│   ├── obsidian/                       # Obsidian 笔记库集成
│   │   └── SKILL.md                    # 创建笔记、搜索知识图谱
│   └── summarize/                      # 文本摘要技能
│       └── SKILL.md                    # 总结长文、邮件、会议纪要
│
├── devops/                             # 【层级3:开发与运维】
│   ├── github/                         # GitHub 管理技能
│   │   └── SKILL.md                    # 创建 PR、管理 Issue、代码搜索
│   ├── skill-creator/                  # 技能创建器(元技能)
│   │   ├── SKILL.md
│   │   └── templates/
│   │       ├── basic_python/
│   │       └── nodejs_tool/
│   └── n8n-workflow-automation/        # n8n 工作流自动化集成
│       └── SKILL.md
│
├── ai-models/                          # 【层级4:AI 模型集成】
│   └── gemini/                         # Google Gemini 模型集成
│       └── SKILL.md                    # 调用 Gemini 进行推理或代码生成
│
└── communication/                      # 【层级5:通信与消息】
    └── qqbot-cron/                     # 定时提醒与 QQ 机器人技能
        └── SKILL.md                    # 定时任务 + QQ 发送提醒

分发流程:技能管理服务提供 REST API,沙箱启动时拉取所需技能列表,通过 JuiceFS 直接挂载到容器内,实现按需加载

3.2 记忆管理系统(Memory Management)

基于 MIRIX 框架设计混合记忆系统,包含长期记忆(用户画像、历史偏好)和短期记忆(当前对话上下文)。

技术实现:向量数据库 + 缓存 + 定期压缩归档

3.2.1 数据模型

长期记忆(存储在向量数据库如 Milvus):

字段 说明
user_id 用户标识
记忆类型 事实 / 偏好 / 事件
timestamp 时间戳
content_vector 内容向量(Embedding 模型:BAAI/bge-large-zh)
raw_text 原始文本
importance_score 重要性分数

短期记忆(存储在 Redis):

  • 使用 List 或 Hash 结构保存最近 N 条对话消息
  • 设置过期时间(如 30 分钟)
3.2.2 记忆操作流程

存储流程

Agent 交互 → Agent 引擎调用记忆服务 → 关键信息异步写入
    │
    ├─ 短期记忆 → 直接写入 Redis
    │
    └─ 长期保留信息 → 消息队列异步写入向量库

检索流程

用户发起新对话
    │
    ├─ Step 1: 从 Redis 获取最近上下文 → 作为提示词前缀
    │
    ├─ Step 2: 当前查询向量化 → Milvus 相似性搜索 → Top-K 相关长期记忆
    │
    └─ Step 3: 记忆服务合并结果 → 返回给 Agent

压缩与遗忘

定期任务扫描长期记忆
    │
    ├─ 压缩:LLM 对多条相似记忆进行摘要生成 → 替换原有记录
    │
    └─ 遗忘:删除低分/过期记忆(如超过 180 天未访问且重要性低于阈值)
3.2.3 记忆同步
沙箱启动 → 记忆管理服务打包用户记忆 → JuiceFS 写入沙箱 /memory 目录
                                                    │
沙箱内 Agent 直接读取 → 作为初始上下文
                                                    │
对话过程中 → Agent 通过 API 实时读写记忆服务 → 确保记忆更新

3.3 沙箱生命周期管理(Sandbox Lifecycle)

沙箱采用容器化技术(Docker + Kubernetes)实现隔离。每个沙箱对应一个 Pod,运行 Agent 核心服务。

3.3.1 沙箱池设计
配置项 说明
预设数量 根据业务预估并发量,预先创建休眠状态沙箱 Pod
资源配额 每个沙箱固定 CPU/内存(如 1C2G),避免资源争抢
3.3.2 状态转换

沙箱状态定义:休眠(Hibernated) → 激活(Active) → 销毁(Destroyed)

                    ┌─────────────┐
        用户接入 ──→│   休眠       │──→ 从池中选取 → 激活
                    │ Hibernated  │
                    └─────────────┘
                          │
            用户断开/超时  │  休眠信号
                          ↓
                    ┌─────────────┐
                    │   激活       │──→ 增量同步记忆 → 卸载用户卷 → 归还池中
                    │   Active    │
                    └─────────────┘
                          │
             池规模缩减    │  快照保存
                          ↓
                    ┌─────────────┐
                    │   销毁       │──→ 快照存储 → 删除 Pod
                    │ Destroyed   │
                    └─────────────┘

激活流程

  1. 用户接入时,生命周期管理服务从池中选取一个休眠沙箱,标记为"激活"
  2. 调用记忆管理服务,获取用户记忆数据包(/memory/user_${userId}.tar),通过 JuiceFS 共享给沙箱容器
  3. 沙箱内 Agent 启动脚本检测到记忆文件 → 加载到内存;根据技能列表挂载对应技能目录
  4. 沙箱状态变为"激活" → 通知网关将用户 WebSocket 连接路由至此沙箱

休眠流程

  1. 用户主动关闭连接或超过空闲超时(如 5 分钟) → 网关通知生命周期服务
  2. 服务向沙箱发送休眠信号 → Agent 将短期记忆增量同步回记忆管理服务
  3. 沙箱卸载用户记忆卷、清空内存用户数据 → 恢复初始状态 → 归还到池中

临时沙箱创建

  • 池中无可用休眠沙箱时,立即创建新 Pod(临时沙箱)
  • 当沙箱总数超过池预设上限时,优先注销休眠沙箱

沙箱销毁与快照

  1. 从休眠沙箱中选择一个执行销毁
  2. 将当前文件系统生成快照 → 存储到 JuiceFS /snapshots/ 目录
  3. 快照元数据记录关联用户 ID、时间戳
  4. 删除 Pod
3.3.3 快照恢复

若用户重新接入且历史沙箱已销毁 → 创建新 Pod → 从快照恢复文件系统 → 加载最新记忆 → 状态恢复

3.4 用户接入流程

用户通过 WebSocket 或 SSE 连接接入平台,完整流程如下:

Step 1: 连接建立 ── 客户端发起 SSE 连接,携带认证凭证(CAS token)
    │
Step 2: 身份认证 ── 网关验证 token,解析用户 ID;失败则拒绝连接
    │
Step 3: 沙箱分配 ── 网关调用 assignSandbox(userId)
    │  ├─ 查询用户是否已有绑定沙箱(Redis 缓存)
    │  ├─ 若有且存活 → 直接复用(检查超时)
    │  └─ 若无 → 从池中分配休眠沙箱或创建临时沙箱
    │
Step 4: 记忆预加载 ── 记忆管理服务将用户记忆推送至沙箱(JuiceFS 共享文件)
    │
Step 5: 路由建立 ── 网关将 SSE 连接绑定到指定沙箱内网地址(K8s Service / 内部 LB)
    │
Step 6: 对话处理 ── 沙箱内 Agent 接收消息 → 调用技能、读写记忆 → 生成回复
    │
Step 7: 连接断开 ── 用户断开或超时 → 网关通知生命周期服务 → 沙箱休眠或释放

4. 数据存储设计

存储类型 技术选型 用途
关系型数据库 MySQL 技能元数据、用户信息、绑定关系
向量数据库 Milvus / ES 长期记忆向量存储与检索
缓存 Redis 短期记忆、沙箱绑定关系、热点数据
分布式文件系统 JuiceFS 技能文件、记忆数据包、快照存储
对象存储 OSS JuiceFS 底层存储
消息队列 Kafka 异步任务、海量日志

5. 技术选型

模块 技术选型 说明
接入网关 天玑网关 认证、限流、路由转发
容器编排 Kubernetes + Docker 沙箱 Pod 管理
文件系统 JuiceFS POSIX 兼容,跨主机共享
向量数据库 Milvus / ES 长期记忆存储检索
缓存 Redis Cluster 短期记忆 + 绑定关系
关系数据库 MySQL 元数据存储
消息队列 Kafka 异步写入 + 日志
Embedding BAAI/bge-large-zh 文本向量化
记忆框架 MIRIX 混合记忆系统设计基础
Agent 引擎 OpenClaw 核心运行时

6. 部署与扩展性

6.1 部署架构

组件 部署方式
微服务 + 沙箱 Pod Kubernetes 集群
JuiceFS 对象存储(OSS)底层,JuiceFS CSI 驱动挂载到 Pod
数据库 MySQL / ES / Redis → StatefulSet + 持久卷
网关 天玑网关,对外暴露统一入口

6.2 扩展性

模块 扩展策略
技能管理 元数据分库分表,水平扩展
记忆管理 ES 集群 + Redis Cluster
沙箱池 HPA(监控队列等待数、CPU 使用率)自动调整池大小
消息队列 Kafka 分区机制支持海量日志和异步任务

6.3 高可用

服务类型 HA 策略
无状态服务(网关、技能管理、生命周期管理) 多副本部署
有状态服务(数据库) 主从复制或云服务托管
沙箱池 至少保留一个备用沙箱,避免冷启动延迟

7. 安全与隐私

7.1 隔离性

安全措施 说明
网络隔离 Kubernetes 网络策略,沙箱容器之间禁止相互访问
存储隔离 每个沙箱只能访问自己的 JuiceFS 子目录
执行限制 禁止特权模式、只读根文件系统、资源限制

7.2 数据安全

安全措施 说明
传输加密 TLS 加密
存储加密 存储层加密
快照访问控制 仅生命周期服务可读写快照
脱敏策略 记忆管理服务对敏感信息(个人身份)可配置脱敏

8. 总结与展望

本方案基于分层技能管理用户级记忆系统沙箱池化技术,构建了一个高并发、高隔离、可扩展的企业级 Agent 平台。

核心设计要点:

要点 核心思路
架构模式 微服务 + 多智能体联邦
技能管理 三级分层(领域 → 目录 → 原子技能),JuiceFS 统一存储分发
记忆管理 基于 MIRIX 框架,向量库 + Redis + 定期压缩归档
沙箱隔离 Docker + K8s,池化管理,状态转换(休眠/激活/销毁)
统一存储 JuiceFS 统一技能与记忆的存储分发
弹性调度 Kubernetes HPA 自动伸缩

未来方向:引入联邦学习,在保护隐私的前提下优化模型与技能,持续提升 Agent 智能化水平。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐