openclaw的技术原理
OpenClaw:把所有聊天渠道变成一个本地 AI 助手的“中央枢纽”
简单来说,OpenClaw 是一个本地自运行的个人 AI 助手,它像一个“聊天枢纽”一样连接 WhatsApp、Telegram、Slack、Discord、iMessage 等所有你常用的消息应用,把它们统一到一个本地控制平面里。用户只需在设备上装一次 OpenClaw,就可以用一个 AI 来处理所有消息,无需每条渠道都单独配置。
1. 核心概念(三点)
| 组件 | 作用 | 原理解释 |
|---|---|---|
| Gateway(网关) | 本地守护进程(daemon),listen 127.0.0.1:18789,接收来自各个消息渠道的连接,也向外提供 CLI、Web 界面、macOS 应用的入口 |
它就像一个“总线”,负责把消息从各个渠道搬运到 AI 代理,再把 AI 的回应送回去 |
| Agent(代理) | 运行在本地的 AI 逻辑,通过 WebSocket 与 Gateway 通信,执行“思考”、调用“工具” | 代理相当于“大脑”,根据消息内容决定如何回答、使用哪些工具(比如打开浏览器、生成图像) |
| Channels / Nodes / Tools | 渠道(WhatsApp/Telegram/Slack 等)负责“输入输出”,Nodes(iOS/Android)提供本地设备能力,Tools(浏览器、Canvas、位置、通知等)是代理可以调用的“工具” | 整个系统通过“工具”与“渠道”的组合,实现“发送消息→接收消息→执行操作”的完整循环 |
2. 一句话技术原理
任意消息 → Gateway 接收 → Agent 分析 → 调用 Tools 处理 → Gateway 发送回对应的渠道
- 消息从你的 WhatsApp/Telgram 发出,被 Gateway 接收。
- Gateway 把消息交给代理(AI)处理。
- 代理可以叫“浏览器”去搜索、“Canvas”去画图、“位置”去获取信息,然后生成回复。
- Gateway 把回复发回原来的聊天窗口。
-
3. 最小化示例(本地全栈)
-
# 1. 安装(Node ≥ 22) npm i -g openclaw@latest # 或 pnpm add -g openclaw@latest # 2. 运行 onboarding 向导(一次配置) openclaw onboard --install-daemon # 3. 启动 Gateway(核心服务) openclaw gateway --port 18789 --verbose # 4. 发一条消息给 AI(CLI 也是 Gateway 的入口) openclaw message send --to +1234567890 --message "今天的天气怎么样?" # 5. 让 AI 做事(比如打开浏览器搜百度) openclaw agent --message "打开百度搜索北京天气" --thinking high说明:你可以在
~/.openclaw/openclaw.json里配置默认模型、安全策略、通道允许列表等,Gateway 会自动管理权限。 -
4. 极简架构示意图(文本版) 复制 +-----------------+ +-----------------+ +-----------------+ | WhatsApp / | | Gateway daemon | | WhatsApp / | | Telegram / | <--> | (WebSocket) | <--> | Telegram / | | Slack / Discord | | (控制平面) | | Slack / Discord | +--------+--------+ +--------+--------+ +--------+--------+ | | | v v v +-----+----+ +----+------+ +-----+----+ | Agent | (Pi, RPC) | | Tools | | Channels | | | | | Browser | ... | (消息入口) | +----+-----+ +----+-------+ +-----+----+ ^ ^ | | | v +------------------------+-------------------------------+ | +--------+--------+ | macOS app | (Voice Wake / Canvas) | iOS / Android nodes| +------------------+ - Gateway 永久运行在本地(或你自己的 Linux 服务器),它把所有渠道变成统一的“AI 入口”。
- Agent 在同一个机器上运行,和 Gateway 通过 WebSocket 快速通讯。
- Tools 是代理可以调用的功能(浏览器、Canvas、位置、通知等)。
- Nodes 是移动设备(iOS/Android),当 Agent 需要本地操作(如拍照、读取位置)时,Gateway 会把请求转发给对应的节点。
安全原则
- 默认 DM 限制:陌生人的私信不会被处理,必须先“配对”(pair)确认。
- 沙箱模式:可以在
agents.defaults.sandbox.mode中配置,让公共聊天的代理在 Docker 容器里运行,避免权限滥用。 - Token 明细:每个消息都带有成本、token 消耗,防止滥用。
为什么“简单”?
- 一个服务控制所有:不用为每个渠道单独安装、配置 Token。
- 本地-first:代理运行在自己的机器上,隐私有保障,响应快。
- 工具链可插拔:任何新工具(比如新地图插件)只要遵循相同协议,就能无缝接入。
一句话总结:OpenClaw 就是把你常用的聊天工具“包装”成一个本地 AI 代理的“总控台”,所有消息流经一个中心枢纽(Gateway),由 AI 代理处理并回传,实现一次部署、多渠道智能沟通。
下面直接用一个最简单的场景,来说明 OpenClaw 的技术原理。
1. 一句话解释 OpenClaw
OpenClaw 的本质是:
在你自己的电脑/服务器上,跑一个“网关(Gateway)”服务,把所有聊天软件(微信同类:WhatsApp、Telegram、Slack、Discord、iMessage 等)都接到这个网关上,然后由本地的 AI 助手(Agent)统一处理消息,再通过原来的聊天软件回复给你。
换成生活比喻:
OpenClaw = 一个只有你自己用的“总机 + 专属秘书”系统。
- 所有来电(各个聊天渠道的消息)先打到总机(Gateway)
- 总机把电话转给你的秘书(AI Agent)
- 秘书想完答案后,再请总机把回复转回原来的来电人(对应的聊天应用)
2. 最简单的例子:从 Telegram 到 AI 再返回
假设你只用一个渠道:Telegram。我们不管安装细节,只看“消息怎么走”的原理。
步骤 1:你在 Telegram 给机器人发一句话
你在 Telegram 里对你的机器人说:
“帮我列一个今天的待办清单”
这条消息先到 Telegram 服务器,然后根据配置,被 OpenClaw 的 Telegram 渠道适配器 接收。
步骤 2:渠道适配器把消息交给 Gateway
- OpenClaw 提供了一个“Telegram 渠道模块”,会长时间保持和 Telegram 的连接。
- 一旦检测到“有人给这个机器人发私信/群聊 @ 机器人”,就把这条消息通过本地网络发给 Gateway。
可以理解为:
Telegram 适配器 = 翻译兼信使
- 它把 Telegram 的消息格式,翻译成一种 Gateway 能理解的统一消息格式,再送过去。
步骤 3:Gateway 决定交给哪个 Agent 处理
Gateway 是整个系统的“控制平面”,它要做几件事:
- 判断这条消息来自哪个渠道(Telegram),哪个用户(你),哪个会话(这个聊天窗口)。
- 查它的配置:
- 这个会话应该对应哪个 Agent(比如「默认个人助手」)。
- 这个 Agent 用什么模型(比如某个 GPT/Claude 模型)。
- 对这个会话的安全策略是什么(需不需要沙箱、有没有权限用浏览器等)。
- 把这条消息打包成一个“请求”,通过 RPC/WebSocket 的方式发给 Pi Agent 运行时(也就是 Agent 所在的进程)。
你可以把 Gateway 想成一个“路由中心”:
- 路由规则:谁发来的、从哪个渠道来的、发到哪个 Agent。
- OpenClaw 支持多 Agent、多工作区、多通道路由,这就是“multi-agent routing”的含义。
步骤 4:Agent(AI)思考并调用工具
Agent 收到消息后,会干几件事:
- 把上下文(之前和你的对话)和当前这句话一起,喂给大语言模型(你配置的模型)。
- 大模型会根据提示词和上下文,决定:
- 直接用自然语言回答,还是
- 先调用某些工具(Tools)再回答,比如:
- 浏览器工具:打开浏览器帮你查资料
- Canvas:在可视化画布上画东西
- Nodes:调用手机拍照、获取定位、发通知等
- 比如你说的是「列一个今天待办清单」,模型可能不需要调用浏览器,只需要直接生成一个 Todo 列表,作为“回复内容”。
在这个过程中,Agent 和 Gateway 保持双向通信:
- Agent 把“中间状态”“工具调用”“最终答案”不断发回 Gateway;
- Gateway 再决定要不要把这些中间信息显示给你,或者只发最终结果。
步骤 5:Gateway 把 Agent 的回答通过 Telegram 发回去
当 Agent 生成了最终回答,比如:
- 查看今天日程
- 处理工作邮件
- 锻炼 30 分钟
- 晚上复盘一天
它会把这段文字传给 Gateway。
Gateway 再调用前面的 Telegram 渠道适配器:
- 把这段文字转换成 Telegram 消息格式
- 通过 Telegram 的 API 或机器人 SDK,把这条消息发回到原来的对话窗口
你在 Telegram 里看到的体验就是:
发一句话 → 过一会儿机器人就回你一段内容
但实际上,这背后走的是:
Telegram → 渠道适配器 → Gateway(路由 + 策略) → Agent(AI + Tools)
→ Gateway → 渠道适配器 → Telegram
3. 再简单一点的“文字架构图”
只看一个渠道(比如 Telegram)和一个 Agent 的最小闭环:
你在 Telegram 发消息
│
▼
Telegram 渠道适配器
│ (转成统一格式)
▼
Gateway
(决定给哪个 Agent,用什么配置/权限)
│
▼
Agent
(用大模型 + 工具生成答案)
│
▼
Gateway
(把答案交回对应的渠道)
│
▼
Telegram 渠道适配器
│
▼
你在 Telegram 收到 AI 的回复
技术原理关键点:
- Gateway 是中心:所有渠道、工具、App、移动节点,统统通过 Gateway 的 WebSocket/HTTP 控制面来连接。
- 消息统一格式:不管来源是 Telegram、Slack 还是 WhatsApp,到 Gateway 之后都被抽象成统一的“消息结构”,这样 Agent 不需要关心底层是哪个聊天应用。
- 多 Agent 路由:Gateway 可以把不同渠道、不同群、不同用户,路由到不同的 Agent(不同模型、不同人格、不同工具权限)。
- 工具调用受控:工具(浏览器、Canvas、Nodes、系统命令等)都是通过 Gateway 的统一协议调用,有权限和安全控制(如沙箱、allowlist/denylist)。
- 本地优先:默认所有东西跑在你自己的机器上(或你自己的服务器),模型请求、工具调用都从这里发出,你可以加 Docker 沙箱等进一步隔离不可信会话。
4. CLI 版“最小可运行例子”的原理视角
再用 README 里的命令,站在“原理”的视角看一次消息流:
# 启动 Gateway(控制平面)
openclaw gateway --port 18789 --verbose
# 用 CLI 模拟一条消息
openclaw agent --message "帮我写一个今天的学习计划" --thinking high
这里其实等价于:
openclaw agent ...这条命令本身就是一个“客户端”,通过 WebSocket 连接到本地的 Gateway。- 它把
"帮我写一个今天的学习计划"作为一条消息发给 Gateway。 - Gateway 把这条消息交给默认 Agent(就像前面例子的 Telegram 那样,只不过这里“渠道”不是 Telegram,而是 CLI)。
- Agent 生成回答,再通过 Gateway 返回给 CLI。
- CLI 把这段回答打印在你的终端上。
从技术角度看:
- Telegram / WhatsApp / CLI / WebChat / macOS app / iOS / Android,本质上都是“不同形态的客户端”,只要能连上 Gateway 的 WebSocket,就能统一走同一套 Agent + Tools 流程。
5. 用一句最直白的话再总结
OpenClaw = 一个本地跑的“AI 总控网关”,把所有聊天应用(以及你的电脑、手机能力)都接进来,统一交给一个或多个 AI Agent 处理,然后再通过原渠道把结果发回去。
你可以只记住这个最简单的例子:
“我在 Telegram 发一句话 → 网关转给 AI 想 → AI 想好后再让网关帮我回 Telegram。”
整个 OpenClaw 的技术原理就是围绕这个路由 + 代理 + 工具调用闭环扩展出来的。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)