logo
3
4
WeChat Login
refactor: 支持 WebSocket 长连接模式

🍊 小爱音箱连接 OpenClaw (橘子)

📋 功能说明

通过小爱音箱语音控制 OpenClaw(橘子),实现语音交互。

🎯 使用方式

触发词

"让橘子" + 你的问题

示例:

用户:让橘子,今天天气怎么样? 小爱:正在连接橘子哦... 小爱:今天天气晴朗,气温 25 度,适合外出哦~

⚙️ 配置

环境变量

micnb.yml 中添加:

# OpenClaw 配置 OPENCLAW_GATEWAY_URL: "ws://localhost:18789" # 默认值 OPENCLAW_SESSION_KEY: "agent:cloud:main" # 默认值

自定义配置

如果需要修改默认值,可以设置环境变量:

export OPENCLAW_GATEWAY_URL="ws://your-openclaw-url:18789" export OPENCLAW_SESSION_KEY="agent:cloud:main"

🔧 技术实现

核心模块

  • openclawConnector.js - OpenClaw WebSocket 长连接管理器
    • OpenClawConnection 类 - 长连接管理
      • 自动建立连接
      • 自动重连
      • 消息队列
      • 连接状态管理
    • getOpenClawConnection() - 获取连接实例(单例模式)
    • sendToOpenClaw() - 发送消息并等待回复
    • closeOpenClawConnection() - 关闭连接

连接管理

启动时自动连接:

// app.js const connection = getOpenClawConnection(gatewayUrl, sessionKey); await connection.connect(); console.log('✅ OpenClaw 长连接已建立');

消息发送:

// config.js const response = await sendToOpenClaw( this.openclaw.gatewayUrl, userQuestion, this.openclaw.sessionKey );

关闭时清理:

// app.js process.on('SIGTERM', () => { connection.close(); process.exit(0); });

📝 工作流程

启动时建立长连接

MiGPT 启动 ↓ 创建 OpenClawConnection 实例 ↓ WebSocket 连接到 OpenClaw Gateway ↓ ✅ 长连接建立成功

消息发送(复用连接)

小爱音箱 (语音) ↓ 语音转文字 MiGPT (识别"让橘子") ↓ 复用已有连接 OpenClaw Gateway (ws://localhost:18789) ↓ AI 处理 OpenClaw Agent (agent:cloud:main) ↓ 返回结果 MiGPT (播放) ↓ TTS 小爱音箱 (语音输出)

自动重连

连接断开 ↓ 检测连接状态 ↓ 自动重连 (最多 5 次) ↓ 等待 3 秒 * 尝试次数 ↓ 重新建立连接

📊 长连接优势

  1. 性能提升 - 不需要每次都建立连接,减少延迟
  2. 资源节省 - 避免频繁创建/销毁连接
  3. 稳定性 - 自动重连机制保证连接可靠性
  4. 消息队列 - 支持并发消息,按顺序处理

📝 日志说明

  • 🍊 正在初始化 OpenClaw 连接 - 启动时开始连接
  • ✅ OpenClaw 长连接已建立 - 连接成功
  • 🔌 正在连接 OpenClaw - 正在建立连接
  • ✅ OpenClaw WebSocket 已连接 - WebSocket 连接成功
  • ✅ 橘子回复 - 收到 OpenClaw 回复
  • ❎ 橘子连接失败 - 连接失败
  • 🔒 OpenClaw WebSocket 已关闭 - 连接关闭
  • 🔄 正在重连 OpenClaw - 自动重连中

⚠️ 注意事项

  1. WebSocket 连接 - 需要 OpenClaw 公网可访问
  2. 超时时间 - 默认 30 秒,可根据需要调整
  3. 错误处理 - 连接失败会提示"抱歉,橘子暂时无法连接,请稍后再试哦"
  4. 打断小爱 - 会自动打断小爱原有回复
  5. 自动重连 - 最多重试 5 次,每次间隔 3 秒 * 尝试次数

🚀 优化方向

  1. 流式播放 - 边接收边 TTS,减少等待
  2. 多轮对话 - 保存对话历史
  3. 自定义角色 - 为橘子设置专属人设
  4. 日志记录 - 记录所有对话
  5. 连接监控 - 心跳检测,主动发现连接问题

📚 相关文件

  • /root/files/miclaw/cnb/openclawConnector.js - WebSocket 长连接管理器
  • /root/files/miclaw/cnb/config.js - 配置文件
  • /root/files/miclaw/cnb/app.js - 启动脚本
  • /root/files/miclaw/cnb/package.json - 依赖配置

创建:2026-03-12 作者:🍊 橘子 更新:2026-03-12 16:20 - 支持长连接模式