Hermes Agent 是由 Nous Research 开源的一款 AI Agent 工具。与普通聊天程序相比,它不仅能够调用大语言模型进行对话,还可以结合终端、文件、网页工具、Skills、定时任务以及 Telegram 等消息平台,构建一个可以长期运行的个人 AI 助手。
本文记录一次完整的部署过程:在 Ubuntu 22.04 服务器中,使用 Miniconda 创建独立运行环境,安装 Hermes Agent,接入已经部署好的本地 vLLM 模型服务,并配置 Telegram 机器人,使我们可以直接通过手机向服务器上的本地大模型发送任务。
本文采用的是较为适合个人服务器和本地 AI 部署用户的方案:
- 操作系统:Ubuntu 22.04
- Python 环境管理:Miniconda
- AI Agent:Hermes Agent
- 模型服务:vLLM 提供的 OpenAI 兼容接口
- 示例模型:Qwen3.6-27B-AWQ-INT4
- 远程控制方式:Telegram Bot
一、为什么使用 Miniconda 安装 Hermes Agent?
Hermes 官方提供了一行命令的自动安装脚本,适合希望快速运行的用户。不过,对于已经长期使用 Ubuntu 部署本地 AI 服务的用户来说,将 Hermes 安装到独立的 Conda 环境中会更容易维护。
使用 Miniconda 的主要好处包括:
- Hermes 的 Python 依赖不会污染系统 Python 环境;
- 方便后续更新、回退和卸载;
- 可以清楚区分 vLLM、ComfyUI、语音识别、Hermes 等不同项目环境;
- 遇到依赖冲突时,只需要处理当前环境,不影响其他已经运行的 AI 服务。
本文默认服务器中已经安装 Miniconda,并且已经有一个可以正常访问的本地 vLLM 模型服务。
二、部署前准备
1. 确认系统版本
lsb_release -a
本文使用的系统为:
Ubuntu 22.04 LTS
2. 确认 Miniconda 可以正常使用
conda --version
如果能够正常输出版本号,说明 Conda 环境已经可用。
3. 确认本地 vLLM 服务已经运行
如何在本地部署qwen大模型,可以参考草凡博客的另外一篇文章《Ubuntu22.04+4x2080Ti22G+vLLM+Qwen3.6-27B-AWQ-INT4 部署教程》
如果准备让 Hermes 调用本地部署的大语言模型,需要先确认模型 API 可以正常访问。
本文示例中,vLLM 运行在本机的 8000 端口,因此执行:
curl http://127.0.0.1:8000/v1/models
正常情况下,应当能够看到已经加载的模型名称,例如:
Qwen3.6-27B-AWQ-INT4
如果这里无法返回模型信息,应先解决 vLLM 服务启动问题,再继续安装 Hermes。
三、创建 Hermes 专用 Conda 环境
Hermes 需要 Python 3.11 或更高版本。为了避免与其他项目冲突,我们单独创建一个名为 hermes 的 Conda 环境。
conda create -n hermes python=3.11 -y
创建完成后,激活环境:
conda activate hermes
检查 Python 版本:
python --version
正常应显示类似:
Python 3.11.x
四、安装 Hermes Agent
1. 升级基础安装组件
python -m pip install -U pip setuptools wheel
2. 安装 Hermes Agent
在当前 Conda 环境中执行:
python -m pip install -U hermes-agent
如果当前使用的国内 pip 镜像暂时没有同步到最新版本,可以临时改为官方 PyPI:
python -m pip install -U hermes-agent -i https://pypi.org/simple
也可以直接从官方 GitHub 仓库安装当前最新版本:
python -m pip install -U "git+https://github.com/NousResearch/hermes-agent.git"
3. 检查 Hermes 命令是否可用
hermes --help
如果能够看到 Hermes 的命令帮助信息,说明主体程序已经安装成功。
随后执行环境诊断:
hermes doctor
第一次执行时,可能会提示尚未初始化配置文件、尚未配置模型 API Key、Skills Hub 尚未初始化等内容。这属于正常现象,因为此时还没有运行配置向导。
五、运行 Hermes 初始化配置向导
执行以下命令启动完整配置流程:
hermes setup
配置完成后,Hermes 的主要文件默认保存在(“tse”为你自己的Ubuntu服务器名称,博主的服务器名称是“tse”):
/home/tse/.hermes/
其中比较重要的文件包括:
Settings: /home/tse/.hermes/config.yaml
API Keys: /home/tse/.hermes/.env
Data: /home/tse/.hermes/cron/
/home/tse/.hermes/sessions/
/home/tse/.hermes/logs/
后续如果需要重新配置,也可以分别执行:
hermes setup
hermes model
hermes tools
hermes gateway setup
hermes config
六、将 Hermes 接入本地 vLLM 模型
Hermes 支持连接提供 OpenAI 兼容接口的本地推理服务,例如 vLLM、SGLang、Ollama 或其他本地 API 服务。
如果已经退出完整配置向导,也可以单独执行模型配置命令:
hermes model
在模型提供商选择界面中,选择:
Custom endpoint (self-hosted / VLLM / etc.)
然后按照自己的本地模型服务填写配置。
本文示例配置
API Base URL:
http://127.0.0.1:8000/v1
API Key:
local-vllm-key
如果本地 vLLM 启动时没有设置 API Key,这里也可以直接留空;如果通过 one-api 或其他网关转发,则填写网关分配的真实密钥。
Model Name:
Qwen3.6-27B-AWQ-INT4
Context Length:
262144
需要注意的是,模型名称必须与 vLLM 服务中暴露出来的模型名称一致,可以通过下面的命令确认:
curl http://127.0.0.1:8000/v1/models
当前版本的重要配置变化
较新的 Hermes 版本中,本地模型名称、服务地址和上下文长度等信息主要保存在:
~/.hermes/config.yaml
不要继续沿用旧教程中依赖 OPENAI_BASE_URL 或 LLM_MODEL 环境变量的配置方式。当前应优先通过 hermes model 向导或直接编辑 config.yaml 完成模型配置。
七、vLLM 启动参数中与 Hermes 工具调用有关的设置
如果只是普通聊天,本地模型可以直接回答问题。但如果希望 Hermes 调用终端、文件、网页等工具,vLLM 端必须正确启用自动工具调用能力。
例如,本文实际使用的 Qwen3.6 模型启动参数中包含:
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder
其中:
--enable-auto-tool-choice:允许模型自动决定何时调用工具;--tool-call-parser:用于解析模型输出的工具调用格式。
不同模型家族、不同 vLLM 版本支持的解析器名称可能不同。如果普通聊天正常,但 Hermes 调用工具时只是输出一段 JSON 文本、并没有真正执行工具,优先检查这里的工具调用参数。
八、测试 Hermes 是否可以调用本地模型
模型配置完成后,先不要急着配置 Telegram,建议先在服务器终端中完成基础测试。
hermes
进入聊天界面后输入:
你好,请告诉我你当前使用的模型名称。
如果能够正常回复,说明 Hermes 已经成功连接到本地 vLLM。
然后继续测试工具调用能力:
请检查当前目录下有哪些文件,并简单说明每个文件的类型。
如果 Hermes 能够正确调用终端或文件工具,而不是只返回普通文字说明,说明基础 Agent 能力已经正常。
九、配置 Telegram 机器人
当终端聊天测试正常后,就可以继续配置 Telegram。这样即使不在电脑前,也可以通过手机向服务器上的 Hermes 发送任务。
1. 创建 Telegram Bot
在 Telegram 中搜索:
@BotFather
向它发送:
/newbot
按照提示设置机器人名称和用户名。机器人用户名通常需要以 bot 结尾,例如:
my_hermes_assistant_bot
创建成功后,BotFather 会返回一段 Bot Token。该 Token 相当于机器人的登录密码,不要公开发布,也不要上传到公开仓库。
2. 启动 Hermes Gateway 配置
在 Ubuntu 终端中执行:
conda activate hermes
hermes gateway setup
在消息平台列表中选择:
Telegram
将 BotFather 提供的 Token 粘贴进去。
3. 填写 Allowed User IDs
配置过程中会出现类似提示:
Allowed user IDs (comma-separated, leave empty for open access):
这里建议一定填写自己的 Telegram 数字用户 ID,不要留空。因为 Hermes 具备调用服务器工具的能力,如果允许任何人访问机器人,会带来严重安全风险。
获取自己的 Telegram 数字 ID 的方法:
- 在 Telegram 中搜索
@userinfobot; - 向它发送任意消息;
- 复制它返回的数字 ID;
- 将该数字填写到 Hermes 配置界面。
例如:
123456789
如果希望允许多个账号使用,可以使用英文逗号分隔:
123456789,987654321
配置保存后,这些信息会写入:
~/.hermes/.env
对应配置通常类似:
TELEGRAM_BOT_TOKEN=你的机器人Token
TELEGRAM_ALLOWED_USERS=你的Telegram数字ID
十、选择 Gateway 后台运行方式
Hermes 配置 Telegram 时,会询问 Gateway 是否需要后台运行,通常会看到三个选项:
User service
System service
Skip service install for now
User service
这是当前用户级别的 systemd 服务,不需要 sudo,适合个人电脑或临时开发环境。用户退出登录后,服务是否继续运行可能取决于是否启用了 linger。
System service
这是系统级 systemd 服务,适合 Ubuntu 服务器、VPS 或长期运行的无显示器主机。它可以在服务器开机后自动启动,比较适合 Telegram AI 助手长期在线的场景。
Skip service install for now
只保存配置,不安装后台服务。之后需要手动在终端中运行:
hermes gateway
对于长期运行的 Ubuntu AI 服务器,建议选择:
System service
十一、在 Telegram 中找到并开始使用机器人
一个比较容易误解的问题是:Hermes 配置完成后,机器人并不会自动出现在 Telegram 的聊天列表中。
正确操作方法如下:
- 打开 Telegram 中与
@BotFather的聊天; - 发送
/mybots; - 找到刚刚创建的 Hermes Bot;
- 复制机器人的准确用户名;
- 在 Telegram 搜索该用户名;
- 打开聊天窗口并点击 Start / 开始;
- 向机器人发送测试消息。
测试消息可以使用:
你好,请回复你当前使用的模型名称。
如果 Gateway 正常运行,并且 Telegram 用户 ID 已经加入允许列表,机器人就会通过本地 vLLM 模型生成回复。
十二、查看 Hermes Gateway 服务状态
如果是使用官方默认路径全局安装 Hermes,官方文档中常见的管理方式为:
sudo hermes gateway status --system
sudo hermes gateway start --system
sudo hermes gateway stop --system
但是,如果 Hermes 安装在 Conda 环境中,直接执行下面的命令可能会报错:
sudo hermes gateway status --system
错误信息类似:
sudo: hermes:找不到命令
为什么会出现这个问题?
这是因为当前终端虽然已经激活了 Conda 环境,但执行 sudo 后,系统会使用 root 用户的命令搜索路径。root 并不知道 Hermes 安装在:
/home/tse/miniconda3/envs/hermes/bin/hermes
因此,问题并不是 Hermes 配置失败,而是 sudo 找不到 Conda 环境中的可执行文件。
最简单的检查方法:直接使用 systemctl
如果已经在配置向导中选择并安装了 System service,可以直接检查 systemd 服务状态:
sudo systemctl status hermes-gateway.service --no-pager -l
如果看到:
Active: active (running)
说明 Hermes Gateway 已经在后台正常运行。
查看实时日志:
sudo journalctl -u hermes-gateway.service -f
查看最近 80 行日志:
sudo journalctl -u hermes-gateway.service -n 80 --no-pager
如果系统服务没有安装成功
如果执行状态查询时显示:
Unit hermes-gateway.service could not be found
可以使用 Conda 环境中 Hermes 的完整路径重新安装系统服务,并明确指定当前用户目录:
sudo env HOME=/home/tse USER=tse LOGNAME=tse HERMES_HOME=/home/tse/.hermes \
/home/tse/miniconda3/envs/hermes/bin/hermes gateway install --system --run-as-user tse
然后启动服务并设置开机自动运行:
sudo systemctl enable --now hermes-gateway.service
再次检查:
sudo systemctl status hermes-gateway.service --no-pager -l
注意:不要同时安装 User service 和 System service,否则可能会出现两个 Gateway 同时运行、端口或状态判断混乱的问题。
十三、常用 Hermes 命令整理
启动终端聊天
conda activate hermes
hermes
重新配置模型
conda activate hermes
hermes model
重新配置 Telegram 或其他消息平台
conda activate hermes
hermes gateway setup
查看配置
conda activate hermes
hermes config
编辑配置文件
nano /home/tse/.hermes/config.yaml
nano /home/tse/.hermes/.env
环境诊断
conda activate hermes
hermes doctor
查看系统级 Gateway 状态
sudo systemctl status hermes-gateway.service --no-pager -l
查看 Gateway 实时日志
sudo journalctl -u hermes-gateway.service -f
十四、常见问题排查
问题一:hermes doctor 提示未创建 .env
解决方法:
hermes setup
完成配置向导后,系统会在 ~/.hermes/ 下生成配置文件和 API Key 文件。
问题二:Skills Hub 未初始化
提示类似:
Skills Hub directory not initialized
可以执行:
hermes skills list
如果暂时只想测试本地模型和 Telegram 聊天,这个提示不会阻止基础功能运行。
问题三:没有配置 GITHUB_TOKEN
如果提示 GitHub API 每小时访问额度较低,这是因为 Skills Hub 获取内容时会调用 GitHub API。初期不大量搜索 Skills 时可以暂时忽略,后续需要频繁使用 Skills Hub 时,再把 GitHub Token 配置到:
~/.hermes/.env
问题四:Telegram 中找不到机器人
Hermes 不会自动将机器人添加到聊天列表。需要回到 BotFather,通过 /mybots 找到机器人用户名,然后在 Telegram 中搜索并点击 Start。
问题五:Telegram Bot 可以打开,但不回复消息
按照下面顺序排查:
- 确认本地终端执行
hermes时可以正常聊天; - 确认 Telegram 用户 ID 已加入允许列表;
- 确认 Gateway systemd 服务处于运行状态;
- 通过 journalctl 查看 Gateway 日志;
- 确认 vLLM 模型 API 仍然可以访问。
常用命令:
curl http://127.0.0.1:8000/v1/models
sudo systemctl status hermes-gateway.service --no-pager -l
sudo journalctl -u hermes-gateway.service -n 80 --no-pager
问题六:普通聊天正常,但无法调用工具
这通常与 vLLM 的工具调用配置有关。需要检查模型服务启动参数中是否正确启用了自动工具调用,以及是否使用了适配当前模型的工具解析器。
例如,本文使用的 Qwen3.6 环境中包含:
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder
十五、Hermes 与 OpenClaw 是否可以同时使用?
可以。两者可以分别拥有自己的 Telegram Bot,用于不同任务。但需要注意,Telegram 机器人之间不能像普通用户一样在群聊中直接互相读取消息并自动对话。
更合理的方式是:
- 保留 OpenClaw Bot 作为主要调度入口;
- 保留 Hermes Bot 作为独立测试和直接使用入口;
- 如有需要,让 OpenClaw 在服务器后台通过命令或接口调用 Hermes,而不是让两个 Telegram Bot 直接互聊。
这种方式更容易控制权限、限制调用轮数,也能避免机器人之间出现无限循环回复。
十六、总结
通过以上步骤,我们已经在 Ubuntu 22.04 服务器中完成了以下工作:
- 使用 Miniconda 创建独立 Hermes 运行环境;
- 完成 Hermes Agent 安装与初始化配置;
- 将 Hermes 接入本地 vLLM / Qwen 模型服务;
- 配置 Telegram Bot 作为远程交互入口;
- 限制 Telegram 用户权限,提高服务器安全性;
- 解决 Conda 环境下 sudo 找不到 hermes 命令的问题;
- 掌握 Gateway systemd 后台服务状态与日志检查方法。
对于已经拥有本地大语言模型服务器的用户来说,Hermes 的价值在于:它可以把原本只能通过网页或 API 调用的模型,进一步升级成能够从 Telegram 接收任务、调用工具并长期运行的个人 AI 助手。
后续还可以继续配置 Skills、定时任务、浏览器自动化、网页研究以及与现有 OpenClaw 工作流的协作,使本地大模型真正参与到日常内容创作、资料整理、网站运营和自动化任务中。
参考核对依据
官方安装文档显示,Hermes 支持 Linux 安装、Python 3.11+ 的 pip 安装路径,并提供 hermes setup、hermes model、hermes gateway setup、hermes doctor 等配置与诊断命令。
官方模型接入文档明确说明:Hermes 可连接实现 /v1/chat/completions 的 OpenAI 兼容服务,包括 vLLM;当前模型端点应配置到 config.yaml,旧的 OPENAI_BASE_URL 与 LLM_MODEL 方式已不再作为模型配置来源。
官方 Telegram 文档说明:Telegram 配置向导会保存 Bot Token 与允许访问的用户数字 ID;允许用户 ID 可通过 @userinfobot 获取。
官方 Gateway 文档建议:开发机可使用 User service,无头服务器或 VPS 可使用 System service;默认系统服务名称为 hermes-gateway,并可通过 journalctl -u hermes-gateway -f 查看日志。
原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/ubuntu-2204-anzhuang-hermes-agent-jiaochengminiconda-jierubende-vllmqwen-yu-telegram-jiqiren/.html


微信扫一扫