Messaging Gateway: Chat via Telegram, Discord & More
[Translation Pending]\n\n# 第 05 期 | 消息网关:通过 Telegram/Discord 随时对话
副标题: 配置 hermes gateway,将 AI Agent 部署到云服务器,通过 Telegram Bot、Discord Bot、Slack、WhatsApp 等渠道随时随地与你的 Agent 对话。
🎯 学习目标
完成本期课程后,你将能够:
- 理解 Hermes Agent 消息网关的核心概念及其在远程交互中的重要性。
- 掌握在云服务器上部署 Hermes Agent 的基本考量和方法。
- 学会创建并配置 Telegram Bot,使其作为 Hermes Agent 的消息网关。
- 学会创建并配置 Discord Bot,使其作为 Hermes Agent 的消息网关。
- 通过实际操作,实现与部署在远程服务器上的 Hermes Agent 进行跨平台、持续对话。
📖 核心概念讲解
在前面的课程中,我们主要在本地终端与 Hermes Agent 交互。然而,AI Agent 的真正价值在于其能够持续运行,并在我们需要的任何时间、任何地点提供服务。这就引出了“消息网关”(Message Gateway)的概念。消息网关是 Hermes Agent 与外部消息平台(如 Telegram、Discord)之间的桥梁,它允许 Agent 在后台运行,并通过这些平台接收指令、发送响应,从而实现远程、异步的交互。
5.1 消息网关:Agent 的“触角”
想象一下,你的 Hermes Agent 是一位勤奋的助手。它不可能总是坐在你的电脑旁等待你输入命令。通过消息网关,它可以在云端服务器上不间断地工作,并通过你常用的聊天应用(如 Telegram 或 Discord)与你保持联系。
核心优势:
- 随时随地访问: 无论你身在何处,只要有网络,就能通过手机或电脑上的聊天应用与 Agent 交互。
- 持续运行: Agent 可以部署在云服务器上,即使你关闭本地电脑,它也能持续学习、记忆和执行任务。
- 多用户/多场景: 可以配置 Agent 在特定群组或频道中提供服务,实现团队协作或特定应用场景。
- 跨会话记忆: 结合 Hermes Agent 的内置记忆能力,无论你通过哪个设备、何时与 Agent 对话,它都能记住之前的上下文和学习到的技能。
5.2 架构概览:云端部署与网关连接
为了实现远程交互,我们需要将 Hermes Agent 部署到一台云服务器上。这台服务器将承载 Agent 的运行环境、数据存储以及消息网关服务。
下图展示了其基本架构:
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| 用户设备 (手机/PC) | <-----> | 消息平台 (Telegram/Discord) | <-----> | Hermes Agent (云服务器) |
| | | | | |
| - Telegram App | | - Telegram Bot API | | - Hermes Agent Core |
| - Discord App | | - Discord Bot API | | - Hermes Gateway |
| | | | | - Skill Store |
| | | | | - Memory DB |
+-------------------+ +-------------------+ +-------------------+
^ |
| |
+-------------------------------------------------------+
(用户通过消息平台与Agent交互,Agent在云端持续运行)
工作流程:
- 用户在聊天应用中发送消息给 Bot。
- 消息平台(例如 Telegram API 或 Discord API)接收到消息。
- Hermes Gateway 模块通过长连接或 Webhook 机制从消息平台获取消息。
- Hermes Agent Core 处理消息,执行任务,利用其技能和记忆。
- Agent 生成响应,通过 Hermes Gateway 发送回消息平台。
- 消息平台将响应发送回用户的聊天应用。
5.3 部署到云服务器:环境准备
在开始配置网关之前,你需要在云服务器上安装并运行 Hermes Agent。这里我们假设你已经有一台 Linux 云服务器(例如 Ubuntu 22.04 LTS)。
步骤概述:
连接到服务器: 使用 SSH 客户端连接到你的云服务器。
ssh username@your_server_ip安装依赖: 确保服务器上安装了
curl和git等基本工具。sudo apt update sudo apt install -y curl git安装 Hermes Agent: 执行官方提供的一键安装脚本。
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash安装过程可能需要一些时间,它会安装 Python 环境、依赖项并将
hermes命令添加到你的 PATH 中。初始化 Hermes Agent: 首次运行需要进行配置,主要是设置 LLM。
hermes setup按照提示选择你偏好的 LLM 提供商(推荐 OpenRouter 以便灵活选择模型),并输入 API Key。
重要提示: 为了让 Agent 持续运行,你可能需要使用
nohup、screen或tmux等工具在后台启动 Hermes Agent,或者将其配置为 Systemd 服务。例如,使用
nohup在后台启动并输出日志:nohup hermes agent > hermes_agent.log 2>&1 &这会将 Agent 启动在后台,并将所有输出重定向到
hermes_agent.log文件。你可以在需要时通过tail -f hermes_agent.log查看日志。
5.4 配置 Telegram 消息网关
Telegram 是一个流行的消息应用,它提供了强大的 Bot API,非常适合集成 AI Agent。
5.4.1 创建 Telegram Bot
- 打开 BotFather: 在 Telegram 中搜索并打开
@BotFather。这是 Telegram 官方用来创建和管理 Bot 的工具。 - 创建新 Bot: 向
@BotFather发送/newbot命令。 - 命名 Bot: 按照提示为你的 Bot 输入一个显示名称(例如:“My Hermes Assistant”)。
- 选择用户名: 为你的 Bot 选择一个唯一的用户名,必须以
bot结尾(例如:“myhermes_assistant_bot”)。 - 获取 Token: 成功创建后,
@BotFather会给你一个 HTTP API Token。这个 Token 是你 Bot 的身份凭证,非常重要,请妥善保管,不要泄露。它看起来像123456789:ABCDE-FGHIJ-KLMNO-PQRST-UVWXYZ。
5.4.2 启动 Hermes Telegram 网关
在你的云服务器上,使用 hermes gateway telegram 命令启动网关。
# 在云服务器上执行
hermes gateway telegram --token <YOUR_TELEGRAM_BOT_TOKEN>
请将 <YOUR_TELEGRAM_BOT_TOKEN> 替换为你从 @BotFather 获取的实际 Token。
后台运行 Telegram 网关:
同样,为了让网关持续运行,你可能需要将其放在后台。
nohup hermes gateway telegram --token <YOUR_TELEGRAM_BOT_TOKEN> > hermes_telegram_gateway.log 2>&1 &
现在,你的 Telegram Bot 已经连接到 Hermes Agent。你可以在 Telegram 中找到你的 Bot 并开始对话。
5.5 配置 Discord 消息网关
Discord 也是一个非常流行的社区和聊天平台,同样支持 Bot 集成。
5.5.1 创建 Discord Bot
- 访问 Discord 开发者门户: 打开浏览器,访问 Discord Developer Portal。
- 创建新应用: 点击右上角的 "New Application" 按钮。
- 输入应用名称(例如:“Hermes Discord Agent”),然后点击 "Create"。
- 创建 Bot: 在左侧导航栏中,选择 "Bot"。
- 点击 "Add Bot",然后确认 "Yes, Do it!"。
- 你的 Bot 就会被创建。
- 重要: 在 "Token" 部分,点击 "Reset Token" 获取你的 Bot Token。这个 Token 也是敏感信息,请妥善保管。
- 启用 Intents: 在 "Privileged Gateway Intents" 部分,务必勾选并保存
MESSAGE CONTENT INTENT。这是 Bot 读取消息内容所必需的。为了更全面的功能,你可能还需要启用PRESENCE INTENT和SERVER MEMBERS INTENT。
- 获取 Client ID: 回到左侧导航栏,选择 "General Information"。复制 "APPLICATION ID",这就是你的 Bot 的
CLIENT_ID。
5.5.2 邀请 Discord Bot 到服务器
- 生成邀请链接: 在左侧导航栏中,选择 "OAuth2" -> "URL Generator"。
- 在 "SCOPES" 下,勾选
bot。 - 在 "BOT PERMISSIONS" 下,至少勾选
Send Messages、Read Message History。为了让 Agent 能够响应各种命令,建议勾选Administrator(仅限测试环境,生产环境请根据最小权限原则配置)。 - 复制生成的 URL。
- 在 "SCOPES" 下,勾选
- 邀请 Bot: 在浏览器中打开复制的 URL。
- 选择你想要将 Bot 添加到的 Discord 服务器。
- 授权 Bot 加入。
5.5.3 启动 Hermes Discord 网关
在你的云服务器上,使用 hermes gateway discord 命令启动网关。
# 在云服务器上执行
hermes gateway discord --token <YOUR_DISCORD_BOT_TOKEN> --client-id <YOUR_DISCORD_CLIENT_ID>
请将 <YOUR_DISCORD_BOT_TOKEN> 和 <YOUR_DISCORD_CLIENT_ID> 替换为你从 Discord 开发者门户获取的实际值。
后台运行 Discord 网关:
nohup hermes gateway discord --token <YOUR_DISCORD_BOT_TOKEN> --client-id <YOUR_DISCORD_CLIENT_ID> > hermes_discord_gateway.log 2>&1 &
现在,你的 Discord Bot 已经连接到 Hermes Agent。你可以在 Discord 服务器中找到你的 Bot,并在它所在的频道或私聊中与它对话。
5.6 其他消息平台(简介)
Hermes Agent 的设计考虑了扩展性,理论上可以支持更多消息平台。虽然官方文档和命令行主要聚焦于 Telegram 和 Discord,但其架构允许通过插件或社区贡献来支持其他平台。
- Slack: 通常通过 Slack App 和 Webhook/Socket Mode API 集成。
- WhatsApp: 通常需要通过第三方商业服务(如 Twilio、MessageBird)提供的 WhatsApp Business API 进行集成,因为 WhatsApp 官方不直接提供公开的 Bot API。
对于这些平台,如果 Hermes 官方未来直接支持,其配置流程会与 Telegram/Discord 类似,主要涉及创建应用、获取 API 凭证,然后使用相应的 hermes gateway <platform> 命令。
5.7 最佳实践与注意事项
- 安全性: 你的 Bot Token 是非常敏感的凭证。务必妥善保管,不要将其硬编码到公开的代码库中,也不要分享给不可信的第三方。在云服务器上,确保只有授权用户可以访问存储这些 Token 的文件或环境变量。
- 持久化运行: 使用
nohup、screen或tmux是在服务器上后台运行程序的常见方法。更健壮的生产部署会使用systemd服务来管理 Agent 和网关进程,确保它们在服务器重启后自动启动,并在崩溃时自动恢复。 - 资源管理: 监控你的云服务器资源(CPU、内存、网络)。Hermes Agent 及其依赖的 LLM 调用可能会消耗一定的资源。
- 防火墙: 确保你的云服务器防火墙允许出站连接到 Telegram/Discord API 服务器,以及允许入站 SSH 连接(如果你需要远程管理)。
- 日志监控: 定期检查
hermes_agent.log和hermes_gateway.log文件,以便及时发现和解决问题。
💻 实战演示
我们将通过一个实际的场景来演示如何在云服务器上部署 Hermes Agent,并分别配置 Telegram 和 Discord 网关。
场景设定: 你已拥有一台 Ubuntu 22.04 LTS 云服务器,并已通过 SSH 连接。你希望将 Hermes Agent 部署到这台服务器,并通过 Telegram Bot 和 Discord Bot 随时随地与它交互。
实战演示 1:云服务器上的 Hermes Agent 初始化与后台运行
首先,确保你的云服务器已经安装了 Hermes Agent 并进行了基本配置。
# 1. 登录到你的云服务器 (假设你已经登录)
# ssh your_username@your_server_ip
# 2. 检查 Hermes Agent 是否已安装
# 如果未安装,请执行安装命令:
# curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# 3. 首次运行 Hermes Agent 进行配置 (如果之前未配置)
# 这一步会引导你设置 LLM 提供商和 API Key。
# 这里我们假设你已经配置了 OpenRouter 并提供了 API Key。
hermes setup
预期输出示例 (部分):
Welcome to Hermes Agent setup!
This will guide you through the initial configuration.
Do you want to enable telemetry data collection? (y/N): N
Please select your preferred LLM provider:
1. OpenRouter
2. OpenAI
3. Anthropic
4. Google
5. Together AI
6. Perplexity AI
Enter your choice (1-6): 1
Please enter your OpenRouter API Key: sk-or-... # 这里输入你的 OpenRouter API Key
Configuration saved successfully!
接下来,我们将 Hermes Agent 核心进程放在后台运行,以便网关能够连接。
# 4. 在后台启动 Hermes Agent 核心进程
# 使用 nohup 确保即使 SSH 会话断开,Agent 也能持续运行
nohup hermes agent > hermes_agent.log 2>&1 &
# 5. 验证 Agent 是否在后台运行
# 查看进程列表,你应该能看到一个 Python 进程包含 'hermes agent'
ps aux | grep "hermes agent"
# 查看日志,确保 Agent 启动正常
tail -f hermes_agent.log
预期输出示例 (ps aux):
your_username 12345 0.5 1.0 123456 78900 pts/0 Sl 10:00 0:05 python -m hermes.agent
预期输出示例 (tail -f hermes_agent.log):
...
INFO: Started server process [12345]
INFO: Waiting for changes to reload. Press CTRL+C to exit.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
这表明 Hermes Agent 核心已在后台成功启动。
实战演示 2:配置并启动 Telegram 消息网关
我们将使用一个假设的 Telegram Bot Token 来演示。
前置步骤: 确保你已通过 @BotFather 创建了一个 Telegram Bot 并获取了其 Token。假设 Token 为 1234567890:AAH_random_token_string_example。
# 1. 设置 Telegram Bot Token 环境变量 (推荐方式,避免直接在命令行中暴露敏感信息)
export TELEGRAM_BOT_TOKEN="1234567890:AAH_random_token_string_example"
# 2. 启动 Hermes Telegram 网关,并在后台运行
nohup hermes gateway telegram --token "$TELEGRAM_BOT_TOKEN" > hermes_telegram_gateway.log 2>&1 &
# 3. 验证 Telegram 网关是否在后台运行
ps aux | grep "hermes gateway telegram"
# 4. 查看 Telegram 网关的日志
tail -f hermes_telegram_gateway.log
预期输出示例 (ps aux):
your_username 12346 0.3 0.8 100000 60000 pts/0 Sl 10:01 0:03 python -m hermes.gateway telegram ...
预期输出示例 (tail -f hermes_telegram_gateway.log):
...
INFO: Starting Telegram gateway...
INFO: Bot started successfully!
INFO: Listening for messages...
交互测试:
- 在你的 Telegram 应用中,找到你创建的 Bot。
- 向 Bot 发送消息,例如:“你好,你是谁?”
- Hermes Agent 应该会通过 Telegram 回复你。
Telegram 交互示例:
用户: 你好,你是谁? Hermes Agent: 我是 Hermes Agent,一个由 NousResearch 开发的自进化 AI 助手。我能够学习新技能、记住上下文,并帮助你完成各种任务。有什么我可以帮你的吗?
用户: 请告诉我一个关于 Python 的趣闻。 Hermes Agent: 当然!你知道 Python 的名字并不是来源于蛇,而是来自英国喜剧团体 Monty Python 吗?吉多·范罗苏姆(Guido van Rossum)在设计这门语言时,正好在读他们的剧本,觉得这个名字既独特又有趣!
实战演示 3:配置并启动 Discord 消息网关
我们将使用假设的 Discord Bot Token 和 Client ID 来演示。
前置步骤: 确保你已通过 Discord 开发者门户创建了一个 Discord Bot,获取了其 Token 和 Client ID,并已将其邀请到你的 Discord 服务器。假设 Token 为 MTEyMjMzNDQ1NTY2Nz...,Client ID 为 112233445566778899。
# 1. 设置 Discord Bot Token 和 Client ID 环境变量
export DISCORD_BOT_TOKEN="MTEyMjMzNDQ1NTY2Nz..."
export DISCORD_CLIENT_ID="112233445566778899"
# 2. 启动 Hermes Discord 网关,并在后台运行
nohup hermes gateway discord --token "$DISCORD_BOT_TOKEN" --client-id "$DISCORD_CLIENT_ID" > hermes_discord_gateway.log 2>&1 &
# 3. 验证 Discord 网关是否在后台运行
ps aux | grep "hermes gateway discord"
# 4. 查看 Discord 网关的日志
tail -f hermes_discord_gateway.log
预期输出示例 (ps aux):
your_username 12347 0.4 0.9 110000 70000 pts/0 Sl 10:02 0:04 python -m hermes.gateway discord ...
预期输出示例 (tail -f hermes_discord_gateway.log):
...
INFO: Starting Discord gateway...
INFO: Discord bot is ready! Logged in as Hermes Discord Agent#1234
INFO: Listening for messages...
交互测试:
- 在你的 Discord 应用中,进入你邀请 Bot 所在的服务器和频道。
- 在频道中 @ 你的 Bot 并发送消息,例如:“@Hermes Discord Agent 帮我总结一下今天的课程。”
- Hermes Agent 应该会通过 Discord 回复你。
Discord 交互示例:
用户 (在频道中): @Hermes Discord Agent 帮我总结一下今天的课程。
Hermes Agent: 好的,今天的课程主要围绕 Hermes Agent 的消息网关展开,包括:
- 核心概念: 理解网关的重要性,实现远程、持续交互。
- 架构概览: Agent 部署在云服务器,通过网关连接消息平台。
- Telegram 网关: 创建 Bot,获取 Token,启动
hermes gateway telegram。 - Discord 网关: 创建 Bot,获取 Token 和 Client ID,邀请 Bot,启动
hermes gateway discord。 - 实战演示: 在云服务器上后台运行 Agent 核心和各个网关,并通过实际对话验证功能。
有什么不清楚的地方吗?
通过以上实战,你已经成功地将 Hermes Agent 部署到云服务器,并配置了 Telegram 和 Discord 消息网关。现在,你的 AI 助手已经能够随时随地为你服务了!
🔧 涉及的命令与工具
| 命令/工具 | 描述 | 用途 |
|---|---|---|
ssh |
Secure Shell 协议,用于远程登录和管理 Linux 服务器。 | 连接到云服务器,执行 Hermes Agent 的安装、配置和网关启动。 |
curl |
命令行工具,用于传输数据,支持多种协议。 | 下载 Hermes Agent 的安装脚本。 |
bash |
Unix Shell 和命令语言。 | 执行 Hermes Agent 的安装脚本。 |
hermes setup |
Hermes Agent 的初始化配置命令。 | 首次设置 Agent 的 LLM 提供商和 API Key。 |
hermes agent |
启动 Hermes Agent 核心进程的命令。 | 运行 Agent 的推理、学习和记忆模块。 |
hermes gateway telegram |
启动 Hermes Agent Telegram 消息网关的命令。 | 连接 Agent 到 Telegram Bot API,实现通过 Telegram 的交互。 |
hermes gateway discord |
启动 Hermes Agent Discord 消息网关的命令。 | 连接 Agent 到 Discord Bot API,实现通过 Discord 的交互。 |
nohup |
运行命令时,忽略挂断信号,使程序在用户退出终端后继续运行。 | 在后台持久化运行 Hermes Agent 核心进程和消息网关。 |
ps aux |
显示当前系统所有进程的状态。 | 检查 Hermes Agent 及其网关进程是否正在运行。 |
grep |
文本搜索工具。 | 结合 ps aux 过滤出特定进程信息。 |
tail -f |
实时跟踪文件末尾新增内容。 | 监控 Hermes Agent 和网关的日志输出,便于调试和查看运行状态。 |
@BotFather |
Telegram 官方 Bot,用于创建和管理 Telegram Bot。 | 获取 Telegram Bot 的 API Token。 |
| Discord Developer Portal | Discord 官方开发者平台,用于创建和管理 Discord 应用和 Bot。 | 创建 Discord Bot,获取 Bot Token 和 Client ID,设置权限,生成邀请链接。 |
export |
Bash 命令,用于设置环境变量。 | 临时设置 API Token 等敏感信息,避免直接在命令行中暴露。 |
📝 本期要点回顾
- 消息网关是关键: Hermes Agent 的消息网关是实现远程、持续交互的核心,允许 Agent 在云端运行并通过常用聊天应用(如 Telegram、Discord)与用户互动。
- 云服务器是基础: 为了实现消息网关的持久化运行,将 Hermes Agent 部署在稳定的云服务器上是必不可少的步骤。
- Telegram Bot 配置: 通过
@BotFather创建 Bot,获取 API Token,然后使用hermes gateway telegram --token <TOKEN>启动网关。 - Discord Bot 配置: 通过 Discord 开发者门户创建应用和 Bot,获取 Bot Token 和 Client ID,启用
MESSAGE CONTENT INTENT,邀请 Bot 到服务器,然后使用hermes gateway discord --token <TOKEN> --client-id <CLIENT_ID>启动网关。 - 后台持久化运行: 使用
nohup或其他进程管理工具(如screen/tmux/systemd)确保 Hermes Agent 核心进程和消息网关在 SSH 会话断开后仍能持续运行。 - 安全性与监控: 妥善保管 API Token,定期检查 Agent 和网关的日志,并监控服务器资源,是保障 Agent 稳定运行的重要实践。
🔗 参考资料
- Hermes Agent GitHub 项目: https://github.com/NousResearch/hermes-agent
- Hermes Agent 官方文档: https://hermes-agent.nousresearch.com/docs/
- Telegram Bot API 文档: https://core.telegram.org/bots/api
- Discord Developer Portal: https://discord.com/developers/applications