AI / Automation

2026-05-28 租用 Mac mini M4 配置 Hermes Agent Telegram 网关(港/日/韩/新/美

可在已通过 SSH 构建 iOS 应用的同一台 Mac mini M4 上,将 Hermes Agent 配置为 Telegram 机器人。网关进程(hermes gateway)保存 BotFather 令牌、执行数字用户 ID 白名单,并把聊天消息转发进 Hermes 工具循环——无需常开笔记本,也能在手机上审批 CI 修复或询问架构问题。

披露:MacXCode 在港/日/韩/新/美运营租用 Apple Silicon 云 Mac。Hermes Agent 为第三方 MIT 项目;Telegram 与模型 API 受各自服务商条款约束。本文为运维文档,不构成对任何厂商订阅的背书。

若需 Modal/Daytona 无服务器终端后端与近零算力方案,请参阅Hermes Serverless Modal/Daytona 冬眠指南

租用 Mac mini M4 云 Mac 上的 Hermes Agent Telegram 网关配置

为何在构建机上用 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。租用约 ¥730/月 起(视节点与配置而定)。

Telegram 网关如何协同工作

Hermes 将 CLI 对话hermes TUI)与消息网关hermes gateway)分离。Telegram 配置写入 ~/.hermes/.env(或向导输出),日志位于 ~/.hermes/logs/gateway.log,macOS 上可选 launchd 服务。

组件路径 / 命令作用
安装curl -fsSL …/install.sh | bashPython 3.11 + hermes CLI
模型 / 认证hermes setup模型服务商 API 密钥(自带或 Nous Portal)
Telegram 配置hermes gateway setupBot 令牌 + + TELEGRAM_ALLOWED_USERS
前台测试hermes gateway长轮询 bot,直至 Ctrl+C
系统服务hermes gateway installhermes gateway startmacOS launchd, 登出后仍运行
健康检查hermes doctor, hermes gateway status配置与进程检查

数据流(轮询模式):

  1. 你在 Telegram 中向 bot 发消息。
  2. 网关通过 Telegram Bot API(出站轮询)接收更新。
  3. Hermes agent 在已配置的终端后端(本地、Docker 或 SSH 至同主机)上执行工具。
  4. 回复文本(及可选 MEDIA:/path 附件)经网关返回 Telegram。

重要安全默认值: 上游在 TELEGRAM_ALLOWED_USERS 中使用数字用户 ID,而非 @用户名。任何持有 bot 令牌 者均可冒充该 bot——请将令牌视同 API 密钥,泄露后通过 BotFather /revoke 轮换。

官方参考:Hermes Telegram 文档(BotFather、隐私模式、webhook)。

BotFather 与访问控制

创建 bot

  1. 打开 @BotFather/newbot
  2. 设置显示名(如 Builder Hermes)和以 bot 结尾的用户名。
  3. 复制形如 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 无头部署八步清单

  1. 安装 Hermes — 在租用用户账户(非 root)执行官方 install.sh
  2. 运行 hermes setup — 配置模型服务商;确认 hermes doctor 无报错。
  3. 创建 BotFather 令牌 — 并获取数字用户 ID(见上文)。
  4. 运行 hermes gateway setup — 选择 Telegram;确认 ~/.hermes/.env 含令牌与白名单。
  5. 前台测试hermes gateway,向 bot 发消息,触发无害工具(如 agent 执行 pwd);Ctrl+C 停止。
  6. 安装服务hermes gateway installhermes gateway start(macOS launchd)。
  7. 为守护进程持久化环境 — 确保 ~/.hermes/.env 中的 API 密钥对 launchd 可读(与安装同一用户);若仅后台失败,可参考 OpenClaw launchd PATH 说明
  8. 监控hermes gateway statustail -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 Telegram 能替代 OpenClaw 的 Telegram 绑定吗?+
两者是不同的网关。可用 hermes claw migrate 迁移设置,但在同一主机同时运行两个 bot 会重复占用 RAM 并可能冲突自动化。每个租用主机建议只选一个消息网关。
Telegram 需要公网 URL 吗?+
默认长轮询不需要。Webhook 模式需要 HTTPS 入口(Fly.io、Railway 等)——通常不必在仅 SSH 的 Mac mini 租用上配置。
16 GB M4 能同时跑 Xcode CI 和 Telegram 吗?+
可以,但需串行化重负载任务。在 archive 与网关峰值期间测量 memory_pressure;必要时在大规模 xcodebuild 矩阵期间暂停网关。
Bot 令牌足以保护系统吗?+
不够。令牌控制 bot 身份。工具执行仍遵循 Hermes 工具权限与终端后端范围——锁定 workspace,多租户主机上避免以 root 运行网关。
官方 Telegram 文档在哪里?+

无头 M4 承载 Hermes Telegram 网关

港/日/韩/新/美 SSH 优先 Apple Silicon—Telegram 长轮询与 launchd 可 24/7 运行。