小智 AI × OpenClaw 蛋黄包 — MCP 桥接技术实现全解
(2026.03.23 部署验证通过)
一、方案概述
通过 MCP 协议 实现小智语音助手与本地 OpenClaw AI 智能体(蛋黄包)的指令直连:小智云端下发指令 → 本地桥接进程转发 → OpenClaw Gateway 注入 → 蛋黄包执行 → 飞书自动回复用户。核心是单向实时推送,不依赖轮询,零延迟且不浪费 Token。
二、整体架构
1. 小智语音助手(云端):通过 WSS 连接本地桥接,使用 MCP 协议下发指令。
2. mcp_pipe.js(本地桥接):将 WSS 数据桥接到 MCP Server 的标准输入输出,支持自动重连。
3. openclaw_bridge.js(本地 MCP Server):作为 MCP 服务端,管理与 OpenClaw Gateway 的 WebSocket 连接,负责指令注入。
4. OpenClaw Gateway(本地 ws://127.0.0.1:18789):接收指令并激活蛋黄包智能体。
5. 蛋黄包 AI 智能体:执行任务后通过飞书回复用户。
三、方案优势
对比传统“写文件+轮询扫描”方案,本方案:
- 实时性强:指令直达 Gateway,无需等待扫描周期。
- 资源高效:无轮询对话,避免 Token 浪费。
- 架构简洁:单向通知,无需等待执行结果回传小智。
- 复用性高:完全依托 OpenClaw 原有 Gateway 基础设施,无需额外改造。
四、核心技术实现
1. OpenClaw Gateway 认证协议
Gateway 为纯 WebSocket 服务,连接需完成 Ed25519 签名认证:
1. 客户端连接后,Gateway 下发随机 nonce 挑战。
2. 客户端按 v2|{deviceId}|{clientId}|{clientMode}|{role}|{scopes}|{signedAtMs}|{token}|{nonce} 格式生成 pipe 分隔字符串。
3. 用 Ed25519 私钥签名后,附带 gateway token 发送 connect 请求。
4. Gateway 验证通过后建立连接。
关键逆向发现:签名 payload 为纯文本而非 JSON,设备身份文件位于 AppData/Roaming/autoclaw/identity/device.json 。
2. 指令注入协议
连接建立后,通过 chat.send 方法注入指令:
json
{
"type": "req",
"id": "bridge-chat-1710000000000",
"method": "chat.send",
"params": {
"sessionKey": "feishu:default:user:{open_id}",
"message": " [来自小智的指令] {内容}",
"idempotencyKey": "bridge-chat-1710000000000",
"timeoutMs": 120000,
"deliver": true
}
}
deliver: true 确保消息持久化到会话历史。
3. MCP 协议集成
- 小智通过 WSS 按需连接本地 mcp_pipe.js,完成初始化、工具列表获取后调用工具。
- 暴露唯一工具 notify_danhuangbao :接收 instruction 参数,注入指令后立即返回“指令已送达”,不等待执行结果。
- mcp_pipe.js 需持久运行,支持小智断开后自动重连,保证 MCP Server 子进程不退出。
五、部署与踩坑
1. 部署步骤
1. 安装并启动 OpenClaw(AutoClaw)桌面端,验证 Gateway 运行状态。
2. 在小智后台获取 MCP WSS 端点(含 JWT token)。
3. 部署核心文件(openclaw_bridge.js、mcp_pipe.js、config.json、start.bat),修改配置中的路径与端点。
4. 双击 start.bat 启动桥接服务,与小智对话触发指令执行。
2. 关键踩坑
- 签名格式错误:最初误以为是 JSON payload,实际为 pipe 分隔纯文本,通过逆向前端 JS 源码解决。
- Gateway Token 遗漏:.gateway-token 文件存在时自动启用 token 认证,未提供会导致认证失败。