目录
[一、OpenClaw 综述](#一、OpenClaw 综述)
[1.1 项目定位与核心价值](#1.1 项目定位与核心价值)
[1.2 与同类项目的差异化对比](#1.2 与同类项目的差异化对比)
[2.1 架构总览](#2.1 架构总览)
[2.2 Gateway ------ 网关层](#2.2 Gateway —— 网关层)
[2.3 Agent ------ 智能体层](#2.3 Agent —— 智能体层)
[2.4 Skills ------ 技能层](#2.4 Skills —— 技能层)
[2.5 Memory ------ 记忆层](#2.5 Memory —— 记忆层)
[3.1 流程总览](#3.1 流程总览)
[3.2 指令接收与标准化](#3.2 指令接收与标准化)
[3.3 意图解析与任务规划](#3.3 意图解析与任务规划)
[3.4 工具调用与执行](#3.4 工具调用与执行)
[3.5 结果反馈与记忆更新](#3.5 结果反馈与记忆更新)
[4.1 本地优先与模型无关](#4.1 本地优先与模型无关)
[4.2 安全沙箱与权限控制](#4.2 安全沙箱与权限控制)
[4.3 主动执行能力](#4.3 主动执行能力)
[4.4 可扩展的插件生态](#4.4 可扩展的插件生态)
[4.5 多通道接入与统一协议](#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 命令执行
⚠️ 浏览器自动操控
⚠️ 网络请求发起
⚠️ 系统级操作
第二层:路径与命令限制
python
路径控制:
├── 白名单模式:仅允许访问指定目录(如 ~/Documents, ~/Projects)
├── 黑名单模式:禁止访问敏感目录(如 ~/.ssh, /etc, 系统目录)
└── 路径遍历防护:阻止 ../../../ 等越权访问尝试
Shell 命令控制:
├── 命令白名单:仅允许执行已审核的命令(如 ls, cat, git, npm)
├── 危险命令拦截:自动拦截 rm -rf, chmod 777, curl | bash 等
└── 超时控制:单条命令最长执行时间限制(防止死循环)
第三层:执行隔离
python
隔离方案(视部署环境而定):
├── Docker 容器隔离:Skill 执行在容器内进行,与宿主系统隔离
├── 进程沙箱:限制子进程的系统调用范围
└── 网络隔离:控制 Skill 可访问的网络范围
第四层:审计日志
python
所有操作均被记录:
├── 操作时间
├── 操作类型(action name)
├── 操作参数(脱敏后)
├── 执行结果(成功/失败/超时)
├── 耗时
└── 触发来源(用户指令 / Agent 自主决策)
用途:
├── 事后审计与追溯
├── 异常行为检测
└── 优化 Agent 决策质量
4.3 主动执行能力
OpenClaw 不仅是"被动响应"的助手,还支持主动执行任务:
Cron 定时任务:
python
配置示例(伪代码):
task:
name: "每日工作摘要"
schedule: "0 18 * * 1-5" # 工作日每天 18:00
action:
- 读取当天的对话记录和操作日志
- 生成工作总结摘要
- 通过飞书发送给用户
python
配置示例(伪代码):
task:
name: "GitHub 仓库更新检查"
schedule: "0 */2 * * *" # 每 2 小时
action:
- 检查关注的仓库是否有新 PR / Issue
- 有更新则汇总通知用户
Heartbeat 心跳巡检:
python
心跳机制工作流程:
每隔 N 分钟触发一次
│
▼
执行预设的巡检项:
├── 检查未读邮件数量
├── 检查系统磁盘空间
├── 检查特定进程是否在运行
├── 检查外部 API 服务可用性
└── ...
│
▼
评估巡检结果:
├── 全部正常 ──→ 静默,不打扰用户
└── 异常项 ──→ 触发预设操作或通知用户
4.4 可扩展的插件生态
OpenClaw 的功能扩展通过 Skills 插件体系实现。其设计理念是:每个 Skill 是一个自包含的功能单元,通过标准化接口与 Agent 交互。
插件开发流程:
python
开发者视角的 Skill 生命周期:
① 创建 Skill 项目
│
▼
② 编写 Manifest(声明 actions、参数、权限)
│
▼
③ 实现各个 Action 的执行逻辑
│
▼
④ 本地测试与调试
│
▼
⑤ 注册到 OpenClaw(本地安装或发布到社区)
│
▼
⑥ Agent 自动发现并可在任务规划中调用
社区生态覆盖的典型场景:
python
生产力类:
├── 文档处理(PDF 解析、Markdown 转换)
├── 表格操作(Excel / CSV 读写与分析)
└── 日历管理(Google Calendar / 飞书日历)
开发类:
├── Git 仓库管理(提交、分支、PR)
├── 代码审查(静态分析、风格检查)
└── CI/CD 触发(Jenkins / GitHub Actions)
信息获取类:
├── 网页爬取与摘要
├── RSS 订阅聚合
└── 搜索引擎查询
通信类:
├── 邮件收发与分类
├── 即时消息发送(Slack / 飞书 / 微信)
└── 通知推送
4.5 多通道接入与统一协议
OpenClaw 的 Gateway 层支持多种通信通道的接入,使用户可以在不同场景下与 Agent 交互:
python
通道类型 接入方式 典型场景
──────────────────────────────────────────────────────────
终端 / CLI 本地命令行 开发者日常使用
Web UI 浏览器访问本地服务 可视化交互
飞书 / 企业微信 Bot 接入 团队协作场景
WhatsApp 消息桥接 移动端随时交互
API 接口 HTTP/WebSocket 第三方系统集成
所有通道共享同一套会话管理机制------用户从飞书发起的任务,可以在 Web UI 上继续跟进,上下文无缝衔接。
五、总结与展望
核心要点回顾
python
OpenClaw 的设计可以用一句话概括:
在本地部署一个"有记忆、会动手、守规矩"的 AI 个人助手。
"有记忆" ──→ Memory 双层架构(短期 + 长期),越用越懂你
"会动手" ──→ Skills 插件体系,覆盖文件、浏览器、代码、通信等场景
"守规矩" ──→ 多层安全机制(权限控制、路径限制、执行隔离、审计日志)
技术架构设计启示
- 1.解耦是扩展性的基础: Gateway、Agent、Skills、Memory 四层解耦,任何一层的升级不影响其他层。
- 2.安全不能是事后补丁: OpenClaw 将安全机制内建到架构中,从权限模型到执行隔离,贯穿整个执行链路。
- 3.记忆是个人助手的灵魂: 没有长期记忆的 Agent 只是一个"无状态的工具",有了记忆才成为"持续陪伴的助手"。
- 4.模型无关是务实的选择: LLM 领域迭代极快,将 Agent 逻辑与具体模型解耦是延长项目生命周期的关键。
展望
随着 MCP(Model Context Protocol)等标准化协议的推进、本地小模型能力的持续增强,以及多模态交互的成熟,像 OpenClaw 这样的本地 AI 智能体有望成为每个人电脑上的"第二大脑"------不是替代人类思考,而是将重复性、机械性的操作自动化,让人专注于更有创造性的工作。