小智Pro:让小智控制 OpenClaw,一个MCP连接海量Skills
本文分享了`小智Pro:让小智控制 OpenClaw`的实现方案。- 平台侧:建立和`openclaw`的通信- 用户侧:接入自己的`openclaw`,并通过设备端MCP指挥`openclaw`
前文,分享了 openclaw 免费部署教程:
永久免费 OpenClaw 部署和实战,7x24在线,手把手教程
上面带大家跑通了接入飞书的流程。
不管是飞书,还是QQ、微信等IM工具,最常用的交互方式是文字。
语音,才是最天然的聊天交互。
如何把小智语音对话机器人和 openclaw 打通?
其基本流程是:

进一步,小智的能力就不再局限于接入的MCP工具,而是 openclaw 背后的海量Skills。
今日分享,聊聊:小智Pro的具体做法👇:
- 平台侧:建立和
openclaw的通信 - 用户侧:接入自己的
openclaw,并通过设备端MCP指挥openclaw


1. 建立和openclaw的通信
1.1 通信协议
要实现和 openclaw 通信,传输层本质上是 WebSocket。
飞书、微信都是一种终端。
如何进行区分不同终端和不同会话?
答:client.id 和 session_key

因此,多个 client,可以共用一个 session 的记忆和对话历史:

我们可以在openclaw控制台,选择查看指定session的对话:

1.2 核心接口
基于openclaw的通信协议,关键请求方法整理如下:

我们把所有方法通过 self.request 接口封装,底层协议采用 WebSocket 传输,示例代码如下:
async def chat_send(self, message: str) -> Any:
"""发送聊天消息到指定session"""
return await self.request('chat.send', {
'sessionKey': self.session_key,
'message': message,
'idempotencyKey': f'{int(time.time() * 1000)}-{hash(message)}',
})
async def get_history(self, limit: int = 50) -> Any:
"""获取聊天历史"""
return await self.request('chat.history', {
'sessionKey': self.session_key,
'limit': limit
})
async def list_sessions(self) -> Any:
"""列出所有session"""
return await self.request('sessions.list')
async def list_agents(self) -> Any:
"""列出agents"""
return await self.request('agents.list')
async def get_config(self) -> Any:
"""获取配置"""
return await self.request('config.get')
1.3 响应解析
响应结果中,重点关注agent和chat事件,从日志中查看几个关键节点的数据结构:
2026-02-15 17:38:44 - openclaw - INFO - 尝试连接: ws://14.xx.xx.82:18789
2026-02-15 17:38:44 - openclaw - INFO - WS已连接,等待 challenge...
2026-02-15 17:38:44 - openclaw - INFO - 收到 challenge: {'type': 'event', 'event': 'connect.challenge', 'payload': {'nonce': 'ae76555e-1d6e-4dc1-acea-294e67e0dcce', 'ts': 1771148324902}}
2026-02-15 17:38:44 - openclaw - INFO - ✅ 连接成功!
2026-02-15 17:38:44 - openclaw - INFO - 🚀 消息已发送,runId: 1771148324960--1126353816726381137,等待 AI 回复...
2026-02-15 17:38:45 - openclaw - INFO - 🤖 Agent事件: runId=1771148324960--1126353816726381137, stream=lifecycle, data={'phase': 'start', 'startedAt': 1771148325217}
2026-02-15 17:38:50 - openclaw - INFO - 🤖 Agent事件: runId=1771148324960--1126353816726381137, stream=assistant, data={'text': '收到', 'delta': '收到'}
2026-02-15 17:38:50 - openclaw - INFO - 💬 Chat事件: runId=1771148324960--1126353816726381137, state=delta, message={'role': 'assistant', 'content': [{'type': 'text', 'text': '收到'}], 'timestamp': 1771148330101}
2026-02-15 17:38:50 - openclaw - INFO - 🤖 Agent事件: runId=1771148324960--1126353816726381137, stream=assistant, data={'text': '收到,我去', 'delta': ',我去'}
2026-02-15 17:38:50 - openclaw - INFO - 💬 Chat事件: runId=1771148324960--1126353816726381137, state=delta, message={'role': 'assistant', 'content': [{'type': 'text', 'text': '收到,我去检查下人设文件'}], 'timestamp': 1771148330294}
2026-02-15 17:38:50 - openclaw - INFO - 🤖 Agent事件: runId=1771148324960--1126353816726381137, stream=assistant, data={'text': '收到,我去检查下人设文件。', 'delta': '。'}
2026-02-15 17:39:11 - openclaw - INFO - 🤖 Agent事件: runId=1771148324960--1126353816726381137, stream=lifecycle, data={'phase': 'end', 'endedAt': 1771148351507}
2026-02-15 17:39:11 - openclaw - INFO - 💬 Chat事件: runId=1771148324960--1126353816726381137, state=final, message={'role': 'assistant', 'content': [{'type': 'text', 'text': '你说得对,我漏了。SOUL.md 里写得清清楚楚:\n\n> 收到任何消息或者任务,先立即回复我\'收到\',然后再去具体执行\n\n以后我会先回"收到",再干活。记住了。'}], 'timestamp': 1771148351507}
1.4 架构设计
基于以上分析,小智Pro 采用双 WebSocket 桥接架构:
- 后端服务作为中间代理(Proxy)
- 一端连接 前端客户端/Esp32设备端
- 一端连接用户的
OpenClaw Gateway

前端连接成功后,可以尝试给openclaw发一条消息:

2. 设备端 MCP 调用
以上,小智Pro 已打通和openclaw的通信。
设备端如何调用呢?
本质上还是通过MCP,再看文章开头的流程图:

因此,我们只需在设备端新增一个 Tool:self.openclaw.send。
但是,小智的语音识别很难精准命中openclaw,所以最好给openclaw一个中文名字:

欧克劳,就他了。
测试发送成功,并收到了 openclaw 的回应:

3. 用户接入openclaw流程
3.1 修改人设设定
因为 openclaw 接入的是推理模型,thinking阶段耗时较长。
为了减少等待时长,需要修改下openclaw的人设:

3.2 前端建立连接
首先,在 openclaw 控制台获取你公网可访问的 Gateway URL 和用于鉴权的 Token。

然后,前往小智Pro控制台,填入对应字段:

注:session_key 需遵循以下命名规范:
agent:<agent_id>:<label>
如果不需要区分会话,可用 openclaw 控制台的 Default Session Key。
连接成功后,可在小智Pro控制台进行对话和查看历史对话记录:

人设修改后,在前端看下延时:



简单指令,基本秒回~
再让小智给 openclaw 发送一个任务指令:


回到 openclaw 控制台验收下:

成功搞定!
写在最后
本文分享了小智Pro:让小智接管 OpenClaw的实现方案。
如果对你有帮助,不妨点赞收藏备用。
欢迎体验 小智Pro 更多功能,请戳👇:
https://mkwyqeoebedx.sealosbja.site
注:接管 OpenClaw能力需设备端固件v2.2.2.2版支持。
目前已全面适配小智官方仓库收录的开发板型号,下载地址:
https://github.com/hougeai/xiaozhiPro/releases

有任何问题,欢迎进群交流。
更多推荐


所有评论(0)