https://mdnice.com/writing/e10cc1bd944d44d7b0da30815a8ae404
Hermes Agent,江湖人称「爱马仕龙虾」,是 Nous Research 出品、目前最受关注的开源自托管 AI Agent。本文带你从零开始,用 Docker Compose 把它跑起来,并接入 Telegram,打造一个 7×24 小时在线的私人 AI 助手。
一、Hermes Agent 是什么?
1.1 出身名门:Nous Research
Hermes Agent 由 Nous Research 打造。这家实验室并不是做产品起家的,而是正经的模型训练机构——Hermes 系列模型、Nomos、Psyche 都出自他们之手,Hermes 4 更是引入了混合推理和大规模合成数据生成能力。
Hermes Agent,就是这条模型血脉在「Agent 化」方向上的集大成之作。
1.2 核心定位:一个会「自我成长」的 Agent
大多数 AI 工具是用完即走——每次对话都要重新交代背景,工作流靠你手动维护,模型本身什么也不记得。
Hermes Agent 的设计哲学截然不同,它的 Slogan 是 **"The agent that grows with you"**——一个随你成长的 Agent。
它有一套完整的闭环学习机制:
- 持久记忆(Persistent Memory):通过
MEMORY.md和USER.md跨会话保存你的偏好、项目背景、工作习惯,下次打开不用再重头介绍自己。 - 自动生成技能(Autonomous Skill Creation):完成复杂任务后,Agent 会主动把这套流程封装成可复用的 Skill,下次遇到类似任务直接调用,不用重新摸索。
- 技能自我优化:已有的 Skill 在使用过程中会持续迭代改进,不是一次性的。
- 跨会话检索(FTS5 Session Search):所有历史对话以 SQLite 存储,配合 LLM 摘要索引,能跨会话搜索「上次我怎么解决这个问题的」。
- 用户建模(Honcho Dialectic User Modeling):持续构建对你这个人的深度模型,越用越懂你。
1.3 丰富的工具能力
Hermes Agent 内置 29 个工具集,包括:
| 工具类型 | 具体能力 |
|---|---|
| 🌐 浏览器自动化 | 点击、输入、滚动、截图,支持本地 Chrome/Chromium 或云端 Browserbase |
| 💻 终端执行 | 运行 Shell 命令,支持 6 种后端(本地、Docker、SSH、Daytona、Singularity、Modal) |
| 📁 文件操作 | 读写、搜索、打补丁 |
| 🔍 网页搜索与抓取 | 支持 Firecrawl、Exa、Tavily、DuckDuckGo(免费)等多种后端 |
| 👁️ 视觉分析 | 图片识别与分析 |
| 🎨 图像生成 | 支持 FAL.ai 的 FLUX、GPT-Image 等 8 个模型 |
| 🔊 语音合成 | Edge TTS(免费)、ElevenLabs、OpenAI TTS、MiniMax 等 |
| ⏰ 定时任务 | 自然语言描述 Cron 任务,结果推送到任意平台 |
| 📨 跨平台消息 | 一个 Gateway 连通 15+ 平台:Telegram、Discord、Slack、WhatsApp、微信、钉钉、飞书…… |
| 🧠 子 Agent 委托 | 隔离子进程并行执行任务,零上下文成本 |
| 📚 技能系统 | 兼容 agentskills.io 开放标准,69 个官方技能,社区持续贡献 |
| 🔌 MCP 集成 | 连接任意 MCP Server 扩展能力 |
1.4 模型无关,完全自托管
Hermes Agent 不锁定任何模型或云服务,支持:
- Nous Portal(官方,附带 Tool Gateway 托管工具 API)
- OpenRouter(200+ 模型)
- OpenAI / Anthropic / Google
- MiniMax、Kimi/Moonshot、z.ai/GLM、Xiaomi MiMo
- 任何 OpenAI 兼容接口(包括本地 Ollama、LM Studio 等)
切换模型只需 hermes model,无需改任何代码。
二、Hermes Agent vs OpenClaw:到底有什么区别?
这是社区里最常被问到的问题。两者都是开源自托管 Personal Agent,都支持多平台 Messaging,都支持自定义模型,但设计哲学有本质差异。
值得一提的是:Hermes 官方提供了
hermes claw migrate命令,可以一键从 OpenClaw 迁移配置、记忆、技能和 API Key,充分说明两者的定位交集有多深。
核心差异对比
| 维度 | Hermes Agent | OpenClaw |
|---|---|---|
核心哲学 | 自我成长的长驻 Agent,越用越强 | 生态优先,人工管控,工作区原生 |
记忆系统 | 分层记忆架构(MEMORY.md + USER.md + SQLite 全文检索),跨会话学习 | 有记忆功能,但机制相对简单 |
技能系统 | 自动从任务经验中生成并优化 Skill | 以人工编写 Skill 为主 |
学习闭环 | 内置完整闭环:记忆 → 技能生成 → 技能优化 → 用户建模 | 无内置自动学习闭环 |
执行后端 | 6 种终端后端(含 Modal 无服务器持久化) | 相对单一 |
RL 训练框架 | ✅ 内置 Atropos RL 环境、批量轨迹生成与压缩导出,可直接用于模型训练 | ❌ 无 |
研究属性 | 与模型训练深度绑定,支持 Atropos RL 轨迹生成 | 侧重产品化和生态 |
适用场景 | 长期运行、自动化、复合研究任务 | 需要精细人工控制、工作区集成 |
Claude 订阅套餐 | ✅ 支持(通过 Anthropic API 接入,兼容订阅额度) | ❌ 不再支持 |
一句话总结:如果你想要一个部署之后越来越懂你、能自己进化的 Agent,选 Hermes;如果你更看重精细人工控制和生态广度,OpenClaw 也是好选择。
三、为什么推荐用 Docker Compose 安装?
Hermes 官方提供了多种安装方式:一键脚本(支持 Linux/macOS/WSL2/Android Termux)、pip 安装、Docker。
那为什么我推荐 Docker Compose?
3.1 环境隔离,干净彻底
Hermes 依赖 Python 3、Node.js(浏览器自动化)、Playwright + Chromium,安装链比较长。Docker 把所有依赖打包在一个官方镜像里(基于 Debian 13.4),不污染宿主机环境,出问题随时销毁重建。
3.2 数据持久化有保障
所有用户数据(配置文件、API Key、会话历史、技能、记忆)都挂载在宿主机的 ~/.hermes/(或你自定义的目录)。镜像本身是无状态的——升级时直接 pull 新镜像,你的记忆和技能一点不丢。
3.3 一条命令管理全生命周期
docker compose up -d # 后台启动
docker compose down # 停止
docker compose logs -f # 实时日志
docker compose pull # 拉取最新镜像
比手动管理 systemd 服务、pip 版本、进程 PID 要省心得多。
3.4 自动重启,7×24 小时在线
加一行 restart: unless-stopped,宿主机重启或容器崩溃后会自动拉起,配合 Telegram Bot 就能实现真正的全天候 AI 助手。
3.5 资源限制更可控
可以在 compose 文件里直接限制内存和 CPU,防止浏览器自动化把 VPS 资源吃满。
四、安装前准备
硬件要求:
- 不用浏览器自动化工具:1 GB 内存足够
- 开启浏览器自动化(Playwright/Chromium):至少 2 GB,推荐 4 GB
软件要求:
- Docker + Docker Compose(建议 Docker Desktop 或
docker composev2) - 一个 LLM API Key(OpenRouter、OpenAI、Anthropic、MiniMax 等均可)
可选但推荐:
- Telegram 账号,用于创建 Bot
五、实战安装:Docker Compose 完整流程
Step 1:创建项目目录和数据目录
cd ~/service
mkdir hermes
cd hermes
mkdir -p data/data
sudo chown -R 10000:10000 data
这里把项目放在 ~/service/hermes/ 下,数据目录统一放在 ./data/data,与 compose 文件同级,便于管理和备份。chown 是为了和容器内用户权限对齐,避免挂载卷时出现权限报错。
Step 2:编写 docker-compose.yml
在 ~/service/hermes/ 下创建 docker-compose.yml:
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: unless-stopped
command: gateway run
ports:
- "8642:8642"
volumes:
- ./data/data:/opt/data
networks:
- hermes-net
# 如需直接传入 API Key,取消注释:
# environment:
# - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
# - OPENAI_API_KEY=${OPENAI_API_KEY}
# - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
deploy:
resources:
limits:
memory: 4G
cpus: "2.0"
dashboard:
image: nousresearch/hermes-agent:latest
container_name: hermes-dashboard
restart: unless-stopped
command: dashboard --host 0.0.0.0 --port 9119 --insecure --no-open
ports:
- "9119:9119"
volumes:
- ./data/data:/opt/data
environment:
- GATEWAY_HEALTH_URL=http://hermes:8642
networks:
- hermes-net
depends_on:
- hermes
deploy:
resources:
limits:
memory: 512M
cpus: "0.5"
networks:
hermes-net:
driver: bridge
几点说明:
hermes:核心 Gateway 进程,负责处理所有对话和工具调用,暴露 8642 端口dashboard:Web 管理面板,端口 9119,通过GATEWAY_HEALTH_URL指向 Gateway 容器- 两个容器挂载同一个
./data/data数据卷,共享所有配置、记忆和技能 --insecure --no-open:Dashboard 以无鉴权模式启动,且不尝试在服务器端打开浏览器- 资源限制写在
deploy.resources.limits里,Gateway 给 4G/2核,Dashboard 给 512M/0.5核
Step 3:启动容器
docker compose up -d
正常输出如下:
[+] up 3/3
✔ Network docker-hermes_hermes-net Created
✔ Container hermes Created
✔ Container hermes-dashboard Created
Step 4:进入容器运行配置向导
容器启动后,进入 hermes-dashboard 容器执行 Setup 向导:
docker exec -ti hermes-dashboard bash
# 进入容器后执行:
/opt/hermes/.venv/bin/python3 /opt/hermes/.venv/bin/hermes setup
┌─────────────────────────────────────────────────────────┐
│ ⚕ Hermes Agent Setup Wizard │
├─────────────────────────────────────────────────────────┤
│ Let's configure your Hermes Agent installation. │
│ Press Ctrl+C at any time to exit. │
└─────────────────────────────────────────────────────────┘
◆ Configuration Location
Config file: /opt/data/config.yaml
Secrets file: /opt/data/.env
Data folder: /opt/data
Install dir: /opt/hermes
You can edit these files directly or use 'hermes config edit'
接下来会进入一个交互式配置界面,下面是完整的配置过程详解。
六、配置向导详解
主要有两个配置需要注意,一个是选择模型,一个是消息接入方式。其他的配置,我选择的是默认。
6.1 配置推理模型(Inference Provider)
这是最重要的一步——选择驱动 Hermes 的大脑。
Hermes 支持所有主流提供商。我这里用的是一个 OpenAI 兼容的自定义接口(MiniMax),所以选择了「Custom OpenAI-compatible endpoint」:
API base URL: http://model.ai.yuxiaor.com/v1
API key: (留空或填入你的 key)
验证通过后,会列出该接口可用的模型,选择你想要的即可:
Available models:
1. MiniMax-M2.7-highspeed
2. MiniMax-M2.5-highspeed
3. MiniMax-M2.1-highspeed
Select model [1-3]: 1
提示:如果你有 OpenRouter API Key,可以直接填入
OPENROUTER_API_KEY,一次解锁 200+ 模型,非常推荐。
6.2 为什么选 Telegram 作为 Agent 的「入口」?
[✓] 1. Telegram
[ ] 2. Discord
[ ] 3. Slack
[ ] 4. Signal
[ ] 5. Email
[ ] 6. SMS (Twilio)
[ ] 7. Matrix
[ ] 8. Mattermost
[ ] 9. WhatsApp
[ ] 10. DingTalk
[ ] 11. Feishu / Lark
[ ] 12. WeCom (Enterprise WeChat)
[ ] 13. WeCom Callback (Self-Built App)
[ ] 14. Weixin (WeChat)
[ ] 15. BlueBubbles (iMessage)
[ ] 16. QQ Bot
[ ] 17. Webhooks (GitHub, GitLab, etc.)
Hermes 支持 15+ 消息平台,为什么我首推 Telegram?
先说说 Telegram 这个平台本身。
Telegram 是一款以隐私和速度著称的即时通讯应用,目前月活超过 10 亿。它在技术圈之所以广受欢迎,除了端对端加密和无广告,最重要的原因是:它有一套极其开放和强大的 Bot API,允许开发者构建功能完整的自动化机器人,而且免费、无限制。
更关键的是,Telegram Bot 的聊天界面本身支持原生动态交互,这在其他 IM 里并不常见:
Inline Keyboard(内联键盘)
Bot 发出的每条消息,都可以在消息气泡正下方附加一排按钮——这就是 Inline Keyboard。和普通键盘不同,点击这些按钮不会向聊天框发送任何文字,而是静默触发后端逻辑,然后直接原地编辑那条消息的内容。
这意味着什么?一条消息可以变成一个活的交互组件,而不是一次性的文字输出。以 Hermes 为例:
发送
/model命令,Bot 立刻返回一条带按钮的消息,列出所有已配置的模型提供商(如OpenAI (15)、✓ Anthropic (12))。点击某个提供商,这条消息就地变成该提供商的模型列表,还有翻页的 Prev/Next 按钮。整个过程聊天记录里只有一条消息,没有任何噪音。当 Agent 要执行危险命令时(比如递归删除),不是让你打
yes确认,而是直接弹出 [确认] [取消] 两个按钮供你点击,更直观也更安全。澄清提问(Clarify)时,Agent 会把几个可选方向做成按钮,你一键选择,不用手打回复。
这种「消息即界面」的设计,让 Telegram Bot 的体验远远超过普通聊天——它更接近一个嵌入消息流的轻量 App。
其次,Telegram 的 Bot 能力在 Hermes 场景下几乎没有对手:
- 全媒体支持:发语音消息,Hermes 自动转录成文字处理;发图片,Hermes 直接调用视觉分析;发文档或代码文件,Hermes 读取后执行任务——所有这些都在一个对话窗口里完成。
- 跨设备无缝衔接:手机、平板、电脑都装 Telegram,随时随地切换设备继续和 Agent 对话,上下文不中断。
- 群聊支持:在团队群里 @机器人,所有成员共享同一个 Agent,但各自保留独立的对话历史。
- 定时任务推送:Cron 任务跑完,结果直接推送到你的 Telegram,不用盯着服务器日志。
- 访问不受限:对于国内用户,Telegram 不依赖微信生态,不需要申请企业账号,个人即可创建 Bot,几分钟内上线。
相比之下,微信/企业微信 Bot 申请门槛高、审核慢、限制多;WhatsApp 国内访问需要代理;Discord 在移动端体验不如 Telegram 轻便。对个人开发者和技术用户而言,Telegram 是目前接入 AI Agent 最省力、体验最完整的选择。
具体配置步骤:
第一步:创建 Telegram Bot
- 打开 Telegram,搜索
@BotFather(Telegram 官方的 Bot 管理机器人) - 发送
/newbot - 按提示设置 Bot 的显示名称(如
我的 Hermes 助手)和用户名(必须以bot结尾,如myhermes_bot) - BotFather 会返回一个形如
7xxxxxxxxx:AAxxxxxxxx的 Token,复制保存好

第二步:获取你的 Telegram User ID
- 搜索
@userinfobot - 发送任意消息
- 它会立即回复你的数字 ID(如
123456789),这是你在 Telegram 的唯一标识

第三步:在填写token和user id
◆ Telegram
Create a bot via @BotFather on Telegram
Telegram bot token:
✓ Telegram token saved
🔒 Security: Restrict who can use your bot
To find your Telegram user ID:
1. Message @userinfobot on Telegram
2. It will reply with your numeric ID (e.g., 123456789)
Allowed user IDs (comma-separated, leave empty for open access): 8610xxxxxx
✓ Telegram allowlist configured - only listed users can use the bot
📬 Home Channel: where Hermes delivers cron job results,
cross-platform messages, and notifications.
For Telegram DMs, this is your user ID (same as above).
Use your user ID (8610196175) as the home channel? [Y/n]: y
✓ Telegram home channel set to 86xxxxxxxx
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ Messaging platforms configured!
Start the gateway to bring your bots online:
hermes gateway run # Run as container main process
For automatic restarts, use a Docker restart policy:
docker run --restart unless-stopped ...
docker restart <container> # Manual restart
提示 :配置好Telegram,之后,你发送消息可能没有反应,需要重启docker才生效。

安全提示:一定要设置白名单!Bot Token 一旦泄露,任何人都能通过你的 Bot 控制整个 Agent,包括执行命令、读取文件。如果 Token 泄露,立即在 BotFather 发送
/revoke撤销。
七、启动!
配置完成后会引导你自动启动:

也可以重启完整的 Docker Compose 服务:
# 进入 compose 文件所在目录
cd ~/hermes
# 后台启动
docker compose up -d
# 查看日志,确认 Gateway 正常运行
docker compose logs -f hermes-gateway
看到类似这样的日志就说明成功了:
[gateway] Telegram bot connected: @你的BotName
[gateway] Ready. Listening for messages...
此时打开 Telegram,找到你的 Bot,发一条消息试试。🎉 也可以浏览器访问:

但是这个UI有点阅读不友好。
八、常用命令速查
进入容器交互式 CLI
docker exec -ti hermes-dashboard bash
# 进入容器后:
hermes # 启动命令行对话
hermes doctor # 诊断配置问题
hermes config # 查看当前配置
修改配置
# 方式一:重新运行设置
docker exec -ti hermes-dashboard /opt/hermes/.venv/bin/python3 /opt/hermes/.venv/bin/hermes setup
# 方式二:直接编辑文件
vim ~/.hermes/config.yaml
vim ~/.hermes/.env
# 方式三:命令行设置
hermes config set <key> <value>
常用管理命令
hermes setup model # 切换模型/提供商
hermes setup tools # 管理工具集配置
十、小结
Hermes Agent 是目前开源自托管 Agent 中学习闭环设计最完整的一个。和 OpenClaw 相比,它更适合长期运行、想让 Agent 随时间越来越懂自己的用户。
用 Docker Compose 部署的好处是:环境隔离干净、数据持久安全、升级简单、运维成本低。轻松就能拥有一个真正属于自己、7×24 小时在线、越用越聪明的私人 AI 助手。
部署过程如果有任何问题,欢迎留言交流。Hermes 的官方文档也非常详细: