OpenClaw技术架构深度拆解:从四层模型到源码实现

0 阅读8分钟

2026年初,OpenClaw以惊人的速度席卷全球——GitHub星标突破28万,超越Linux登顶平台榜首。这个被开发者昵称为“小龙虾”的项目,究竟藏着怎样的技术魔力?

如果你对OpenClaw的技术架构感兴趣,或者想深入学习其源码实现,欢迎访问RskAi(ai.rsk.cn)——国内可直接访问的免费AI镜像站,聚合Gemini/GPT/Claude三款顶级模型,还能在对话框里向我们提问技术问题。 

本文将从四层架构、核心源码、记忆系统、安全机制四个维度,对OpenClaw进行深度技术拆解。

一、四层架构:从消息到执行的完整链路

OpenClaw的架构可以概括为四层模型:交互层、网关层、智能体层、执行层。这套分层设计让OpenClaw成为一个能听、能想、能做、能记的完整智能体。

1.1 交互层:多端消息的统一“翻译官”

交互层负责对接超过25个通讯渠道,包括Telegram、WhatsApp、飞书、钉钉、Slack等。每个渠道都有自己的脾气——WhatsApp要扫码配对,Telegram要填Bot Token,飞书有一套复杂的卡片消息格式。交互层的工作,就是把所有这些接口翻译成OpenClaw内部统一能听懂的语言。

为了抹平几十种IM平台的API差异,OpenClaw采用三层通道架构:

Gateway(网关层) :作为整个系统的控制大脑,负责维护WebSocket控制平面、全局会话管理、消息路由

Channel Core(通道核心层) :维护通道注册表,管理全局配置,统一处理会话、线程、输入状态等通用逻辑

Channel Plugins(通道插件层) :负责与各个IM厂商的服务器进行底层网络交互

连接方式主要分为三类:

WebSocket模式:本地服务器主动向IM厂商发起长连接,无需公网IP,配置简单

Webhook模式:厂商服务器主动推送消息,节省资源但强依赖公网IP

CLI模式:针对Signal、iMessage等特殊通道,劫持本地客户端工具

通道插件的统一接口定义在src/channels/plugins/types.plugin.ts中,包含id、meta、capabilities、config等必须实现的属性。这种设计让核心模块可以不面向任何具体的IM工具撰写代码,而是只面向通道接口撰写代码——即使市面上新出一款IM,只要实现插件规范就能无痛接入。

1.2 网关层:系统的大脑中枢

网关(Gateway)是OpenClaw最核心的组件,是一个常驻后台的服务,所有消息、所有指令、所有定时任务都得经过它。网关做三件事:

路由:根据消息来源分配给对应的会话处理

排队:采用“车道式队列”设计,实现显式并行、默认串行

调度定时任务:管理Heartbeat定时任务

从源码层面看,Gateway层还承担着上下文压缩的重要职责。在src/gateway/dispatcher.py中,有一个关键的装饰器@route_to_executor,Gateway在这里做意图分析和节点匹配——提取意图、过滤掉无用的对话历史、匹配最合适的执行节点。

核心函数dispatch_task负责将指令分发到正确的执行单元,其执行流程包括权限校验、意图识别、任务分发、结果回调四个阶段。工程避坑点:很多指令没响应,是因为Gateway层的registry没更新。OpenClaw默认使用Redis维护节点心跳,如果Redis挂了或网络存在大延迟,指令就会在Gateway堆积。

消息队列方面,OpenClaw使用BullMQ基于Redis实现,支持延迟队列、死信队列、重试机制等特性。

1.3 智能体层:真正动脑子的地方

智能体(Agent)这一层又拆成四个小角色:

会话管理器:每个对话都有一个独立的“会话”,隔离不同用户的聊天记录

上下文组装器:把SOUL.md(人格设定)、TOOLS.md(工具有哪些)、历史聊天记录、最近的记忆,拼成完整的提示词喂给大模型

执行循环:采用ReAct(思考→行动→观察→反思)循环逻辑分解和执行复杂任务

记忆系统:三级记忆架构,下文详述

1.4 执行层:真正干活的“手脚”

执行层分两块:

本地节点:和网关跑在同一台机器上,负责通用技能:执行命令行、读写文件、联网搜索

远端节点:跑在其他设备上,通过WebSocket长连接和网关通信

为了安全,Pi-embedded实现了一套名为“Cell Isolation”的沙箱机制。核心逻辑在executor.py中,包含两个核心模块:

Environment Snapshot:在执行前先快照当前环境变量

Skill Loader:动态加载.ocskill文件

技能系统是OpenClaw最妙的设计——每个技能就是一个.md文件,里面告诉AI这个工具怎么用、有什么参数。AI读了这个“说明书”,自己就知道怎么调用。技能市场ClawHub已收录超过1.3万个技能包。

二、三级记忆系统:让AI“记得住”

OpenClaw采用三级记忆架构,以本地SQLite+向量索引实现高效检索。

2.2 存储层:SQLite+向量

每个Agent对应一个独立的SQLite数据库,位于~/.openclaw/memory/{agentId}.sqlite。表结构包含:

files:记录文件元数据

chunks:存储文本块和向量

chunks_fts:全文搜索虚拟表(FTS5)

chunks_vec:向量搜索虚拟表(sqlite-vec)

关键设计包括增量索引、去重存储、优雅降级——如果sqlite-vec扩展没装上,系统会回退到JavaScript暴力计算。

2.3 检索层:BM25+向量混合检索

核心检索工具memory_search实现的是混合检索——让向量语义匹配和BM25关键词匹配“打架”,然后加权平均。为什么需要混合?因为纯向量检索懂语义但不懂精确匹配(搜“Mac Studio网关主机”能找到“运行网关的那台机器”,但搜环境变量名“DB_PASSWORD”可能抓瞎),反之BM25擅长精确匹配但不懂同义替换。

OpenClaw的做法是:取并集而非交集。只要向量或BM25任一方法认为某块内容相关,它就有机会进入候选池,最后通过加权得分决定谁胜出。

三、插件化架构:从单体到开放平台

2026年初,OpenClaw完成重大插件化重构,核心是将模型提供商(Provider)从核心代码中解耦,转化为可独立分发的插件包。

重构前的单体架构问题重重:添加新模型提供商需同时修改4个核心文件,路由膨胀,测试隔离难。重构后的插件化架构采用“接口标准化+动态加载”思路:

核心接口定义:框架定义统一的Provider接口,明确chat、estimateTokens等核心能力

动态加载机制:通过ProviderLoader类实现插件的动态导入与注册

插件标准化:每个插件为独立npm包,结构统一,便于分发与维护

插件化架构的技术优势包括依赖隔离(核心框架无任何模型SDK依赖)、并行开发、版本自治、安全增强。

四、安全考量与风险提示

OpenClaw具备执行shell命令的能力,存在一定的权限风险。近期安全事件频发:

Meta安全总监在使用OpenClaw整理邮箱时,AI突然开始批量删除邮件,最终只能通过物理拔掉电源止损

韩国数家科技巨头因担心内部机密被用于训练外部模型,正式下达禁令

多名用户暴露了OpenClaw的默认通信端口(18789)且未设密码防护,导致设备被入侵

工业和信息化部网络安全威胁和漏洞信息共享平台监测发现,OpenClaw部分实例在默认或不当配置情况下存在较高安全风险。部署时务必遵循安全建议:不要在主力机“裸奔运行”、API密钥勿泄露、关闭不必要的公网访问、完善身份认证和访问控制。

五、总结:为什么OpenClaw的架构值得学习

OpenClaw的技术架构给我们最大的启发是:一个优秀的AI助手,必须能听、能想、能做、能记。而OpenClaw的四大组件,恰好对应了这四大能力:

交互层:多平台无界接入,实现“能听”

网关层:消息路由与调度中枢,实现“能协调”

智能体层:多模型集成与记忆系统,实现“能想、能记”

执行层:插件化技能与远程节点,实现“能做”

这套架构设计的精妙之处在于:它不是一个写死的功能列表,而是一个可无限扩展的开放平台。

对于开发者而言,完整搭建完这套流程后,对Skills的理解、对多Agent的理解、对memory-search原理的理解、对Agent经典架构的理解,都可以上一个层次。这些问题都可以在折腾OpenClaw中自己摸索到:

如果让你设计一个Agent,它的长短期记忆链路你打算怎么设计?

如果让你设计一个多Agent架构,你会设计哪些通信方式?

memory-search方案的原理是什么?

一个完整的LLM对话是怎么在transformer框架中流转的?

如果你对OpenClaw的技术细节有更多疑问,或者想深入学习其源码实现,欢迎访问RskAi(ai.rsk.cn)——国内可直接访问的免费AI镜像站,聚合Gemini/GPT/Claude三款顶级模型,还能在对话框里向我们提问。 我们随时准备为你解答技术难题。

【本文完】