Hermes Agent 多平台接入:Telegram、Discord、飞书机器人搭建

目录

  1. 不只是命令行
  2. 统一架构:消息网关
  3. Telegram 接入
    1. 第一步:创建 Telegram Bot
    2. 第二步:配置 Hermes Agent
    3. 第三步:获取你的 User ID
    4. 第四步:启动
    5. 保持后台运行
  4. Discord 接入
    1. 第一步:创建 Discord Application
    2. 第二步:邀请 Bot 到服务器
    3. 第三步:配置
    4. 第四步:启动
    5. 频道权限控制
  5. Slack 接入
    1. 创建 Slack App
    2. 配置
    3. 启动
  6. WhatsApp 和 Signal
    1. WhatsApp
    2. Signal
  7. 多平台同时运行
  8. 语音转录
  9. 跨平台对话连续性
  10. 安全提醒
  11. 实际部署建议
  12. 延伸阅读:OpenClaw 社区资源

不只是命令行

Hermes Agent 默认的交互方式是 CLI——在终端里打字聊天。这对开发者来说完全没问题,但很多场景下你不方便打开终端。

比如你在地铁上想让 Agent 查一下服务器状态,或者你想在团队的 Discord 频道里让 Agent 帮忙处理一些自动化任务。

Hermes Agent 支持多个消息平台接入,目前包括:Telegram、Discord、Slack、WhatsApp、Signal。而且所有平台共享同一套记忆和技能系统——你在 Telegram 上积累的经验,在 CLI 里一样能用。

这篇文章讲实际操作:怎么把 Hermes Agent 接到各个平台上。

统一架构:消息网关

在讲具体平台之前,先理解一下架构。

Hermes Agent 的多平台支持不是给每个平台写一套适配代码,而是用了一层消息网关(Message Gateway):

1
2
3
4
5
Telegram ─┐
Discord ─┤
Slack ─┼── 消息网关 ── Hermes Agent 核心
WhatsApp ─┤
Signal ─┘

消息网关负责把不同平台的消息格式统一翻译成 Agent 能理解的标准格式,再把 Agent 的回复翻译回各平台的格式。

这个设计的好处是:核心逻辑只有一套,新增平台只需要写一个网关适配器。而且因为所有平台最终都连到同一个 Agent 实例,记忆和技能自然就是共享的。

Telegram 接入

Telegram 是用得最多的平台,主要是因为它的 Bot API 做得好,而且移动端体验不错。

第一步:创建 Telegram Bot

  1. 在 Telegram 里找到 @BotFather{rel=”nofollow”}
  2. 发送 /newbot
  3. 按提示输入 bot 名称和用户名
  4. 获得一个 bot token,类似 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

保存好这个 token,后面要用。

第二步:配置 Hermes Agent

编辑 ~/.hermes/config.yaml

1
2
3
4
5
6
7
platforms:
telegram:
bot_token: "你的 bot token"
allowed_users:
- 12345678 # 你的 Telegram user ID
parse_mode: "markdown"
voice_transcription: true

几个配置项说明:

  • allowed_users:白名单机制,只有列表里的用户 ID 才能和 bot 交互。这是安全防线,千万别留空——你不想让陌生人操控你的 Agent
  • parse_mode:回复的格式,支持 markdown 和 html
  • voice_transcription:开启后可以给 bot 发语音消息,它会自动转成文字再处理

第三步:获取你的 User ID

不知道自己的 Telegram user ID?给 @userinfobot{rel=”nofollow”} 发条消息就能看到。

第四步:启动

1
hermes serve --platform telegram

启动后,去 Telegram 里给你的 bot 发消息,应该就能收到回复了。

保持后台运行

你不希望关掉终端 bot 就挂了。用 systemd 来管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo tee /etc/systemd/system/hermes-telegram.service << EOF
[Unit]
Description=Hermes Agent Telegram Bot
After=network.target

[Service]
Type=simple
User=你的用户名
ExecStart=/usr/local/bin/hermes serve --platform telegram
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable hermes-telegram
sudo systemctl start hermes-telegram

这样 bot 就会在后台运行,开机自启,崩了自动重启。

Discord 接入

Discord 适合团队使用场景——在项目频道里直接 @bot 让它干活。

第一步:创建 Discord Application

  1. 访问 Discord Developer Portal{rel=”nofollow”}
  2. 点击 New Application,输入名称
  3. 进入 Bot 页面,点击 Reset Token 获取 bot token
  4. 开启以下 Intents:
    • Message Content Intent
    • Server Members Intent(如果需要识别@提及)

第二步:邀请 Bot 到服务器

在 OAuth2 → URL Generator 中:

  • Scopes 选择 bot
  • Bot Permissions 选择:Send Messages、Read Message History、Embed Links
  • 生成邀请链接,用浏览器打开,选择目标服务器

第三步:配置

1
2
3
4
5
6
7
8
9
platforms:
discord:
bot_token: "你的 Discord bot token"
allowed_guilds:
- 987654321 # 服务器 ID
allowed_channels:
- 111222333 # 频道 ID(可选,不设则所有频道可用)
command_prefix: "!"
mention_only: true

mention_only 设为 true 意味着 bot 只响应被 @提及的消息,不会对频道里的每条消息都反应。团队使用强烈建议开启这个。

第四步:启动

1
hermes serve --platform discord

在 Discord 频道里 @你的bot 查看服务器状态 就能触发。

频道权限控制

在团队场景下,你可能想精细控制哪些频道能用 Agent:

1
2
3
4
5
6
7
8
9
platforms:
discord:
channel_permissions:
111222333: # 开发频道
allowed_toolsets: ["core", "dev", "web"]
444555666: # 运维频道
allowed_toolsets: ["core", "system"]
777888999: # 一般频道
allowed_toolsets: ["core"]

这样不同频道的 Agent 有不同的权限级别。开发频道能用开发工具,运维频道能用系统管理工具,一般频道只能做基础操作。关于工具集和权限的更多细节,可以看六大执行后端解析

Slack 接入

企业环境里 Slack 是主流。接入方式和 Discord 类似,但流程稍微复杂一些。

创建 Slack App

  1. 访问 Slack API{rel=”nofollow”} → Create New App
  2. 选择 From Scratch
  3. 配置 Bot Token Scopes:
    • chat:write
    • channels:history
    • channels:read
    • app_mentions:read
  4. Install to Workspace,获取 Bot User OAuth Token

配置

1
2
3
4
5
6
7
platforms:
slack:
bot_token: "xoxb-你的token"
app_token: "xapp-你的token" # Socket Mode 需要
socket_mode: true
allowed_channels:
- "C01234ABCDE"

Slack 推荐用 Socket Mode,不需要公网回调地址,配置更简单。

启动

1
hermes serve --platform slack

在 Slack 频道里 @HermesBot 查看今天的部署日志 即可。

WhatsApp 和 Signal

这两个平台的接入需要借助桥接服务,因为它们没有直接的 Bot API。

WhatsApp

通过 WhatsApp Business API 或开源的 Baileys{rel=”nofollow”} 库桥接:

1
2
3
4
5
6
platforms:
whatsapp:
bridge: "baileys"
phone_number: "+86..."
allowed_contacts:
- "+86..."

配置好后,你的 WhatsApp 号码就变成了 Agent 的入口。私聊发消息就能和 Agent 交互。

Signal

通过 signal-cli{rel=”nofollow”} 桥接:

1
2
3
4
5
6
platforms:
signal:
bridge: "signal-cli"
phone_number: "+86..."
allowed_contacts:
- "+86..."

WhatsApp 和 Signal 的优势是端到端加密,适合对隐私有要求的场景。但功能上不如 Telegram 和 Discord 丰富——比如不支持内联键盘、不支持复杂的消息格式。

多平台同时运行

你可以同时启用多个平台:

1
hermes serve --platform telegram,discord,slack

或者在配置文件中设置自动启动的平台:

1
2
3
4
serve:
auto_platforms:
- telegram
- discord

所有平台连接同一个 Agent 实例,共享记忆和技能。你可以在 Telegram 上让 Agent 开始一个任务,晚上到电脑前在 CLI 里继续。

语音转录

这是一个实用的小功能。开启后,你可以给 Telegram(或其他支持语音的平台)的 bot 发语音消息,Agent 会自动把语音转成文字,然后按文字指令处理。

1
2
3
4
voice:
enabled: true
engine: "whisper" # 支持 whisper 和其他引擎
language: "zh"

语音转录在移动端特别好用——你不需要在手机上打一大段字,直接说就行。

准确率取决于你选择的转录引擎和说话清晰度。中文场景下 Whisper 的表现挺好的。

跨平台对话连续性

前面提到过所有平台共享记忆,这里展开讲一下「连续性」是怎么实现的。

当你在 Telegram 上发了一条消息,Agent 处理完之后,这次对话会被记录到会话存档中(四层记忆体系的第二层)。之后不管你在哪个平台发起新对话,Agent 都能通过检索会话存档找到之前的上下文。

但这里有个细节:同一时间只有一个活跃会话。如果你在 Telegram 上正在和 Agent 进行一个多轮对话,同时在 Discord 上也发了一条消息,Agent 会优先响应 Discord 的新消息——但它也知道 Telegram 上还有一个没结束的对话。

处理方式是:Discord 的消息作为独立任务处理完后,Telegram 那边的对话可以继续。两者不会混淆。

安全提醒

多平台接入意味着攻击面增大了。几个安全要点:

  1. 白名单是底线。每个平台都必须配 allowed_users 或 allowed_channels,绝不能让不明身份的人操控你的 Agent。

  2. bot token 当密码保管。泄露了 bot token 就等于把 Agent 控制权交给别人。不要把 token 提交到 Git 仓库,用环境变量或 secrets 管理。

  3. 最小权限原则。不同平台、不同频道给不同的工具权限。日常聊天频道不需要 shell_exec 权限。

  4. 定期审查。检查 allowed_users 列表是否需要更新(团队人员变动),检查 bot 的操作日志有没有异常。

cocoloop 社区里有人吃过亏——Telegram bot token 被泄露后,有人用他的 Agent 在服务器上挖矿。所以安全这事真的不能大意。更多安全相关的建议,看 Hermes Agent 安全指南

实际部署建议

  1. 先跑 Telegram。它配置最简单,文档最全,出问题最好排查。稳定运行后再加其他平台。

  2. 用 systemd 管理进程。前面给了 Telegram 的 systemd 配置示例,其他平台类似。

  3. 日志很重要。配置日志输出,出问题时候翻日志比猜原因高效得多:

1
2
3
logging:
level: info
file: ~/.hermes/logs/serve.log
  1. 单台机器就够。Hermes Agent 本身很轻量,同时跑 3-4 个平台网关也不过占几十 MB 内存。$5 的 VPS 完全撑得住。

  2. 团队使用建议 Discord/Slack。比 Telegram 的频道管理和权限控制更适合团队场景。

延伸阅读:OpenClaw 社区资源

本文由 CocoLoop 中文社区出品。如果你在研究 AI Agent 与主流模型的工程化落地,姊妹站 OpenClaw 中文社区 也许会有帮助:

参与讨论

对这篇文章有疑问或想法?cocoloop 社区有不少开发者在讨论 Hermes 相关话题,欢迎加入交流。

前往 cocoloop 社区 →