全面的逐步指南,介绍如何部署 Hermes Agent——一个在 VPS 或 Mac Mini 上作为托管服务运行的 Telegram AI 代理,包含完整的可复制代码和配置,以实现始终在线运行。
摘要
全面的逐步指南,介绍如何部署 Hermes Agent——一个在 VPS 或 Mac Mini 上作为托管服务运行的 Telegram AI 代理,包含完整的可复制代码和配置,以实现始终在线运行。
查看缓存全文
缓存时间: 2026/06/23 14:35
Hermes 飞行计划 #1:从零到始终在线的 Telegram AI 智能体(完整可复制代码)
你想要一个能从手机发消息的 AI 智能体,一个在你合上笔记本电脑后仍在运行、重启后能自动恢复的智能体?Hermes Agent 做到了这一点:它作为一个网关运行,你可以通过 Telegram 与它交流,一旦正确配置,它会在崩溃或断电后自行重启。
我在两台机器上构建了相同的设置:一台便宜的云 VPS 和我桌上的 Mac Mini,这样我可以毫无遗漏地写出完整流程。这是一条路径。两台机器的区别仅在于两个地方的输入:安装命令和保持网关存活的部分。其余部分完全一致。
以下所有内容均在我自己的硬件上运行。Linux 路径使用的是 Hetzner CX23(x86,2 vCPU,4GB RAM,40GB 磁盘),运行 Ubuntu 24.04.4 LTS;Mac 路径使用的是 Mac Mini M4,运行 macOS 15。两者都运行 Hermes Agent v0.16.0。
最终你将拥有什么
- Hermes Agent 已安装,以普通用户身份运行,而非 root
- 一个你可以从手机发消息的 Telegram 机器人,仅限你的账户使用
- 网关作为托管服务运行,崩溃或重启后自动恢复
- 在 VPS 上,一个加固的服务器:仅密钥 SSH,禁止 root 登录,防火墙已配置
选择你的机器
VPS 是最便宜的入门方式。任何拥有 4GB RAM 和约 20GB 可用磁盘的 x86 机器都能运行;我使用的是 Hetzner CX23,每月 7.79 美元(Hetzner 美国定价,2026-06-18)。租用它,按定义它总是处于开启状态。
另一种选择是你已有的 Mac。任何持续通电的 Apple Silicon Mac 都可以工作,运行成本超出机型本身为零。权衡之处在于 macOS 上的持久性层更繁琐,我将在最后介绍。
你需要在自己机器上有一个 SSH 密钥(如果没有,执行 ssh-keygen -t ed25519),一个 Telegram 账户,以及一个用于智能体的模型。本指南指向 Nous Portal,它使用 OAuth,因此无需在文件中保存 API 密钥。Hermes 需要至少 64k 上下文的模型。
第一步:准备机器
在 VPS 上
在你的提供商处创建服务器:Ubuntu 24.04,x86 实例(非 Arm,见成本说明),并在创建时粘贴你的 SSH 公钥。
一个全新的公共服务器在放置智能体前需要几分钟的加固。本方案中的 secure-box.sh 一次完成:apt 升级、2GB 交换文件、一个非 root 的 sudo 用户(包含你的密钥)、仅密钥 SSH 且禁止 root 登录、以及仅允许 SSH 的防火墙。编辑顶部的两个变量,复制过去,以 root 身份运行:
这个 Ubuntu 镜像默认将 PasswordAuthentication 设置为 yes,尽管我创建机器时使用了 SSH 密钥。脚本会将其关闭。在关闭 root 会话之前,打开第二个终端并确认新用户可以登录,这样错误不会将你锁在外面:
从现在起,你是 hermes,而不是 root。
在 Mac 上
无需加固步骤。这是你自家网络上的机器,不是公共服务器。如果你还没有 Homebrew,请先安装(安装程序在下一步会用到它),然后你就准备好了。
第二步:安装 Hermes
安装命令只有一个,两台机器上相同,以你的普通用户身份运行:
安装程序会检测你的操作系统并拉取自己的工具链(uv、Python 3.11、Node.js 22、ripgrep、ffmpeg、用于浏览器工具的 Playwright Chromium)到 ~/.hermes,因此它永远不会触碰你的系统 Python。在我的 Hetzner 机器上,它安装了 Hermes Agent v0.16.0 和 Python 3.11.15。
这是最重的一步。在 VPS 上,磁盘使用从 1.2GB 增加到 7.8GB,大约 6.6GB,其中大部分是浏览器引擎和 Node。预留 20GB 空间,不要担心。通过普通 SSH 命令运行(无终端),安装程序会打印“Setup wizard skipped (no terminal available)”,这没问题,设置是下一步。
在 Mac 上,相同的命令运行,但有一个曲折:先安装 Homebrew。有了 Homebrew,安装程序会拉取 git 及其依赖而无需提示。没有它,它会回退到 Apple 的命令行工具,这可能会打开一个需要你点击的 macOS 对话框,而对话框在 SSH 下不太好(这是安装程序 macOS 分支中的情况)。之后流程同上。
第三步:指向一个模型
这是针对 Nous Portal 的 OAuth:它会打印一个 URL 和一个代码,你在浏览器中批准,然后机器就可以与模型通信,而无需在文件中存储 API 密钥。Nous Portal 有免费层,我整个都在免费模型上运行。如果你更愿意使用自己的提供商,运行 hermes model 并选择一个;然后密钥会保存在 ~/.hermes/.env 中。
第四步:与它对话
在 VPS 上
一旦你的 SSH 断开,前台会话也会随之消失。tmux 可以保持会话存活:在 tmux 内部启动,分离,它就会继续运行。
按下 Ctrl-b 然后 d 分离,稍后从任何地方重新连接:
交互式智能体的首次启动需要一点时间。我的机器花了大约 30 秒加载模型和技能,然后出现提示。一旦启动,斜杠命令即可使用。
/goal 值得展示:它设置一个持续目标,智能体在多个对话轮次中逐渐完成,每次轮次后由评判模型检查是否完成。
我的智能体自己执行了 shell 命令,并在大约 15 秒内返回了“VPS total RAM: 3.7Gi, free disk space: 28G”。这就是智能体使用自己的工具。
区分两个概念:tmux 在 SSH 连接断开后保持交互式会话运行,但不能在重启后保持。对于需要重启后仍无人值守的网关,你需要一个托管服务,这是第六步。
在 Mac 上
你坐在机器前,因此可以在终端中直接运行 hermes。如果你从笔记本 SSH 进来,tmux 仍然有用,但这里它是可选的。
第五步:Telegram 网关
这一步在两台机器上完全相同。创建一个机器人:在 Telegram 上给 @BotFather 发消息,发送 /newbot,复制 token。从 @userinfobot 获取你的数字用户 ID。然后配置网关:
选择 Telegram,粘贴 token,并将允许的用户设置为你自己的数字 ID,这样只有你能与它通信。token 存入 ~/.hermes/.env,其余存入 ~/.hermes/gateway.json。
setup 只写入配置,不启动任何东西,因此机器人保持静默,这会让很多人困惑:还没有任何东西在轮询 Telegram。先在前台启动一次,检查是否能连接:
你应该在日志中看到:
“polling mode”意味着网关主动连接 Telegram;没有任何东西连接到你的机器,这就是为什么防火墙除了 SSH 外不需要任何入站端口。给机器人发消息;它应该回复。然后按 Ctrl-C 停止前台网关,因为你不能让两个东西同时轮询同一个 token,下一步将把它作为服务运行。
第六步:让它能抵御重启
这是两台机器唯一的区别点。
在 VPS 上:systemd
hermes gateway install 将网关注册为 systemd 服务,这样它能在崩溃时重启,并在重启后自动恢复。在这个版本中,安装程序会问两个 [Y/n] 问题,没有标志可以跳过它们。通过非交互式 SSH 命令运行(配置机器时的自然做法),它得不到回答,就会中止并什么都不安装。通过标准输入提供答案:
两个问题是“立即启动网关?”和“在登录/启动时自动启动?”。n 然后 Y 的意思是:现在不要启动,但在启动时启用它。安装程序还会启用用户会话滞留(user-session lingering),这允许用户服务在你登录之前运行。确认这一点,因为这是“抵御重启”为真而不仅仅是“抵御注销”的关键:
启动它并检查:
你应该看到 active (running) 和 NRestarts=0。在我的机器上,网关使用了约 280MB,整个机器约 556MB,4GB 内存很舒适。
现在进行真正的测试。重启,不要碰它:
我的机器在大约 15 秒内恢复,网关自动启动,重新连接到 Telegram,并回答了下一条消息,重启前的对话历史完整保留。这就是全部意义所在。
在 Mac 上:launchd 和看门狗
macOS 使用 launchd 而不是 systemd,这里有一个陷阱。在 macOS 15 和 Hermes v0.16.0 上,hermes gateway start 可能无法注册 launchd 服务,并在不通知你的情况下回退到无人监管的后台进程。你会看到:
如果你之前有一个工作的 launchd 任务,该命令会卸载它,而回退方式在第一次崩溃或重启之前都能正常工作,然后你的智能体就会消失,没有任何通知。原始 launchctl 在 CLI 失败时仍能工作,包括通过 SSH:
plist 在登录时启动网关,但不会在崩溃时重启它。cron 看门狗同时弥补了两个缺口,并且 cron 在启动时运行,无需登录。本方案附带了 gateway-watchdog.sh;它每 5 分钟检查网关进程是否存活,如果没有则重新启动它。安装到计划任务中:
我亲眼看到这个序列在我自己的 Mac Mini 上恢复了一个降级的网关。重启它,确认网关在 5 分钟内恢复,无需登录。
验证你的设置
- 服务已启动:Linux 上
systemctl --user status hermes-gateway(active (running)),或 macOS 上launchctl print gui/$(id -u)/ai.hermes.gateway | grep state(state = running) - 给机器人发消息:它能回复你,并忽略不在你允许用户列表中的任何人
- Linux 上
loginctl show-user $USER -p Linger显示Linger=yes - 重启机器,等待,再次给机器人发消息而不重新登录:它能回复
成本
在 VPS 上,机器是唯一的花费。我的 Hetzner CX23 每小时 $0.012,每月上限 $7.79(Hetzner 美国定价,2026-06-18;欧盟 CX22 配置相同,更便宜)。
在 Mac 上,这是你已经拥有的机器,没有额外服务。两种情况下的模型都使用 Nous Portal 的免费层。
这里,内存不是限制:网关用了约 280MB,整个机器约 556MB,因此 1GB RAM 就足够了。磁盘才是真正的限制:安装约 6.6GB,所以 1GB 或 10GB 的镜像会紧张,给它 20GB。并且使用 x86,这是安全的选择。
自己运行,以及下一步
两台机器都有完整的方案和可直接运行的脚本:
- VPS 路径:cheap-vps
- Mac 路径:mac-mini-24-7
你现在拥有了一个始终在线的 Telegram 智能体,能够抵御重启。
下一个飞行计划将在此基础上构建:定时任务只在重要时给你发消息、智能体可以读写 git 同步的工作空间,以及草稿-审批流程,确保每个公共操作都有人的参与。
感谢阅读。
相似文章
@KanikaBK: https://x.com/KanikaBK/status/2053845110048293272
本文提供了一份逐步指南,用于安装和配置 Hermes Agent。Hermes Agent 是由 Nous Research 开发的一款开源、具备自我改进能力的 AI 智能体。内容涵盖系统要求、通过终端安装、连接 Telegram 等消息网关,以及与各大大型语言模型(LLM)服务商的集成。
@zaimiri: https://x.com/zaimiri/status/2066117404392890835
一份详细的7天指南,教你搭建Hermes AI代理,涵盖身份、记忆、工具和Telegram集成。
@IBuzovskyi: https://x.com/IBuzovskyi/status/2062101068842975409
一份详细指南,介绍10个技巧,将Hermes Agent从聊天界面转变为24/7自动化系统,涵盖cron作业、事件触发器等,每周可节省数小时。
@witcheer:顺便提一下,对于想要设置完美的 @NousResearch Hermes Agent 的人:(a)将你最强大的 LLM 指向 ht…
一份关于设置和使用 NousResearch Hermes Agent 的指南,这是一个用于创建和管理自主 AI 代理的 CLI 工具,包括后台会话、上下文压缩和会话存储。
@itsolelehmann: https://x.com/itsolelehmann/status/2056343273023688989
一份关于通过集成12种工具(如Firecrawl、Reddit和Stripe)将Hermes转变为超级代理的指南,涵盖研究、行动、工作空间和记忆功能。