前文,分享了 openclaw 免费部署教程:

永久免费 OpenClaw 部署和实战,7x24在线,手把手教程

上面带大家跑通了接入飞书的流程。

不管是飞书,还是QQ、微信等IM工具,最常用的交互方式是文字。

语音,才是最天然的聊天交互。

如何把小智语音对话机器人openclaw 打通?

其基本流程是:

进一步,小智的能力就不再局限于接入的MCP工具,而是 openclaw 背后的海量Skills

今日分享,聊聊:小智Pro的具体做法👇:

  • 平台侧:建立和openclaw的通信
  • 用户侧:接入自己的openclaw,并通过设备端MCP指挥openclaw

1. 建立和openclaw的通信

1.1 通信协议

要实现和 openclaw 通信,传输层本质上是 WebSocket

飞书、微信都是一种终端。

如何进行区分不同终端和不同会话?

答:client.idsession_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 响应解析

响应结果中,重点关注agentchat事件,从日志中查看几个关键节点的数据结构:

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

有任何问题,欢迎进群交流。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐