全面的逐步指南,介绍如何部署 Hermes Agent——一个在 VPS 或 Mac Mini 上作为托管服务运行的 Telegram AI 代理,包含完整的可复制代码和配置,以实现始终在线运行。

X AI KOLs 工具

摘要

全面的逐步指南,介绍如何部署 Hermes Agent——一个在 VPS 或 Mac Mini 上作为托管服务运行的 Telegram AI 代理,包含完整的可复制代码和配置,以实现始终在线运行。

https://t.co/mr3KNz7qc7
查看原文
查看缓存全文

缓存时间: 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

X AI KOLs Timeline

本文提供了一份逐步指南,用于安装和配置 Hermes Agent。Hermes Agent 是由 Nous Research 开发的一款开源、具备自我改进能力的 AI 智能体。内容涵盖系统要求、通过终端安装、连接 Telegram 等消息网关,以及与各大大型语言模型(LLM)服务商的集成。