設定團隊 Telegram 助手
本教學將引導你設定一個由 Hermes Agent 驅動的 Telegram 機器人,供多位團隊成員使用。完成後,你的團隊將擁有一個共享的 AI 助手,可以訊息它尋求程式碼、研究、系統管理等方面的幫助——並透過每用戶授權確保安全。
我們正在建構什麼
一個 Telegram 機器人:
- 任何已授權的團隊成員都可以私訊它尋求幫助——程式碼審查、研究、Shell 命令、除錯
- 在你的伺服器上運行,具有完整的工具存取權限——終端、檔案編輯、網路搜尋、程式碼執行
- 每用戶會話——每個人都有自己的對話上下文
- 預設安全——只有經過核准的用戶才能互動,提供兩種授權方式
- 排程任務——每日站會、健康檢查和提醒發送到團隊頻道
前置條件
開始之前,請確保你已具備:
- Hermes Agent 已安裝在伺服器或 VPS 上(不是你的筆記型電腦——機器人需要持續運行)。如果你尚未安裝,請遵循安裝指南。
- 一個 Telegram 帳號用於你自己(機器人擁有者)
- 已設定一個 LLM 供應商——至少在
~/.hermes/.env中配置了 OpenAI、Anthropic 或其他支援的供應商的 API 金鑰
提示
每月 $5 的 VPS 就足以運行閘道。Hermes 本身很輕量——LLM API 呼叫才是花錢的部分,而這些是遠端發生的。
步驟 1:建立 Telegram 機器人
每個 Telegram 機器人都從 @BotFather 開始——Telegram 用於建立機器人的官方機器人。
-
開啟 Telegram 並搜尋
@BotFather,或前往 t.me/BotFather -
傳送
/newbot— BotFather 會問你兩件事:- 顯示名稱 — 用戶看到的名稱(例如
Team Hermes Assistant) - 使用者名稱 — 必須以
bot結尾(例如myteam_hermes_bot)
- 顯示名稱 — 用戶看到的名稱(例如
-
複製機器人 token — BotFather 會回覆類似這樣的內容:
Use this token to access the HTTP API: 7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...儲存此 token——你將在下一步中使用它。
-
設定描述(可選但建議):
/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
警告
保持你的機器人 token 機密。任何擁有 token 的人都可以控制機器人。如果它洩露了,請在 BotFather 中使用
/revoke來產生一個新的。
步驟 2:設定閘道
你有兩個選擇:互動式設定精靈(推薦)或手動設定。
選項 A:互動式設定(推薦)
hermes gateway setup
這會透過方向鍵選擇引導你完成所有設定。選擇 Telegram,貼上你的機器人 token,並在提示時輸入你的用戶 ID。
選項 B:手動設定
在 ~/.hermes/.env 中新增以下行:
# 來自 BotFather 的 Telegram 機器人 token
TELEGRAM_BOT_TOKEN=7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
# 你的 Telegram 用戶 ID(數字)
TELEGRAM_ALLOWED_USERS=123456789
尋找你的用戶 ID
你的 Telegram 用戶 ID 是一個數值(不是你的使用者名稱)。要找到它:
- 在 Telegram 上訊息 @userinfobot
- 它會立即回覆你的數字用戶 ID
- 複製該數字到
TELEGRAM_ALLOWED_USERS
資訊
Telegram 用戶 ID 是永久的數字,如
123456789。它們與你的@username不同,後者可以更改。始終使用數字 ID 作為白名單。
步驟 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:開機時啟動的系統服務
這會建立一個背景服務:Linux 上預設是使用者層級的 systemd 服務,macOS 上是 launchd 服務,或如果你傳入 --system 則是開機時啟動的 Linux 系統服務。
# Linux — 管理預設使用者服務
hermes gateway start
hermes gateway stop
hermes gateway status
# 查看即時日誌
journalctl --user -u hermes-gateway -f
# SSH 登出後保持運行
sudo loginctl enable-linger $USER
# Linux 伺服器 — 明確的系統服務命令
sudo hermes gateway start --system
sudo hermes gateway status --system
journalctl -u hermes-gateway -f
# macOS — 管理服務
hermes gateway start
hermes gateway stop
tail -f ~/.hermes/logs/gateway.log
提示 — macOS PATH
launchd plist 會在安裝時捕獲你的 shell PATH,以便閘道子進程可以找到 Node.js 和 ffmpeg 等工具。如果你之後安裝了新工具,請重新執行
hermes gateway install來更新 plist。
驗證是否正在運行
hermes gateway status
然後在 Telegram 上向你的機器人傳送測試訊息。你應該在幾秒鐘內收到回應。
步驟 4:設定團隊存取
現在讓你的團隊成員獲得存取權限。有兩種方法。
方法 A:靜態白名單
收集每位團隊成員的 Telegram 用戶 ID(讓他們訊息 @userinfobot)並以逗號分隔的列表新增他們:
# 在 ~/.hermes/.env 中
TELEGRAM_ALLOWED_USERS=123456789,987654321,555555555
變更後重啟閘道:
hermes gateway stop && hermes gateway start
方法 B:DM 配對(推薦用於團隊)
DM 配對更靈活——你不需要事先收集用戶 ID。以下是它的工作原理:
-
團隊成員私訊機器人 — 由於他們不在白名單中,機器人會回覆一個一次性配對碼:
🔐 Pairing code: XKGH5N7P Send this code to the bot owner for approval. -
團隊成員將代碼傳送給你(透過任何管道——Slack、Email、面對面)
-
你在伺服器上核准它:
hermes pairing approve telegram XKGH5N7P -
他們就加入了 — 機器人立即開始回應他們的訊息
管理已配對的用戶:
# 查看所有待核准和已核准的用戶
hermes pairing list
# 撤銷某人的存取權限
hermes pairing revoke telegram 987654321
# 清除過期的待配對碼
hermes pairing clear-pending
提示
DM 配對非常適合團隊,因為你不需要在新增用戶時重啟閘道。核准會立即生效。
安全考量
- 永遠不要在具有終端存取權限的機器人上設定
GATEWAY_ALLOW_ALL_USERS=true— 任何找到你機器人的人都可以在你的伺服器上執行命令 - 配對碼在 1 小時後過期,並使用加密隨機性
- 速率限制防止暴力攻擊:每用戶每 10 分鐘 1 個請求,每個平台最多 3 個待配對碼
- 5 次核准嘗試失敗後,平台會進入 1 小時鎖定
- 所有配對資料以
chmod 0600權限儲存
步驟 5:設定機器人
設定主頻道
主頻道是機器人投遞 cron 任務結果和主動訊息的地方。沒有主頻道,排程任務就沒有地方發送輸出。
選項 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
資訊
上下文檔案會注入到每個會話的系統提示中。保持它們簡潔——每個字元都會影響你的 token 預算。
步驟 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.
代理會自動建立一個 cron 任務,並將結果投遞到你提問的聊天(或主頻道)。
伺服器健康檢查
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.
管理排程任務
# 從 CLI
hermes cron list # 查看所有排程任務
hermes cron status # 檢查排程器是否正在運行
# 從 Telegram 聊天
/cron list # 查看任務
/cron remove <job_id> # 移除任務
警告
Cron 任務提示在完全新鮮的會話中運行,沒有先前對話的記憶。確保每個提示包含代理所需的所有上下文——檔案路徑、URL、伺服器位址和明確的指示。
生產環境提示
使用 Docker 確保安全
在共享的團隊機器人上,使用 Docker 作為終端後端,以便代理命令在容器中運行而非在你的主機上:
# 在 ~/.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
這樣,即使有人要求機器人執行某些破壞性操作,你的主機系統也能受到保護。
監控閘道
# 檢查閘道是否正在運行
hermes gateway status
# 查看即時日誌(Linux)
journalctl --user -u hermes-gateway -f
# 查看即時日誌(macOS)
tail -f ~/.hermes/logs/gateway.log
保持 Hermes 更新
從 Telegram 向機器人傳送 /update——它會拉取最新版本並重啟。或從伺服器:
hermes update
hermes gateway stop && hermes gateway start
日誌位置
| 內容 | 位置 |
|---|---|
| 閘道日誌 | journalctl --user -u hermes-gateway(Linux)或 ~/.hermes/logs/gateway.log(macOS) |
| Cron 任務輸出 | ~/.hermes/cron/output/{job_id}/{timestamp}.md |
| Cron 任務定義 | ~/.hermes/cron/jobs.json |
| 配對資料 | ~/.hermes/pairing/ |
| 會話歷史 | ~/.hermes/sessions/ |
進一步了解
你已經擁有了一個可以運作的團隊 Telegram 助手。以下是一些下一步:
- 安全指南 — 深入了解授權、容器隔離和命令核准
- 訊息閘道 — 閘道架構、會話管理和聊天命令的完整參考
- Telegram 設定 — 平台特定的細節,包括語音訊息和 TTS
- 排程任務 — 進階的 cron 排程、投遞選項和 cron 表達式
- 上下文檔案 — AGENTS.md、SOUL.md 和 .cursorrules 用於專案知識
- 個性 — 內建個性預設和自訂角色定義
- 新增更多平台 — 同一個閘道可以同時運行 Discord、Slack 和 WhatsApp
有問題或錯誤?請在 GitHub 上開一個 issue——歡迎貢獻。