$catSERPAPI||~12 min

Hermes Agent 深度部署与实战全攻略 从安装到生产环境

advertisement

我的 Hermes Agent 深度部署踩坑全记录:从装环境到生产上线

说实话,我最开始接触 Hermes Agent 的时候,压根没想到这玩意儿能这么折腾。从本地跑起来到最终部署到服务器上给团队用,前前后后踩了不少坑,今天把整个过程捋一遍,希望能帮后来的人少走点弯路。

我为什么要用 Hermes Agent

市面上 AI Agent 框架一堆,我之前也用过 OpenClaw,用了一阵子感觉有个问题——每次重启对话它就"失忆"了,之前教它的东西全白费。后来在 GitHub 上刷到 Hermes Agent,这玩意儿的卖点就是会自己记住东西,而且不是简单的存个文件,是用 SQLite FTS5 做全文搜索,还能接 Hindsight、Mem0 这些外部记忆插件。

我自己实测下来,用了两周之后它确实记住了我常用的命令、项目结构、甚至我代码风格的偏好。这点是真香。

先把环境搞起来

我踩的第一个坑:sudo 问题

我第一次装的时候习惯性加了 sudo,结果后面各种权限报错,折腾了半小时才反应过来。千万别用 sudo 跑安装脚本!

bash
1
# 先装依赖
2
sudo apt update
3
sudo apt install -y git ripgrep ffmpeg
4
 
5
# 一行命令装,注意:不加 sudo!
6
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
7
 
8
source ~/.hermes/bashrc
9
hermes --version

如果你装完发现 hermes 命令找不到,先跑 source ~/.bashrc,再查一下 ~/.local/bin 在不在 PATH 里。我在这卡过两次了。

Docker 部署才是正经用法

本地玩玩一行脚本就够了,但真要上服务器,我强烈推荐 Docker Compose。我最开始直接裸跑 Docker,后来发现 compose 文件管理起来方便太多:

yaml
1
services:
2
  hermes:
3
    image: nousresearch/hermes-agent:latest
4
    container_name: hermes
5
    restart: unless-stopped
6
    command: gateway run
7
    ports:
8
      - "8642:8642"
9
      - "9119:9119"
10
    volumes:
11
      - ${HOME}/.hermes:/opt/data   # 这行一定要有!
12
    environment:
13
      HERMES_DASHBOARD: "1"
14
      API_SERVER_ENABLED: "true"
15
      API_SERVER_HOST: "0.0.0.0"
16
      API_SERVER_KEY: "${API_SERVER_KEY}"

踩坑警告:volumes 那行不挂的话,容器一重建,你之前攒的记忆和技能全没了。我第一次部署的时候就没挂,白跑了三天的对话记录全丢了,心疼死。

bash
1
docker compose up -d
2
docker logs -f hermes

模型接入这块我走了不少弯路

最容易搞混的地方:两个 API Key

这是新手最容易被搞晕的地方,我一开始也分不清:

  • OPENAI_API_KEY:这是 Hermes 调大模型用的密钥(比如你接 OpenRouter、Kimi 等)
  • API_SERVER_KEY:这是外部应用调 Hermes 用的密钥

两个完全不是一个东西,别搞反了。

.env 配置

bash
1
OPENAI_API_KEY=sk-你的key
2
OPENAI_BASE_URL=https://openrouter.ai/api/v1

注意:OPENAI_BASE_URL 写到 /v1 就行,别写成完整路径。我第一次写成了 /v1/chat/completions,结果报错 404,排查了半天。

快速设置也可以用命令行:

bash
1
hermes config set KIMI_API_KEY sk-kim...xxxx
2
hermes config set model.default kimi-k2.5
3
hermes config set model.provider kimi-coding

config.yaml 生产配置

yaml
1
model:
2
  provider: openai
3
  default: gpt-4o
4
 
5
terminal:
6
  backend: docker       # 生产环境用 docker,别用 local
7
  timeout: 180
8
 
9
approvals:
10
  mode: smart           # 这个别关,关了有安全风险
11
  timeout: 60
12
 
13
memory:
14
  memory_enabled: true
15
  user_profile_enabled: true
16
  memory_char_limit: 2200
17
 
18
security:
19
  allow_private_urls: false  # 生产环境保持 false

飞书接入:我折腾最久的部分

飞书接入是我花了最多时间调的,主要是 websocket 模式那块文档当时还不太清楚。

第一步:去飞书开放平台创建应用,开 Bot 能力,拿到 App ID 和 App Secret。

第二步:编辑 ~/.hermes/.env

bash
1
FEISHU_APP_ID=cli_xxx
2
FEISHU_APP_SECRET=your_secret
3
FEISHU_MODE=websocket          # 推荐模式,不需要公网 webhook
4
FEISHU_GROUP_POLICY=allowlist
5
FEISHU_ALLOWED_USERS=ou_your_open_id

第三步:config.yaml 里加上:

yaml
1
group_sessions_per_user: true
2
 
3
platforms:
4
  feishu:
5
    extra:
6
      ws_reconnect_interval: 120
7
      ws_ping_interval: 30

第四步hermes gateway start,然后去飞书私聊发条消息试试。

我踩的坑:一开始用的是 webhook 模式,需要公网 IP 和回调地址,各种配 SSL 证书折腾半天。后来发现 websocket 模式根本不需要这些,直接长连接就好了,省了一大堆事。

验证连接状态:

bash
1
cat ~/.hermes/gateway_state.json
2
 
3
# 看到 "state": "connected" 就说明没问题

API Server 的用法

Hermes 可以对外提供 OpenAI 兼容接口,这意味着你可以把它当一个"有记忆的中间层"来用:

bash
1
curl http://localhost:8642/v1/chat/completions \
2
  - H "Authorization: Bearer your-api-key" \
3
  - H "Content-Type: application/json" \
4
  - d '{
5
    "model": "gpt-4o",
6
    "messages": [
7
      {"role": "user", "content": "帮我分析一下今天的系统日志"}
8
    ]
9
  }'

我自己把它接到了内部的运维系统上,效果还不错,它能记住之前的分析上下文。

定时任务和技能沉淀

Cron 调度器

这功能挺有意思,用自然语言就能设定时任务:

bash
1
hermes schedule "每天早上 8 点,汇总我的邮件并发送到飞书"
2
hermes schedule list

技能系统

这是我最喜欢的功能。跟 OpenClaw 不一样,Hermes 的技能是它自己"悟"出来的——处理完一个复杂任务之后,它会自动生成一个 SKILL.md 存到 ~/.hermes/skills/ 下面,下次遇到类似任务直接复用。

我跑了大概一个月,它自动沉淀了十几个技能,包括我那个复杂的 Git 工作流、服务器巡检脚本、甚至还有个分析日志的完整流程。

从 OpenClaw 迁移

一行命令的事:

bash
1
hermes migrate --from openclaw

SOUL.md、记忆、技能、API Key 都能迁过来。我建议先迁移试几天,没问题了再把 OpenClaw 停掉,两个可以并存。

生产环境要注意的事

  1. 执行后端选 docker:别让 Agent 直接操作宿主机,出事了不好收场
  2. allow_private_urls 保持 false:防止 SSRF,这是安全底线
  3. approvals.mode 用 smart:别为了方便直接关掉审批
  4. 定期备份tar -czf hermes-backup-$(date +%F).tar.gz ~/.hermes
  5. API_SERVER_KEY 用长随机串:别用 123456 那种
bash
1
# 健康检查,接监控系统用
2
curl http://127.0.0.1:8642/health
3
 
4
# {"status":"ok"}

最后说几句

Hermes Agent 我用下来最大的感受就是——它真的是越用越好用。刚开始那几天感觉跟普通 Agent 差别不大,但跑了一两周之后,它记住的东西越来越多,很多重复的活它自己就会了。

不过也别指望它一步到位,先把本地环境跑通,再上 Docker,最后接消息平台。一步步来,别急。

学习路径我建议:一行脚本本地跑通 → Docker Compose 部署 → 接飞书/Telegram → 开启 API Server → 调优记忆和技能系统。按这个顺序来,踩坑最少。

advertisement

Hermes Agent 深度部署与实战全攻略 从安装到生产环境 — AI Hub