把 Hermes Agent 接入聊天平台与语音工作流:从 CLI 到 Telegram、Discord 与 Discord VC

1 次阅读

把 Hermes Agent 接入聊天平台与语音工作流:从 CLI 到 Telegram、Discord 与 Discord VC

如果你已经把 Hermes Agent 跑在本地 CLI 里,下一步通常不是“再多看几页配置文档”,而是把它真正放进你会天天打开的沟通入口里。Hermes 这套设计其实很适合往外延伸: 一边是 Messaging Gateway,负责把 Telegram、Discord、Slack 等平台统一接进来;另一边是 Voice Mode,负责把输入方式从键盘扩展到语音。两边一合,Agent 的使用场景就一下子活了起来。

这篇文章不走“功能清单背诵”路线,我们直接按一条更顺手的路径来聊: 先把消息入口搭好,再把 CLI 语音跑顺,接着把语音能力带到 Telegram 和 Discord,最后再决定要不要升级到 Discord Voice Channel 这种更完整的实时对话形态。

先把入口搭起来:Messaging Gateway 为什么是多端工作流的起点

Hermes 的 Messaging Gateway 不是简单的消息转发器。官方文档把它定义成一个统一的后台进程,它会连接你配置好的平台、管理每个聊天会话、运行 cron 作业,还负责把语音消息送回去。这一点很关键,因为它决定了 Hermes 在多端场景下不是“每个平台各玩各的”,而是靠一个中心入口把长期对话和自动化任务串起来。

从支持范围看,Hermes 的入口相当多,页面上列出了 Telegram、Discord、Slack、WhatsApp、Signal、SMS、Email、Home Assistant、Mattermost、Matrix、DingTalk、Feishu/Lark、WeCom、Weixin、BlueBubbles、QQ 以及浏览器等方式。你未必要一次全接,但这个列表至少说明一件事: Hermes 的多端能力不是实验性质,而是明确围绕“同一个 Agent,多个触达入口”来设计的。

如果你准备正式开始,最省事的入口是:

bash
hermes gateway setup

这个交互式向导会带你配置消息平台,并在完成后提示是否启动或重启 gateway。对于第一次接触多端接入的人来说,这比手动翻配置文件轻松很多。

不过,平台虽然都能接,能力并不是整齐划一的。官方比较表里,Telegram、Discord 和 Slack 都支持语音、图片、文件、线程、流式更新;Discord 和 Slack 还支持 reactions。WhatsApp、Email 这些入口则有明显边界,比如 Email 只有图片、文件和线程能力,WhatsApp 没有语音这一项。也就是说,如果你想把 Hermes 用成“一个会说话、会持续回话、还能在线程里接着聊”的助手,Telegram 和 Discord 会是更自然的起点。

先从 CLI 语音起步,调试面最小也最省心

Hermes 官方给的建议很务实: 先确认普通文本聊天可用,再去碰语音。这个顺序看起来朴素,实际上能少踩很多坑。因为一旦文本、provider、模型、工具链本身都没问题,语音阶段的排查范围就只剩录音、转写、播报这几件事,不会把问题全搅在一起。

语音功能也不是一上来就得进 Discord 频道。官方把语音体验拆成三种:

模式 适合场景 平台
Interactive microphone loop 你想在本机免手打交流 CLI
Voice replies in chat 你想在聊天里收到语音回复 Telegram、Discord
Live voice channel bot 你想进行实时语音对话 Discord Voice Channels

这也是为什么官方 first-week setup 明确建议,先安装:

bash
pip install "hermes-agent[voice]"

然后优先从 CLI 语音配合本地 STT 和 Edge TTS 开始。这个组合的好处很直接: 本地 STT 可以不依赖额外 key,Edge TTS 也是免 key 的;如果你的目标是先把体验跑通,而不是一开始就追求最豪华的音色,这条路最稳。

顺手补一句系统依赖。指南里给了 macOS 的示例:

bash
brew install portaudio ffmpeg opus
brew install espeak-ng

这里的 portaudioffmpegopus 都不是“锦上添花”。文档里的故障排查就直接提到,如果 CLI 侧提示没有音频设备,要先检查 portaudio;而语音转换路径里也会用到 ffmpeg 和 Opus。

把语音能力延伸到 Telegram 和 Discord

CLI 语音跑顺之后,再把能力带到消息平台,感觉会非常自然。因为 Hermes 在 Telegram 和 Discord 的文本聊天里并不会突然变成另一套产品,它只是从“能聊”升级成“能听能说”。

这一步先把 messaging 依赖装上:

bash
pip install "hermes-agent[messaging]"

然后启动 gateway:

bash
hermes gateway

接下来就在 Telegram 或 Discord 里切换语音模式。这里有个很容易写反、也很容易用反的地方,最好一开始就记清楚:

text
/voice on
/voice tts
/voice off
/voice status

它们的含义分别是:

  • /voice on:只有当你发送的是语音消息时,Hermes 才会用语音回复。
  • /voice tts:不管你发的是文字还是语音,Hermes 都会用语音回复。
  • /voice off:回到纯文本。
  • /voice status:查看当前设置。

这个区分挺重要。/voice on 更像“按需开口”,适合你平时还是打字为主,只在发语音消息时希望 Hermes 跟着说话;/voice tts 则更像“常驻语音人格”,适合你想把它直接当 spoken assistant 用。

消息平台里的语音投递方式也有差别。Telegram 使用 voice bubble(Opus/OGG),Discord 文本聊天里则会优先走 native voice bubble(也是 Opus/OGG),如果 voice bubble API 失败,才回退成普通文件附件。这个设计很实用,因为它决定了你在聊天界面里收到的不是一坨“下载音频文件”,而是更接近日常语音消息的交互形式。

什么时候该上 Discord Voice Channel

如果说 Telegram 和 Discord 的 /voice on 是“聊天里会说话”,那 Discord Voice Channel 就是“真的坐进语音房间里了”。官方把它描述成最沉浸的语音模式: Bot 会加入语音频道、监听用户讲话、转写语音、走完整的 agent pipeline,再把回复说回频道里。

这套体验很强,但前提也确实更多。至少要先确认下面这些条件:

  • Bot 具备 ConnectSpeak 权限,官方还建议加上 Use Voice Activity
  • Developer Portal 里要启用 Presence IntentServer Members IntentMessage Content Intent
  • 机器侧要有 Opus 编解码库。
  • DISCORD_ALLOWED_USERS 等允许用户配置要收紧,不要放太宽。

文档还特别强调了一点: Server Members Intent 不只是“建议打开”,而是对完整语音频道功能非常关键,因为没有它,bot 无法识别到底是谁在说话。这个细节很值得记住,它比“能不能进房间”更接近“能不能正常工作”。

命令本身倒不复杂:

text
/voice join
/voice leave
/voice status

只要你人已经在语音频道里,再执行 /voice join,Hermes 就会加入你当前所在的 VC。加入之后,官方说明的行为链路是这样的:用户开口,Hermes 检测语音边界,转写内容会发到关联的文本频道里,然后它再以文字和语音两种形式作答。这里“关联文本频道”指的就是你发出 /voice join 命令的那个频道。

如果你想先求稳,不想一上来就把整套 VC 配置折腾满,官方建议也很明确:

  • 先把普通文本聊天中的语音回复验证好。
  • 先用专门的测试频道,不要直接上正式服务器的公共频道。
  • DISCORD_ALLOWED_USERS 控制得尽量小。

让多端体验更稳定的几条工作流习惯

多端接入真正拉开差距的地方,往往不是“能不能连上”,而是“你愿不愿意一直用下去”。Hermes 在这块已经给了不少顺手工具。

第一类是会话管理。Gateway 文档明确写了,session 会跨消息持续存在,直到触发 reset。重置策略可以按天、按空闲时间,或者两者组合来做,而且还支持在 ~/.hermes/gateway.json 里做平台级覆盖。这个设定很适合多端场景: 比如 Telegram 想保留更长上下文,Discord 想更快重置,就可以分开配。

第二类是“把常用入口固定下来”。/sethome 可以把当前聊天设成 home channel,/resume 可以恢复之前命名的 session。对那种“一会儿在手机上讲一句,一会儿回到桌面继续聊”的用法,这两个命令会比你想象中更有存在感。

第三类是后台工作。/background 会在独立后台 session 里跑一个 prompt,主聊天不会被堵住,任务完成后结果会自动回到你发起命令的同一个聊天里。对聊天平台上的 Hermes 来说,这个能力很像给 Agent 补上了“异步办事”这一块,尤其适合监控、研究、批处理这类不需要你盯着等待的任务。

最后还有一个安全习惯不能省。Messaging Gateway 默认会拒绝不在 allowlist 中、也没有完成 DM pairing 的用户,这其实是很合理的默认值。毕竟这是一个带终端能力的 bot,不该用“谁都能碰一下”来换方便。尤其当你把 Hermes 接进 Discord 或 Telegram 之后,先收紧允许用户范围,再逐步放开,会比事后补洞轻松得多。

一个靠谱的升级顺序

如果你希望整个接入过程尽量顺、尽量少返工,官方给出的 first-week setup 基本可以直接照着走:

  1. 先确认文本版 Hermes 正常可用。
  2. 安装 hermes-agent[voice]
  3. 先在 CLI 里用本地 STT + Edge TTS 跑通语音体验。
  4. 再去 Telegram 或 Discord 里开启 /voice on
  5. 最后再尝试 Discord Voice Channel。

这条路线的好处不是“最炫”,而是调试面一直比较小。哪一层出问题,就只排哪一层。等你把这几步走顺以后,Hermes Agent 就不再只是你本地终端里的一个聪明工具,而是一个可以在手机、聊天平台和语音频道里随时接住任务的多端助手。

感谢阅读,如果觉得有用欢迎分享
返回 AI工具配置