Hermes Agent 的 Gateway(消息网关)支持 22 个消息平台同时接入,一个后台进程管所有平台。你不需要为 Telegram 写一个 Bot、再为 Discord 写一个、再为微信写一个——Hermes 把这三件事变成了一组 .env 配置。
本文从零开始,手把手完成 Telegram + Discord + 微信三平台接入,然后展开跨平台上下文共享机制、品牌分区频道设计和竞品对比。如果你还没安装 Hermes,建议先读 Hermes Agent 完全指南。
22 个平台能力一览

先看全局。Hermes Gateway v0.16.0(截至 2026 年 6 月的最新版本)支持的完整平台矩阵:
| 平台 | 语音 | 图片 | 文件 | 线程 | 表情 | 流式更新 | 成熟度 |
|---|---|---|---|---|---|---|---|
| Telegram | ✅ | ✅ | ✅ | ✅ | — | ✅ | 稳定 |
| Discord | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 稳定 |
| Slack | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 稳定 |
| — | ✅ | ✅ | — | — | ✅ | 稳定 | |
| Signal | — | ✅ | ✅ | — | — | ✅ | 稳定 |
| 微信(Weixin) | ✅ | ✅ | ✅ | — | — | ✅ | 稳定 |
| 企业微信(WeCom) | ✅ | ✅ | ✅ | — | — | — | 稳定 |
| 飞书(Feishu/Lark) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 稳定 |
| 钉钉(DingTalk) | — | ✅ | ✅ | — | ✅ | ✅ | 稳定 |
| ✅ | ✅ | ✅ | — | — | — | 稳定 | |
| Google Chat | — | ✅ | ✅ | ✅ | — | — | 稳定 |
| Microsoft Teams | — | ✅ | — | ✅ | — | — | 稳定 |
| Matrix | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 稳定 |
| Mattermost | ✅ | ✅ | ✅ | ✅ | — | ✅ | 稳定 |
| LINE | — | ✅ | ✅ | — | — | — | 稳定 |
| — | ✅ | ✅ | ✅ | — | — | 稳定 | |
| SMS | — | — | — | — | — | — | 基础 |
| BlueBubbles(iMessage) | — | ✅ | ✅ | — | ✅ | — | 实验性 |
| 腾讯元宝(Yuanbao) | ✅ | ✅ | ✅ | — | — | ✅ | 实验性 |
| Home Assistant | — | — | — | — | — | — | 实验性 |
| ntfy | — | — | — | — | — | — | 通知 |
| WeCom Callback | — | — | — | — | — | — | 基础 |
💡 通俗讲:表里的"语音"是指 TTS(文本转语音)音频回复和语音消息转录;"流式更新"是通过消息编辑实现的渐进式内容更新——你能看到 AI 一边思考一边往消息里追加文字。所有平台都支持完整的工具调用(Tool Use),工具能力不因平台而削减。
几个值得注意的细节:
- 国内平台覆盖全面:微信、企业微信、飞书、钉钉、QQ 五大国内主流平台全部原生支持,不需要第三方桥接。这在国际开源项目中极为少见。
- 飞书是能力最完整的平台之一:语音、图片、文件、线程、表情、流式更新全部支持,和 Discord 处于同一能力等级。如果你的团队用飞书办公,Hermes 的飞书适配器开箱即用。
- SMS 和 ntfy 是极简通道:SMS 通过 Twilio 实现,只能收发纯文本;ntfy 是单向推送通知,不能对话。它们的定位是"最后手段"——当所有 IM 都用不了时,至少还能收到通知。
- 实验性平台慎用于生产:BlueBubbles(iMessage 桥接)和 Home Assistant 标记为实验性,意味着 API 可能变动、稳定性未经大规模验证。
社区非官方文档记录已超过 25 个适配器,新增了 SimpleX Chat、IRC 等小众协议。Rust 重写版(hermes-agent-rs)也已实现 17 个平台适配器,单二进制文件部署,适合资源受限的 VPS 环境。上表以官方 Python 版主仓库为准。
架构速览:一个进程怎么管 22 个平台

理解架构有助于后面排障。Hermes Gateway 是一个单一长驻进程(Single Long-running Process),启动后同时维持与所有已配置平台的持久连接:
┌─────────────────────────────────────────┐
│ GatewayRunner │
│ │
│ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Telegram │ │ Discord │ │ Weixin │ │
│ │ Adapter │ │ Adapter │ │ Adapter │ │
│ └────┬─────┘ └────┬─────┘ └────┬────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ Per-Chat Session Store │ │
│ └──────────────┬───────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ AIAgent Core │ │
│ │ (Tools + Memory + Skills) │ │
│ └──────────────────────────────────┘ │
└─────────────────────────────────────────┘
每个平台适配器接收消息后,经过按聊天维度的会话存储(Per-Chat Session Store)路由,分派到 AIAgent 核心处理,响应通过同一适配器返回原平台。适配器的源码全部在 gateway/platforms/ 目录下,每个平台一个 Python 文件。
这意味着:你只需要配置 .env 和 config.yaml,不需要写任何代码。
第一站:Telegram 接入

Telegram 是最简单的起点——五分钟内可以跑通。

第一步:在 BotFather 创建 Bot
- 打开 Telegram,搜索
@BotFather(选带蓝色认证勾号的,不是冒牌货) - 点击"Start"开始对话
- 发送
/newbot - BotFather 询问名称——输入显示名称(如
翔宇助手),可包含空格 - BotFather 询问用户名——输入全 Telegram 唯一的用户名,必须以
bot结尾(如XiangyuAssistantBot) - 创建成功,BotFather 返回 API Token(形如
123456789:ABCdefGHIjklMNO...)
立即保存 Token。Token 等同于 Bot 的密码,任何持有 Token 的人都能控制该 Bot。不要硬编码在公开仓库。
可选但推荐的配置命令:
/setdescription # Bot 的说明
/setabouttext # 简短一行介绍
/setuserpic # 上传头像
/setcommands # 设置命令菜单
第二步:配置 Hermes
提示词:生成 Telegram 平台的 .env 配置
请帮我生成 Hermes Agent 接入 Telegram 的 .env 配置。要求:
- 必填项:
TELEGRAM_TOKEN(BotFather 返回的 API Token,格式数字:字母数字串) - 可选项:
TELEGRAM_ALLOWED_USERS(逗号分隔的 Telegram 用户 ID,限制谁能访问 Bot) - 可选项:
TELEGRAM_HOME_CHANNEL(Bot 默认活跃频道的 Chat ID)
或者用交互式向导:
hermes gateway setup
# 选择 Telegram → 粘贴 Token → 完成
第三步:启动并验证
hermes gateway start # 启动网关
hermes gateway status # 确认 Telegram 适配器正在运行
在 Telegram 中打开 t.me/YourBotUsername,点击 Start,发送任意消息。Bot 应在数秒内回复。
如果没有回复,按以下顺序排查:
- Token 是否正确:检查
.env中的TELEGRAM_TOKEN是否包含完整的123456789:ABCdef...格式,冒号前是数字 Bot ID,冒号后是字母数字混合串 - 网络是否畅通:确认你的服务器能访问
api.telegram.org(部分地区需要代理) - 适配器状态:
hermes gateway status应显示 Telegram 适配器为 running - Bot 是否已被其他进程占用:Telegram 的
getUpdates长轮询是排他的,同一个 Token 只能有一个客户端在轮询
Telegram 接入的最大优势是零成本、零审核、零延迟。Bot 创建后立即可用,没有等待审核的过程,消息延迟在毫秒级别。
第二站:Discord 接入

Discord 比 Telegram 多了一个权限配置步骤,但也不复杂。
第一步:创建 Application 和 Bot
- 登录 Discord Developer Portal
- 点击 "New Application",输入名称(如"小宇公司"),点击 "Create"
- 左侧菜单点击 "Bot"
- 点击 "Add Bot" → 确认
- 点击 "Reset Token" 获取 Bot Token
- 立即复制并保存——离开页面后无法再看到
第二步:开启 Privileged Intents
这一步是最常见的坑。不开启 Message Content Intent,Bot 收得到消息事件但读不到消息内容。

- 在 Developer Portal 中,进入你的 Application → Bot 页面
- 向下滚动到 "Privileged Gateway Intents" 区域
- 将三个开关全部打开:
- Presence Intent:获取成员在线状态
- Server Members Intent:访问服务器成员列表
- Message Content Intent:读取消息正文内容
- 点击 "Save Changes"
🔥 翔宇判断:Message Content Intent 是三个里最关键的。Hermes 的 Discord 适配器依赖它来读取用户发送的文字。如果你的 Bot 能看到有人发了消息但回复"我无法理解你说什么",十有八九是这个开关没打开。
第三步:生成邀请链接并添加到服务器
- 左侧菜单点击 "OAuth2" → "URL Generator"
- Scopes 勾选
bot - Bot Permissions 勾选
Administrator(或按需选择:Send Messages、Read Message History、Attach Files、Add Reactions) - 复制生成的 URL,在浏览器中打开
- 选择要添加 Bot 的服务器 → 授权
第四步:配置 Hermes
提示词:生成 Discord 平台的 .env 配置
请帮我生成 Hermes Agent 接入 Discord 的 .env 配置。要求:
- 必填项:
DISCORD_BOT_TOKEN(Developer Portal 获取的 Bot Token) - 必填项:
DISCORD_ALLOWED_USERS(Discord 用户 ID,注意是纯数字 ID 而非用户名) - 可选项:
DISCORD_HOME_CHANNEL(Bot 默认活跃频道的 Channel ID)和DISCORD_HOME_CHANNEL_NAME(频道显示名) - 行为控制三项:
DISCORD_REQUIRE_MENTION(是否需要 @提及才响应,false为全部消息响应)、DISCORD_AUTO_THREAD(是否自动创建线程)、DISCORD_REACTIONS(是否显示处理中的 emoji 反应)
获取 Channel ID 的方法:Discord 设置 → 高级 → 打开"开发者模式" → 右键点击频道 → "复制频道 ID"。
config.yaml 中也需要添加 Discord 专属配置段:
提示词:生成 config.yaml 的 Discord 配置段
请帮我生成 Hermes config.yaml 中的 discord: 配置段。要求:
- 行为开关:
require_mention(是否需要 @提及)、auto_thread(是否自动建线程)、reactions(是否显示处理中 emoji) ignored_channels列表:填入需要忽略的频道 ID(如语音频道)channel_prompts字典:按 Channel ID 为每个频道写一段系统提示词,告诉 Agent 该频道的职责域
第五步:启动并验证
启动网关的方式和 Telegram 相同——hermes gateway start 然后 hermes gateway status 确认 Discord 适配器为 running。在 Discord 服务器的任意文本频道发送消息,Bot 应回复。如果 require_mention 设为 true,需要 @提及 Bot 才会响应。
第三站:微信接入(iLink Bot 官方协议)
微信是三个平台里最值得讲清楚的,因为微信生态的自动化方案鱼龙混杂,封号风险是实打实的。
iLink Bot 是什么
iLink Bot 是腾讯微信官方为"微信个人号一对一助手"场景提供的 HTTP/JSON 协议。它不是公众号 API,不是企业微信,更不是 wxhook / itchat 这类逆向工程的破解协议。
核心技术特征:
- 基座地址:
https://ilinkai.weixin.qq.com - 媒体 CDN 基座地址:
https://novac2c.cdn.weixin.qq.com/c2c - 登录方式:二维码扫码确认
- 消息接收:
getupdates长轮询(35 秒超时) - 会话关联:每条消息绑定
context_token,回复时必须回传
五个核心端点:
| 端点 | 用途 |
|---|---|
GET /ilink/bot/get_bot_qrcode |
获取登录二维码 |
GET /ilink/bot/get_qrcode_status |
轮询扫码状态 |
POST /ilink/bot/getupdates |
长轮询获取新消息 |
POST /ilink/bot/sendmessage |
发送文字/媒体回复 |
POST /ilink/bot/getconfig |
获取 Bot 配置 |
iLink Bot 与其他微信接入方案对比
| 维度 | iLink Bot(Hermes 采用) | wxhook / itchat | Wechaty | 公众号 API |
|---|---|---|---|---|
| 封号风险 | 零 | 高 | 看 Puppet 实现 | 零 |
| 外部依赖 | 零 | 很多 | 很重 | 少量 |
| 个人消息 | 支持 | 支持 | 支持 | 不支持 |
| 群聊 | 不支持 | 支持 | 支持 | 不支持 |
| 需要 PC 客户端 | 不需要 | 需要 | 看实现 | 不需要 |
| 搭建时间 | 2 分钟 | 30+ 分钟 | 10 分钟 | 几天(审核) |
| 稳定性 | 官方 API | 经常挂 | 不一定 | 稳定 |
💡 通俗讲:Wechaty 是老牌微信 Bot 框架,采用 Puppet(傀儡)架构——通过不同的 Puppet Provider 支持不同的微信接入协议。但 2023-2024 年腾讯大规模封杀 Web 协议后,Wechaty 生态中所有能用的 Puppet 都基于逆向工程,实质上已经衰落。iLink Bot 虽然不支持群聊,但作为唯一零封号风险的微信自动化方案,在生产环境是唯一合规选择。
扫码绑定流程
最简单的方式是用交互式向导:
hermes gateway setup
# 选择 Weixin / WeChat → 终端显示二维码 → 用微信扫码 → 确认绑定
底层流程:
- Hermes 调用
GET /ilink/bot/get_bot_qrcode获取二维码 - 终端显示二维码,用户用微信扫码
- Hermes 轮询
GET /ilink/bot/get_qrcode_status - 状态依次经过:
wait→scaned→confirmed - 确认后返回
bot_token、ilink_bot_id、home_user_id - Hermes 自动写入
.env配置
微信 .env 完整配置
提示词:生成微信 iLink Bot 的 .env 配置
请帮我生成 Hermes Agent 接入微信 iLink Bot 的 .env 配置。要求:
- 身份信息:
WEIXIN_ACCOUNT_ID(格式[email protected])、WEIXIN_TOKEN(格式[email protected]:token),均由扫码绑定后自动生成 - 基座地址:
WEIXIN_BASE_URL固定https://ilinkai.weixin.qq.com,WEIXIN_CDN_BASE_URL固定https://novac2c.cdn.weixin.qq.com/c2c - 私聊策略:
WEIXIN_DM_POLICY设为pairing(陌生人需配对批准)或open(所有人可直接私聊) - 访问控制:
WEIXIN_ALLOW_ALL_USERS(是否允许所有用户)、WEIXIN_ALLOWED_USERS(白名单) - 群聊策略:
WEIXIN_GROUP_POLICY设为disabled(iLink Bot 不支持群聊,此项无实际效果) - Home Channel:
WEIXIN_HOME_CHANNEL(格式[email protected])
DM 策略:pairing 与 open
| 策略 | 含义 | 适用场景 |
|---|---|---|
pairing(默认) |
陌生人发消息需配对批准 | 个人使用,安全优先 |
open |
所有人可直接私聊 | 公开服务场景 |
配对管理命令:
hermes pairing list # 查看待批准列表
hermes pairing approve weixin <配对码> # 批准
hermes pairing revoke weixin <用户ID> # 撤销访问
微信支持的消息类型
- 文字:超 4000 字符自动分段发送
- 图片:收发均支持(通过 AES-128-ECB CDN 加密传输)
- 视频:收发均支持
- 文件:收发均支持
- 语音:收发均支持(接收时自动转写)
- "正在输入"状态提示:发送时显示
关键限制
iLink Bot 不支持群聊。Bot 身份(@im.bot)无法加入普通微信群,WEIXIN_GROUP_POLICY=disabled 对 Bot 账号无效。这是 iLink Bot 协议的硬限制,非 Hermes 的限制。如果你的场景必须用微信群聊,目前没有零风险的方案。
还有一个容易忽略的点:iLink Bot 的对话上下文在 Hermes 重启后会持久化保留,不像某些逆向方案重启后丢失历史。这得益于 Hermes 的 SQLite 会话数据库(SessionDB),所有平台的对话记录都写入本地数据库。
另外,如果你想在不用 Hermes Gateway 的情况下自己写微信适配器,社区有一个独立的 TypeScript 客户端 wechat-ilink-client,从 OpenClaw 逆向提取的 iLink 协议实现,纯无状态库,零运行时依赖。这是最干净的起点。
三平台同时运行的完整配置
把三个平台各自的 .env 配置项合到同一个文件即可(~/.hermes/.env),再加上模型配置(推荐 OPENROUTER_API_KEY,一个 Key 访问 200+ 模型)。Hermes 启动时自动检测并连接所有已配置的平台。
搭配 config.yaml 中的会话重置策略:
提示词:生成按平台差异化的会话重置策略
请帮我在 ~/.hermes/config.yaml 中生成 reset_by_platform 配置段。要求:
- 每个平台独立设置
mode: idle和idle_minutes(无活动超时后自动重置会话上下文) - Telegram 建议 240 分钟(4 小时),适合碎片化对话
- Discord 建议 60 分钟(1 小时),频道对话节奏更快
- 微信建议 1440 分钟(24 小时),私聊场景上下文需要保持更久
启动和管理命令与前面各平台相同:hermes gateway setup(交互式配置)、hermes gateway start(启动所有已配置平台)、hermes gateway status(查看运行状态)。
跨平台上下文共享机制

默认情况下,每个平台的每个聊天窗口独立维护会话上下文。Telegram 对话和 Discord 对话是两个独立会话,上下文不自动共享。
但 Hermes 提供了多层机制来实现跨平台知识共享:
| 层级 | 机制 | 共享范围 |
|---|---|---|
| SOUL.md | 全局身份和行为准则 | 所有平台、所有会话 |
| MEMORY.md | 持久记忆(事实、偏好) | 所有平台、所有会话 |
| USER.md | 用户画像 | 所有平台、所有会话 |
| 会话记忆搜索 | SQLite FTS5 全文检索 | 跨会话搜索历史 |
| 外部记忆提供者 | 8 种插件(语义搜索、知识图谱等) | 可自定义 |
| 会话上下文 | 当前对话窗口的聊天历史 | 单个聊天窗口 |
💡 通俗讲:SOUL.md 是 Agent 的"性格说明书",所有平台的所有对话都能读到。MEMORY.md 是"你告诉过我的事情",跨平台共享。但每个聊天窗口的对话记录是隔离的——你在 Telegram 聊的内容,Discord 那边的对话不会自动知道。要让 Agent 跨平台"记住"某个事实,需要它写进 MEMORY.md。
指针架构:知识库作为唯一真值源
我的做法是让 SOUL / MEMORY / USER / channel_prompts 只存两类内容:
- 不可能从知识库读到的行为约束
- 怎么找到知识库内容的路径和方法
所有事实性内容让 Hermes 在对话中通过 read_file 现场读取:
静态层(系统提示词,每次都在)
├── SOUL.md → 身份 + 语言规则 + "KB 路径在这"
├── MEMORY.md → KB 根路径 + 导航方法
└── USER.md → 极简画像 + "详情读 KB 品牌/身份目录"
动态层(对话中按需 read_file)
├── ~/Downloads/code/kb/CLAUDE.md → 总路由表
├── ~/Downloads/code/kb/品牌/*/身份/*.md → 品牌详情
├── ~/Downloads/code/kb/规范/*/ → 写作规范
└── ... KB 里的一切
🔥 翔宇判断:这个设计的好处是零维护成本。我在 Claude Code 里改了任何知识库文件,Hermes 下次对话自动感知。如果把品牌信息、工具列表、工作流触发词硬编码在 Hermes 的配置里,每次更新知识库都要同步更新 Hermes 配置,很快就会过时。指针架构彻底解决了这个问题。
竞品对比:Hermes vs CowAgent vs LobsterAI
市面上做 AI 消息助手的开源项目不少,这里对比两个最具代表性的。
CowAgent(原 chatgpt-on-wechat)
CowAgent(GitHub 45K+ Stars)是微信生态里最知名的 AI 助手项目,前身是 chatgpt-on-wechat。
支持 7 个平台:微信(个人号)、飞书、钉钉、企业微信、QQ、微信公众号、Web 控制台。注意,CowAgent 不支持 Telegram、Discord、Slack、WhatsApp 等国际平台。
LobsterAI(网易有道)
LobsterAI(GitHub 5K+ Stars)是网易有道出品的全场景桌面 AI 助理,Electron 桌面应用,支持 10 个 IM 平台。
三者对比矩阵
| 维度 | Hermes Agent | CowAgent | LobsterAI |
|---|---|---|---|
| 开发者 | Nous Research | zhayujie(个人) | 网易有道 |
| Stars | 191K+(截至 2026 年 6 月) | 45K+ | 5K+ |
| 定位 | 自主 AI Agent + 消息网关 | 微信生态 AI 助理 | 全场景桌面 AI 助理 |
| 跨平台总数 | 22 | 7 | 10 |
| Telegram | 原生 | 不支持 | 原生 |
| Discord | 原生(含语音频道) | 不支持 | 原生 |
| 微信协议 | iLink Bot(官方) | wechatferry(逆向) | OpenClaw 网关 |
| Slack | 原生 | 不支持 | 不支持 |
| 原生 | 不支持 | 不支持 | |
| 部署形态 | CLI + 后台服务 | 源码部署 | Electron 桌面 |
| MCP 支持 | 原生 + MCP 反向服务 | v2.0.9 新增 | 不支持 |
| 记忆系统 | 三层(内置 + 搜索 + 外部提供者) | 长期记忆 + 梦境汇总 | OpenClaw 原生 |
| 部署要求 | pipx / 服务器 / VPS | 源码 / Docker | 必须有桌面环境 |
| 开源协议 | Apache 2.0 | MIT | MIT |
🔥 翔宇判断:选型关键看两个维度——你需要哪些平台、你对微信封号风险的容忍度。
第一个维度很明确:如果你的用户分布在 Telegram、Discord、WhatsApp 等国际平台,CowAgent 直接出局,它只覆盖国内平台。LobsterAI 虽然支持 Telegram 和 Discord,但它是 Electron 桌面应用,必须有图形界面环境,不能跑在无头服务器上——这对 7 天 24 小时运行的消息助手来说是硬伤。
第二个维度是微信。CowAgent 的 wechatferry 是逆向协议,功能更强(支持群聊),但封号风险真实存在。在个人玩耍场景可以接受,在商业场景不可以。Hermes 的 iLink Bot 是目前唯一合规选择,代价是不支持群聊。
还有一个容易忽略的区别:Hermes 支持 MCP 反向服务(hermes mcp serve),让 Claude Code 和 Codex 能主动调用 Hermes 推消息。CowAgent 和 LobsterAI 都没有这个能力。如果你的工作流是"AI 编程工具完成任务后自动通知",这个差异很关键。
品牌分区频道设计(Discord 实战)
这是我在实际运营中摸索出来的模式——进频道即确定品牌,不用每次手动指定。这不是 Hermes 官方功能,而是通过 channel_prompts 配置实现的。
设计动机
我同时运营翔宇工作流和 SYL 两个品牌,它们的内容风格、工作流、发布渠道完全不同。如果在同一个频道里每次说"用 SYL 的风格",容易忘了切品牌导致串用。
四分区 12 频道架构
| 分区 | 频道 | 品牌绑定 |
|---|---|---|
| 行政区(共用) | 总部、私人助理、运维部 | 无固定品牌 |
| 翔宇运营区 | 公众号、油管、官网、推特、课程 | 翔宇工作流 |
| SYL 运营区 | 推特、官网 | SYL(希薇) |
| 共用区 | 研发部、情报部 | 跨品牌 |
关键设计决策
每个频道的 channel_prompts 不写死内容,只指向知识库目录入口:
提示词:生成品牌分区的 channel_prompts 配置
请帮我在 config.yaml 的 channel_prompts 中按品牌分区生成频道提示词。要求:
- 键为 Discord Channel ID(字符串),值为多行系统提示词
- 行政区频道(如「总部」):不绑定固定品牌,提示词指向知识库总路由表,让 Agent 按问题内容自行定位
- 品牌运营区频道(如「翔宇-公众号」「翔宇-官网」「SYL-推特」):提示词锁定品牌名,指向该品牌的工作流路由入口和表达风格文件路径
- 共用区频道(如「研发部」):提示词指向工具体系路由表,不限品牌
- 核心原则:提示词只写路径指针和路由方法,不写死任何业务内容,Agent 在对话中通过
read_file动态读取
💡 通俗讲:这样做的好处是 Bot 收到消息后按频道职责域提取触发词,到知识库路由表匹配对应工作流。我在 Claude Code 里新增或修改工作流后,Hermes 下次对话自动感知。新增品牌时只需加一个分区和对应频道。
这个设计的核心思路是关注点分离——Discord 频道负责"我在和哪个品牌对话",知识库负责"这个品牌的具体信息",Hermes 负责"怎么把两者连起来"。三者各管各的,任何一层更新都不影响其他两层。
举个实际例子:我在翔宇-官网频道说"写一篇关于 AI 编程的文章",Bot 会先读知识库的工作流路由表,找到对应的 Ghost 文章写作工作流,自动加载翔宇品牌的表达风格。如果我在 SYL-推特频道说同样的话,Bot 会自动切换到 SYL 品牌的风格和发布渠道。频道即上下文,无需每次手动指定。
踩坑清单
实际运营中踩过的坑,帮你跳过:
1. 双 Bot 冲突
问题:如果你的 Discord 服务器上同时运行了 Hermes 和另一个 AI Bot(比如 OpenClaw 网关),每条消息两个 Bot 都抢着回复。
解法:停掉不需要的 Bot;如果需要共存,设置 require_mention: true 让 Bot 只在被 @提及时响应,或者将不同 Bot 限制在不同频道。
2. Telegram Token 被"抢走"
问题:Telegram 的 getUpdates 长轮询是排他的——同一个 Token 只能有一个客户端在轮询。如果你升级 Hermes 后旧的 hermes.service 没被清理,两个服务抢同一个 Token,消息时有时无。
解法:Hermes 的 installer 会自动检测并移除旧版服务单元。如果你手动安装过,确保只有一个进程在用这个 Token。
3. Discord 表格渲染问题
问题:Discord 不支持 Markdown 表格语法渲染,AI 回复里的表格显示为纯文本。
解法:在 Discord 适配器中添加表格 PNG 渲染——检测回复中的 Markdown 表格 → 渲染为白底 PNG → 作为附件发送。具体实现方式见 Hermes Agent 完全指南 中的高级配置章节。
4. 微信登录态过期
问题:微信 iLink Bot 的登录态不是永久的,长时间运行后可能过期。过期后 Hermes 不会自动报错,只是微信消息不再到达。
解法:重新执行 hermes gateway setup 扫码绑定。Hermes 会自动更新 .env 中的 Token。建议定期检查 hermes gateway status,确认微信适配器的状态和最后消息时间。如果适配器显示 running 但已经很久没有消息活动,大概率是登录态过期了。
5. 压缩风暴导致上下文丢失
问题:辅助压缩任务默认跟主模型走,主模型限流(如 GLM 返回 429)时压缩也挂,Agent 丢失整个对话上下文。
解法:在 config.yaml 中为 auxiliary.compression 显式配置独立 provider,不跟主模型走。
6. 72 个工具的 Token 开销
问题:Hermes 有 72 个内置工具,所有工具的 Schema 定义占约 19,210 token,每次对话都加载。
解法:开启 tool_search 模式,只加载常用工具的完整 Schema,其余按需查找,token 降到约 2,200(减少 89%):
提示词:生成 tool_search 按需加载配置
请帮我在 config.yaml 中生成 tool_search 配置段,用于按需加载工具以降低 token 开销。要求:
mode: auto(自动模式)threshold:工具 Schema 占上下文窗口的比例阈值(建议0.1,即 10% 时触发按需查找)pinned_tools列表:始终完整加载的高频工具(建议terminal、read_file、write_file、list_directory、send_message、memory、skills)evict_after_turns:工具被调用后连续多少轮未再使用则卸载(建议3)
MCP 反向服务:从 Claude Code 推消息到 Discord

Hermes v0.16.0 支持 hermes mcp serve,暴露 10 个工具,让 Claude Code 和 Codex 通过 MCP 协议调用 Hermes 的消息能力。
典型场景:Claude Code 跑完一个长任务后,自动往 Discord 推送完成通知,你不在电脑前也能在手机上看到结果。
配置方式(~/.claude.json → mcpServers):
提示词:生成 Hermes MCP 的 stdio-over-SSH 配置
请帮我在 ~/.claude.json 的 mcpServers 中生成 Hermes MCP 服务配置。要求:
- 键名
"hermes",类型"stdio" command为"ssh",通过 SSH 连接到运行 Hermes 的服务器args数组包含:SSH 选项-o StrictHostKeyChecking=no、目标用户和 IP(如[email protected])、Hermes 二进制路径(如/Users/user/.local/bin/hermes)、子命令mcp serve- 前提:本机到目标服务器的 SSH 密钥认证已配置好,无需密码
暴露的 10 个工具包括 conversations_list、messages_send、events_poll 等。更多细节见 Claude Code Hermes MCP 消息推送教程。
相关 Hermes Skill 推荐
安装 Hermes 后自带 155+ Skill(技能),以下几个与跨平台消息场景高度相关:
| Skill | 分类 | 适用场景 |
|---|---|---|
hermes-agent |
核心 | 部署和排障的第一参考 |
google-workspace |
生产力 | Gmail + Calendar + Drive,跨平台调度核心 |
apple-notes |
生产力 | 微信发指令 → Agent 记到 Apple Notes |
apple-reminders |
生产力 | 微信发"提醒我明天开会" → 自动创建提醒 |
ocr-and-documents |
生产力 | 微信收到扫描件 → 自动 OCR → 文字回复 |
github-pr-workflow |
开发 | Discord 研发频道触发代码审查 |
blogwatcher |
研究 | 情报频道自动推送竞品动态 |
Skill 采用渐进式披露(Progressive Disclosure)模式加载:skills_list() 只返回精简列表(约 3K token),skill_view(name) 才加载完整内容。155+ Skill 不会一次性占用上下文窗口。
更多 Skill 体系详见 Hermes Agent Skill 进化系统。
没有服务器?Railway 一键部署
如果你没有本地 Mac/Linux 服务器,可以用社区维护的 Railway 一键部署模板:
- 点击 "Deploy on Railway" 按钮
- 在 Web 管理面板配置 LLM Provider(推荐 OpenRouter)
- 勾选 Telegram → 粘贴 Bot Token
- 点击 "Save & Start"
- 在 Telegram 给 Bot 发消息 → 管理面板出现配对请求 → 点击 "Approve"
管理面板提供暗色主题 UI、实时网关状态、运行时间、实时日志流和用户配对管理。
Railway 方案的优点是零运维——平台自动处理进程管理、日志收集和重启。缺点是成本比自己的 VPS 高,且微信 iLink Bot 的扫码绑定需要能在浏览器中显示二维码(Railway 的 Web Terminal 支持,但体验不如本地终端)。
如果你更倾向 Docker 部署到自己的 VPS,详见 Hermes Agent Docker 部署教程。Docker 方案对微信扫码的支持更好,也更容易做数据持久化。
下一步
- 还没安装 Hermes? → Hermes Agent 完全指南(从安装到全景能力概览)
- 想用 Docker 部署? → Hermes Agent Docker 部署教程
- 想给 Agent 加语音? → Hermes Agent 语音模式实战
- 想了解 Hermes 的整体评价? → Hermes Agent 深度评测
常见问题
Hermes Agent 支持多少个消息平台?
截至 v0.16.0 官方支持 22 个,社区记录超过 25 个。完整矩阵见本文开头的平台能力一览表。
Hermes 的微信接入用的是什么协议?会被封号吗?
使用腾讯官方 iLink Bot 协议,零封号风险。唯一限制是 Bot 身份(@im.bot)无法加入普通微信群,仅支持一对一私聊。
Discord Bot 收不到消息内容怎么办?
最常见原因是没有开启 Message Content Intent。在 Developer Portal 的 Bot 页面打开 Privileged Gateway Intents 中的 Message Content Intent 即可。
不同平台的对话上下文是否共享?
默认不共享,每个聊天窗口独立维护上下文。但 SOUL/MEMORY/USER 三层文件跨平台共享,配合 SQLite FTS5 会话搜索可实现事实级别的一致性。
Hermes Agent 和 CowAgent 有什么区别?
三个关键维度:平台覆盖(22 vs 7)、微信协议安全性(官方 iLink Bot vs 逆向 wechatferry)、国际平台支持(CowAgent 不覆盖 Telegram/Discord/Slack)。
同一个 Discord 服务器能运行多个 Bot 吗?
可以,但多个 Bot 同时 require_mention: false 会抢着回复。解法:只留一个主动响应的 Bot,或全部设 require_mention: true,或分频道隔离。
微信 iLink Bot 支持群聊吗?
不支持。@im.bot 身份无法加入普通微信群,这是 iLink Bot 协议的硬限制。
没有服务器怎么部署 Hermes 的消息网关?
Railway 一键部署模板(含 Web 管理面板)或 Docker 部署到任意 VPS。详见 Docker 部署教程。
- AI 编程实操课:Claude Code + Codex + Agent 工作流,覆盖一人公司、自媒体自动化、AI 副业全场景。237 篇实战教程 + 最佳实践 + 源码包,跟着做就出成果。国内版-FlowUS | 国际版-BMC
- YouTube 频道:翔宇工作流
- 微信公众号:搜索「翔宇工作流」
























