最近在研究 OpenClaw。刚开始看,它很容易被误解成“一个可以接入 WhatsApp、Telegram、Slack、Discord、飞书、iMessage 的聊天机器人”。
但如果只把它理解成 Bot,其实会漏掉它最有价值的地方。
OpenClaw 更准确的定位是:一个本地优先、多渠道接入、可扩展工具调用、支持会话隔离和自动化任务的 Agent Gateway。
换句话说,它不是“用户发一句,模型回一句”的普通聊天机器人,而是一个可以长期运行在你自己机器上的 AI 操作入口。
普通 Bot 解决的是“怎么回复消息”;OpenClaw 解决的是“怎么让 AI 安全、持续、可控地接入真实世界”。
系列阅读顺序
这篇是 OpenClaw 系列的第一篇,重点放在整体架构和心智模型。后面两篇会继续拆:
一、普通 Bot 的典型结构
传统 Bot 的结构通常比较简单:
用户消息
↓
平台 Webhook
↓
Bot 服务
↓
调用模型或业务接口
↓
返回消息
比如你写一个企业微信 Bot、Telegram Bot、飞书 Bot,大部分时候是在做三件事:
- 接收平台消息;
- 根据消息内容调用模型或接口;
- 把结果发回去。
这种模式适合简单问答、通知提醒、菜单交互、固定流程自动化。
但它有几个明显限制:
- 每个平台都要单独接入;
- 会话上下文容易混乱;
- 工具权限和执行边界不清晰;
- 并发消息容易互相干扰;
- 很难把“聊天入口”扩展成“真实操作入口”;
- 很多 Bot 没有长期记忆、任务队列、沙箱、安全策略这些基础设施。
所以普通 Bot 更像一个“消息响应器”。
它可以接话,但不一定能稳定做事。
二、OpenClaw 的核心不是 Bot,而是 Gateway
OpenClaw 官方文档里对 Gateway 的定位很清楚:Gateway 是 OpenClaw 的 WebSocket server,负责 channels、nodes、sessions、hooks 等能力。也就是说,它不是某一个聊天平台的适配器,而是整个系统的控制平面。(GitHub)
这就是 OpenClaw 和普通 Bot 的第一个根本区别。
普通 Bot 通常是:
一个平台 = 一个 Bot 服务
OpenClaw 更像是:
多个平台
↓
统一 Gateway
↓
统一 Agent Runtime
↓
统一工具、会话、安全、插件、自动化能力
可以把它理解成一个“AI 助手的中控台”。
Telegram、WhatsApp、Slack、Discord、iMessage、飞书这些只是入口。真正的核心在 Gateway 后面:Agent 如何运行、上下文如何组装、工具如何调用、消息如何排队、session 如何隔离、权限如何控制。
这套设计的重点不是“支持多少聊天软件”,而是把不同入口统一到同一套 Agent 执行体系里。
三、一条消息在 OpenClaw 里不是简单问答
普通 Bot 收到消息后,可能直接调用一次 LLM,然后返回结果。
OpenClaw 的 Agent Loop 要复杂得多。
官方文档把 Agent Loop 定义为一次完整的 agentic run:intake、context assembly、model inference、tool execution、streaming replies、persistence。也就是从接收输入、组装上下文、模型推理、执行工具、流式回复,到最终持久化,形成一条完整链路。(OpenClaw)
可以简化成这样:
用户消息
↓
Channel 接收
↓
Gateway 路由
↓
解析 session
↓
加载上下文、skills、配置
↓
调用模型
↓
模型决定是否调用工具
↓
执行工具
↓
流式返回
↓
写入会话记录
这里有一个关键点:模型不是简单生成一段文本,而是在一个可控循环里推理、调用工具、接收结果、继续推理。
这也是 Agent 和普通 Chatbot 的区别。
普通 Chatbot 的目标是“回答”;Agent 的目标是“完成任务”。
四、OpenClaw 把多渠道消息统一成 Agent 输入
OpenClaw 的核心概念里,包含 Gateway、Agents、Sessions、Memory、Channels。文档中的简化流程是:User Message → Channel → Gateway → Agent → Model → Response。(openclaw.cc)
这个流程表面看和 Bot 类似,但重点在于抽象层级不一样。
普通 Bot 经常把“渠道逻辑”和“业务逻辑”混在一起:
Telegram 消息怎么解析
Slack 消息怎么解析
飞书消息怎么解析
每个平台各写一套
OpenClaw 更倾向于把渠道变成适配层:
Telegram / WhatsApp / Slack / Discord / Feishu / iMessage
↓
统一消息协议
↓
Gateway
↓
Agent
这带来的好处是:
- 同一个 Agent 可以服务多个入口;
- 同一套工具能力可以被多个渠道复用;
- 同一套 session / memory / queue 机制可以统一管理;
- 后续新增渠道时,不需要重写 Agent 主逻辑。
这就是平台型设计和脚本型 Bot 的区别。
脚本型 Bot 是“一个场景写一段逻辑”。
平台型 Agent Gateway 是“先把入口、执行、上下文、工具、安全都抽象出来,再让不同场景复用”。
五、Session 是 OpenClaw 的关键设计
很多人做 Bot 时,会低估 session 的复杂度。
简单问答时,session 似乎只是聊天记录。但一旦 Agent 能调用工具、读文件、发消息、执行命令,session 就不只是上下文了,它还关系到:
- 当前是谁在说话;
- 这个消息来自哪个渠道;
- 是私聊还是群聊;
- 是否绑定到某个 workspace;
- 是否允许访问某些工具;
- 之前执行过什么任务;
- 当前有没有正在运行的任务。
OpenClaw 的 Agent Loop 文档强调,loop 是每个 session 内独立且序列化的 run,用来保持 session state 一致。(OpenClaw)
这点非常重要。
如果同一个会话里同时跑多个 Agent 任务,可能出现这些问题:
用户:帮我总结这个文件
用户:顺便把结果发给张三
如果两条消息并发处理,第二条可能在第一条总结完成前就开始执行,Agent 不知道“结果”指的是什么。
所以 Agent 系统不能简单地“来了消息就并发跑”。
它需要 session 级别的串行控制。
这也是 OpenClaw 比普通 Bot 更工程化的地方。
六、Command Queue 解决连续消息和并发问题
OpenClaw Agent Loop 的说明里提到,runEmbeddedPiAgent 会通过 per-session 和 global queues 对 run 进行序列化。(OpenClaw)
这说明 OpenClaw 没有把并发问题留给模型自己解决,而是在工程层面做了队列控制。
可以理解为两层队列:
Session Queue:保证同一个会话内任务有序
Global Queue:控制整个 Gateway 的任务并发
为什么这很重要?
因为真实聊天环境里,用户不会像 API 调用那样严格等待。用户可能连续发三句话:
帮我查一下今天销售额
按品牌拆一下
再发到群里
这三句话对用户来说是一个连续意图,但对系统来说是三条独立消息。
普通 Bot 很可能三条消息分别触发三次模型调用,结果上下文错乱。
Agent Gateway 必须识别:哪些消息要合并,哪些消息要排队,哪些消息要打断,哪些消息要作为 follow-up。
所以 Command Queue 不是锦上添花,而是 Agent 系统走向真实使用场景的基础设施。
七、Tools 让 OpenClaw 不只是“会说话”
如果一个系统只能调用 LLM,那它最多是一个聊天助手。
OpenClaw 真正变成 Agent 的关键,是工具系统。
工具让模型可以做事,比如:
- 浏览网页;
- 读取文件;
- 发送消息;
- 调用外部接口;
- 操作浏览器;
- 执行命令;
- 创建定时任务;
- 查询历史会话;
- 调用 MCP 服务。
这类能力一旦接入,系统的性质就变了。
它不再是:
输入文本 → 输出文本
而是:
输入任务 → 推理计划 → 调用工具 → 观察结果 → 继续执行 → 返回结果
这也是为什么 OpenClaw 不能只按 Bot 来理解。
Bot 的主要能力是“回复”。
Agent 的主要能力是“行动”。
八、Skills 负责教 Agent 怎么用能力
OpenClaw 还有一个值得单独研究的点:Skills。
工具本身只描述“能做什么”,但并不一定告诉模型“什么时候该用、怎么用、有哪些约束”。
Skills 更像是给 Agent 的操作手册。
比如同样有一个浏览器工具,模型需要知道:
- 什么场景应该搜索;
- 搜索后如何筛选信息;
- 什么时候需要引用来源;
- 页面打不开时如何降级;
- 不应该访问哪些敏感内容。
这类内容不适合全部写死在核心系统 prompt 里,也不适合散落在业务代码中。
所以 Skills 的价值在于:把某类能力的使用方法模块化、可维护化。
对我们做企业内部 AI 能力平台也很有参考价值。
在企业场景里,一个“查询销售数据”的工具只是函数;但“如何判断销售异常”“如何解释 GMV 波动”“如何按运营口径输出结论”,这些更像 Skill。
九、Plugins 让 OpenClaw 可以持续扩展
从仓库结构看,OpenClaw 有大量 extension,包括模型提供商、渠道、浏览器、记忆、语音、媒体、诊断等不同能力模块。GitHub 仓库的 extensions/ 目录承载了这些插件式能力。(GitHub)
这说明 OpenClaw 不是把所有能力硬编码在核心里,而是采用插件化扩展。
插件化的好处是:
- 核心系统保持稳定;
- 新渠道可以独立扩展;
- 新模型可以独立接入;
- 工具能力可以按需安装;
- 第三方生态有扩展空间;
- 不同部署可以按需裁剪能力。
这对 AI Agent 系统非常关键。
因为 Agent 的能力边界变化太快了。今天接 OpenAI,明天接 Claude,后天接 Qwen、DeepSeek、本地模型;今天接 Telegram,明天接飞书、Slack、企业微信;今天需要浏览器,明天需要数据库、BI、CRM、ERP。
如果没有插件化,核心代码会很快变成一团乱麻。
十、安全边界是 OpenClaw 的硬问题
OpenClaw 不是普通 Bot 的另一个原因,是它涉及真实操作权限。
普通 Bot 即使出错,可能只是回复错一句话。
但 Agent 如果有工具权限,出错的后果可能是:
- 读错文件;
- 发错消息;
- 执行危险命令;
- 泄露敏感信息;
- 被陌生人通过私聊诱导执行操作。
OpenClaw README 明确提醒:真实消息入口要视为不可信输入;默认情况下,Telegram、WhatsApp、Signal、iMessage、Microsoft Teams、Discord、Google Chat、Slack 等入口的未知私聊发送者会进入 pairing 流程,bot 不会直接处理其消息。(GitHub)
这说明 OpenClaw 把“谁可以跟 Agent 说话”当成系统安全的一部分。
这点非常重要。
很多人做 AI Bot 时,只关注模型效果,但真正上线后,第一优先级应该是:
谁能触发 Agent?
Agent 能做什么?
哪些工具需要审批?
哪些消息必须拒绝?
出了问题如何追踪?
Agent 越强,安全边界越重要。
十一、OpenClaw 的本地优先不是口号
OpenClaw 的一个核心原则是 local-first。文档里也提到,它强调本地运行、隐私优先、可扩展、多平台。(openclaw.cc)
这和很多 SaaS Bot 平台不一样。
SaaS Bot 的典型逻辑是:
你的消息
↓
平台服务器
↓
第三方 Bot 服务
↓
模型 API
↓
返回结果
OpenClaw 的思路更像:
你的消息入口
↓
你自己的 Gateway
↓
你自己配置的模型和工具
↓
你自己控制的数据和执行环境
这带来的价值是:
- 数据更可控;
- 工具权限更可控;
- 部署方式更灵活;
- 可以接入本地文件、本地应用、本地浏览器;
- 更适合个人长期助手或企业内部私有助手。
当然,这也意味着它的部署、配置、安全要求更高。
所以 OpenClaw 不是一个“开箱即用的玩具 Bot”,而是一个偏工程化的 Agent 基础设施。
十二、用一张图理解 OpenClaw
可以把 OpenClaw 简化成五层:
第一层:入口层
WhatsApp / Telegram / Slack / Discord / Feishu / iMessage / CLI / Webhook / Cron
第二层:Gateway 层
统一接入、认证、路由、事件、节点连接、Hook
第三层:Agent Runtime 层
Agent Loop、模型调用、上下文组装、流式输出、任务状态
第四层:能力层
Tools、Skills、Plugins、MCP、Browser、Files、Memory、Canvas
第五层:安全与状态层
Session、Queue、Sandbox、Allowlist、Pairing、Persistence、Workspace
如果是普通 Bot,通常只有:
入口层
业务逻辑
模型调用
回复
而 OpenClaw 多出来的,正是 Agent 系统真正需要的工程层:
- Gateway;
- Session;
- Queue;
- Tools;
- Skills;
- Plugins;
- Security;
- Memory;
- Workspace;
- Automation。
这些东西看起来不如模型本身“炫”,但决定了一个 Agent 能不能长期稳定使用。
十三、对后端研发的启发
从后端工程角度看,OpenClaw 最值得学习的不是某个具体功能,而是它的抽象方式。
1. 把入口和执行解耦
不要让 Telegram、飞书、Slack 这些渠道直接决定业务逻辑。
更合理的方式是:
渠道只负责接入
Gateway 负责统一路由
Agent Runtime 负责执行
Tools 负责具体能力
这个思路适合所有企业 AI 平台。
2. 把工具和使用说明分开
工具是函数,Skill 是说明书。
比如:
query_sales_report 是工具
“什么时候查销售额、怎么解释波动、怎么输出运营结论”是 Skill
这比把所有逻辑塞进一个大 prompt 里更可维护。
3. 把会话隔离当成基础设施
多用户、多渠道、多任务环境里,session 不能随便拼。
必须明确:
- session key 怎么生成;
- 私聊和群聊怎么区分;
- 定时任务和人工对话是否共用上下文;
- 不同 agent 是否共享 workspace;
- 历史消息如何持久化。
这些问题不解决,Agent 越强,系统越容易乱。
4. 把队列作为 Agent 系统的默认设计
传统接口服务追求并发吞吐。
Agent 系统不能简单照搬这个思路。
因为同一个 session 下,很多消息存在上下文依赖。该串行的必须串行,该合并的要合并,该打断的要打断。
这就是 Command Queue 的价值。
5. 把安全放在架构层,而不是功能层
Agent 能调用工具后,安全就不是“后面再加”的功能。
它必须进入架构设计:
入口鉴权
发送者 allowlist
工具权限
沙箱执行
敏感操作审批
日志追踪
错误隔离
否则 Agent 的能力越强,风险越大。
十四、总结
OpenClaw 表面上像一个聊天机器人,但它的底层目标明显不是“做一个更会聊天的 Bot”。
它真正想做的是:
把多个聊天入口、多个模型、多个工具、多个 Agent、多个自动化触发器,
统一接入一个本地优先的 Gateway,
再通过会话、队列、插件、技能、安全策略,
让 AI 可以持续、可控地执行真实任务。
所以,OpenClaw 值得研究的地方不只是“它支持哪些平台”,而是它背后的架构判断:
- 为什么需要 Gateway;
- 为什么 Agent Loop 要序列化;
- 为什么 session 要隔离;
- 为什么工具要插件化;
- 为什么 Skills 和 Tools 要分层;
- 为什么安全策略必须默认开启;
- 为什么本地优先适合个人 Agent 和企业内部 Agent。
如果说普通 Bot 是一个“消息自动回复器”,那么 OpenClaw 更像是一个“AI 任务执行操作系统”的雏形。
这也是它最值得学习的地方。
评论 / 0
共 0 条你可能是第一个留下评论的人