Hermes Agent Telegram 配置:常见问题与解决方案
Hermes Agent 在 Telegram 上无法正常运行的最常见原因,以及每种情况的详细修复方法。涵盖 bot token 错误、bot 无响应、用户 ID 配置问题和持久化问题。
Telegram 是大多数 Hermes 部署卡壳的地方
Hermes 的快速入门很顺畅。Telegram 的配置才是大多数用户遇到问题的环节。并不是因为流程复杂,而是每一步都有几种出错的方式,当多个问题同时静默失败时,很难知道该从哪里排查。
本指南按问题通常出现的顺序,逐一介绍最常见的故障。
获取 Telegram Bot Token
Token 来自 BotFather,即 Telegram 官方的 bot 管理入口。这一步看似简单,但有几种常见的失败方式。
正确操作步骤:
- 打开 Telegram,搜索
@BotFather。 - 发送
/newbot。 - BotFather 会依次询问名称(显示名)和用户名(必须以
bot结尾)。 - 创建完成后,BotFather 会发送一条包含 token 的消息,格式类似
7123456789:ABCDef...。 - 复制完整的 token,包括冒号及其后面的所有内容。
常见错误:
- 只复制了数字 ID:token 是冒号之后的完整字符串,而不仅仅是冒号前面的数字。
- 使用了开发环境中的测试 bot:如果你几个月前创建过一个 bot,又忘了哪个 token 对应哪个 bot,可以用
/mybots在 BotFather 中查看已有的 bot,然后吊销并重新生成 token。 - 粘贴的 token 中包含空格或换行符:某些复制操作会带入多余的空白字符。建议先粘贴到纯文本编辑器中确认 token 干净无误,再使用它。
TELEGRAM_ALLOWED_USERS 配置
这是 Hermes Telegram 部署中最容易配置错误的部分。
Hermes 要求你指定哪些 Telegram 用户 ID 有权向 bot 发送消息。没有这项配置,bot 不会响应任何人;配置值有误,bot 也不会响应你,即使它看起来在正常运行。
你需要的是:
Telegram 用户 ID 是一串数字,不是用户名。Hermes 需要的不是 @username,而是类似 123456789 的数字 ID。
如何获取你的 Telegram 用户 ID:
打开 Telegram,搜索 @userinfobot,发送 /start,它会回复你的用户 ID。
如何配置:
在 config.yaml 中:
telegram_allowed_users: "123456789"
如需添加多个用户,使用逗号分隔的列表:
telegram_allowed_users: "123456789,987654321"
Hermify 说明: 在 Hermify 的入门流程中,你需要在凭据表单中填写 Telegram 用户 ID(或逗号分隔的列表),该字段与 bot token 字段是分开的,两者都必须填写。
问题:Bot 完全没有响应
如果你向 bot 发送消息后毫无动静,请按以下清单逐项排查:
1. Hermes 网关是否在运行?
hermes gateway status
如果网关未运行,bot 就没有监听器。启动它:
hermes gateway start
2. 你的用户 ID 是否在允许列表中?
仔细检查 telegram_allowed_users 配置。这是 bot 静默最常见的原因——进程在运行,网关已连接,但 Hermes 因为你的 ID 不在列表中而刻意忽略了你的消息。
3. Bot token 是否已过期或被吊销?
BotFather 允许你吊销 token。如果你在将 token 添加到 Hermes 之后重新生成了它,旧 token 就失效了。在 BotFather 中用 /mybots 找到你的 bot,进入 API Token 验证配置中的 token 是否匹配。
4. Bot 是否已被添加到其他聊天中?
Telegram bot 只响应它接收消息的特定聊天。如果你之前把 bot 添加到了某个群组,而 Hermes 对群组消息的处理方式不同,你可能需要直接在与 bot 的私聊(DM)中开始对话。
问题:日志中出现 "Unauthorized" 错误
这个错误意味着 token 无效或已被吊销。解决方法是在 BotFather 中重新生成 token,并将新值更新到 Hermes 配置中。
在 BotFather 中:
- 发送
/mybots。 - 选择你的 bot。
- 进入 API Token → Revoke current token。
- 复制新 token。
- 更新
config.yaml或 Hermify 控制台中的凭据表单。 - 重启 Hermes(或 Hermify 运行时)。
问题:Bot 响应了一次,然后沉默
这通常意味着 Hermes 进程停止了,或网关连接断开了。常见原因:
进程被终止。 在本地部署或廉价的共享主机上,当内存紧张或宿主机回收容器时,进程可能被杀死。检查进程日志,看是否有崩溃或 OOM(内存不足)事件。
WSL2 会话结束。 如果你在 WSL2 中运行 Hermes,关闭终端会导致进程停止。参阅 WSL2 指南,了解如何持久化运行 Hermes。
Telegram 轮询循环超时。 Hermes 网关使用长轮询来接收 Telegram 消息。连接偶尔会断开且不会自动重连。重启网关(hermes gateway restart)可解决此问题。
模型错误导致崩溃。 如果 LLM API 返回了错误(频率限制、额度耗尽、响应异常),某些版本的 Hermes 可能会退出会话而非自动恢复。在静默发生之前,检查终端输出或日志中是否有最近的报错信息。
问题:消息能收到,但智能体忽略了内容
这与 bot 无响应不同。Bot 能收到消息,但智能体的回复看起来有问题或为空。
最可能的原因:模型上下文窗口已满。 Hermes 会将你的 MEMORY.md 和对话历史一并注入每个提示词。如果合并后的上下文超出了模型的窗口限制,模型接收到的是被截断的提示词,回复质量会下降甚至变为空白。
修复方法:
- 切换到上下文窗口更大的模型(Claude 和 Gemini 支持 128k+)。
- 如果
MEMORY.md已经非常庞大,手动裁剪其内容。 - 如果你的版本支持,使用
hermes memory compact对记忆进行摘要和压缩。
不太可能的原因:允许用户列表存在子字符串匹配问题。 如果允许用户配置中包含 12345,而你的实际用户 ID 是 123456789,Hermes 将无法正确匹配。请核实完整的数字 ID,而不是截断后的版本。
问题:本地运行正常,部署后出现问题
这里最常见的原因是测试环境与服务器环境之间存在差异。
请按顺序检查以下几点:
- Token 是否已更新到服务器配置中,而不只是本地配置。很容易误改了错误的文件。
- 服务器能否访问 Telegram 的 API。 某些托管服务商会屏蔽出站连接。在服务器上用
curl https://api.telegram.org/bot<YOUR_TOKEN>/getMe测试连通性。 - Hermes 进程是否成功启动。 检查容器或进程日志,看是否有启动错误。
- 记忆目录是否已挂载。 如果使用 Docker,确认数据卷已挂载。没有数据目录启动的智能体行为会异常。
使用托管服务跳过这一切
大多数人遭遇 Telegram 配置问题,是因为他们在自己管理部署——同时处理 token、配置文件、进程和服务器环境。
Hermify 正是为解决这个问题而设计的。入门流程负责处理 Telegram 的所有接入工作:你只需提供一次 bot token 和允许的用户 ID,平台会将它们加密存储、注入运行时,并管理网关进程。
如果 bot 在 Hermify 上停止响应,你不需要调试网关,只需在控制台查看状态卡片,必要时触发重启。整个运维闭环基于控制台操作,而非 SSH。
这就是托管 Telegram 服务最根本的改变:不是 Telegram 配置本身,而是谁来负责保持它的健康运行。你可以在托管与自托管对比中直接比较这两种方案。