当前位置: 首页 > article >正文

OpenClaw 源码架构深度解析

引言OpenClaw原Clawdbot作为当前全球最炙手可热的开源AI Agent框架其GitHub星标数已超越Linux和React登顶全球榜首。它的爆火绝非偶然——这套架构完美解决了AI Agent落地的“最后一公里”问题实现了从云端大脑到本地肢体的无缝协同。本文将深入OpenClaw源码从四层架构、插件化重构、三级记忆系统、Gateway-Pi执行链路四个维度彻底拆解这套系统的设计哲学与实现细节。一、整体架构四层解耦设计OpenClaw采用经典的四层解耦架构从外到内依次是交互层、网关层、智能体层、执行层。这种分层设计确保了各模块职责清晰、可独立演进。┌─────────────────────────────────────────────────────────────┐ │ 交互层 (Channels) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ WhatsApp │ │ Telegram │ │ 飞书 │ │ iMessage │ ... │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 网关层 (Gateway) │ │ 路由 · 排队 · 调度 · 鉴权 · 协议转换 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 智能体层 (Agent) │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │会话管理器 │ │上下文组装器 │ │ 记忆系统 │ │ │ └────────────┘ └────────────┘ └────────────┘ │ │ ┌────────────┐ ┌────────────┐ │ │ │执行循环 │ │工具调用 │ │ │ └────────────┘ └────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 执行层 (Execution) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 本地节点 │ │ 远端节点 │ │ 技能 │ │ 沙箱 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘1.1 交互层抹平所有IM差异交互层的核心职责是协议适配。OpenClaw内置支持8个核心通道Telegram、WhatsApp、Discord等并通过插件系统支持超过50个扩展通道。源码中每个通道都是一个独立的插件必须实现统一的ChannelPlugin接口export type ChannelPlugin { id: ChannelId; // 通道唯一标识 meta: ChannelMeta; // 通道元信息 capabilities: ChannelCapabilities; // 能力声明 config: ChannelConfigAdapter; // 配置管理 // 可选实现 outbound?: ChannelOutboundAdapter; // 发送消息 pairing?: ChannelPairingAdapter; // 配对逻辑 messaging?: ChannelMessagingAdapter; // 消息处理 // ... }这种设计的精妙之处在于核心模块不面向任何具体IM编程只面向接口编程。无论未来出现什么新的IM工具只要实现这套接口就能无缝接入OpenClaw生态。1.2 网关层系统的控制中枢Gateway是整个OpenClaw的核心服务作为一个常驻的Node.js进程它承担着路由根据消息来源分配给对应的会话排队实现“车道式队列”Lane Queue默认串行、显式并行调度管理定时任务Heartbeat鉴权验证请求合法性协议转换将不同通道的消息统一成内部格式网关层的核心实现在src/gateway/server.py中关键代码片段# gateway/dispatcher.py def dispatch_task(payload): # 提取意图过滤无用的对话历史 intent extractor.analyze(payload.content) # 匹配最合适的执行节点 node_id registry.get_active_node(payload.affinity) return forward_to_node(node_id, intent)Gateway还维护着节点的心跳机制默认使用Redis如果节点失联指令会被正确路由到其他可用节点。二、插件化重构从单体到生态2026年初OpenClaw通过PR #661完成了重大插件化重构这是架构演进的分水岭。2.1 单体架构的技术债务重构前添加一个新模型提供商需要修改4个核心文件继承BaseProvider抽象类在providers/index.ts手动注册在model-router.ts添加路由分支更新配置Schema路由文件充斥着大量的else-if分支代码复杂度随提供商数量线性增长// 重构前的路由逻辑 exportclass ModelRouter { async route(model: string, ...args) { if (model.startsWith(anthropic/)) { returnthis.anthropicProvider.call(...args); } elseif (model.startsWith(openai/)) { returnthis.openaiProvider.call(...args); } elseif (model.startsWith(gemini/)) { returnthis.geminiProvider.call(...args); } // ... 还有15个else-if } }2.2 插件化架构设计重构后的架构核心是接口标准化动态加载// packages/core/src/provider-interface.ts export interface Provider { readonly name: string; readonly version: string; chat(messages: Message[], options: ChatOptions): AsyncIteratorstring; estimateTokens(text: string): number; getSupportedFeatures(): ProviderFeatures; }动态加载机制通过ProviderLoader实现export class ProviderLoader { private providers new Mapstring, Provider(); async loadFromPackage(packageName: string): Promisevoid { constmodule await import(packageName); // 动态导入 if (!this.validateProvider(module.default)) { thrownewError(Invalid provider: ${packageName}); } const provider newmodule.default(); this.providers.set(provider.name, provider); } }重构后的路由逻辑从O(n)降为O(1)export class ModelRouter { async route(model: string, ...args) { const [providerName] model.split(/); const provider this.loader.getProvider(providerName); if (!provider) throw new Error(Provider not found: ${providerName}); return provider.chat(...args); } }2.3 插件化的四大优势依赖隔离核心框架从45MB降至8MB并行开发社区可独立开发插件无需等待核心迭代版本自治各插件独立版本可单独更新安全增强沙箱机制权限声明风险可控三、记忆系统三级存储架构OpenClaw的记忆系统是其最惊艳的设计之一。它采用三级记忆架构模拟人类记忆的分层特性。3.1 工作区结构每个Agent对应一个独立的工作区~/.openclaw/workspace/ ├── MEMORY.md # 长期记忆 ├── memory/ │ ├── 2026-03-10.md # 今日日志短期 │ └── 2026-03-09.md # 昨日日志 ├── sessions/ # 会话存档近端 ├── USER.md # 用户身份 └── SOUL.md # Agent人格设定3.2 存储层SQLite 向量每个Agent对应一个独立的SQLite数据库表结构设计精巧-- 文件元数据 CREATETABLE files ( idINTEGER PRIMARY KEY, pathTEXTUNIQUE, mtime INTEGER, -- 修改时间用于增量索引 hashTEXT -- 内容哈希去重 ); -- 文本块存储 CREATETABLE chunks ( idINTEGER PRIMARY KEY, file_id INTEGER, textTEXT, hashTEXTUNIQUE, -- 文本哈希跨文件去重 embedding TEXT -- JSON序列化的向量 ); -- 全文搜索FTS5 CREATEVIRTUALTABLE chunks_fts USING fts5(text, contentchunks); -- 向量搜索sqlite-vec CREATEVIRTUALTABLE chunks_vec USING vec0(embedding float[1536]);3.3 混合检索策略OpenClaw的核心检索工具memory_search实现了BM25 向量的混合检索async function hybridSearch(query, options {}) { const vecWeight 0.7; // 向量权重 const bm25Weight 0.3; // BM25权重 // 分别检索取并集 const vectorResults await vectorSearch(query); const bm25Results await bm25Search(query); // 合并并计算综合得分 const allChunkIds new Set([ ...vectorResults.map(r r.id), ...bm25Results.map(r r.id) ]); // 加权平均后排序返回 }这套算法的关键在于并集而非交集——只要任一方法认为相关就有机会进入候选池。3.4 优雅降级如果sqlite-vec扩展未安装系统会自动回退到JS暴力计算try { // 快速路径数据库内计算余弦距离 returnawait db.all(SELECT ... vec_distance_cosine(...)); } catch (err) { // 回退路径全量加载到内存暴力计算 const allChunks await db.all(SELECT * FROM chunks); return allChunks.map(chunk ({ ...chunk, dist: cosineSimilarity(queryVector, JSON.parse(chunk.embedding)) })).sort((a, b) a.dist - b.dist).slice(0, limit); }四、执行层Gateway-Pi 架构OpenClaw最硬核的部分是其云端大脑本地肢体的设计。4.1 三层执行链路Orchestrator大脑云端部署负责LLM推理和任务拆解Gateway协议桥鉴权、流量整形、指令翻译Pi-embedded执行端运行在本地设备真正执行脚本4.2 沙箱隔离机制Pi-embedded实现了一套名为“Cell Isolation”的沙箱机制# packages/pi-embedded/runtime/executor.py class ExecutionEngine: def execute(self, skill_code): # 环境快照 snapshot self.take_snapshot() # 在独立venv中运行 with self.isolated_venv() as venv: # 动态安装依赖 self.install_dependencies(skill_code.dependencies) # 执行技能 result venv.run(skill_code) # 恢复环境 self.restore_snapshot(snapshot) return result4.3 完整调用链追踪以“查CPU温度并生成图表”为例完整调用链如下1. Orchestrator → 识别技能需求 → 生成JSON指令 2. Gateway → 验证签名 → 查找在线Pi节点 → Protobuf封装 → WebSocket发送 3. Pi-embedded → 接收消息 → 解包 4. Sandbox → 启动临时Python进程 → 挂载传感器权限 5. Skill Execution → 执行get_temp.py 6. Callback → 结果图片二进制原路返回五、Agent核心配置每个Agent的workspace中包含多个核心配置文件文件作用AGENTS.mdAgent职责声明决定工具权限SOUL.md个性化提示词注入system promptTOOLS.md工具白名单/黑名单安全边界IDENTITY.md身份标识name/avatar通道展示USER.md用户偏好上下文先验HEARTBEAT.md定时任务配置MEMORY.md长期记忆文档RAG源源码中通过loadWorkspaceBootstrapFiles方法加载这些文件// src/agents/workspace.ts:498-555 export async function loadWorkspaceBootstrapFiles(dir: string) { const entries [ { name: AGENTS.md, filePath: path.join(resolvedDir, AGENTS.md) }, { name: SOUL.md, ... }, { name: TOOLS.md, ... }, // ... ]; // 动态检测MEMORY.md }六、架构设计的优缺点6.1 核心优势零运维SQLite单文件无需复杂数据库数据私有全本地存储不上云可审计记忆透明Markdown文件可读增量索引只处理变更文件效率高优雅降级从向量→BM25→纯文本逐级回退插件生态60官方技能社区持续贡献6.2 现存挑战Token消耗偏高记忆系统是主要原因向量检索不懂关系能找到个体但推不出关系维护成本线性增长文件越多索引维护越复杂长连接抖动WebSocket 1006错误常见小白门槛虽零运维但需懂文件结构七、实战建议7.1 定期记忆体检长期记忆文件会随时间膨胀建议每月手动过一遍MEMORY.md删过时、并重复。7.2 教会Agent分类在系统提示词中引导分类“我喜欢/习惯” →preferences.md“我要做一个” →projects.md“解决了” →learnings.md7.3 善用Heartbeatopenclaw cron add --name 记忆维护 \ --cron 0 3 * \ --system-event 运行记忆整理合并相似项删除低价值项生成摘要7.4 显式限定搜索范围memory_search({ query: ..., scope: [learnings.md] })结语OpenClaw的架构设计给我最大的启发是AI的记忆和执行不应该是黑盒。用Markdown存真相用SQLite建索引用BM25向量做检索用Gateway-Pi做执行——这套组合拳既保证了功能强大又让一切透明可控。在这个所有AI都想“记住你”的时代OpenClaw让你能随时打开文件、看清它记住了什么、知道它在哪执行、怎么执行。这种清醒的设计哲学或许正是它能够超越Linux和React登顶全球的原因。参考资料OpenClaw三级记忆系统实现揭秘2026年OpenClaw插件化重构技术解析OpenClaw核心源码解读从Gateway到Pi-embedded不会写代码也能懂OpenClaw四层架构图解吃龙虾咯万字拆解OpenClaw的架构与设计关于OpenClaw你需要了解的核心架构、运作原理OpenClaw Architecture Deep Dive 2025-END -如果您关注前端AI 相关领域可以扫码进群交流添加小编微信进群关于奇舞团奇舞团是 360 集团最大的大前端团队非常重视人才培养有工程师、讲师、翻译官、业务接口人、团队 Leader 等多种发展方向供员工选择并辅以提供相应的技术力、专业力、通用力、领导力等培训课程。奇舞团以开放和求贤的心态欢迎各种优秀人才关注和加入奇舞团。

相关文章:

OpenClaw 源码架构深度解析

引言OpenClaw(原Clawdbot)作为当前全球最炙手可热的开源AI Agent框架,其GitHub星标数已超越Linux和React,登顶全球榜首。它的爆火绝非偶然——这套架构完美解决了AI Agent落地的“最后一公里”问题,实现了从云端大脑到…...

图像处理扫盲:用PS图层模式理解形态学开闭运算(附医学影像案例)

图像处理扫盲:用PS图层模式理解形态学开闭运算(附医学影像案例) 如果你和我一样,最初看到“形态学”、“腐蚀”、“膨胀”这些词时,脑子里浮现的是化学实验或者物理变化,那说明我们都不是数学科班出身。在视…...

Phi-4-reasoning-vision-15B部署实操:双GPU显存分配策略与低并发稳定性验证

Phi-4-reasoning-vision-15B部署实操:双GPU显存分配策略与低并发稳定性验证 1. 引言 如果你手头有两张24GB显存的GPU,想部署一个能看懂图片、分析图表、甚至理解软件界面的AI模型,那么微软最新发布的Phi-4-reasoning-vision-15B绝对值得一试…...

ESP8266机械狗硬件平台:嵌入式学习型原型设计与工程实践

1. 项目概述“hello-hachi”是一个以ESP8266-12F为主控的可编程机械狗硬件平台,其设计目标并非追求高动态步态或复杂运动控制,而是构建一个面向嵌入式学习与功能扩展的软硬协同实验载体。项目名称中的“hachi”隐喻忠犬八公的形象定位,但实际…...

幻境·流金镜像灰度发布实践:K8s蓝绿部署+Prometheus监控+异常流量自动熔断

幻境流金镜像灰度发布实践:K8s蓝绿部署Prometheus监控异常流量自动熔断 1. 引言:当艺术创作遇上工程挑战 想象一下,你正在使用一个名为「幻境流金」的影像创作平台。它融合了先进的渲染技术,能够将你的文字描述在短短几步内转化…...

ComfyUI生成视频模型实战指南:从零搭建到性能优化

ComfyUI生成视频模型实战指南:从零搭建到性能优化 最近在折腾用ComfyUI做视频生成,发现这玩意儿确实强大,但新手入门时遇到的坑也不少。从环境配置到工作流编排,再到性能优化,每一步都可能让人头疼。今天我就把自己从零…...

Phi-3-mini-4k-instruct模型微调实战指南

Phi-3-mini-4k-instruct模型微调实战指南 1. 引言 你是不是遇到过这样的情况:用一个现成的AI模型来处理你的专业数据,结果发现它总是理解不了你的行业术语,或者给出的回答不够专业?这种情况太常见了。通用模型虽然强大&#xff…...

基于ESP32的倒立摆平衡小车设计与PID控制实践

1. 项目概述智能遥控平衡小车是一台基于倒立摆原理实现动态自平衡的双轮差速驱动平台。其核心目标并非追求静态定位精度,而是构建一个具备完整闭环控制能力、可扩展性强、参数可观测的嵌入式运动控制系统教学与验证平台。该系统在保持基本直立稳定性的前提下&#x…...

快马平台ai助力:五分钟生成c语言单链表数据结构完整实现原型

最近在复习数据结构,单链表作为最基础也最常用的线性结构之一,理解其C语言实现是绕不开的一环。以前自己写,从结构体定义到各种操作函数,再到主函数测试,一套流程下来,调试加改Bug,没个小半天搞…...

GD32F450嵌入式游戏机:从FSMC驱动ILI9341到双缓冲渲染

1. 项目概述“Belong专属梁山派游戏机”是一个基于GD32F4xx系列微控制器的嵌入式手持游戏平台原型,其硬件载体为立创梁山派开发板(LSPi)。该项目并非商用级消费电子产品,而是一个面向嵌入式初学者与转型工程师的实践性学习平台&am…...

终结媒体播放痛点:Jellyfin Media Player全场景解决方案

终结媒体播放痛点:Jellyfin Media Player全场景解决方案 【免费下载链接】jellyfin-media-player Jellyfin Desktop Client based on Plex Media Player 项目地址: https://gitcode.com/gh_mirrors/jel/jellyfin-media-player 你是否经历过这样的窘境&#x…...

macOS系统Xbox游戏手柄驱动完整配置指南

macOS系统Xbox游戏手柄驱动完整配置指南 【免费下载链接】360Controller 项目地址: https://gitcode.com/gh_mirrors/36/360Controller 作为Mac用户,你是否曾因无法使用Xbox手柄而错失精彩游戏体验?本文将帮助你在macOS系统上完美配置Xbox控制器…...

SenseVoice-Small入门:10分钟完成你的第一个语音识别程序

SenseVoice-Small入门:10分钟完成你的第一个语音识别程序 你是不是觉得语音识别技术听起来很酷,但一想到要搭建环境、处理模型、写复杂的代码就头大?别担心,今天我们就来打破这个门槛。我带你用最简单、最直接的方式,…...

AI辅助开发实战:基于STM32的智能加湿器单片机毕业设计资料深度解析

传统开发痛点与AI辅助的契机 作为一名嵌入式方向的毕业生,我深知完成一个像“基于STM32的智能加湿器”这样的毕业设计项目有多折腾。传统的STM32开发,尤其是对于CubeMX和HAL库还不那么熟悉的同学,往往伴随着几个典型的“痛苦面具”时刻&#…...

Gemma-3-12b-it效果展示:音乐乐谱图识别+演奏技巧说明生成

Gemma-3-12b-it效果展示:音乐乐谱图识别演奏技巧说明生成 1. 引言:当AI看懂乐谱,还能教你弹琴 想象一下,你是一位音乐爱好者,偶然在旧书摊淘到一份手写的古典吉他乐谱。谱面有些模糊,上面还标注着一些你看…...

六、STM32F4库函数实战:从时钟使能到GPIO配置,点亮天空星开发板LED灯

六、STM32F4库函数实战:从时钟使能到GPIO配置,点亮天空星开发板LED灯 很多刚开始玩STM32的朋友,拿到开发板后第一个想做的实验就是点灯。这就像嵌入式世界的“Hello World”,虽然简单,但能把整个开发流程串起来。今天&…...

LiuJuan20260223Zimage快速部署:3步完成Xinference服务启动+Gradio WebUI访问

LiuJuan20260223Zimage快速部署:3步完成Xinference服务启动Gradio WebUI访问 想快速体验一个专门生成LiuJuan风格图片的AI模型吗?今天介绍的LiuJuan20260223Zimage镜像,让你在几分钟内就能启动一个完整的文生图服务。这个镜像基于强大的Z-Im…...

Qwen3-VL-30B新手入门指南:从零开始,轻松搭建你的图文对话机器人

Qwen3-VL-30B新手入门指南:从零开始,轻松搭建你的图文对话机器人 你是不是经常遇到这样的情况:看到一张复杂的图表,想快速理解其中的数据趋势;收到一张产品设计图,需要生成详细的文字描述;或者…...

文墨共鸣大模型助力互联网产品分析:自动生成竞品报告与用户画像

文墨共鸣大模型助力互联网产品分析:自动生成竞品报告与用户画像 作为一名在互联网行业摸爬滚打多年的产品人,我深知竞品分析和用户洞察有多“磨人”。过去,为了写一份像样的竞品报告,得手动下载十几个App,截图、录屏、…...

Bannerlord Co-op开源模组实战部署与高效配置指南

Bannerlord Co-op开源模组实战部署与高效配置指南 【免费下载链接】BannerlordCoop 项目地址: https://gitcode.com/gh_mirrors/ba/BannerlordCoop 一、基础认知:模组架构与环境准备 1.1 技术架构解析 Bannerlord Co-op采用三层架构设计,通过模…...

DirectX修复有什么用?解决游戏闪退dll报错,DirectX修复工具下载安装教程

什么是DirectX修复工具? DirectX修复工具(DirectX Repair)是一款系统级工具软件,主要功能是用来自动修复和安装Windows系统常用的DirectX和C运行库。程序分为标准版、增强版以及在线修复版。所有版本都支持修复DirectX的功能,而增强版则额外…...

Qwen2.5-72B-GPTQ-Int4惊艳案例:中文编程题自动解答+多步数学推导展示

Qwen2.5-72B-GPTQ-Int4惊艳案例:中文编程题自动解答多步数学推导展示 1. 引言:当大模型遇上量化,性能与效率的完美平衡 如果你正在寻找一个既能理解复杂中文指令,又能进行深度逻辑推理的大语言模型,那么Qwen2.5-72B-…...

Gemma-3-12b-it Streamlit教程:自定义上传组件与预处理流水线集成

Gemma-3-12b-it Streamlit教程:自定义上传组件与预处理流水线集成 想快速搭建一个既能聊天又能“看图说话”的智能应用吗?今天,我们就来手把手教你,如何基于强大的Gemma-3-12b-it多模态大模型,打造一个像“Gemma-3 Pi…...

从在线翻译到本地引擎:Hunyuan-MT 7B如何帮你节省每年数万元API费用?

从在线翻译到本地引擎:Hunyuan-MT 7B如何帮你节省每年数万元API费用? 还在为每月高昂的翻译API账单发愁吗?或者,你是否经历过这样的场景:深夜处理紧急的跨境客户咨询,却因为在线翻译服务限频或网络波动&am…...

Z-Image-Turbo-辉夜巫女镜像免配置:预装Xinference+Gradio+模型权重

Z-Image-Turbo-辉夜巫女镜像免配置:预装XinferenceGradio模型权重 想快速体验生成“辉夜巫女”主题的动漫风格图片,但又不想折腾复杂的模型部署和环境配置?这个预装了Xinference、Gradio以及Z-Image-Turbo-辉夜巫女LoRA模型的镜像&#xff0…...

基于ESP32的电动升降桌智能控制系统设计

1. 项目概述电动升降桌作为现代办公与居家环境中的智能化家具,其核心价值在于通过机电一体化设计实现人体工学高度的动态调节。本项目基于二手畅腾CTHT3-F4200双电机三节升降桌架进行二次开发,构建了一套具备高度记忆、网络授时、本地交互与快充扩展能力…...

实战应用:基于快马构建高性能实时日志分析系统核心处理引擎

最近在做一个实时日志分析系统的核心处理引擎,性能要求非常高。传统的批处理方式延迟太大,而简单的流处理又容易在高并发下崩溃。这次我尝试用Go语言来构建,重点解决高并发日志摄入和实时流式处理这两个核心性能瓶颈。整个过程下来&#xff0…...

基于FPGA的电路传递函数实时辨识与数字重构系统

1. 项目概述“电路模型探究装置”是一个面向电子系统建模与辨识的高精度硬件平台,其核心目标是实现对线性时不变(LTI)电路网络的动态特性解析、数学建模与数字重构。该装置并非通用信号分析仪,而是针对全国大学生电子设计竞赛G题所…...

效率提升秘籍:借助快马AI自动生成高可用视频播放记忆模块

最近在优化一个视频网站项目,遇到了一个很实际的需求:用户希望下次打开页面时,能“继续播放上次观看的短片内容”。听起来简单,但真要自己从头实现一个健壮、高效的播放记忆模块,需要考虑的细节还真不少。比如&#xf…...

Tao-8k与微信小程序开发结合:打造个性化AI聊天助手

Tao-8k与微信小程序开发结合:打造个性化AI聊天助手 想不想给你的微信小程序装上一个“最强大脑”?让它不仅能回答用户的各种问题,还能记住对话历史,甚至用语音和你聊天?听起来像是未来科技,但其实用Tao-8b…...