Hermes Agent 不是普通的聊天 Bot,而是一个能够真正接管 Linux 终端、驱动浏览器、调度定时任务并具备持久记忆的工程助手。
把这样一个具备高权限的 Agent 部署到生产服务器上,核心在于建立严格的权限边界与稳定的守护进程。
这篇笔记记录在 Linux 服务器上从零安装官方 Hermes、接入模型 Provider、绑定 Telegram 网关与安全白名单、配置 systemd 后台守护服务,以及正确设置 Cron 定时任务的完整流程。
认识 Hermes Agent 的定位与权限边界
普通聊天机器人只能“动嘴”,而 Hermes Agent 拥有完整的“手脚与大脑”:
┌─────────────────────────────────────────────────────────────┐
│ 🧠 决策中枢 (Model):负责推理、生成与决定下一步调用什么工具; │
│ 🛠️ 工具引擎 (Tools):拥有终端执行、文件读写、浏览器与抓取能力;│
│ 📡 网关中枢 (Gateway):接收 Telegram / QQ 消息并双向回传; │
│ ⏰ 定时调度 (Cron):到点在全新独立会话中自动巡检、生成早报; │
│ 📜 记忆与技能 (Soul):跨会话记住服务器拓扑与专属排障技能; │
│ 🛡️ 安全底线 (Security):拦截高危危险命令,等待人工确认审批。 │
└─────────────────────────────────────────────────────────────┘
准备工作
- [ ] 一台云服务器(VPS):拥有 root 权限,网络可正常访问模型 Provider 端点与消息平台;
- [ ] 至少一个模型 API Key:OpenRouter、DeepSeek、Anthropic 或自定义 OpenAI 兼容接口;
- [ ] 一个 Telegram Bot Token:在 Telegram 找
@BotFather申请(若接入 QQ 则准备 QQ 开放平台凭据); - [ ] 明确自己的数字 ID:通过
@userinfobot确认自己的 Telegram User ID(用于白名单访问控制)。
安装 Hermes 核心引擎与环境检查
💻 【你本地的电脑】 打开终端连入服务器,进入 服务器端:。
粘贴执行官方一键全自动安装脚本:
# 1. 运行官方一键安装
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# 2. 检查命令与版本就位情况
command -v hermes
hermes --version
# 3. 运行环境依赖与健康静态体检
hermes doctor
- ✅ 成功标志:终端正确返回版本号(如
hermes version v0.x.x),hermes doctor诊断无阻断性红色报错。
配置模型 Provider 与调用验证
Hermes 的配置文件遵循“凭据放密文、行为放配置”的绝对铁律:
* 🔑 API Key、Bot Token、密码:统一保存在 ~/.hermes/.env;
* ⚙️ 模型选择、工具开关、Fallback 策略:保存在 ~/.hermes/config.yaml。
服务器端: 推荐使用官方向导或一键命令安全注入凭据:
# 1. 注入你的模型 API 密钥(以 DeepSeek 或自定义 Provider 为例)
hermes config set DEEPSEEK_API_KEY "你的真实API密钥"
# 2. 交互式选择并确认默认模型
hermes model
接着,执行第一层真实通信点火测试(拒绝推测,真实发包):
hermes chat -Q -q "只回复 OK"
- ✅ 成功标志:终端在 2 秒内准确返回了一个单词
OK!证明底层请求链路、Token 鉴权与模型推理 100% 满血打通。
配置 Telegram 消息网关与用户白名单
模型打通后,配置外部消息接收网关。
服务器端: 运行 Gateway 配置向导:
hermes gateway setup
按照终端交互提示选择:
1. 平台选择 Telegram;
2. 填入你的 Bot Token;
3. ⚠️ 核心安全配置:当询问 Allowed Users / Chats 时,务必填入你自己的数字 User ID!
– 🗣️ 大白话:千万不要留空!留空等于向全网任何人开放你的服务器控制权限,别人发一条指令就能远程操控你的终端,极其危险!
配置 Systemd 守护进程保证常驻后台
配置好网关后,必须将其交由 Linux 系统级守护进程托管,保证断开 SSH 后持续在线,服务器重启后自动自愈:
# 1. 生成并安装系统级服务
hermes gateway install --system
# 2. 启动服务并检查实时状态
systemctl restart hermes-gateway
systemctl is-active hermes-gateway
- ✅ 成功标志:最后一行返回
active。
此时拿起你的手机打开 Telegram,找到你的 Bot,发送一条最简单的消息:
只回复 TG-OK
- ✅ 大功告成标志:手机端瞬间收到 Bot 秒回的
TG-OK!消息网关双向链路已全部跑通!🚀
配置 Cron 定时任务与执行环境
很多新手在 Hermes 里配置定时任务时会犯一个严重错误:
写出类似“继续检查刚才那台机器”的 Prompt。
- 🚨 核心机制铁律:Hermes Cron 不是当前聊天的延续!
每个定时任务触发时,都会在全新的独立会话中运行,完全没有你当前窗口的上下文。因此,Prompt 必须是完全自包含的!
服务器端: 创建一条标准的每日巡检定时任务:
hermes cron create "0 9 * * *" \
"检查本机 CPU、内存、磁盘水位与核心服务运行状态;按严重程度列出异常,若全正常输出健康表格,完成后推送到 Telegram" \
--name "每日服务器健康巡检"
查看已注册的任务列表:
hermes cron list
- ✅ 成功标志:列表中清晰列出任务名称、下次触发时间与执行指令。
常见部署问题与排查
| 异常现场 | 真实根因 | 对应一秒救命招式 |
|---|---|---|
| 手机发消息,Bot 完全已读不回 | 用户 ID 未加入白名单,或网关服务未启动 | 1. 检查日志:journalctl -u hermes-gateway -n 50;2. 检查 ~/.hermes/config.yaml 确认你的数字 ID 在 allowed_chats 列表中。 |
模型调用报 401 / 403 Forbidden |
Provider 凭据失效,或余额耗尽 | 检查 ~/.hermes/.env 中的 Key 是否正确,或进入服务商官网检查账户余额。 |
| 改了配置(config.yaml),Bot 行为无变化 | 修改配置后未重载 Gateway 进程 | 终端执行 systemctl restart hermes-gateway,重启后新配置瞬间生效。 |
| 危险命令被拦截,提示等待审批 | 正常安全机制生效(Tirith 审批拦截) | 这是预期的安全保护!在 Telegram 点击「Approve」按钮放行,绝不要为了省事彻底关闭安全层。 |
还没有人在这篇手记留下纸条,来做第一个亮灯的人吧。