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

OpenClaw 是异步处理:收到消息 → 网关处理 → 一段时间后返回回复。

这种模式天然适合文字聊天(如 IM),但不适合语音对话的实时交互需求。

小智采用实时语音通信协议,要求低延迟、即时响应。

直接对接 OpenClaw 的异步接口会导致:

  • 用户说话后长时间无反馈,体验割裂
  • 语音打断、上下文同步困难

因此,需设计中间层,来管理 OpenClaw 的异步任务。

前文分享过一种实现思路:

小智Pro:让小智控制 OpenClaw,一个MCP连接海量Skills,24H在线打工人它来了

但这种设计,要维护两个 WebSocket 连接:

  • 前端 ↔ 后端,用于接收前端指令、推送 OpenClaw 的流式响应。
  • 后端 ↔ OpenClaw Gateway,用于和 OpenClaw 服务保持长连接,收发消息。

假设有 N 个活跃用户,就得 2N 条 WebSocket 连接,资源占用高。

怎么搞?

今日分享,聊聊:小智控制OpenClaw的全新升级版👇:

  • 平台侧:和OpenClaw的异步通信的基本原理
  • 用户侧:接入并管理OpenClaw的操作指南

1. 基本原理

小智设备与 OpenClaw 通信,采用 异步消息转发 模式,整体流程如下:

小智设备 ──(MCP)──> 小智Pro服务端 ──(HTTP)──> OpenClaw Gateway
                                                      │
小智设备 <──(推送)── 小智Pro服务端 <──(Redis 缓存)──────┘

1.1 消息发送

  1. 用户对小智说出指令(如"让欧克劳帮我发一条飞书消息")
  2. 设备端通过 self.openclaw.send 将消息发送到小智Pro服务端
  3. 服务端收到后立即返回确认,将实际请求放入后台任务异步执行
  4. 后台任务调用 OpenClaw Gateway 的 API,等待回复

1.2 回复投递

OpenClaw 返回结果后,服务端会:

  1. 缓存回复:将回复内容存入 Redis,多条回复自动拼接,5分钟自动过期
  2. 感知设备状态:查询设备当前对话状态
    • 设备在听(listening):发送指令通知设备取消息
    • 设备空闲(idle):先唤醒设备,再通知取消息
    • 设备在说(speaking):自动等待,等待结束后再通知取消息
  3. 设备取消息:设备收到通知后,主动调用 retrieve 接口获取缓存的回复
  4. 取完即删:回复被读取后立即从 Redis 删除,确保消息不重复消费

1.3 关键设计

特性 说明
异步响应 发送消息后立即返回,不阻塞设备对话
消息防丢 多条回复追加拼接,不会互相覆盖
可靠投递 根据设备状态智能选择推送时机
原子操作 读取回复使用原子操作,避免重复消费

2. 操作指南

2.0 OpenClaw 配置示例

确保 OpenClaw Gateway 监听在公网可访问的地址和端口,并配置了 Token 认证。

找到 OpenClaw 的配置文件:~/.openclaw/openclaw.json

重点关注以下三个配置项:

"gateway": {
    "http": {
      "endpoints": {
        "chatCompletions": { "enabled": true }
      }
    },
    "tools": {
      "allow": ["sessions_send"]
    },
    "mode": "local",
    "auth": {
      "mode": "token",
      "token": "xxx"
    },
    "port": 18789,
    "bind": "loopback",    
  },
  "session": {
    "dmScope": "per-channel-peer",
  },
  "tools": {
    "profile": "full",
    "exec": {
      "security": "full",
      "ask": "off"
    },
    "sessions": {
      "visibility": "all"
    }
  }

具体说明:

  • gateway.http 配置:允许 API 调用
  • gateway.tools.allow:允许 sessions_send 工具,以便小智Pro服务端通过该工具将消息发送到指定会话
  • tools.profile = “full” — 所有工具都允许
  • sessions.visibility = “all” — 支持跨会话查看

2.1 小智Pro控制台配置 OpenClaw

前往小智Pro控制台:https://mkwyqeoebedx.sealosbja.site

左侧菜单 设备端MCP → OpenClaw,首次使用需配置连接:

  1. 点击 连接 OpenClaw 按钮
  2. 弹出的对话框中填写:
  • Gateway URL:OpenClaw Gateway 的地址,如 http://your-ip:18789
  • Token:OpenClaw 的认证 Token
  • Agent:默认对话的智能体名称,如 main,连接成功后支持切换智能体
  1. 点击 保存,系统会自动检测连接状态

配置完成后,页面顶部会显示:

  • 连接状态标签(绿色=正常)
  • Gateway URL
  • Token(脱敏显示)

你也可以随时点击 检查连接 按钮重新检测,或点击删除按钮清除配置。

2.2 配置Tab - 切换和小智对话的智能体

配置Tab,展示小智和OpenClaw的专属会话:

  • 智能体:和小智对话的智能体,支持切换
  • SessionKey:固定为 openai-user:xiaozhi-pro:{用户ID},即小智设备对话时使用的会话
  • 聊天区域:支持输入消息与 OpenClaw 对话
  • 刷新按钮:拉取最近20条对话记录

注:这里记录小智设备和OpenClaw的专属会话,你可以在前端查看 / 测试对话内容,和OpenClaw控制台对话记录同步。

2.3 聊天Tab - 浏览其他会话

切换到 聊天Tab,可以浏览 OpenClaw 的所有会话:

  1. 选择智能体:刷新智能体列表,从下拉框中选择一个 Agent
  2. 选择会话:选定智能体后,刷新会话列表并选择一个会话
  3. 会话详情:选中会话后,右侧显示该会话的渠道、模型、Token用量、状态等信息
  4. 历史记录:选择会话后自动加载最近20条消息
  5. 发送消息:在选中会话的输入框中输入消息并发送,和OpenClaw控制台对话记录同步。

2.4 通过设备语音操控

注:设备固件版本需为 v2.2.5.1 以上:https://github.com/hougeai/xiaozhiPro/releases

配置好 OpenClaw 连接后,你可以直接对小智说:

- '问问欧克劳现在都有哪些定时任务'
- '让欧克劳给我的飞书发一条消息'
- '让欧克劳立刻完成今天的AI资讯整理任务'

成功调用后,屏幕或日志中会看到 self.openclaw.send 工具调用,欧克劳回复后,服务端会自动推送到设备,设备随即播报回复内容。

3. 常见问题

连接状态显示异常?

  • 检查 Gateway URL 是否正确,确保格式为 http://ip:porthttps://domain.com
  • 确认 OpenClaw Gateway 服务正常运行
  • 确认 Token 有效

设备端没有收到欧克劳的回复?

  • 确认设备已绑定到小智Pro账号
  • 确认设备固件版本为 v2.2.5.1 以上
  • 回复会在5分钟后自动过期,如果设备长时间未取消息则无法获取
  • 如果设备正在说话,服务端会自动等待(最多25秒),等待结束后再推送

发送消息后没有反应?

  • OpenClaw 的回复是异步处理的,消息发送后需要等待 Gateway 响应
  • 如果 Gateway 响应较慢,请耐心等待或检查 OpenClaw 服务状态

发送消息提示异常?

  • 参考 2.0 节的配置示例,确保 OpenClaw 的配置项正确设置,特别是工具权限和认证方式

4. 效果展示

比如,让修一下定时任务失败的问题:

回到 Openclaw 控制台,看小智Openclaw的对话记录:

比如,让打开浏览器查查今日热搜:

写在最后

本文分享了小智Pro:让小智控制 OpenClaw的全新升级方案。

如果对你有帮助,不妨点赞收藏备用。

欢迎体验 小智Pro 更多功能,请戳👇:

https://mkwyqeoebedx.sealosbja.site

注:控制 OpenClaw能力需设备端固件v2.2.5.1版。

固件已全面适配小智官方仓库收录的开发板型号,下载地址:

https://github.com/hougeai/xiaozhiPro/releases

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

Logo

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

更多推荐