目录

一、OpenClaw 综述

1.1 项目定位与核心价值

1.2 与同类项目的差异化对比

二、整体架构:四大核心模块

2.1 架构总览

2.2 Gateway —— 网关层

2.3 Agent —— 智能体层

2.4 Skills —— 技能层

2.5 Memory —— 记忆层

三、核心工作流程:从指令到执行

3.1 流程总览

3.2 指令接收与标准化

3.3 意图解析与任务规划

3.4 工具调用与执行

3.5 结果反馈与记忆更新

四、关键机制深度解析

4.1 本地优先与模型无关

4.2 安全沙箱与权限控制

4.3 主动执行能力

4.4 可扩展的插件生态

4.5 多通道接入与统一协议

五、总结与展望

核心要点回顾

技术架构设计启示

展望


一、OpenClaw 综述

1.1 项目定位与核心价值

OpenClaw 是一个开源的个人 AI 智能体框架,其核心设计哲学可以概括为三个关键词:

关键词 含义
本地优先 核心逻辑与用户数据默认存储在用户本机,不依赖云端持久化,保障隐私
行动导向 不仅能"回答问题",还能"实际操作"——读写文件、执行脚本、控制浏览器、调用 API
持续进化 通过长期记忆机制,智能体在使用过程中不断积累对用户偏好、项目上下文的理解

一句话定义:OpenClaw 在您的本地电脑上运行一个 AI 大脑,通过标准化的"动作"接口连接并操控您的电脑和各类服务,同时具备长期记忆和安全沙箱机制。

1.2 与同类项目的差异化对比

在 AI 智能体开源生态中,OpenClaw 并非孤例。以下对比有助于理解其独特定位:

项目            部署方式    核心侧重             记忆机制    安全沙箱
─────────────────────────────────────────────────────────────────────
OpenClaw        本地部署    个人全场景助手         ✅ 长期    ✅ 内建
Open Interpreter 本地部署   代码执行与系统操控      ❌ 无      ⚠️ 有限
AutoGPT         云端/本地   自主目标驱动           ⚠️ 有限    ❌ 无
Manus           云端        通用任务执行           ⚠️ 有限    ✅ 云端沙箱

OpenClaw 的核心差异在于:将长期记忆、安全沙箱、多通道接入三者统一在同一框架内,且以"个人助手"而非"通用 Agent"为产品定位,更适合日积月累的持续使用场景。


二、整体架构:四大核心模块

2.1 架构总览

OpenClaw 的架构采用分层设计,自上而下由四层构成。以下为架构关系图(文字描述版):

                    ╔══════════════════════════════════════════╗
                    ║           用户 / 外部通道                ║
                    ║   WhatsApp · 飞书 · Web · 终端 · API    ║
                    ╚════════════════╦═══════════════════════╝
                                     ▼
                    ┌───────────────────────────────────────┐
                    │          Gateway(网关层)              │
                    │   协议转换 · 会话管理 · 指令路由          │
                    └───────────────────┬───────────────────┘
                                        ▼
                    ┌───────────────────────────────────────┐
                    │           Agent(智能体层)            │
                    │   意图理解 · 任务拆解 · 工具调用决策      │
                    │         ↕                ↕           │
                    │   ┌────────────┐  ┌──────────────┐   │
                    │   │            │  │              │   │
                    │   │   Memory   │  │    Skills    │   │
                    │   │  (记忆层) │  │   (技能层)  │    │
                    │   │  短期+长期  │  │  文件/浏览器/ │    │
                    │   │            │  │  Shell/邮件   │   │
                    │   └────────────┘  └──────────────┘   │
                    └───────────────────────────────────────┘
                                        ▼
                    ┌───────────────────────────────────────┐
                    │         本地操作系统 / 外部服务          │
                    │    文件系统 · 浏览器 · 云服务 API        | 
                    └───────────────────────────────────────┘

设计亮点: Agent 作为中枢,双向连接 Memory 和 Skills。Memory 为 Agent 提供上下文感知能力,Skills 为 Agent 提供实际执行能力。两者相互独立,通过 Agent 协同。

2.2 Gateway —— 网关层

角色定位: 系统的"总控中心",常驻后台运行。

核心职责:

① 通道接入        接收来自 WhatsApp、飞书、Slack、Web UI、终端等多种来源的指令
② 协议标准化      将不同通道的异构消息格式统一转换为 OpenClaw 内部标准消息格式
③ 会话管理        维护用户会话状态(session),关联用户身份与对话上下文
④ 指令路由        将标准化后的指令分发给 Agent 进行处理
⑤ 响应回传        将 Agent 的执行结果按原通道协议格式回传给用户

设计考量:

  • Gateway 与 Agent 的解耦使得接入新通道只需开发对应的 Gateway 适配器,无需修改 Agent 核心逻辑。
  • Gateway 同时承担认证与限流职责,防止未授权访问和资源滥用。

2.3 Agent —— 智能体层

角色定位: 系统的"大脑",基于大语言模型(LLM)驱动。

核心职责:

① 意图识别        理解用户自然语言指令的真实意图
② 参数提取        从指令中提取操作对象、操作类型、约束条件等结构化参数
③ 任务规划        将复杂任务拆解为有序的原子操作序列(DAG — 有向无环图)
④ 工具调用决策    根据任务规划,选择合适的 Skill 并构造调用请求
⑤ 结果评估        根据执行结果决定:继续下一步 / 重试 / 回退 / 向用户报告

关键设计模式 — ReAct 循环:

Agent 的决策过程遵循经典的 ReAct(Reasoning + Acting)范式:

思考(Thought)  →  行动(Action)  →  观察(Observation)  →  思考  →  ...
     ↑                                                          │
     └──────────────────── 循环直到任务完成 ──────────────────────┘
  • Thought: Agent 分析当前状态,决定下一步该做什么
  • Action: Agent 调用某个 Skill 执行具体操作
  • Observation: Agent 接收操作的返回结果
  • 该循环持续进行,直到任务完成或触发终止条件

2.4 Skills —— 技能层

角色定位: 系统的"手脚",封装了具体操作能力的插件模块。

Skill 的标准接口结构:

一个 Skill 插件 = 声明(Manifest)+ 实现(Implementation)

声明部分:
  ├── name           技能名称(如 "file_manager")
  ├── version        版本号
  ├── description    功能描述(供 Agent 理解何时该调用此技能)
  ├── actions[]      提供的动作列表
  │     ├── action_name        动作名称(如 "file_move")
  │     ├── parameters         参数定义(JSON Schema)
  │     └── required_permissions  所需权限
  └── dependencies   依赖环境(如 Node.js、Python)

实现部分:
  └── 每个 action 的实际执行逻辑代码

官方提供的核心 Skills 示例:

Skill 名称 功能 典型 Actions
file_manager 本地文件读写与管理 file_read, file_write, file_move, file_delete, file_list
shell_executor 执行 Shell 命令 shell_run, shell_background
browser_agent 浏览器自动化操控 browser_navigate, browser_click, browser_extract, browser_screenshot
email_client 邮件收发 email_send, email_read, email_search
code_runner 代码执行 code_run_python, code_run_js

2.5 Memory —— 记忆层

角色定位: 系统的"记忆",使 OpenClaw 具备"越用越懂你"的能力。

双层记忆架构:

Memory(记忆)
  │
  ├── 短期记忆(Short-term Memory)
  │     ├── 当前对话的上下文信息
  │     ├── 最近几次工具调用的结果
  │     ├── 任务执行的中间状态
  │     └── 生命周期:单次会话,会话结束后归档或丢弃
  │
  └── 长期记忆(Long-term Memory)
        ├── 用户画像特征(姓名、职业、技术栈偏好、沟通风格)
        ├── 项目上下文(项目结构、常用路径、技术选型)
        ├── 行为模式(常用指令、高频操作、时间习惯)
        ├── 历史总结(过往对话的压缩摘要)
        └── 生命周期:持久化存储,跨会话保留,持续更新

记忆的数据存储形式:

  • 通常以 Markdown 文件JSON 文件本地向量数据库的形式持久化在本地
  • 短期记忆以键值对或上下文窗口的形式维护
  • 长期记忆需要经过 总结(Summarization)提取(Extraction) 两个步骤,从原始对话中提炼出结构化信息

记忆的运作机制:

用户对话 ──→ Agent 处理 ──→ 对话结束
                               │
                               ▼
                    记忆管理模块介入
                    ├── 提取关键信息(人物、事件、偏好)
                    ├── 与已有长期记忆合并 / 更新
                    ├── 压缩存储(避免记忆膨胀)
                    └── 写入本地持久化文件
                               │
                               ▼
                    下次会话时自动加载相关记忆
                    └── 注入 Agent 上下文 ──→ 更精准的响应

三、核心工作流程:从指令到执行

3.1 流程总览

以一条具体指令为例——"整理桌面截图并按日期归档",完整执行流程如下:

用户发送指令
    │
    ▼
「1」Gateway 接收 ──→ 协议标准化 ──→ 附加上下文(用户ID、会话ID、来源通道)
    │
    ▼
「2」Agent 意图解析 ──→ 识别意图:"文件整理" ──→ 提取参数:路径=桌面,类型=截图,规则=按日期
    │
    ▼
「3」Agent 任务规划 ──→ 拆解为 DAG:
    │     步骤① file_list(扫描桌面所有截图文件)
    │     步骤② file_read_metadata(读取每张截图的创建日期)
    │     步骤③ file_move(按日期创建文件夹并移动文件)
    │     步骤④ file_list(验证归档结果)
    │
    ▼
「4」执行引擎逐步执行 ──→ 每步执行前校验权限 ──→ 调用对应 Skill ──→ 获取结果
    │
    ▼
「5」Agent 评估结果 ──→ 成功:向用户报告归档摘要
    │                  失败:重试或向用户报告错误
    │
    ▼
「6」Memory 更新 ──→ 记录操作日志 ──→ 更新用户偏好(如:常用截图路径)

3.2 指令接收与标准化

无论指令来自哪个通道,Gateway 都会将其转换为统一的内部消息格式:

标准消息格式:
{
  "message_id":    "唯一消息标识",
  "session_id":    "会话标识",
  "user_id":       "用户标识",
  "channel":       "来源通道(whatsapp / feishu / web / terminal)",
  "content":       "原始指令文本",
  "attachments":   "附件列表(图片、文件等)",
  "timestamp":     "时间戳",
  "context":       "通道附带的额外上下文信息"
}

为什么要标准化?

  • Agent 只需处理一种消息格式,与通道无关
  • 新增通道只需在 Gateway 层做适配,不侵入核心逻辑
  • 便于统一做日志、审计和会话回放

3.3 意图解析与任务规划

这是 Agent 最核心的能力,直接决定了任务执行的质量。

意图解析(Intent Recognition):

Agent 基于 LLM 的自然语言理解能力,从用户指令中提取:

原始指令:"帮我把桌面上上周拍的截图按日期整理到归档文件夹"

解析结果:
├── 意图(Intent):文件整理 / 归档
├── 操作对象(Target):
│     ├── 路径:桌面
│     ├── 文件类型:截图(.png / .jpg)
│     └── 时间范围:上周
├── 操作规则(Rule):按创建日期分组
└── 目标路径(Destination):归档文件夹

任务规划(Task Decomposition):

复杂任务被拆解为有序的原子操作序列,形成 DAG(有向无环图):

任务:整理桌面截图并按日期归档

DAG 结构:

    file_list(桌面截图)
         │
         ▼
    file_read_metadata(批量读取日期)
         │
         ▼
    ┌────┼─────────┐
    ▼    ▼         ▼
  move   move     move        ← 按日期并行移动(无依赖关系可并行)
  05-12  05-13    05-14
    │    │         │
    └────┼─────────┘
         ▼
    file_list(验证结果)
         │
         ▼
    生成摘要报告

3.4 工具调用与执行

Agent 通过 Tool Calling(函数调用) 机制驱动 Skills 执行:

Agent 发出调用请求:
{
  "tool": "file_manager",
  "action": "file_move",
  "parameters": {
    "source": "/Users/alice/Desktop/screenshot_0512.png",
    "destination": "/Users/alice/Archive/2025-05-12/screenshot_0512.png"
  }
}
      │
      ▼
执行引擎处理流程:
  ├── 1. 查找对应的 Skill 插件
  ├── 2. 校验权限(该 action 是否被允许?路径是否在白名单内?)
  ├── 3. 参数校验(类型、格式、路径合法性)
  ├── 4. 执行实际操作
  └── 5. 封装执行结果并返回
      │
      ▼
执行结果返回给 Agent:
{
  "status": "success",
  "output": "文件已移动至 /Users/alice/Archive/2025-05-12/",
  "duration_ms": 42
}

3.5 结果反馈与记忆更新

每个动作执行完毕后,Agent 根据结果做出决策:

执行结果评估决策树:

  执行成功?
    ├── 是 ──→ 继续下一步
    │          ├── 还有后续步骤? ──→ 继续执行 DAG 中的下一步
    │          └── 全部完成?    ──→ 生成摘要报告,更新记忆,回复用户
    │
    └── 否 ──→ 分析失败原因
               ├── 可恢复错误(如文件被占用)──→ 等待后重试(最多 N 次)
               ├── 参数错误 ──→ 重新规划
               └── 不可恢复错误 ──→ 向用户报告错误详情,请求人工介入

记忆更新的时机与内容:

时机 写入短期记忆 写入长期记忆
对话进行中 对话上下文、工具调用结果
单个任务完成 操作日志、成功/失败记录
会话结束 归档或丢弃 对话摘要、用户偏好更新、行为模式更新

四、关键机制深度解析

4.1 本地优先与模型无关

本地优先原则:

数据存储位置:
  ├── 对话记录     → 本地(Markdown / SQLite)
  ├── 长期记忆     → 本地(文件系统 / 向量数据库)
  ├── 配置信息     → 本地(YAML / TOML)
  ├── 插件代码     → 本地
  └── 操作日志     → 本地

仅在 LLM 推理时可能涉及外部调用:
  └── 调用 OpenAI / Claude / 其他 API ──→ 仅传输当前推理所需的上下文
                                            不传输历史记忆全量数据

模型无关设计:

OpenClaw 通过统一的 LLM 接口适配层,支持灵活切换底层模型:

统一 LLM 接口
  │
  ├── OpenAI(GPT-4o / GPT-4.1 等)
  ├── Anthropic(Claude 4 系列)
  ├── Google(Gemini 系列)
  ├── 本地开源模型(Ollama / vLLM / llama.cpp)
  └── 其他兼容 OpenAI API 格式的服务

切换方式:修改配置文件中的 provider 和 model 字段即可,无需改动 Agent 逻辑

这种设计带来的好处:

  • 成本可控: 简单任务用小模型,复杂任务用强模型
  • 隐私可选: 敏感场景可全程使用本地模型,数据不出本机
  • 持续演进: 新模型发布后可快速接入,无需等待框架升级

4.2 安全沙箱与权限控制

安全是 OpenClaw 作为"能操控电脑的 AI"最关键的设计考量。其安全体系由多层防护构成:

第一层:最小权限原则

默认权限(开箱即用):
  ✅ 文件读取(限定目录内)
  ✅ 信息查询
  ✅ 对话交互

需显式开启的权限:
  ⚠️ 文件写入 / 修改 / 删除
  ⚠️ Shell 命令执行
  ⚠️ 浏览器自动操控
  ⚠️ 网络请求发起
  ⚠️ 系统级操作

第二层:路径与命令限制

路径控制:
  ├── 白名单模式:仅允许访问指定目录(如 ~/Documents, ~/Projects)
  ├── 黑名单模式:禁止访问敏感目录(如 ~/.ssh, /etc, 系统目录)
  └── 路径遍历防护:阻止 ../../../ 等越权访问尝试

Shell 命令控制:
  ├── 命令白名单:仅允许执行已审核的命令(如 ls, cat, git, npm)
  ├── 危险命令拦截:自动拦截 rm -rf, chmod 777, curl | bash 等
  └── 超时控制:单条命令最长执行时间限制(防止死循环)

第三层:执行隔离

隔离方案(视部署环境而定):
  ├── Docker 容器隔离:Skill 执行在容器内进行,与宿主系统隔离
  ├── 进程沙箱:限制子进程的系统调用范围
  └── 网络隔离:控制 Skill 可访问的网络范围

第四层:审计日志

所有操作均被记录:
  ├── 操作时间
  ├── 操作类型(action name)
  ├── 操作参数(脱敏后)
  ├── 执行结果(成功/失败/超时)
  ├── 耗时
  └── 触发来源(用户指令 / Agent 自主决策)

用途:
  ├── 事后审计与追溯
  ├── 异常行为检测
  └── 优化 Agent 决策质量

4.3 主动执行能力

OpenClaw 不仅是"被动响应"的助手,还支持主动执行任务

Cron 定时任务:

配置示例(伪代码):
  task:
    name: "每日工作摘要"
    schedule: "0 18 * * 1-5"       # 工作日每天 18:00
    action:
      - 读取当天的对话记录和操作日志
      - 生成工作总结摘要
      - 通过飞书发送给用户
配置示例(伪代码):
  task:
    name: "GitHub 仓库更新检查"
    schedule: "0 */2 * * *"        # 每 2 小时
    action:
      - 检查关注的仓库是否有新 PR / Issue
      - 有更新则汇总通知用户

Heartbeat 心跳巡检:

心跳机制工作流程:

  每隔 N 分钟触发一次
       │
       ▼
  执行预设的巡检项:
       ├── 检查未读邮件数量
       ├── 检查系统磁盘空间
       ├── 检查特定进程是否在运行
       ├── 检查外部 API 服务可用性
       └── ...
       │
       ▼
  评估巡检结果:
       ├── 全部正常 ──→ 静默,不打扰用户
       └── 异常项    ──→ 触发预设操作或通知用户

4.4 可扩展的插件生态

OpenClaw 的功能扩展通过 Skills 插件体系实现。其设计理念是:每个 Skill 是一个自包含的功能单元,通过标准化接口与 Agent 交互。

插件开发流程:

开发者视角的 Skill 生命周期:

  ① 创建 Skill 项目
       │
       ▼
  ② 编写 Manifest(声明 actions、参数、权限)
       │
       ▼
  ③ 实现各个 Action 的执行逻辑
       │
       ▼
  ④ 本地测试与调试
       │
       ▼
  ⑤ 注册到 OpenClaw(本地安装或发布到社区)
       │
       ▼
  ⑥ Agent 自动发现并可在任务规划中调用

社区生态覆盖的典型场景:

生产力类:
  ├── 文档处理(PDF 解析、Markdown 转换)
  ├── 表格操作(Excel / CSV 读写与分析)
  └── 日历管理(Google Calendar / 飞书日历)

开发类:
  ├── Git 仓库管理(提交、分支、PR)
  ├── 代码审查(静态分析、风格检查)
  └── CI/CD 触发(Jenkins / GitHub Actions)

信息获取类:
  ├── 网页爬取与摘要
  ├── RSS 订阅聚合
  └── 搜索引擎查询

通信类:
  ├── 邮件收发与分类
  ├── 即时消息发送(Slack / 飞书 / 微信)
  └── 通知推送

4.5 多通道接入与统一协议

OpenClaw 的 Gateway 层支持多种通信通道的接入,使用户可以在不同场景下与 Agent 交互:

通道类型        接入方式                 典型场景
──────────────────────────────────────────────────────────
终端 / CLI      本地命令行               开发者日常使用
Web UI          浏览器访问本地服务         可视化交互
飞书 / 企业微信  Bot 接入                 团队协作场景
WhatsApp        消息桥接                  移动端随时交互
API 接口        HTTP/WebSocket           第三方系统集成

所有通道共享同一套会话管理机制——用户从飞书发起的任务,可以在 Web UI 上继续跟进,上下文无缝衔接。


五、总结与展望

核心要点回顾

OpenClaw 的设计可以用一句话概括:

  在本地部署一个"有记忆、会动手、守规矩"的 AI 个人助手。

  "有记忆" ──→ Memory 双层架构(短期 + 长期),越用越懂你
  "会动手" ──→ Skills 插件体系,覆盖文件、浏览器、代码、通信等场景
  "守规矩" ──→ 多层安全机制(权限控制、路径限制、执行隔离、审计日志)

技术架构设计启示

  1. 1.解耦是扩展性的基础: Gateway、Agent、Skills、Memory 四层解耦,任何一层的升级不影响其他层。
  2. 2.安全不能是事后补丁: OpenClaw 将安全机制内建到架构中,从权限模型到执行隔离,贯穿整个执行链路。
  3. 3.记忆是个人助手的灵魂: 没有长期记忆的 Agent 只是一个"无状态的工具",有了记忆才成为"持续陪伴的助手"。
  4. 4.模型无关是务实的选择: LLM 领域迭代极快,将 Agent 逻辑与具体模型解耦是延长项目生命周期的关键。

展望

随着 MCP(Model Context Protocol)等标准化协议的推进、本地小模型能力的持续增强,以及多模态交互的成熟,像 OpenClaw 这样的本地 AI 智能体有望成为每个人电脑上的"第二大脑"——不是替代人类思考,而是将重复性、机械性的操作自动化,让人专注于更有创造性的工作。

更多推荐