2026-05-28 租用 Mac mini M4 設定 Hermes Agent Telegram 閘道(港/日/韓/新/美)
可在已透過 SSH 構建 iOS 應用的同一台 Mac mini M4 上,將 Hermes Agent 設定為 Telegram 機器人。閘道程序(hermes gateway)保存 BotFather 令牌、執行數位使用者 ID 白名單,並把聊天訊息轉發進 Hermes 工具迴圈——無需常開筆電,也能在手機上審批 CI 修復或詢問架構問題。
若需 Modal/Daytona 無伺服器終端後端與近零算力方案,請參閱Hermes Serverless Modal/Daytona 冬眠指南。
為何在構建機上使用 Telegram
Telegram 適合無頭租用主機:閘道預設使用出站長輪詢,由 Mac 主動發起對 Telegram API 的 HTTPS 連線,無需在共享構建機上暴露入站連接埠(與需要公網 HTTPS 入口的 webhook 模式相對)。
團隊在租用主機上為 Hermes 接入 Telegram 的常見原因:
- 值班排障——GitHub Actions 或
xcodebuild夜間失敗時,在手機上回覆,由 agent 在 NVMe 上讀取日誌。 - 職責分離——用 OpenClaw 做儲存庫自動化、Hermes 做個人/運維聊天;僅當你接受兩個閘道程序(RAM 與令牌隔離)時再並行。
- 從 OpenClaw 訊息能力遷移——上游 README 記載
hermes claw migrate;在同一台 16 GB 主機上同時跑兩個閘道前,請先閱讀我們的 Hermes 對比 OpenClaw 與 OpenHuman 選型矩陣。
Apple Mac mini 規格 為 16–24 GB 統一記憶體。在疊加 Xcode 並行測試前,請為 hermes gateway 與模型工作集預留約 1–2 GB。港/日/韓/新/美及台灣節點出口頻寬可穩定承載 Telegram 輪詢;勿將 bot token 提交到 git。
Telegram 閘道如何協同工作
Hermes 將 CLI 對話(hermes TUI)與訊息閘道(hermes gateway)分離。Telegram 設定寫入 ~/.hermes/.env(或精靈輸出),日誌位於 ~/.hermes/logs/gateway.log,macOS 上可選 launchd 服務。
| 元件 | 路徑 / 命令 | 作用 |
|---|---|---|
| 安裝 | curl -fsSL …/install.sh | bash | Python 3.11 + hermes CLI |
| 模型 / 認證 | hermes setup | 模型服務商 API 金鑰(自備或 Nous Portal) |
| Telegram 設定 | hermes gateway setup | Bot 令牌 + + TELEGRAM_ALLOWED_USERS |
| 前台測試 | hermes gateway | 長輪詢 bot,直至 Ctrl+C |
| 系統服務 | hermes gateway install → hermes gateway start | macOS launchd, 登出後仍執行 |
| 健康檢查 | hermes doctor, hermes gateway status | 設定與程序檢查 |
資料流(輪詢模式):
- 你在 Telegram 中向 bot 發訊息。
- 閘道透過 Telegram Bot API(出站輪詢)接收更新。
- Hermes agent 在已設定的終端後端(本地、Docker 或 SSH 至同主機)上執行工具。
- 回覆文字(及可選
MEDIA:/path附件)經閘道返回 Telegram。
重要安全預設值: 上游在 TELEGRAM_ALLOWED_USERS 中使用數位使用者 ID,而非 @使用者名稱。任何持有 bot 令牌 者均可冒充該 bot——請將令牌視同 API 金鑰,洩露後透過 BotFather /revoke 輪換。
官方參考:Hermes Telegram 文件(BotFather、隱私模式、webhook)。
BotFather 與存取控制
建立 bot
- 開啟 @BotFather →
/newbot。 - 設定顯示名(如
Builder Hermes)和以bot結尾的使用者名稱。 - 複製形如
123456789:ABCdefGHIjklMNOpqrs…的令牌——存入密碼管理器,勿寫入 git。
將使用者 ID 加入白名單
向 @userinfobot 發訊息取得數位 ID(如 123456789)。設定 TELEGRAM_ALLOWED_USERS 後,Hermes 會拒絕陌生人。
共享租用主機上的可選加固:
- 僅單使用者白名單——在理解工具作用域前勿使用萬用「團隊」 ID。
- 環境隔離 bot(預發 vs 生產租用)——避免預發令牌洩露影響生產 workspace。
- 在驗證私聊行為前停用群組存取。
為 Telegram 設定 Hermes
互動式(推薦)
hermes setup # 全新安裝時先設定模型服務商
hermes gateway setup # 選擇 Telegram → 貼上令牌 → 填寫允許的使用者 ID
手動編輯 ~/.hermes/.env
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ
TELEGRAM_ALLOWED_USERS=123456789
# 可選團隊: TELEGRAM_ALLOWED_USERS=111111111,222222222
確認檔案權限為 600,且勿同步到不可信的 dotfile 備份。
前台冒煙測試:
hermes gateway
在 Telegram 傳送 hello,數秒內應收到回覆。安裝 launchd 前用 Ctrl+C 停止。
Mac mini M4 無頭部署八步清單
- 安裝 Hermes — 在租用使用者帳戶(非 root)執行官方 install.sh。
- 執行 hermes setup — 設定模型服務商;確認
hermes doctor無報錯。 - 建立 BotFather 令牌 — 並取得數位使用者 ID(見上文)。
- 執行 hermes gateway setup — 選擇 Telegram;確認
~/.hermes/.env含令牌與白名單。 - 前台測試 —
hermes gateway,向 bot 發訊息,觸發無害工具(如 agent 執行pwd);Ctrl+C 停止。 - 安裝服務 —
hermes gateway install後hermes gateway start(macOS launchd)。 - 為守護程序持久化環境 — 確保
~/.hermes/.env中的 API 金鑰對 launchd 可讀(與安裝同一使用者);若僅背景失敗,可參考 OpenClaw launchd PATH 說明。 - 監控 —
hermes gateway status、tail -f ~/.hermes/logs/gateway.log,設定變更後用 Telegram/new重置異常工作階段。
可引用運維規則:一個閘道程序可服務多平台(Telegram、Discord、Slack 等)——無需為每個聊天應用單獨起守護程序。
launchd 與僅 SSH 租用
在 macOS 租用上,hermes gateway install 會註冊使用者級 launchd 任務——與本站介紹的 OpenClaw openclaw onboard --install-daemon 模式類似。
hermes gateway install
hermes gateway start
hermes gateway status
tail -f ~/.hermes/logs/gateway.log
SSH 斷開後,閘道應在執行 install 的同一 Unix 使用者下保持執行。若任務停止,請檢查:
launchctl list | grep -i hermes- 日誌中是否有
TELEGRAM_BOT_TOKEN/ 認證錯誤 - 租用策略是否在登出時終止長時間使用者 agent(專用 M4 少見;共享 shell 較常見)
Docker 後端說明: 若 terminal.backend: docker,經 MEDIA:/path 傳送的檔案須存在於閘道可讀的主機路徑——不能僅在容器內。請按上游 telegram.md 掛載主機可見卷。
群組聊天(可選)
Telegram 隱私模式 預設開啟——群內 bot 通常僅見 /commands、回覆 bot 的訊息或管理員可見流量。要擴大上下文,在 BotFather 關閉隱私(Bot Settings → Group Privacy → Turn off),並對每個群移除後重新加入 bot,或將 bot 設為群管理員。
若需「觀察但不 @ 不回覆」,上游提供 TELEGRAM_OBSERVE_UNMENTIONED_GROUP_MESSAGES 與允許的 chat ID——請先閱讀 telegram.md 群組章節。
故障排查
症狀:bot 無回覆(輪詢靜默)
| 檢查項 | 命令 / 修復 |
|---|---|
| 閘道是否在執行? | hermes gateway status; 重啟 hermes gateway start |
| 令牌是否有效? | 從 BotFather 重新貼上;若洩露則 /revoke 舊令牌 |
| 使用者未在白名單? | 將數位 ID 加入 TELEGRAM_ALLOWED_USERS 並重啟閘道 |
| 模型/認證失敗? | hermes doctor; 先本地測試 hermes CLI |
| 日誌 | grep -i error ~/.hermes/logs/gateway.log | tail -20 |
症狀:401 Unauthorized 或 Conflict: terminated by other getUpdates
- 401: 錯誤的或已撤銷的
TELEGRAM_BOT_TOKEN。 - Conflict: 兩個程序輪詢同一 bot——停止重複的前台
hermes gateway或第二台使用同一令牌的主機。
hermes gateway stop
pkill -f "hermes gateway" 2>/dev/null || true
hermes gateway start
症狀:前台正常、launchd 下失敗
- launchd 環境變數極少——確認
~/.hermes/.env可讀且含服務商金鑰。 - 對比 SSH 與
launchctl print gui/$(id -u)的PATH(macOS);若外掛呼叫 shell,對齊 Node 等路徑。
症狀:群內僅見 /commands
- BotFather 隱私模式仍為 ON——關閉或設 bot 為管理員;重新將 bot 加入群組。
常見問題
hermes claw migrate 遷移設定,但在同一主機同時執行兩個 bot 會重複占用 RAM 並可能衝突自動化。每個租用主機建議只選一個訊息閘道。memory_pressure;必要時在大規模 xcodebuild 矩陣期間暫停閘道。無頭 M4 承載 Hermes Telegram 閘道
港/日/韓/新/美 SSH 優先 Apple Silicon—Telegram 長輪詢與 launchd 可 24/7 執行。