在VPS上自托管Hermes Agent
在自己的VPS上部署Nous Research的Hermes Agent。创建隔离用户,一条命令安装,选择LLM提供商,接入Telegram,作为systemd服务运行。
2026年8月更新,适用于Hermes Agent v0.20。
Hermes Agent是一个迭代非常快的项目。自2026年2月发布以来,Nous Research保持着几乎每周一个版本的节奏;v0.20.4于2026年8月18日发布。仅v0.18之后的这两个月,就带来了:支持端侧唤醒词的实时语音对话、智能体之间的通信(A2A v1.0)、带签名的出站webhook(让智能体把事件推送到你自己的系统)、可核查引用的溯源研究、Bot Mode(一组各自命名的机器人,每个都有自己的记忆、技能和模型),以及一个新增了artifacts和插件SDK的桌面应用。这个项目在短短几个月内从“有趣的实验”变成了“生产级个人智能体”。
在笔记本电脑上运行适合快速实验。但一个合上盖子就休眠、只能从键盘访问、重启后丢失工作区的智能体长期来看并不实用。VPS解决了这三个问题:智能体7x24小时在线,你可以用手机通过它支持的24+个消息平台中的任何一个与它交流,它的记忆和技能在会话间持久保存。
正在从OpenClaw迁移?请阅读我们客观的Hermes Agent与OpenClaw对比。需要按套餐选择服务器规格,请参考Hermes Agent VPS配置指南。
配置过程很简单。启动一台虚拟机,创建非root用户进行隔离,安装Hermes,选择模型和网关,然后用systemd服务封装整个流程。这就是全部步骤。
为什么现在要自托管?供应商锁定的教训
2026年4月4日,Anthropic切断了第三方AI智能体对Claude Pro和Max订阅的访问权限。在此之前,OpenClaw等工具允许你以固定月费运行繁重的智能体工作负载。一夜之间,这些用户收到了400错误和迁移通知。仅剩的选项:切换到按token计费的API(对重度用户来说可能贵10倍),购买企业级使用套餐,或迁移到Anthropic自己的Claude Code Channels——一个与OpenClaw直接竞争的官方产品,同月上线。
规律很明显。将你的工作流构建在单一供应商的平台上,一次策略变更就能摧毁一切。像Hermes这样的自托管智能体完全避开了这个陷阱。Hermes不绑定任何供应商:它开箱即支持15+推理后端,从OpenRouter到Nous Portal再到本地Ollama服务器。如果某个供应商更改条款或定价,你用一条命令替换它,继续工作。你的记忆、技能和会话留在你的服务器上,与背后使用哪个LLM无关。
什么是Hermes Agent,为什么要自托管?
Hermes Agent是由Nous Research开发的开源(MIT许可证)AI智能体。它连接LLM提供商,执行终端命令,浏览网页,并在会话间记住所学内容。它能从完成的任务中构建可复用的技能,支持24+个消息网关:Telegram、Discord、Slack、WhatsApp、Signal、Matrix、iMessage(通过BlueBubbles)、Microsoft Teams、Google Chat、LINE、WeChat、WeCom、QQ机器人、Email、SMS、DingTalk、飞书、Mattermost、Home Assistant、ntfy、SimpleX、Open WebUI、Webhooks等。
自托管意味着你的提示词和数据留在你的服务器上。没有第三方智能体平台能看到你的对话。智能体持续运行,随时间积累上下文,成本仅为VPS托管费加上你实际使用的LLM API调用费。
选Hermes Cloud还是自己的VPS?
自2026年7月起有了官方的托管方案:Hermes Cloud,属于Nous Portal的一部分。你选好模型和服务器规格,实例大约一分钟就能跑起来,空闲时自动缩容,费用从支付模型和工具的同一个Portal额度里扣。想先接触一下Hermes,或者把一个智能体交给不懂技术的同事,这是最短的路径。
这篇指南依然有存在的意义,因为托管方案恰恰放弃了自托管一开始就吸引人的那几点:
- 数据始终是你的。 在VPS上,提示词、记忆、学到的技能和API密钥都放在你自己掌控的磁盘上。托管实例把这些连同你的模型开销一起,装进了某一家供应商的账户里。
- 提供商自由。 Hermes Cloud用的是Portal额度。自托管的智能体可以对接任何后端:OpenRouter、Anthropic、本地的Ollama服务器,或者你更喜欢的Nous Portal本身。上文关于供应商锁定的教训,对智能体托管同样成立。
- 一整台服务器,而不只是一个智能体。 你的VPS上还跑着智能体要打交道的定时任务、数据库和反向代理。智能体待在真实的工作负载旁边,而不是独自待在沙箱里,同一台机器还能承载你需要的其他任何东西。
- 受限于硬件,而不是套餐。 托管规格按档位限制并发会话数。在你自己的服务器上,上限是你租下的内存和CPU,升级只是扩容,而不是换套餐。
两个方向都不会把你锁死:Hermes把全部状态存在一个目录里,内置的备份和导入命令能在几分钟内把智能体迁到另一台服务器。本指南接下来讲的是VPS这条路。
Hermes Agent在VPS上运行需要什么?
一台安装了Git的Linux服务器。这是唯一的前提条件。安装程序会自动拉取Python 3.11+、Node.js v22、ripgrep和ffmpeg。硬件方面:2 GB内存和10 GB磁盘是最低配置。如果你计划运行多个网关会话、多个Bot Mode机器人,或同时使用Web仪表盘,4 GB内存更好。
| 需求 | 最低配置 | 推荐配置 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 / Debian 12 | Ubuntu 24.04 |
| 内存 | 2 GB | 4 GB+ |
| 磁盘 | 10 GB可用空间 | 20 GB+ |
| CPU | 1 vCPU | 2+ vCPU |
前提条件
安装Hermes Agent之前,先设置一个非root用户和基本防火墙。如果你已经有一台安全配置好的VPS,可以直接跳到安装部分。
创建专用用户
以root身份SSH登录服务器,为Hermes创建用户:
adduser hermes --disabled-password --gecos ""
usermod -aG sudo hermes
为该用户配置免密码sudo(服务管理需要):
echo "hermes ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/hermes
chmod 440 /etc/sudoers.d/hermes
复制SSH密钥以便使用该用户登录:
mkdir -p /home/hermes/.ssh
cp ~/.ssh/authorized_keys /home/hermes/.ssh/
chown -R hermes:hermes /home/hermes/.ssh
chmod 700 /home/hermes/.ssh
chmod 600 /home/hermes/.ssh/authorized_keys
之后以hermes用户身份操作:
su - hermes
配置防火墙
安装UFW并仅允许SSH:
sudo apt-get install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw --force enable
检查当前规则:
sudo ufw status verbose
输出应显示SSH已允许,其他所有入站流量被拒绝。Hermes网关通过出站连接访问Telegram API,因此无需开放任何入站端口用于消息传递。
如何在Ubuntu上安装Hermes Agent?
一条命令。以hermes用户身份运行,不要用root。
一键安装
Virtua.Cloud维护了一个一键安装脚本,可以一步完成Hermes Agent的安装和systemd持久化配置:
curl -fsSL https://virtua.sh/i/hermes-ssh | bash
该脚本处理了以下章节中涵盖的所有内容:安装Hermes并创建systemd服务。完成后,直接跳到配置LLM提供商。
更喜欢用容器?同样的配置也能在Docker里跑:参见在VPS上用Docker Compose运行Hermes Agent。
手动安装
如果你更喜欢逐步安装,下载上游安装脚本并在运行前查看:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh -o /tmp/hermes-install.sh
less /tmp/hermes-install.sh
该脚本通过uv安装Python 3.11+、Node.js v22、ripgrep、ffmpeg和hermes CLI。确认无误后:
bash /tmp/hermes-install.sh
重新加载shell以识别新的hermes命令:
source ~/.bashrc
检查已安装的版本:
hermes --version
预期输出:
Hermes Agent v0.20.4 (2026.8.18)
Project: /home/hermes/.hermes/hermes-agent
Python: 3.11.15
...
运行诊断工具检查缺失的依赖:
hermes doctor
查看绿色对勾标记。此阶段关于未配置API密钥的警告是正常的。如果Python或Git出现红色标记,需要在继续之前修复。
如何配置LLM提供商?
Hermes Agent不包含模型。你需要连接提供商API并按token付费。最快的配置方式是设置向导:
hermes setup
向导会引导你选择提供商、输入API密钥、启用工具并配置网关,全部在一个交互式会话中完成。如果你更喜欢逐项手动配置,请继续阅读。你也可以随时用hermes model切换提供商。
选项1:OpenRouter(入门推荐)
在openrouter.ai创建账户并生成API密钥。
安装程序已创建了包含完整模板的~/.hermes/.env。首先锁定权限:
chmod 600 ~/.hermes/.env
打开文件,在OPENROUTER_API_KEY=行设置你的API密钥:
nano ~/.hermes/.env
找到OPENROUTER_API_KEY=行,在=号后添加你的密钥。保存并退出(Ctrl+X,然后Y,然后Enter)。
设置默认模型:
hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4
确认文件对其他用户不可读:
ls -la ~/.hermes/.env
权限应显示-rw-------(600)。只有hermes用户可以读取此文件。
选项2:Nous Portal
Nous Research运营自己的推理平台,提供300+模型,外加一个Tool Gateway,在同一份订阅下涵盖网页搜索、图像生成、文本转语音和云端浏览器。一条命令就能把这些全部接上:
hermes setup --portal
这条命令会通过OAuth登录,把Nous设为你的提供商,并启用Tool Gateway。随时可以用hermes portal info查看当前接入了哪些能力。你仍然可以为单个工具使用自己的密钥;网关是按后端逐项配置的,不是全有或全无。
选项3:自定义OpenAI兼容端点
如果你运行自己的推理服务器(Ollama、vLLM、llama.cpp)或使用其他提供商:
echo 'OPENAI_BASE_URL=http://localhost:11434/v1' >> ~/.hermes/.env
echo 'OPENAI_API_KEY=ollama' >> ~/.hermes/.env
echo 'LLM_MODEL=llama3.1:70b' >> ~/.hermes/.env
在同一台服务器上跑模型本身就是另一个话题(GPU规格、量化、混合方案):参见Hermes Agent搭配Ollama:完全本地的AI智能体。
LLM提供商对比
| 提供商 | 环境变量 | 计费模式 | 备注 |
|---|---|---|---|
| OpenRouter | OPENROUTER_API_KEY |
按token计费,因模型而异(查看定价) | 200+模型,单一密钥 |
| Nous Portal | 通过hermes setup --portal |
按token计费(查看定价) | 300+模型,含Tool Gateway |
| Anthropic | ANTHROPIC_API_KEY |
按token计费(查看定价) | 直接访问Claude |
| Google AI Studio | GOOGLE_API_KEY |
按token计费(查看定价) | Gemini模型,v0.8.0起原生支持 |
| xAI (Grok) | XAI_API_KEY |
按token计费(查看定价) | Grok模型,v0.9.0起原生支持 |
| Hugging Face | HF_TOKEN |
按token计费(查看定价) | 完整模型套件 |
| Ollama(本地) | OPENAI_BASE_URL + OPENAI_API_KEY |
免费(自托管) | 需要GPU VPS以获得良好速度 |
| vLLM | OPENAI_BASE_URL + OPENAI_API_KEY |
免费(自托管) | 需要GPU |
自v0.6.0起内置了提供商故障转移。你可以设置有序的提供商链,当某个提供商宕机时,智能体自动切换到下一个。
测试LLM连接是否正常:
hermes -m "What is 2+2? Reply with just the number."
如果收到回复,提供商配置成功。如果看到认证错误,请检查~/.hermes/.env中的API密钥。
如何配置审批模式?
Hermes Agent内置了审批系统,会在可能危险的命令执行前先做审查。自v0.19起,新安装默认使用smart模式,由一个LLM审查器逐条评估被标记出来的命令。在一台什么都能执行的服务器上,我们更倾向于显式确认:
hermes config set approval_mode ask
三种模式:
- ask:在任何修改文件、安装包或访问网络的命令之前提示确认。Telegram和Slack会显示原生审批按钮,无需手动输入回复。全新配置下最稳妥的选择。
- smart:AI模型评估风险,只对真正危险的命令提示确认。自v0.19起为默认模式。搭配用户自定义的拒绝规则使用:无论审查器怎么判断,匹配到的命令都会被拦下。
- off:不检查。每条命令立即执行。不要在服务器上使用。
如何将Hermes Agent连接到Telegram?
消息网关让你可以用手机与Hermes对话。Telegram是最常见的配置。网关通过出站连接访问Telegram API,因此无需开放入站端口。
第1步:创建Telegram机器人
打开Telegram,向@BotFather发送消息。发送以下命令:
/newbot- 输入机器人名称(例如"My Hermes Agent")
- 输入用户名(必须以
bot结尾,例如myhermes_agent_bot)
BotFather会回复一个机器人token,格式类似7123456789:AAHx...。复制它。
第2步:获取你的Telegram用户ID
在Telegram上向@userinfobot发送消息。它会回复你的数字用户ID。复制这个数字。
第3步:配置网关
将机器人token和你的用户ID添加到环境文件:
echo 'TELEGRAM_BOT_TOKEN=7123456789:AAHxYourTokenHere' >> ~/.hermes/.env
echo 'TELEGRAM_ALLOWED_USERS=your_numeric_user_id' >> ~/.hermes/.env
TELEGRAM_ALLOWED_USERS变量是一个安全控制。只有此处列出的用户ID才能与你的机器人交互。没有它,任何找到你机器人的人都可以向它发送命令。多个ID用逗号分隔。
第4步:测试网关
在前台启动网关:
hermes gateway
在Telegram中向你的机器人发送消息。消息会出现在终端中并返回回复。确认正常后按Ctrl+C停止。
如果机器人没有响应,检查:
~/.hermes/.env中的机器人token是否正确- 你的用户ID是否在
TELEGRAM_ALLOWED_USERS中 - VPS能否通过443端口访问
api.telegram.org(出站HTTPS)
Hermes现在支持24+个平台。除Telegram外:Discord、Slack、WhatsApp、Signal、Matrix、iMessage(通过BlueBubbles)、Microsoft Teams、Google Chat、LINE、WeChat、WeCom、QQ机器人、Email、SMS、DingTalk、飞书/Lark、Mattermost、Home Assistant、ntfy、SimpleX、Open WebUI和Webhooks。运行hermes gateway setup可以使用交互式向导配置其中任意一个。
如何将Hermes Agent作为systemd服务运行?
在终端会话中运行hermes gateway意味着断开连接后它就会停止。systemd用户服务可以在注销后保持网关运行,并在崩溃或服务器重启时自动重启。
安装服务
Hermes提供了内置命令:
hermes gateway install
这会在~/.config/systemd/user/hermes-gateway.service创建服务文件并自动启用lingering。Lingering可以在你退出SSH后保持用户服务运行。
启动服务并设置开机自启:
systemctl --user enable --now hermes-gateway
检查服务状态:
systemctl --user status hermes-gateway
在输出中查找Active: active (running)。如果显示failed,检查日志。
查看日志
查看实时网关日志:
journalctl --user -u hermes-gateway -f
按Ctrl+C停止跟踪。网关日志显示每条传入消息、LLM调用和工具执行。
设置工作目录
默认情况下,网关使用主目录作为工作区。设置专用项目目录:
echo 'MESSAGING_CWD=/home/hermes/projects' >> ~/.hermes/.env
mkdir -p /home/hermes/projects
重启服务以应用更改:
systemctl --user restart hermes-gateway
通过浏览器管理
自v0.9.0起,Hermes内置了本地Web仪表盘。网关运行后,用以下命令打开:
hermes dashboard
这会启动一个基于浏览器的界面,你可以管理设置、浏览会话和技能、配置网关,无需使用终端。在VPS上,你可以通过SSH隧道转发仪表盘端口,从本地机器访问它。
如何备份Hermes Agent数据?
Hermes将所有状态存储在~/.hermes/中:记忆、学习的技能、会话历史、配置、定时任务和智能体角色。丢失它意味着智能体遗忘一切。
自v0.9.0起,Hermes内置了备份和恢复命令:
hermes backup
这会创建整个~/.hermes/目录的带时间戳的快照。在同一台服务器上恢复或迁移到新服务器:
hermes import /path/to/backup.tar.gz
要设置每日自动备份,用cron计划任务:
(crontab -l 2>/dev/null; echo "0 3 * * * /home/hermes/.local/bin/hermes backup") | crontab -
如需异地备份,将备份目录rsync到另一台机器或对象存储。仅在同一台VPS上保留备份无法防范磁盘故障。
如何更新Hermes Agent?
Hermes Agent包含内置更新命令。先备份,再更新:
hermes backup
hermes update
检查新版本:
hermes --version
检查更新后是否需要配置变更:
hermes config migrate
hermes doctor
config migrate会添加新的配置选项及其默认值。hermes doctor检查一切是否正常。
重启网关服务以运行新版本:
systemctl --user restart hermes-gateway
systemctl --user status hermes-gateway
如果更新后出现问题,从备份恢复:
systemctl --user stop hermes-gateway
hermes import /path/to/backup.tar.gz
systemctl --user start hermes-gateway
安全加固检查清单
在VPS上托管的执行终端命令的AI智能体需要注意安全。以下是本指南已配置的内容总结和一些额外步骤。
本指南中已配置:
- 非root用户(
hermes),拥有专用主目录 - UFW防火墙拒绝除SSH外的所有入站流量
- API密钥存储在权限为
600的~/.hermes/.env中 TELEGRAM_ALLOWED_USERS限制机器人访问仅限你的用户IDapproval_mode: ask要求对危险命令进行确认
额外加固:
定期审查智能体学习的技能:
ls -la ~/.hermes/skills/
技能是智能体编写并复用的脚本。像审查服务器上运行的任何代码一样审查它们。
监控网关日志,排查异常用户或可疑活动:
journalctl --user -u hermes-gateway --since "1 hour ago" --no-pager
Hermes在每个版本中都加强了安全态势:v0.7.0起阻止密钥泄露、v0.8.0中增加MCP OAuth 2.1 PKCE支持和SSRF防护、v0.9.0中新增路径穿越防护、shell注入中和以及Twilio webhook验证、v0.19中加入即使关闭审批也依然生效的用户自定义拒绝规则,v0.20.4中对技能安装增加了许可证和安全扫描。保持安装更新以获得这些保护。
故障排除
自v0.9.0起,你可以在任何聊天会话中运行/debug,或从终端运行hermes debug share来生成诊断报告。这是识别问题的最快方式。
网关无法启动:
journalctl --user -u hermes-gateway -n 50 --no-pager
常见原因:无效的机器人token、缺少API密钥或网络问题。
Telegram机器人没有响应:
检查机器人token和允许的用户:
grep TELEGRAM ~/.hermes/.env
测试出站连接:
curl -s https://api.telegram.org/bot<YOUR_TOKEN>/getMe
返回包含你机器人信息的有效响应说明token和网络正常。
安装后找不到hermes命令:
source ~/.bashrc
如果仍然找不到,检查~/.local/bin是否在PATH中:
echo $PATH | tr ':' '\n' | grep local
内存使用过高:
检查资源消耗情况:
top -bn1 | head -20
如果智能体生成了长时间运行的进程,降低工作负载或升级VPS。
费用是多少?
在VPS上自托管Hermes Agent的费用包括服务器和LLM API使用。两个成本组成部分:
- VPS托管: 一台2+ vCPU和4 GB内存的VPS。查看Virtua.Cloud VPS方案了解当前定价。
- LLM API调用: 所有支持的提供商都采用按token计费。你的月度费用取决于选择的模型和使用频率。查看你的提供商定价页面了解当前费率。
真正的节省不仅是财务上的。你拥有智能体的数据,可以选择任何供应商,没有任何策略变更能在一夜之间让你停摆。
版权所有 2026 Virtua.Cloud。保留所有权利。 本内容为 Virtua.Cloud 团队原创作品。 未经书面许可,禁止复制、转载或再分发。
准备好亲自尝试了吗?
在您自己的 VPS 上运行 AI 代理。→