Hermes Agent:

一款开源、可本地部署、自带持久记忆与工具调用的自主 AI 智能体,能自主执行任务并持续自我进化。它不是拴在 IDE 上的编程助手,也不是套了个聊天壳的单一 API 封装。它是一个自主 Agent,运行越久能力越强。

image.png

核心特性:

  • • 闭环学习 —— Agent 自主管理的记忆,配合周期性提醒;自主创建技能、使用过程中自我优化;基于 FTS5 的跨会话召回结合 LLM 摘要;以及 Honcho 辩证式用户建模
  • • 随处运行,不限于笔记本 —— 6 种终端后端:本地、Docker、SSH、Daytona、Singularity、Modal。Daytona 和 Modal 提供无服务器持久化 —— 空闲时环境休眠,几乎不产生费用
  • • 在你常驻的地方待命 —— CLI、Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost、邮件、短信、钉钉、飞书、企业微信、BlueBubbles、Home Assistant —— 一个网关覆盖 15+ 平台
  • • 模型训练者打造 —— 由 Nous Research 创建,这家实验室打造了 Hermes、Nomos 和 Psyche。兼容 Nous Portal、OpenRouter、OpenAI 或任意端点
  • • 定时自动化 —— 内置 cron,可向任意平台推送
  • • 委派与并行 —— 生成隔离的 sub-agent 实现并行工作流。通过 execute_code 进行程序化工具调用,将多步流水线压缩为单次推理调用
  • • 开放标准技能 —— 兼容 agentskills.io。技能可移植、可分享,通过 Skills Hub 由社区贡献
  • • 完整的网页操控 —— 搜索、提取、浏览、视觉、图像生成、TTS
  • • MCP 支持 —— 连接任意 MCP 服务器以扩展工具能力
  • • 为研究而生 —— 批处理、轨迹导出、使用 Atropos 进行 RL 训练。由 Nous Research 打造 —— Hermes、Nomos 和 Psyche 模型的幕后实验室

安装

Hermes Agent 部署过程中坑比较多,下面提供的模版也只会在原版基础上微调不会大幅度修改,所以部分系统部署有可能会遇到问题,可以跳转到“问题&解决”内容参考修改。

Docker Compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: unless-stopped
command: gateway run
ports:
- "8642:8642"
volumes:
- ./data:/opt/data
network_mode: host
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 --insecure
ports:
- "9119:9119"
volumes:
- ./data:/opt/data
environment:
- GATEWAY_HEALTH_URL=http://hermes:8642
network_mode: host
deploy:
resources:
limits:
memory: 512M
cpus: "0.5"

为什么要同时部署两个容器:

同一个镜像包含两个功能,一个容器当核心服务用,一个容器当网页面板用,分别启动,实现功能分离、资源独立、互不影响更加稳定。

网络模式选择:

默认好像是用 bridge 的,但如果可以建议用 host。如果 AI 创建启动项目,需要用到其他端口,使用 host 就不用再映射其他端口号了。虽然这里设置了 host 模式,但是为了 NAS 系统 Docker 里有跳转连接,所以也将端口号写出来。

参数说明(更多参数建议去看文档)

:::
8642(端口):API 网关端口

9119(端口):Web 面板端口

/opt/data(路径):存放配置数据

GATEWAY_HEALTH_URL(环境变量):网关地址

:::

使用

浏览器中输入 http://NAS的IP:9119 就能看到界面

图片

打开面板以后,先点击左下角切换为中文

图片

如果提示网关未运行,可以点击“重启网关”按钮

image.png

点击之后就会重启了(不过不知道为什么一直转圈圈,直接刷新网页就好了)

图片

TIP:虽然有 UI 面板可以图形化操作,不过我个人是建议使用 CLI 进行配置,因为一开始不清楚需要先设置什么。自带面板的我更多是作为辅助,比如查看会话,日志和简单的图形配置。

接下来,进入终端进行初始化配置,使用“/bin/bash”命令连接

图片

TIP:这里有一个坑点,直接用 root 权限,会导致后面修改后的文件权限有问题,但是如果切换为 hermes 账号又不能正常启动命令,属于两头堵。所以后面设置以后,会遇到权限问题。(我看 GitHub 上也有人提这个问题,应该后面会修好吧)

Hermes 的核心命令:

1
2
3
4
5
6
7
8
9
hermes — 交互式命令行,开启对话
hermes model — 选择大模型服务商与模型
hermes tools — 配置已启用的工具
hermes config set — 单独设置各项配置参数
hermes gateway — 启动消息网关(电报、迪斯科等平台)
hermes setup — 运行完整配置向导,一键全局配置
hermes claw migrate — 从 OpenClaw 迁移数据
hermes update — 更新至最新版本
hermes doctor — 检测排查运行故障

开始配置,输入“hermes setup”,选择第一个快速设置就行

图片

选择模型提供商,根据实际情况选择(我是买了 MinMax 的 29 元套餐,用起来还行)

图片

输入平台的密钥(这里输入是看不到的,回车确认就行)

图片

如果不是第三方平台,Base URL 默认回车确认就行

图片

选择默认使用模型,自行选择就行

图片

接下来就是配置消息平台

图片

目前基本支持国内常见的消息平台,根据实际情况输入编号选择(选 14 微信官方机器人是最简单的)

图片

如果不再选其他,回车就行

图片

输入“Y”,使用手机扫码登录(注意别超时了)

图片

TIP:下面设置的感觉没什么作用,毕竟目前微信机器人只能自己账号使用

私信授权方式:

1
2
3
4
Use DM pairing approval (recommended)使用私聊配对验证(推荐)
Allow all direct messages允许全部私聊消息
Only allow listed user IDs仅放行白名单内的用户 ID
Disable direct messages禁用私聊消息

设置私信授权方式,为了方便测试我就都放开先(不折腾了,先试试行不行,之后没问题再来重新设置)

图片

群聊权限默认禁用就行,避免在群里乱回复(有需要后面再来开启)

图片

微信连接成功,输入“Y”,设置为主频道

图片

配置完成就可以输入“Y”,重启网关(这时候机器人是还不能工作的)

图片

下面输入“Y”,在终端界面聊天测试一下

图片

进入会话界面,输入对话内容回车即可

图片

TIP:这里我出现报错,因为之前密钥设置错了

图片

可以在 UI 界面直接修改

图片

在会话页面,可以看到前面在终端输入的聊天内容

image.png

重新连接,输入“hermes”进入交互式对话

图片

回答前面熟悉对话界面,可以正常回复了

图片

回到面板界面,应该能注意到当前网关状态已停止,需要重启一下网关

图片

重启之后,有可能看到报权限有问题

图片

用 SSH 工具连接,也可以看到改过的文件权限不一样了

图片

遍历直接给 777 是不行的,需要重新设置用户组,参考下面命令

1
chown -R 10000:10000 ./data

图片

重新启动容器和网关,之前提示权限问题没有了

图片

也能看到微信机器人已经连接

图片

找到微信机器人,就可以聊天了

图片

下面简单看看面板其他页面,我就不一一介绍了

分析

图片

日志

image.png

定时任务

图片

技能

图片

示例

图片

配置

图片

密钥

图片

文档

图片

问题&解决

Permission denied

容器不断重启,查看日志会提示 Permission denied。这是因为权限问题,映射路径大概率没有自动生成文件,就算生成了也有可能会因为手动修改配置出现这种情况。

图片

最简单直接就是设置指定用户,参考添加 user: “root:root”(默认用户是 user: “10000:10000”)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: unless-stopped
command: gateway run
user: "root:root"
ports:
- "8642:8642"
volumes:
- ./data:/opt/data
network_mode: host
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 --insecure
user: "root:root"
ports:
- "9119:9119"
volumes:
- ./data:/opt/data
environment:
- GATEWAY_HEALTH_URL=http://hermes:8642
network_mode: host
deploy:
resources:
limits:
memory: 512M
cpus: "0.5"

Command not found

使用终端连接进入,输入“hermes”启动交互式会话,会提示找不到

图片

设置进入指定环境,环境变量设置 PATH ,参考下面(也可以手动输入“./setup-hermes.sh”,不过每次要重新创建不方便)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: unless-stopped
command: gateway run
user: "root:root"
ports:
- "8642:8642"
volumes:
- ./data:/opt/data
environment:
- PATH=/opt/hermes/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
network_mode: host
deploy:
resources:
limits:
memory: 4G
cpus: "2.0"

No messaging platforms enabled

这个是允许访问的用户白名单,因为还没有设置对接机器人(Telegram / 钉钉 / 飞书),还不需要打开可以先忽略。

图片

总结

Hermes Agent 是由 Nous Research 打造的一款具备闭环学习能力的开源自主 AI 智能体,它能通过持久记忆与工具调用实现自我进化。和龙虾最大区别就是可以自我进化,能自己总结 skill 而不是找各种 skill 作为“插件”武装起来。部署 Hermes 前前后后折腾了好几天了,要想真的跑起来真的有点难度,大部分都是项目开发者留下的坑。如果没有耐心好好研究,甚至稍微改动一点东西,都会因为各种权限问题导致容器不断重启。

目前 Hermes 特别火,但说实话还不成熟,虽然迭代速度也很快能解决,也是很折腾人的。但如果你想体验 AI 自主进化的未来感,或打造跨平台的数字分身,Hermes 依然值得一试。