OpenClaw 深度技术拆解:原理、架构与未来展望
约 14 分钟2 次阅读

一、OpenClaw 是什么
OpenClaw(曾用名 Clawdbot / Moltbot)是一个开源的本地优先个人 AI 智能体网关,由奥地利工程师 Peter Steinberger(PSPDFKit 创始人)于 2026 年 1 月正式开源 [4][6]。它不是一个普通的聊天机器人,而是一个能直接操作系统、执行实际任务的"数字员工"——用户通过 WhatsApp、Telegram、飞书、微信等通讯软件发送自然语言指令,OpenClaw 就能在本地设备上自动完成文件管理、邮件处理、浏览器操作、Shell 命令执行等工作 [3][6]。
其核心设计哲学围绕五个原则展开 [3]:
- 安全默认:所有功能默认采用最严格的安全配置
- 本地优先:核心功能完全在本地运行,无强制云端依赖
- 极简核心:核心网关保持轻量与稳定,扩展通过插件实现
- 无额外应用:用户可在日常通讯平台中直接使用
- 社区驱动:完全开源,由社区主导开发迭代
截至 2026 年 3 月,OpenClaw 在 GitHub 上已累积超过 25 万 Star,拥有 378 位贡献者和 8900+ 开发者组成的社区 [6]。
二、整体架构:网关即控制面
2.1 轴辐式(Hub-and-Spoke)架构
OpenClaw 的核心架构思想可以用一句话概括:Gateway as Control Plane(网关即控制面)[5]。
Gateway 作为中心枢纽,所有消息渠道、AI Agent、客户端应用都通过 WebSocket 连接到它。这是一个经典的轴辐式设计 [5]:
客户端层
┌──────────────────────────────────────────────┐
│ macOS App │ iOS Node │ Android │ CLI │ Web │
└───────────────────────┬──────────────────────┘
│ WebSocket
┌───────────────────────▼──────────────────────┐
│ Gateway 控制面 (Core) │
│ ┌──────────┬────────────┬─────────────────┐ │
│ │ WebSocket│ HTTP Server│ Plugin Registry │ │
│ │ Server │ (Hono) │ (渠道/工具/钩子) │ │
│ └────┬─────┴─────┬──────┴────────┬────────┘ │
│ ┌────▼───────────▼───────────────▼────────┐ │
│ │ Gateway Runtime State │ │
│ │ Session │ Config │ Health │ Cron │ Nodes │ │
│ └─────────────────────────────────────────┘ │
└───────────────────────┬──────────────────────┘
│
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌────────┐ ┌──────────────┐ ┌──────────┐
│ Channel│ │ Pi Agent │ │ LLM │
│ Plugins│ │ 嵌入式运行器 │ │ 提供商 │
│ (30+) │ │ │ │ 故障转移 │
└───┬────┘ └──────────────┘ └──────────┘
▼
┌──────────────────────────────────────────────┐
│ WhatsApp │ Telegram │ Slack │ Discord │ 30+ │
└──────────────────────────────────────────────┘
选择中心化 Gateway 的理由非常务实 [5]:
- 单一状态源:所有会话状态集中管理,彻底避免分布式一致性问题
- 协议统一:无论消息来自哪个渠道,进入 Gateway 后统一使用内部 JSON-RPC 协议处理
- 部署简化:
openclaw start就能启动一切,没有服务发现、负载均衡的复杂度
2.2 六层分层架构
从宏观视角看,整个系统可以划分为六个清晰的层次 [5]:
| 层级 | 职责 | 关键组件 |
|---|---|---|
| 接入层 | 与各消息平台对接 | Baileys、grammY、@slack/bolt 等 |
| 网关层 | 消息路由、会话管理、事件分发 | WebSocket RPC、HTTP API、Hook 系统 |
| 路由层 | 决定"谁来处理这条消息" | 多级路由优先级、身份链接 |
| Agent 层 | AI 推理、工具调用、技能执行 | Pi Agent 运行时、沙箱 |
| 回复层 | 响应格式化、流式输出、分块策略 | ReplyDispatcher、打字指示器 |
| 基础设施层 | 配置、存储、日志、安全 | JSON5 + Zod、SQLite + sqlite-vec |
2.3 技术栈概览
OpenClaw 采用日历版本号(CalVer):2026.2.6-3,格式为 YYYY.M.D-patch [5]。
| 分类 | 选型 |
|---|---|
| 运行时 | Node.js (ESM) ≥22.12.0 |
| 主语言 | TypeScript ^5.9.3 |
| 包管理 | pnpm (Monorepo) 10.23.0 |
| HTTP 框架 | Hono + Express |
| WebSocket | ws ^8.19.0 |
| Schema 验证 | Zod + TypeBox + Ajv |
| 构建工具 | tsdown |
| 测试框架 | Vitest (V8 覆盖率) |
| Web UI | Lit (Web Components) |
| Agent SDK | @mariozechner/pi-coding-agent |
| 向量数据库 | sqlite-vec 0.1.7-alpha.2 |
三、核心技术深度拆解
3.1 消息处理全链路
当一条消息从任意渠道进入系统时,它会经历七个精心编排的处理阶段 [5]:
① Channel Monitor 接收外部消息,格式归一化
↓
② Routing Engine 路由解析 → 决定哪个 Agent 处理
↓
③ Session Manager 构建会话键 → 加载或创建会话
↓
④ Gate Checks 门控检查:命令拦截、提及检测、防抖、去重
↓
⑤ Agent Runtime AI 推理 + 工具调用 + 技能执行
↓
⑥ Reply Dispatcher 回复分发:分块、格式化、打字指示器
↓
⑦ Channel Outbound 渠道适配,调用平台 API 发送
这条流水线的关键设计原则是渠道无关性:从第②步到第⑥步,系统完全不关心消息来自哪个渠道。新增渠道只需实现入站和出站适配器,核心逻辑一行不改 [5]。
3.2 渠道系统:统一 30+ 消息平台
统一 30+ 消息平台是 OpenClaw 最具工程挑战的部分。每个平台都有截然不同的认证方式、消息格式、能力差异和速率限制 [5]。
OpenClaw 的解法是一个精心设计的多适配器组合契约(ChannelPlugin)。所有适配器字段均标记为可选,渠道只需实现其支持的功能 [5]。例如 SMS 渠道不需要 streaming 和 threading;Telegram 不需要 pairing。
每个 Channel 的核心工作 [4]:
- 接收消息:从平台获取用户消息
- 格式转换:统一转换为 OpenClaw 内部的
StandardMessage格式 - 发送回复:把 OpenClaw 的回复发回平台
// 标准化消息格式
interface StandardMessage {
userId: string; // 统一的用户ID
content: string; // 消息内容
timestamp: number; // 时间戳
metadata: any; // 平台特定数据
}
3.3 路由引擎:七级优先级匹配
路由引擎采用从精确到模糊的七级优先级匹配 [5]:
1. binding.peer → 精确匹配(peer.kind + peer.id)
2. binding.peer.parent → 父级匹配(适用于线程消息)
3. binding.guild → Discord Guild 匹配
4. binding.team → Slack Team 匹配
5. binding.account → 账号级匹配
6. binding.channel → 渠道级匹配
7. default → 默认 Agent
这种多级路由让用户可以精细地控制消息分配:特定的 Telegram 联系人走"编程助手"Agent,Slack 工作群走"工作助理"Agent,其余全部走默认通用 Agent [5]。
3.4 Lane 命令队列管理
OpenClaw 在并发处理方面采用了独特的 Lane(车道)抽象来管理命令队列 [2]。核心设计理念是"默认串行、显式并行":
- 每个用户会话独占一条串行 Lane,确保同一会话内的消息按序处理
- 低风险任务可显式分配至并行 Lane 执行
- 通过 Lane 隔离,不同会话之间的任务不会相互干扰
这种设计的优势在于简化了复杂任务的调试逻辑。传统的异步编程中,多个任务同时执行时容易出现竞态条件。Lane 机制通过将任务分配到不同的"车道",使得每个任务的执行路径清晰可追踪 [2]。
3.5 嵌入式 Agent 运行时
大多数 AI 助手框架采用子进程方式运行 Agent。OpenClaw 做了一个不同的选择:将 Pi Coding Agent SDK 以库的形式直接嵌入运行 [5][7]。
import { createAgentSession, SessionManager, SettingsManager }
from "@mariozechner/pi-coding-agent";
这带来了三个关键优势 [5]:
- 更低延迟:无需跨进程 IPC,工具调用和事件流可以在毫秒级完成
- 更简单的生命周期:不需要管理子进程的启动、崩溃恢复和资源回收
- 更灵活的集成:可以直接访问 Gateway 的内存状态
Pi 的设计哲学是"核心极小,但能长出来" [7]。OpenClaw 集成 Pi 时,通常把 Pi 的 built-in tools 直接清空,然后用 customTools 把 OpenClaw 的工具链整套注入进去。这意味着:Pi 负责"工具如何执行",OpenClaw 负责"有哪些工具、哪些能用、哪些要审批" [7]。
Agent 的一次完整执行经历以下步骤 [5]:
Gateway RPC: agent 请求
→ 参数校验
→ 幂等性检查 (idempotencyKey 去重)
→ 会话解析
→ 队列串行化 (同一会话内排队)
→ 运行 Pi Agent
→ 流式事件订阅
→ Gateway 广播
→ 回复分发 → 渠道投递
3.6 混合记忆系统
OpenClaw 的记忆系统采用了短期记忆与长期记忆协同的混合架构 [2][6]:
短期记忆采用 JSONLines 格式将对话历史持久化至本地文件,为多轮对话提供完整的上下文。这种格式的优势在于可以按行追加,支持流式读取 [2]。
长期记忆通过 Markdown 文件(MEMORY.md 或 memory/ 目录)存储用户偏好、关键信息,结合 SQLite 向量搜索与 FTS5 关键词匹配的混合检索机制 [6]:
-- 文件追踪
CREATE TABLE files (
path TEXT PRIMARY KEY, hash TEXT, mtime INTEGER, size INTEGER, source TEXT
);
-- 文本块 + 嵌入向量
CREATE TABLE chunks (
id TEXT PRIMARY KEY, path TEXT, source TEXT,
start_line INTEGER, end_line INTEGER,
hash TEXT, model TEXT, text TEXT,
embedding BLOB, updated_at INTEGER
);
-- 全文搜索
CREATE VIRTUAL TABLE chunks_fts USING fts5(text, content=chunks);
检索时采用向量搜索 + 全文搜索的混合策略 [5]:用户查询通过 Embedding 模型生成向量,同时进行 sqlite-vec 余弦相似度搜索(语义匹配)和 FTS5 全文检索(关键词匹配),两组结果合并排序。
长期运行的关键工程机制 [7]:
- 两层持久化:
sessions.json记录元信息,*.jsonltranscript 是真正的会话历史 - 树状 transcript:条目用
id/parentId形成树结构,可以开"支线"处理脏活,做完再回到主线 - 压缩前落盘:在自动 compaction 触发前,先强制 agent 把关键持久状态写进工作区文件,再允许短期上下文被压缩
3.7 纯文本存储的革命性设计
OpenClaw 在数据存储方面做出了一个极其大胆的决定:抛弃传统关系型数据库,全面采用纯文本存储 [2]。所有的历史对话、长期记忆以及安装的技能,全部以 Markdown 和 YAML 格式保存在本地目录。
这种"文件即状态"(File-as-State)的设计带来了多重优势 [2]:
- 极高的透明度:开发者可以直接用 Git 对 Agent 的状态进行版本控制
- 零配置运维:无需安装额外的数据库软件
- 天然的跨平台兼容性:文本文件在所有操作系统上都能通用
- 版本控制友好:可以使用 Git 对整个 AI 系统进行管理
3.8 插件化架构
如果说 Gateway 是 OpenClaw 的心脏,那 Plugin Registry 就是它的血管系统 [5]。几乎所有的扩展能力——渠道、工具、钩子、HTTP 路由、CLI 命令、AI 提供商——都通过统一的插件注册表管理。
插件分为三种类型 [5]:
- 内置插件(Bundled):直接编译进核心的 7 个消息渠道及核心工具
- 扩展插件(Extensions):位于
extensions/目录下的 30+ 个独立 npm 包 - 工作区插件(Workspace):用户自定义的插件,放在
~/.openclaw/plugins/目录下
技能系统采用四层优先级设计 [2]:工作区层 > 插件层 > 用户层 > 系统层。每个 Skill 包含 skill.json(元数据)、prompt.md(系统提示词)、tools/(自定义工具)、hooks/(生命周期钩子)等组件。
四、安全模型:多层纵深防御
4.1 五层安全策略
作为一个接入 30+ 消息平台的本地服务,安全是 OpenClaw 的生命线 [5]:
- 第一层 — 网络隔离:Gateway 默认绑定
127.0.0.1,不对外暴露 - 第二层 — 多因素认证:Token 认证、密码认证、Tailscale 身份、设备绑定令牌
- 第三层 — 角色权限:三种角色
node、operator、admin,细粒度权限范围 - 第四层 — DM 配对策略:
dmPolicy="pairing"模式下,陌生人首次联系需要配对确认 - 第五层 — 沙箱执行:
main会话完全信任,非 main 会话在 Docker 沙箱中运行
4.2 命令执行安全
OpenClaw 通过执行工具(exec tool)在设备上运行 Shell 命令,支持三种运行环境 [6]:
- 沙箱环境(默认):命令在 Docker 容器中运行
- 本地宿主机
- 远程设备
安全命令(如 jq、grep、cut、sort)已默认预批准。危险的 Shell 语法结构会被拦截 [6]:
# 以下命令在执行前会被拒绝:
cat file > /etc/hosts # 重定向
rm -rf / || echo "failed" # 逻辑或链接
(sudo rm -rf /) # 子 shell
4.3 已知安全风险
尽管有多重安全措施,OpenClaw 仍面临严峻的安全挑战 [3]:
- CVE-2026-25253:Gateway 控制平面漏洞,允许推送任意命令
- 独立安全审计发现 512 个漏洞,其中 8 个为严重级别
- ClawHub 第三方插件中约 36% 存在安全缺陷
- 全球超过 21,000 个公开暴露的实例,93.4% 存在认证绕过
Microsoft 的评价是:"OpenClaw 应被视为带有持久凭证的不可信代码执行",不适合在标准个人或企业工作站运行 [3]。
五、浏览器工具:语义快照而非截图
OpenClaw 的浏览器工具并非主要依赖截图,而是采用语义快照——一种基于页面无障碍树(ARIA)的文本化表示形式 [6]。
Agent 看到的是:
- textbox "Email" [ref=2]
- textbox "Password" [ref=3]
- link "Forgot password?" [ref=4]
- heading "Welcome back"
- list
- listitem "Dashboard"
- listitem "Settings"
截图大小为 5 MB,语义快照则少于 50 KB,且仅占图像 Token 成本的一小部分 [6]。这种设计在成本、速度和准确性上都有显著优势。
六、心跳机制与动态系统提示词
6.1 心跳机制
OpenClaw 引入了 HEARTBEAT.md 文件,通过类似 Cron 的机制定义周期性任务 [7]。每隔固定时间(如 4 小时),Agent 会"苏醒",加载 HEARTBEAT.md 中的指令集,执行检查服务器磁盘空间、浏览热门帖子、检查用户日历等任务。
这种机制根本性地改变了人机关系——用户不再是唯一的发起者,Agent 变成了能够主动发起对话的协作者 [7]。
6.2 动态系统提示词
与大多数框架不同,OpenClaw 的系统提示词并非固定不变,而是结合技能、记忆检索结果、用户身份、时区等信息动态构建 [6]。运行时信息会包含当前智能体名称、主机、操作系统、模型、通道、思考模式等上下文。
6.3 SOUL.md:个性化配置
OpenClaw 引入了 SOUL.md 来定义 Agent 的价值观、语气甚至幽默感 [7]。核心准则包括:
- 真帮忙,不表演——跳过填充句,直接行动
- 要有观点——没有个性的助手只是"多绕几步的搜索引擎"
- 先想办法,再提问——先自己搞清楚,卡住时再问
- 记住你是客人——你接触的是别人的生活,务必尊重
七、跨平台客户端与设备节点
OpenClaw 提供了完整的跨平台客户端 [5]:
| 平台 | 语言 | 形态 | 特色 |
|---|---|---|---|
| macOS | Swift | 菜单栏常驻应用 | Gateway 自动发现、IPC、语音唤醒 |
| iOS | Swift (SwiftUI) | 原生 App | 离线节点、消息推送 |
| Android | Kotlin | 原生 App | 设备节点注册 |
| Web | Lit (Web Components) | 浏览器控制台 | 聊天、配置、日志、调试 |
一个创新的设计是设备节点(Device Nodes)[5]。每个运行 OpenClaw 客户端的设备都可以注册为 Gateway 的一个"节点",AI 助手可以调度设备上的能力——在 macOS 上打开浏览器、在 iOS 上发送通知、在 Android 上执行特定操作。
八、与其他 Agent 的协作
OpenClaw 已经开始探索 Agent-to-Agent 的协作模式。以 Kiro(AWS AI Agent)为例 [6],双方通过 MCP + ACP 双协议实现双向协作:
- Kiro → OpenClaw(MCP):Kiro 通过 MCP 调用 OpenClaw 暴露的工具集,在编码过程中直接发送飞书消息、读取外部数据、触发设备操作
- OpenClaw → Kiro(ACP):OpenClaw 通过 ACP 向 Kiro 委派复杂的代码生成和分析任务
这种"Agent 用 Agent"的模式代表了从 Phase 1(人 → AI 工具)到 Phase 2(Agent ↔ Agent)的演进 [6]。
九、生态系统
OpenClaw 火爆以后,其生态快速迎来大爆发 [6]:
- 技能市场:ClawHub 已收录 3,286+ 社区 Skills
- Moltbook:仅允许 AI 智能体发帖的社交平台,短时间内注册智能体超过 150 万
- 企业接入:企业微信、腾讯云、阿里云等均提供一键部署方案
- 衍生产品:OneClaw 桌面版、ArkClaw(火山引擎)、LinClaw(七牛云)等
生态覆盖基础设施、消息通讯、社交媒体、工作市场、游戏虚拟世界、代币经济等 10 大板块 [6]。
十、未来发展趋势与展望
10.1 技术演进方向
OpenClaw 团队已在路线图中标注了未来的发展方向 [3]:
- 语音交互支持:集成 Whisper + TTS
- 移动端 App:iOS/Android 原生应用
- 多模态能力:图像理解、OCR、图表分析
- 多语言原生支持:中文、日语、德语等
- 企业版:支持团队协作、权限管理、审计日志
10.2 从"千模大战"到"千端大战"
OpenClaw 的出圈标志着 AI 行业的新阶段 [3]。未来 AI 不再是独立 App,而是凌驾于所有应用之上的"影子管家"。网站将普遍采用双重接口架构——面向人类的视觉美感界面,和面向智能体的语义清晰 API 接口 [7]。
10.3 Agent 经济的雏形
Moltbook 社区展示了机器经济的雏形 [7]:Agent 自动发行和交易 Memecoin,分布式知识库构建速度远超人类社区。虽然充斥着噪声,但也诞生了独特的文化和意想不到的协作模式。
10.4 成本优化路径
Token 消耗是 OpenClaw 面临的现实挑战。社区正在探索混合云架构 [7]:
- 路由层:使用极低成本的小模型处理简单的意图识别和心跳检查
- 专家层:只有复杂任务才动态路由到云端的昂贵大模型
- 本地优先:涉及隐私数据的任务强制使用本地模型
10.5 值得关注的挑战
| 挑战 | 影响 | 可能的改进方向 |
|---|---|---|
| Gateway 单点故障 | 宕机导致所有渠道中断 | 引入 watchdog 进程或分布式部署 |
| 代码规模 | ~2,500 个 TypeScript 文件,学习曲线陡峭 | 改进文档、增加架构示意图 |
| 安全风险 | 提示注入、供应链攻击 | 加强默认配置安全性、完善插件审核 |
| 国内平台适配 | 微信、钉钉、飞书适配不佳 | 与国内平台建立官方合作 |
结语
OpenClaw 代表了 AI 从"对话者"到"行动者"的范式转变。它的价值不仅在于解决了一个真实的工程问题——"让 AI 助手存在于所有消息平台",更在于提供了一套可复用的架构模式 [5]:
- Gateway 控制面模式将复杂的多渠道消息路由简化为清晰的轴辐式架构
- 多适配器组合契约展示了如何优雅地抽象 30+ 种异构协议
- 插件化一切的设计哲学证明了统一注册表可以管理所有扩展点
- 嵌入式 Agent 方案为低延迟 AI 应用提供了子进程之外的另一种选择
OpenClaw 的故事还在继续。在 Token 成本下降到临界点之前,它将继续作为极客和开发者的利器存在;而一旦成本壁垒被突破,这种"无头、自治、工具化"的形态将彻底重写软件工程的教科书,开启真正的 Agentic Web 时代 [7]。