sidebar_position: 4 title: “Tutorial: Team Telegram Assistant” description: “Step-by-step guide to setting up a Telegram bot that your whole team can use for code help, research, system admin, and more”
设置团队专用 Telegram 助手
本教程将指导您搭建一个由 Hermes Agent 驱动的 Telegram 机器人,供团队成员共同使用。完成后,您的团队将拥有一个共享的 AI 助手,他们可以发送消息寻求代码编写、研究、系统管理等方面的帮助——同时通过用户级授权机制保障安全性。
我们要构建什么
这是一个具备以下功能的 Telegram 机器人:
- 任何经过授权的团队成员均可私信寻求帮助——包括代码审查、研究支持、命令行操作、调试等;
- 运行在您的服务器上,并拥有完整的工具访问权限——终端操作、文件编辑、网页搜索、代码执行等;
- 支持用户独立会话——每位用户都有独立的对话上下文;
- 默认安全设置——仅经过审批的用户才能与其交互,并提供两种授权方式;
- 可安排定时任务——每日站会、系统健康检查以及提醒信息均可发送至团队频道。
前提条件
在开始之前,请确保您已具备以下条件:
- 在服务器或 VPS 上安装了 Hermes Agent(请勿安装在笔记本电脑上,因为机器人需要持续运行)。如果您尚未安装,请参考安装指南;
- 拥有一个个人 Telegram 账户(即机器人所有者);
- 已配置好LLM 服务提供商——至少需要在
~/.hermes/.env文件中准备好 OpenAI、Anthropic 或其他受支持提供商的 API 密钥。
第一步:创建 Telegram 机器人
所有 Telegram 机器人都是从 @BotFather 开始的——这是 Telegram 用于创建机器人的官方机器人。
- 打开 Telegram,搜索
@BotFather,或直接访问 t.me/BotFather; - 发送
/newbot命令——BotFather 会询问您两个问题:- 显示名称——即用户看到的名称(例如:
Team Hermes Assistant); - 用户名——必须以
bot结尾(例如:myteam_hermes_bot);
- 显示名称——即用户看到的名称(例如:
- 复制机器人令牌——BotFather 会回复类似如下的内容:
Use this token to access the HTTP API: 7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
请保存此令牌——在下一步操作中会用到它。
- 设置描述(非必需,但建议操作):
/setdescription
选择您的机器人,然后输入类似如下的内容:
Team AI assistant powered by Hermes Agent. DM me for help with code, research, debugging, and more.
- 设置机器人命令(可选——可为用户提供命令菜单):
/setcommands
选择您的机器人,然后粘贴内容:
new - Start a fresh conversation
model - Show or change the AI model
status - Show session info
help - Show available commands
stop - Stop the current task
第 2 步:配置网关
您有两种选择:交互式设置向导(推荐)或手动配置。
方案 A:交互式设置(推荐)
hermes gateway setup
本指南将引导您通过方向键完成所有设置。请选择Telegram,粘贴您的机器人令牌,然后在提示时输入您的用户 ID。
方案 B:手动配置
在 ~/.hermes/.env 文件中添加以下内容:
# Telegram bot token from BotFather
TELEGRAM_BOT_TOKEN=7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
# Your Telegram user ID (numeric)
TELEGRAM_ALLOWED_USERS=123456789
查找您的用户 ID
您的 Telegram 用户 ID 是一个数字值(而非用户名)。查找方法如下:
- 在 Telegram 中发送消息给 @userinfobot
- 该机器人会立即回复您的数字用户 ID
- 将该数字复制到
TELEGRAM_ALLOWED_USERS中
第 3 步:启动网关
快速测试
首先在前台运行网关,以确保所有功能正常运行:
hermes gateway
您应该会看到如下输出:
[Gateway] Starting Hermes Gateway...
[Gateway] Telegram adapter connected
[Gateway] Cron scheduler started (tick every 60s)
打开 Telegram,找到您的机器人并发送消息给它。如果它回复了,那就说明一切正常。按 Ctrl+C 可以停止操作。
生产环境:以服务形式安装
如需实现可在重启后依然保持运行的持久部署:
hermes gateway install
sudo hermes gateway install --system # Linux only: boot-time system service
此操作会创建一个后台服务:默认情况下为 Linux 系统上的用户级 systemd 服务,macOS 上则为 launchd 服务;如果指定了 --system 参数,则会生成 Linux 启动时的系统服务。
# Linux — manage the default user service
hermes gateway start
hermes gateway stop
hermes gateway status
# View live logs
journalctl --user -u hermes-gateway -f
# Keep running after SSH logout
sudo loginctl enable-linger $USER
# Linux servers — explicit system-service commands
sudo hermes gateway start --system
sudo hermes gateway status --system
journalctl -u hermes-gateway -f
# macOS — manage the service
hermes gateway start
hermes gateway stop
tail -f ~/.hermes/logs/gateway.log
验证其运行状态
hermes gateway status
接着,向你在 Telegram 上的机器人发送一条测试消息。你应该会在几秒钟内收到回复。
第 4 步:设置团队访问权限
现在我们来为你的团队成员授予访问权限。共有两种方法。
方法 A:静态白名单
收集每位团队成员的 Telegram 用户 ID(让他们给 @userinfobot 发消息),然后将这些 ID 以逗号分隔的形式列出:
# In ~/.hermes/.env
TELEGRAM_ALLOWED_USERS=123456789,987654321,555555555
完成更改后,请重启网关:
hermes gateway stop && hermes gateway start
方法 B:私信配对(团队推荐)
私信配对方式更为灵活——无需提前收集用户 ID。具体操作步骤如下:
-
团队成员向机器人发送私信——由于这些用户不在允许列表中,机器人会回复一个一次性使用的配对码:
🔐 Pairing code: XKGH5N7P Send this code to the bot owner for approval. -
队友将代码发送给您(可通过任何渠道——Slack、电子邮件或当面传递)。
-
您在服务器上对其进行审批:
hermes pairing approve telegram XKGH5N7P -
已连接——机器人会立即开始回复他们的消息。
管理已配对用户:
# See all pending and approved users
hermes pairing list
# Revoke someone's access
hermes pairing revoke telegram 987654321
# Clear expired pending codes
hermes pairing clear-pending
安全注意事项
- 切勿在具有终端访问权限的机器人上设置
GATEWAY_ALLOW_ALL_USERS=true——任何找到该机器人的人都能在您的服务器上执行命令 - 配对码的有效期为1小时,且生成过程采用加密随机算法
- 通过速率限制可防范暴力攻击:每10分钟每位用户仅可发送1次请求,每个平台最多同时存在3个待处理配对码
- 若审批尝试失败5次,该平台将被锁定1小时
- 所有配对数据均以
chmod 0600权限存储
第5步:配置机器人
设置主频道
主频道是机器人用于发送定时任务结果及主动通知的渠道。如果没有设置主频道,定时任务将无法输出结果。
方案1: 在机器人所属的任意Telegram群组或聊天室中使用 /sethome 命令。
方案2: 在 ~/.hermes/.env 文件中手动设置:
TELEGRAM_HOME_CHANNEL=-1001234567890
TELEGRAM_HOME_CHANNEL_NAME="Team Updates"
若需获取频道 ID,可将 @userinfobot 添加到该群组中——它会告知该群组的聊天 ID。
配置工具进度显示
可控制机器人使用工具时显示的详细程度。在 ~/.hermes/config.yaml 文件中进行设置:
display:
tool_progress: new # off | new | all | verbose
| 模式 | 显示内容 |
|---|---|
off | 仅显示简洁的回复,不展示工具执行过程 |
new | 每次调用新工具时显示简要状态(适用于消息交互场景) |
all | 显示所有工具调用的详细信息 |
verbose | 显示完整的工具输出,包括命令执行结果 |
用户也可以在聊天中通过 /verbose 命令随时更改当前会话的显示模式。
使用 SOUL.md 设置机器人个性
通过编辑 ~/.hermes/SOUL.md 文件可自定义机器人的交流风格:
如需完整指南,请参阅 在 Hermes 中使用 SOUL.md。
# Soul
You are a helpful team assistant. Be concise and technical.
Use code blocks for any code. Skip pleasantries — the team
values directness. When debugging, always ask for error logs
before guessing at solutions.
添加项目上下文
如果您的团队负责特定项目,请创建上下文文件,以便机器人了解您所使用的技术栈:
<!-- ~/.hermes/AGENTS.md -->
# Team Context
- We use Python 3.12 with FastAPI and SQLAlchemy
- Frontend is React with TypeScript
- CI/CD runs on GitHub Actions
- Production deploys to AWS ECS
- Always suggest writing tests for new code
第 6 步:设置定时任务
在网关运行后,您可以安排定期任务,将结果发送至您的团队频道。
每日站会总结
在 Telegram 上向机器人发送消息即可:
Every weekday at 9am, check the GitHub repository at
github.com/myorg/myproject for:
1. Pull requests opened/merged in the last 24 hours
2. Issues created or closed
3. Any CI/CD failures on the main branch
Format as a brief standup-style summary.
该智能体会自动创建定时任务,并将处理结果发送至您指定的聊天窗口(或主频道)。
服务器健康检查
Every 6 hours, check disk usage with 'df -h', memory with 'free -h',
and Docker container status with 'docker ps'. Report anything unusual —
partitions above 80%, containers that have restarted, or high memory usage.
定时任务管理
# From the CLI
hermes cron list # View all scheduled jobs
hermes cron status # Check if scheduler is running
# From Telegram chat
/cron list # View jobs
/cron remove <job_id> # Remove a job
- :::warning 定时任务触发的提示语会在全新的会话中执行,且不会保留任何之前的对话记录。请确保每个提示语都包含智能体所需的所有上下文信息——包括文件路径、URL、服务器地址以及明确的操作指令。
- ::
生产环境使用建议
为保障安全,请使用 Docker
在团队共享机器人上,建议将 Docker 作为终端后端,这样智能体命令便会在容器中运行,而非直接在主机上执行:
# In ~/.hermes/.env
TERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=nikolaik/python-nodejs:python3.11-nodejs20
或者在 ~/.hermes/config.yaml 中:
terminal:
backend: docker
container_cpu: 1
container_memory: 5120
container_persistent: true
这样一来,即便有人要求机器人执行具有破坏性的操作,您的主机系统也能得到保护。
监控网关
# Check if the gateway is running
hermes gateway status
# Watch live logs (Linux)
journalctl --user -u hermes-gateway -f
# Watch live logs (macOS)
tail -f ~/.hermes/logs/gateway.log
保持 Hermes 最新状态
在 Telegram 中,向该机器人发送 /update 命令——它便会自动下载最新版本并重启。或者从服务器端操作:
hermes update
hermes gateway stop && hermes gateway start
日志位置
| 日志类型 | 存储位置 |
|---|---|
| 网关日志 | Linux系统:journalctl --user -u hermes-gateway;macOS系统:~/.hermes/logs/gateway.log |
| Cron任务输出 | ~/.hermes/cron/output/{job_id}/{timestamp}.md |
| Cron任务配置 | ~/.hermes/cron/jobs.json |
| 配对数据 | ~/.hermes/pairing/ |
| 会话历史 | ~/.hermes/sessions/ |
进一步学习
您已经成功搭建了一个可用的团队Telegram助手。以下是更多拓展方向:
- 安全指南 — 深入了解授权机制、容器隔离及命令审批流程
- 消息网关 — 关于网关架构、会话管理及聊天指令的完整参考资料
- Telegram配置 — 包含语音消息和文本转语音功能的平台专属配置指南
- 定时任务 — 支持多种交付选项与复杂cron表达式的进阶调度功能
- 上下文文件 — 用于存储项目相关知识的AGENTS.md、SOUL.md及.cursorrules文件
- 个性设置 — 内置的个性预设选项及自定义角色定义方法
- 支持更多平台 — 同一网关可同时处理Discord、Slack和WhatsApp消息
如有疑问或遇到问题?请在GitHub上创建 issue — 我们欢迎大家的贡献。