Skip to content

控制 Hermes - 插件版 ​

INFO

小智是一款实时语音交互助手,Hermes 是一个开源的 AI Agent 网关,支持接入多种智能体和工具。通过安装 xiaozhi-pro 插件,你可以用语音指挥小智调度 Hermes 上的智能体,让小智成为你的 AI 助手调度中心。

TIP

无需公网 IP,只需给 Hermes 安装 xiaozhi-pro 插件即可自动连接,消息实时双向推送,体验流畅。

1. 基本原理 ​

小智设备与 Hermes 通过 WebSocket 长连接 通信,由 Hermes 端的插件主动连接到小智Pro服务端:

小智设备 ────> 小智Pro服务端 <──(WebSocket)──> Hermes (xiaozhi-pro 插件主动连入)
                        │                      │
小智设备 <──── 小智Pro服务端 <──(WS 实时推送)────┘

小智服务端和 Hermes 内部之间隔着一层插件,插件做双向翻译:

方向1:小智 → Hermes(用户发消息)

  小智服务端                     Hermes 小智插件                    Hermes 内部
  ┌──────────┐   WS:            ┌──────────────┐                  ┌──────────┐
  │ push_to  │──{"type":        │ WS client    │  handle_         │          │
  │ hermes   │─ "message",      │ 收到         │──inbound() 派发  │─ agent   │
  │          │  "text":"你好"}  │              │  MessageEvent    │  处理    │
  └──────────┘                  └──────────────┘                  └──────────┘

方向2:Hermes → 小智(agent 回复)

  Hermes 内部                    Hermes 小智插件                    小智服务端
  ┌──────────┐                  ┌──────────────┐   WS:            ┌──────────┐
  │ agent    │──→ send()       │ WS client    │──{"type":       │ _message_│
  │ 回复     │                  │ .send_json() │─ "response",...}│ loop 收到│
  └──────────┘                  └──────────────┘                  └──────────┘

1.1 连接建立 ​

  1. 用户在小智Pro平台获取 API 密钥
  2. 在 Hermes 上配置 xiaozhi-pro 插件,填入 API 密钥
  3. 重启 Hermes 网关,插件自动通过 WebSocket 连接到小智Pro服务端
  4. 插件发送 auth 消息完成认证,认证成功后进入双向通信

1.2 消息投递策略 ​

插件发来的 response 消息有两种来源,通过 device_id 是否存在区分投递策略:

来源触发场景device_id投递策略
回复(reply)用户发消息 → agent 回复✅ 有值精确投递到该设备
主动推送(push)cron 定时任务、agent 主动发起❌ 为空广播该用户所有设备

1.3 关键设计 ​

特性说明
实时通信WebSocket 全双工长连接,消息即时推送,无轮询延迟
无需公网Hermes 主动连接服务端,无需暴露端口
心跳保活30 秒心跳检测,60 秒无响应自动断开
自动重连插件内置指数退避重连(3s → 6s → 12s → ... → 60s 上限)
消息去重适配器侧 dedup 保证幂等,重复推送自动跳过
精确投递支持指定设备投递或广播所有设备
自动踢旧同一账号新连接自动踢掉旧连接

2. 操作指南 ​

太长不看版

让 Hermes 自己搞定插件安装和配置,把下面这段文字发给它:


请帮我安装并配置小智Pro Hermes插件,参考这个 GitHub 仓库的 README 操作:https://github.com/hougeai/xiaozhi-pro-hermes-plugin


2.1 获取 API 密钥 ​

  1. 前往 小智Pro 控制台
  2. 进入 API 密钥 页面
  3. 点击 创建密钥,复制生成的密钥

WARNING

API 密钥是插件连接小智Pro的唯一凭证,请勿泄露给他人。

2.2 安装插件 ​

将插件下载到 Hermes 的平台插件目录(目录名必须为 xiaozhi_pro,下划线,不能用连字符):

方式 A:git clone

bash
git clone https://github.com/HougeAI/xiaozhi-pro-hermes-plugin.git ~/.hermes/hermes-agent/plugins/platforms/xiaozhi_pro

方式 B:下载压缩包

  1. 从 GitHub Releases 下载最新版压缩包
  2. 解压到 ~/.hermes/hermes-agent/plugins/platforms/xiaozhi_pro/
bash
mkdir -p ~/.hermes/hermes-agent/plugins/platforms/xiaozhi_pro
unzip xiaozhi-pro-hermes-plugin-*.zip -d ~/.hermes/hermes-agent/plugins/platforms/xiaozhi_pro

WARNING

目录名必须是 xiaozhi_pro(Python 模块要求),否则 Hermes 无法加载插件。

2.3 配置连接 ​

在 ~/.hermes/config.yaml 中添加:

yaml
platforms:
  xiaozhi_pro:
    extra:
      token: '你的API密钥'
  • 本插件属于 bundled platform 插件,Hermes 会自动加载,无需在 plugins.enabled 中声明
  • 只要配置了 token,网关启动时就会自动连接
  • 也可以通过环境变量 XIAOZHI_PRO_TOKEN 设置 Token
  • 要禁用连接,注释掉或删除 token 即可(同时确保 XIAOZHI_PRO_TOKEN 环境变量未设置)

2.4 重启 Hermes 网关 ​

bash
hermes gateway restart

插件会自动连接小智Pro 服务端,发送 {"type":"auth","token":"..."} 完成认证后进入双向通信。

查看 Hermes 日志确认连接状态:

bash
tail -f ~/.hermes/logs/gateway.log

日志中应出现 [XiaoZhiPro] Connecting to ... 和 [XiaoZhiPro] Auth OK。

2.5 验证连接 ​

  1. 进入小智Pro控制台,点击左侧菜单 设备端MCP → Hermes插件版
  2. 点击 检查连接 按钮
  3. 如果显示绿色"已连接"标签,说明插件已成功连接

2.6 测试发送消息 ​

在 Hermes 插件版页面底部:

  1. 选择目标设备:从下拉框选择要接收回复的小智设备(留空则广播到所有设备)
  2. 输入消息内容:输入要发送给 Hermes 的消息
  3. 点击 发送 或按 Enter 键

发送成功后,稍等片刻点击 刷新 按钮查看 Hermes 的回复记录。

2.7 通过设备语音操控 ​

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

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

Hermes 回复后,服务端会自动推送到设备,设备随即播报回复内容。

2.8 首次连接配对 ​

服务端首次通过 xiaozhi_pro 通道连接 Hermes 会生成一个配对码,需在终端执行配对命令。配对成功后适配器即可接收来自已配对设备的消息。例如:

bash
Hi~ I don't recognize you yet!
Here's your pairing code: B8XWG5HE
Ask the bot owner to run: hermes pairing approve xiaozhi_pro B8XWG5HE

3. 常见问题 ​

连接状态显示"未连接"? ​

  • 确认插件已启用:hermes plugins list 查看 platforms/xiaozhi_pro 是否为 enabled
  • 检查 ~/.hermes/config.yaml 中 platforms.xiaozhi_pro.extra.token 是否配置了有效的 API 密钥
  • 检查 Hermes 服务是否正常运行
  • 检查网络是否正常
  • 查看 Hermes 日志排查连接错误:tail -f ~/.hermes/logs/gateway.log

插件连接后频繁断开? ​

  • 检查网络稳定性
  • 确认 Hermes 服务器时间同步(NTP)
  • 插件内置自动重连机制(指数退避),短暂断开后会自动恢复
  • 服务端 30 秒心跳检测,60 秒无 pong 响应会断开,插件会自动重连

设备端没有收到 Hermes 的回复? ​

  • 确认设备已绑定到小智Pro账号
  • 确认控制台显示"已连接"状态
  • 如果设备正在说话,服务端会自动等待,最多等待 120 秒,消息最多缓存 1 天

启动时报 "No adapter available for xiaozhi_pro"? ​

  • 确认插件目录名是 xiaozhi_pro(下划线,不是连字符)
  • 确认 config.yaml 中 platforms.xiaozhi_pro.extra.token 已配置,或环境变量 XIAOZHI_PRO_TOKEN 已设置
  • 确认已安装 aiohttp 依赖:pip install aiohttp