共计 5502 个字符,预计需要花费 14 分钟才能阅读完成。
在上一期中,我们介绍了 OpenClaw 的安装方法,并介绍了 OpenClaw 工作区中的配置文件。那本文将讨论一下 OpenClaw 的内部工作原理。
从信息检索到任务执行
当下人工智能的发展正在经历一次范式转移。从早期 [[LLM]](大语言模型)应用主要集中在问答和内容生成,转向当前的 AI 智能体——也就是 AI 自主根据经验和知识,产生计划并执行操作的能力。然而,当前主流的云端 Agent 解决方案面临着几个根本性的挑战:数据隐私不可控、上下文记忆碎片化、以及与本地环境交互受限。

OpenClaw 正是在这样的背景下诞生的。它不仅仅是一个聊天机器人,更是一个跨平台的个人 AI 助理。OpenClaw 提出了一种"自带设备"(BYOD,Bring Your Own Device)的运行模式:核心组件运行在用户自己控制的硬件上——无论是 [[Mac Mini]]、Linux 服务器还是[[树莓派]]——而将推理任务通过 API 外包给 [[Claude]] Opus、[[GPT-4]] 或本地开源模型。这种架构不仅确保了用户对记忆和数据的完全掌控,还赋予了 AI 深度访问本地文件系统、Shell 和浏览器的能力,使其成为真正意义上能干活的"助手"。
核心架构
OpenClaw 采用了以 Gateway 为中心的多层结构,整个系统围绕一个 Gateway 网关运转。
下图展示了其整体架构:
graph TD
subgraph Channels["消息渠道"]
WA[WhatsApp]
TG[Telegram]
SL[Slack]
DC[Discord]
SG[Signal]
IM[iMessage]
end
subgraph GW["Gateway 网关 (port 18789)"]
WS[WebSocket Server]
API[HTTP API]
UI[Web UI]
end
subgraph Runtime["Agent Runtime"]
PI[Pi Framework]
TL[Tool Loop]
CTX[Context Builder]
end
subgraph Extensions["扩展系统"]
SK[Skills System<br/>SKILL.md]
MEM[Memory<br/>Sessions]
PLG[Plugin System]
end
subgraph LLMs["LLM 提供商"]
CL[Claude]
GP[GPT-4]
DS[DeepSeek]
OL[Ollama]
end
WA & TG & SL & DC & SG & IM --> GW
GW --> Runtime
Runtime --> SK
Runtime --> MEM
Runtime --> PLG
Runtime <--> LLMs
style Channels fill:#FADBD8,stroke:#E74C3C
style GW fill:#F5B7B1,stroke:#E74C3C
style Runtime fill:#FDEDEC,stroke:#E74C3C
style Extensions fill:#FDEBD0,stroke:#E67E22
style LLMs fill:#D5F5E3,stroke:#27AE60
整体架构分层
用一个生活中的比喻来理解 OpenClaw 的架构:把它想象成一个公司的前台接待系统。
- 消息渠道(Channels)就像公司的多个入口——前门、电话、邮件,客户可以从任何入口进来
- Gateway 网关就像前台总机,所有请求都先经过这里统一分配
- Agent Runtime 就像公司里真正干活的员工,接到任务后去思考和执行
- Skills 就像员工手边的工具箱和操作手册
- Memory 就像公司的档案室,记录着之前的沟通历史
Gateway 网关
Gateway 是 OpenClaw 的核心控制平面,它是一个运行在本地 18789 端口的 [[Node.js]] 进程。所有的通信都经过这个单一节点:
- 接收来自各个消息平台的用户输入(飞书的 WebSocket 连接,Telegram Bot API 轮询等)
- 将请求路由到 Agent Runtime 处理
- 管理 WebSocket 连接、HTTP API(兼容 [[OpenAI]] 接口)和浏览器 Web UI
- 协调设备节点(手机、桌面端)的连接
为什么是单进程设计?因为 OpenClaw 的定位是个人或小团队使用,运维简单比水平扩展更重要。一条 npm i -g openclaw 命令就能安装完成。Gateway 通过维护持久连接,确保了消息收发的稳定性和状态一致性。
另外 Gateway 默认只绑定本地 Loopback 地址,确保了不直接向公网暴露端口,减少外部攻击。
Agent Runtime 智能体运行时
Agent Runtime 是 OpenClaw 真正"思考"的地方。它负责:
- 从会话历史和记忆中组装上下文
- 构建发送给大语言模型的 Prompt
- 调用模型获取响应
- 如果模型请求使用工具,就执行相应的操作(运行命令、读写文件、浏览网页等)
- 循环上述过程,直到产生最终回答
一个值得注意的架构决策:OpenClaw 自身并没有从零实现智能体循环,而是基于 [[Pi Framework]] 构建。Pi 是一个轻量级的 TypeScript 智能体框架,专门负责底层的工具调用循环、上下文窗口管理和 LLM API 交互。OpenClaw 在 Pi 之上构建了网关、多渠道编排和集成层,两者的关系类似于 Web 应用与底层 HTTP 框架的关系——Pi 处理"如何与模型对话",OpenClaw 处理"如何与用户和外部世界连接"。
在模型选择上,Agent Runtime 采用了模型无关的设计。它支持几乎所有主流的大语言模型——Anthropic 的 [[Claude]] 系列、OpenAI 的 [[GPT-4]]、Google 的 [[Gemini]]、xAI 的 Grok、[[DeepSeek]] 系列,以及通过 [[Ollama]] 在本地运行的开源模型。你只需要提供对应的 API Key,或者通过 Ollama 在本地运行模型,就可以完全在自己的基础设施上使用,不被任何一家供应商锁定。
消息处理流程
了解了各个组件之后,我们来看一条消息从发出到收到回复的完整旅程:
graph LR
A[用户发送消息] --> B[聊天 App]
B --> C[Gateway 网关]
C --> D[Agent Runtime]
D --> E{需要工具?}
E -->|是| F[执行工具]
F --> D
E -->|否| G[生成回复]
G --> C
C --> B
B --> H[用户收到回复]
这个流程中有一个关键设计:每个会话的消息是串行处理的,不是并行的。Gateway 通过命令队列(Command Queue)来保证同一会话内的工具操作不会冲突,会话历史保持一致。同时,Agent Runtime 与 LLM 之间的交互并非一次性的——如果模型判断需要使用工具,Agent 会执行操作、将结果反馈给模型,然后模型继续推理,这个循环会持续进行直到产生最终回答。正是这套"网关—大脑—技能—记忆"的闭环架构,让 OpenClaw 突破了传统聊天机器人只能对话的限制,成为一个真正能动手干活的智能助理。
核心能力详解
了解了架构之后,我们来看 OpenClaw 究竟能做什么。以下是它最核心的六项能力。
mindmap
root((OpenClaw 核心能力))
跨平台通信
飞书 / Telegram / Slack
统一会话上下文
语音与多媒体
系统与浏览器访问
Shell 命令执行
浏览器自动化
文件系统读写
技能与插件
1800+ 社区技能
按需注入加载
AI 辅助创建技能
四维度插件扩展
记忆系统
跨会话上下文
自动摘要压缩
本地持久化存储
主动提醒
心跳 Heartbeat
Cron 定时任务
Webhook 外部触发
多 Agent 协作
多角色分工
任务分解并行
跨平台通信网关
跨平台通信是 OpenClaw 的基础能力。它打破了 AI 助手的平台壁垒,让你可以在任何习惯的聊天工具中与它交互。
- 广泛的渠道支持:原生支持 [[飞书]]、[[Telegram]]、[[Discord]]、iMessage、[[Slack]] 等十多种主流即时通讯工具
- 统一的会话体验:无论你从哪个 App 发送消息,OpenClaw 都能维持同一个会话上下文,记忆和身份保持一致,确保跨平台交互的连贯性
- 媒体与语音支持:不仅支持文本,还可以接收和发送图片、文档、音频等多种媒体文件。通过集成语音识别(如 [[Whisper]])和语音合成(如 [[ElevenLabs]])技术,你甚至可以直接与它进行语音对话
系统与浏览器访问
OpenClaw 的核心在于行动。它被授予了直接操作所在设备的能力,从而能够完成真正的"工作"。
- Shell 访问:OpenClaw 可以执行任意的 Shell 命令,意味着它可以管理文件、运行脚本、安装软件、控制服务——几乎等同于一个可以通过自然语言指挥的系统管理员。这是其自动化能力的基石,同时也是安全风险的核心来源
- 浏览器控制:通过与 Chrome/Chromium 浏览器的深度集成,OpenClaw 可以像人一样操作浏览器——访问网页、填写表单、点击按钮、抓取信息,甚至处理登录流程。这使得网页自动化任务变得非常简单
- 文件系统读写:OpenClaw 对其工作区拥有完全的读写权限,可以创建、修改、分析本地文件,使其能够处理文档、管理项目、记录笔记
技能与插件系统
Skills 是 OpenClaw 最具特色的扩展机制。每个 Skill 是一个包含 SKILL.md 文件的目录,定义了元数据和工具使用指令。OpenClaw 的技能分为三个层级:内置技能(49 个随软件预装)、官方技能(93 个由官方维护)和社区技能(1715+ 个通过 ClawHub 发布),总计超过 1800 个可用技能,涵盖 Shell 命令执行、文件系统管理、网页自动化、日历管理、邮件处理等场景。
在加载策略上,OpenClaw 采用按需注入而非全量加载——运行时发现所有可用技能,但只将当前对话轮次相关的技能注入到 Prompt 中,避免消耗大量 Token。同时维护技能快照缓存,基于工作区状态的 Hash 来判断是否需要更新。
除了技能,OpenClaw 还通过插件在四个维度进行扩展:Channel 插件增加消息平台支持,Memory 插件替换存储后端,Tool 插件添加自定义能力,Provider 插件接入自定义的 LLM 提供商。插件以 npm 包的形式分发,通过 package.json 中的 openclaw 字段声明。
值得一提的是,OpenClaw 自身就能帮助你创建新技能——只需用自然语言描述想要实现的功能,它就能生成所需的 SKILL.md 和相关脚本。即使不擅长编程的用户,也可以定制属于自己的自动化流程。
记忆系统
OpenClaw 的记忆系统让它能够跨会话保持上下文连贯。配置数据和交互历史都存储在本地。当会话接近上下文窗口的长度限制时,OpenClaw 会触发一个静默的智能体轮次:提醒模型将关键信息写入磁盘进行持久化,然后对会话历史进行摘要压缩,用连贯的摘要替换原始消息。这个机制保证了即使是长时间运行的任务,AI 助手也不会"失忆"。
主动提醒与定时任务
大多数 AI 工具是被动的——你问它才答。OpenClaw 则具备主动行动的能力,能够在你没有发起对话的情况下自动执行预设任务。这种能力通过三种机制实现:
- 心跳机制(Heartbeat):OpenClaw 按预设周期(默认每 30 分钟)自动唤醒,读取工作区中
HEARTBEAT.md文件里的指令并执行。你可以在其中写入"每天早上 8 点总结我的日程和邮件"或"每小时检查一次特定网站的更新"等任务,直接用自然语言描述即可 - Cron 定时任务:对于需要精确控制执行时间的场景,支持用自然语言或 Cron 表达式创建定时任务。例如每个工作日下午 6 点自动提交代码变更,或每周五生成周报草稿
- 外部触发器(Webhooks):通过 [[Webhook]] 接收来自 [[GitHub]]、[[Zapier]]、[[IFTTT]] 等外部应用的事件通知。例如 GitHub 有新的 Pull Request 时自动触发代码审查,或通过 Gmail Pub/Sub 集成实时响应新邮件
这三种机制共同构成了 OpenClaw 的主动行为引擎,你可以根据任务性质选择合适的触发方式,也可以设置规则来控制它什么时候应该主动联系你、什么时候保持安静。
多 Agent 协作
OpenClaw 支持配置多个具有不同角色、技能和权限的 Agent。你可以创建一个专注代码的 Agent、一个负责日程管理的 Agent,让它们各司其职,甚至相互协作将复杂任务分解后并行执行。这种多 Agent 架构让 OpenClaw 从单一助手进化为一个可以分工协作的团队。
总结
回顾整篇文章,OpenClaw 的架构可以概括为三层:Gateway 网关负责连接外部世界,Agent Runtime(基于 [[Pi Framework]])负责思考和决策,Skills、Memory 和 Plugin 构成的扩展层则赋予了它可成长的能力边界。这三层协同工作,让 OpenClaw 从一个被动的聊天机器人变成了一个能够主动行动、跨平台协作、深度操控本地环境的个人 AI 助理。
当然,本文只是对 OpenClaw 工作原理的一个总括性介绍,很多细节还有待进一步展开。比如 Pi Framework 内部的工具调用循环是如何实现的、技能的智能注入机制具体是怎样匹配上下文的、记忆系统的摘要压缩算法选择了什么策略、多 Agent 之间的协作协议是如何设计的——这些话题每一个都值得单独深入探讨。后续的文章中,我们会挑选其中几个方向继续挖掘,把 OpenClaw 的技术细节讲得更透。
相关链接
- OpenClaw 官方文档
- OpenClaw DeepWiki 架构解析
- 从零开始玩转 OpenClaw 中文教程
- OpenClaw Wikipedia
- OpenClaw 架构深度解析 (Substack)

