Hermes Agent 上手体验

OpenClaw 火了有大半年,上下游生态链已经相对完善了。遂来动手体验一下号称它的 Pro Max 版本 —— Hermes。

It's the only agent with a built-in learning loop — it creates skills from experience, improves them during use, nudges itself to persist knowledge, searches its own past conversations, and builds a deepening model of who you are across sessions.

使用 Docker 快速开始

https://hermes-agent.nousresearch.com/docs/user-guide/docker

整体的安装过程还是比较简单的,大体分为两个步骤:初始化安装启动

初始化安装

这一步骤是完成 Hermes Agent 运行代码下载以及基本配置初始化

mkdir -p /opt/hermes-agent/data
  docker run -it --rm \
  -v /opt/hermes-agent/data:/opt/data \  
  nousresearch/hermes-agent setup

其中 Hermes Agent 所在磁盘目录需要提前规划好,比较推荐放在 /opt 下面。

当完成初始化时,在 docker 容器实例内部有两个关键路径分别为:

  • /opt/hermes: 运行 python 源码
  • /opt/data: 用户配置文件、运行数据和日志

可以把 /opt/data 目录映射到本机上,如 /opt/hermes-agent/data 中。

等待镜像下载完成 CLI 启动之后会有基础的配置选择,如果不确定怎么做建议选择 Blank Slate 选项,后续的模型、插件、工具和渠道都可以暂不配置。毕竟多一分配置就意味着更多的 Token 消耗。

启动 Gateway 和 Dashboard

可以通过 docker-compose.yml 将启动配置固化下来

services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes
    restart: unless-stopped
    network_mode: host
volumes:
  - /opt/hermes-agent/data:/opt/data
 
environment:
  TZ: "Asia/Shanghai"
  HERMES_TIMEZONE: "Asia/Shanghai"
  HERMES_UID: "${HERMES_UID}"
  HERMES_GID: "${HERMES_GID}"
  HERMES_DASHBOARD: "1"
  HERMES_DASHBOARD_BASIC_AUTH_USERNAME: "${HERMES_DASHBOARD_BASIC_AUTH_USERNAME}"
  HERMES_DASHBOARD_BASIC_AUTH_PASSWORD: "${HERMES_DASHBOARD_BASIC_AUTH_PASSWORD}"
  HERMES_DASHBOARD_BASIC_AUTH_SECRET: "${HERMES_DASHBOARD_BASIC_AUTH_SECRET}"
 
command:
  - gateway
  - run

有几个值得关注的点:

时区

TZHERMES_TIMEZONE 会分别影响实例的时区和 Agent 执行的时区。

虽然 Hermes Agent 官方文档没有明确的说明,但最好还是都设置一下。

执行用户

通常容器实例会以 root 身份启动,但内部的 python 进程会以 UID/GID 身份启动,最好将 HERMES_UIDHERMES_GID 设置成你常用的用户身份。

否则当你去改动 /opt/hermes-agent/data 中的配置数据时可能会因为权限变更导致 Hermes Agent 失去读写权限导致程序异常。

DASHBOARD 相关配置

dashboard 是可选的配置,对于远程服务器 + docker 这种组合,端口需要经过两次映射必须配置身份验证

20260716193434401.png

说白了就是只要当 Docker 实例内部 dashboard 的 Host 为 0.0.0.0 是就会触发身份验证检测,如果用户没有配置相应的验证方式会导致进程直接报错。

我作为个人短期使用,就选择了最简单的账号密码验证方式。

需要注意 network_mode: host 表明 Docker 实例的端口映射与防火墙保持一致,也可以直接写代替这个配置

port:
  "9119:9119"

最后启动实例:

docker compose up -d

模型配置

常规的模型照着 Hermes Agent 的引导配置即可:

# uid 和 gid 填对应的 HERMES_UID 和 HERMES_GID
docker exec -u <uid>:<gid> hermes hermes model

如果是从 OpenClaw 迁移过来的自定义 API 会有一些字段的映射:

  • models.providers => custom_providers
  • api:openai-completions => api_mode:chat_completions

Discord 配置

我个人是选择了 Discord 作为消息渠道,首先需要前往 Discord 开发者后台 创建应用和 Bot。

创建完成之后点击机器人选项卡做三件事:

  1. 找到令牌 选项,创建/重置令牌,将 Token 保存下来;
  2. 打开 Privileged Gateway Intent 以及它下面的三个子项 Presence IntentServer Members IntentMessage Content Intent 的开关;
  3. 关闭需要 OAuth2 代码授权

然后点击 OAuth2选项卡在:

  1. OAuth2 URL 生成器选项中勾选botapplications.commands 权限点
  2. 机器人权限中勾选所需的权限点(建议把文本权限都勾选上)
  3. 复制已生成的 URL

回到 Discord 软件中做四件事情:

  1. 点击设置 - 高级设置打开开发者模式
  2. 创建一个 Discord 服务器和频道,这个服务器作为机器人的服务对象,这个频道作为这个机器人的主要频道,后续主要用于发送一些执行日志。
  3. 从频道成员列表点击进入自己的资料卡页面,点击右上角复制自己的用户 ID
  4. 右键频道,复制频道 ID(只能在 PC 端)

最后两步:

  1. 在 dashboard 的 channel 选项卡中配置 Discord,将刚刚记下来的信息(Token、User ID、Channel ID)填进去。
  2. 用浏览器访问已生成的 OAuth URL邀请机器人加入服务器

如果一切顺利,至此已经可以在 Discord 中与机器人聊天了。

定时任务

使用定时任务构建自动化是我的根本诉求。

Hermes Agent 的定时任务本质上是一次独立上下文的大模型请求,通过为此次请求扩充上下文来达成目的,扩充的手段有:定时任务 prompt、skill 调用、script 输出、工作区上下文这四种方法。

20260716205045002.png

从 Script 开始

从稳定性和调试成本而言 Python Script 永远是第一选择。

测试下来用固定化的脚本做数据获取、数据预处理工作可以显著提升最终结果的稳定性,还可以一定程度上节省 Token 消耗。

{"wakeAgent": false}

Hermes Agent 约定当 Script 输出内容包含上述为假的布尔值时可以直接跳过唤起 Agent 工作,也就是说 Script 的执行频率可以远高于 Agent 的工作频率。

实际上就是变相的将工作流的触发器从”定时触发“转移到了”自定义主动触发“,是高级工作流的一种初级抽象形式。(来自四年 Workflow 工作经验开发工程师的肯定)

这种“变频齿轮“的工作模式进一步的节省 Token。(只能说就目前而言 Token 仍然是全球最热门的资源之一)

以我编写的 Github Weekly Trending Top3 为例:

  1. 读取 Github Trending 周榜,爬取排名前三仓库的信息;
  2. 对信息作精炼和数据分析;
  3. 基于上述信息对社区本周热点作分析,对趋势作预测。

如果是纯 Agent 方法,最优解可以使用成熟开源的 github-trending Skill。但整体测试下来效果不理想。

我的最终做法还是让 Codex 写了一个 400 多行的爬虫脚本,部分数据可以通过申请 GITHUB_TOKEN 直接调用 Github OpenApi 来获得更稳定的数据。

20260717114758845.png

整体的效果还不错。并且由于将数据获取预处理都交给了上游,我可以写出更加精炼的、聚焦于分析和预测的 prompt。

Agent 全链路托管Script 数据预处理 + Agent 数据分析
20260717115305055.png
20260717115250948.png

当 Agent 的注意力不被多个步骤分散,聚焦于做数据分析这一件事时。它可以做的更加深入和完美。

20260717141737826.png

一次运行的成本在 $0.001 左右,压缩的非常极致。