Hermes Agent 完全指南

Hermes Agent 是由 Nous Research 开发的开源 AI Agent 框架,可在终端、消息平台和 IDE 中运行。它属于与 Claude Code、OpenAI Codex、OpenClaw 同类的自主编码与任务执行代理,通过工具调用与系统交互。

Hermes 的核心设计理念是提供商无关——你可以在 OpenRouter、Anthropic、OpenAI、DeepSeek、Google Gemini 等 15+ 提供商之间自由切换模型,无需修改任何工作流。

一、架构概述

Hermes Agent 的架构分为三层:

  • 核心引擎 (Core) — 负责工具调用、会话管理、记忆系统和技能系统的编排
  • 网关 (Gateway) — 多平台消息网关,将 Telegram、Discord、Slack、Matrix 等 10+ 平台的消息统一路由到核心引擎
  • CLI 层 — 终端交互界面(TUI),支持 /slash 命令和会话管理

数据存储方面:

  • 会话历史:本地 SQLite(~/.hermes/sessions/)
  • 记忆:Hindsight 语义搜索 + 持久化记忆文件
  • 技能:~/.hermes/skills/ 下的 SKILL.md 文件
  • 配置:~/.hermes/config.yaml + ~/.hermes/.env

二、安装方式

方式一:一键安装脚本(推荐)

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

脚本会自动检测系统环境,安装依赖,并创建 hermes 命令。安装完成后:

hermes doctor        # 检查依赖和配置
hermes --version     # 查看版本

方式二:pip 安装

pip install hermes-agent

或者从源码安装:

git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
pip install -e .

方式三:Docker 部署

Hermes 提供了官方 Docker 镜像,适合服务器端持续运行:

docker pull nousresearch/hermes-agent:latest

基础运行:

docker run -it --rm \
  -v ~/.hermes:/home/hermes/.hermes \
  nousresearch/hermes-agent:latest \
  hermes chat

使用 Docker Compose 持久化运行(推荐):

# docker-compose.yml
version: '3.8'
services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes
    restart: unless-stopped
    volumes:
      - ~/.hermes:/home/hermes/.hermes
    environment:
      - OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
      - TZ=Asia/Shanghai
    command: hermes gateway run

启动:

docker compose up -d

Docker 部署注意事项:

  • 务必挂载 ~/.hermes 目录,否则重启后配置丢失
  • API Key 通过环境变量传入,或提前在 ~/.hermes/.env 中配置
  • 如果使用网关模式,需要暴露对应端口(如 Telegram 不需要额外端口)
  • ARM 架构(如 Oracle ARM、树莓派)完全兼容,镜像支持 multi-arch

三、初始化配置

首次运行需要配置模型提供商:

hermes setup          # 交互式配置向导
hermes model          # 选择和切换模型

常用的提供商配置示例(~/.hermes/.env):

OPENROUTER_API_KEY=sk-or-v1-xxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxx
OPENAI_API_KEY=sk-xxxxxxxx
DEEPSEEK_API_KEY=sk-xxxxxxxx

配置模型(~/.hermes/config.yaml):

default_model: deepseek/deepseek-chat
provider: openrouter

# 也可以使用 Anthropic 直连
# default_model: claude-sonnet-4-20250514
# provider: anthropic

四、核心功能详解

技能系统 (Skills)

技能是 Hermes 的程序性记忆——将复杂的任务流程保存为可复用的 SKILL.md 文件。当你完成一个复杂操作后,可以将其保存为技能,下次直接加载执行。

hermes skills browse          # 浏览技能库
hermes skills install <name>  # 安装社区技能

技能文件结构:

~/.hermes/skills/
├── devops/
│   ├── SKILL.md
│   └── scripts/
├── github/
│   └── SKILL.md
└── mlops/
    └── SKILL.md

记忆系统 (Memory)

Hermes 支持跨会话持久记忆,包括:

  • Hindsight 记忆 — 基于语义搜索的长时记忆,自动索引历史会话
  • 显性记忆 — 手动保存的用户偏好、环境事实、项目约定
  • 会话搜索 — FTS5 全文搜索历史会话内容

多平台网关

Hermes 可以通过网关同时运行在多个消息平台上:

hermes gateway run

支持的平台:Telegram、Discord、Slack、Matrix、Signal、WeChat、WhatsApp、X/Twitter DM 等。每个平台需要在 config.yaml 中配置对应的 Token 或 Webhook URL。

定时任务 (Cron)

支持创建周期性任务:

hermes cron create --schedule "0 9 * * *" --prompt "每天早报"

MCP 协议支持

Hermes 内置原生 MCP(Model Context Protocol)客户端,可以连接任意 MCP 服务器来扩展工具集:

# config.yaml 配置
mcp:
  servers:
    time:
      command: uvx
      args: [mcp-server-time]
    fetch:
      command: uvx
      args: [mcp-server-fetch]

五、Docker 部署详解

生产环境 Docker Compose

适合在服务器上长期运行 Hermes 网关的完整配置:

# docker-compose.yml
version: '3.8'
services:
  hermes-gateway:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-gateway
    restart: unless-stopped
    user: "1000:1000"
    volumes:
      - /path/to/hermes/data:/home/hermes/.hermes
    env_file:
      - .env
    environment:
      - TZ=Asia/Shanghai
    command: hermes gateway run
    logging:
      driver: json-file
      options:
        max-size: 10m
        max-file: 3

使用 Docker 运行单次任务

echo "你的问题" | docker run -i --rm \
  -v ~/.hermes:/home/hermes/.hermes \
  nousresearch/hermes-agent:latest \
  hermes chat -q "$(cat)"

Docker 更新

docker compose pull
docker compose up -d

使用 systemd 管理 Docker 容器

# /etc/systemd/system/hermes-gateway.service
[Unit]
Description=Hermes Gateway
After=docker.service
Requires=docker.service

[Service]
Restart=always
RestartSec=10
WorkingDirectory=/opt/hermes
ExecStart=/usr/bin/docker compose up
ExecStop=/usr/bin/docker compose down

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now hermes-gateway

六、WebUI 常见问题 (FAQ)

Q: 启动后 WebUI 页面空白或无法加载

原因: 端口被占用或 Gateway 未正确启动。

解决:

# 检查 Gateway 日志
docker logs hermes-gateway

# 确认端口占用
ss -tlnp | grep 8080

# 修改端口(config.yaml)
gateway:
  webui_port: 8081  # 改为其他端口

Q: WebUI 显示 "Cannot connect to Hermes core"

原因: WebUI 无法与 Hermes 核心引擎建立连接。

解决:

  • 确认 hermes gateway run 或容器正在运行
  • 检查防火墙是否放行了 WebSocket 连接
  • 反向代理需要配置 WebSocket 支持(Nginx 需添加 Upgrade/Connection 头)

Q: Docker 容器重启后配置丢失

原因: 未挂载 .hermes 数据卷。

解决: 始终使用 -v ~/.hermes:/home/hermes/.hermes 挂载持久化目录。

Q: 模型响应慢或超时

原因:

  • API Key 速率限制
  • 选择的模型负载过高
  • 网络延迟

解决:

  • 切换为更快的模型(如 deepseek-chat 比 claude-opus 快)
  • 检查 API 账户余额
  • 使用 OpenRouter 等聚合提供商进行 fallback

Q: Skills 不生效或加载失败

原因: SKILL.md 格式错误或路径不对。

解决:

  • 确保 SKILL.md 包含正确的 YAML frontmatter
  • 检查文件是否在 ~/.hermes/skills/ 下
  • 运行 hermes skills browse 确认是否加载

Q: Telegram / Discord 消息不响应

原因:

  • Bot Token 配置错误或过期
  • Webhook URL 失效
  • 网关未运行

解决:

  • 重新生成 Bot Token 并更新 config.yaml
  • 确认网关处于运行状态:hermes gateway status
  • 检查网络是否能访问对应平台 API

七、常用 CLI 命令速查

hermes doctor              # 检查环境
hermes setup               # 配置向导
hermes model               # 切换模型
hermes chat -q "问题"      # 单次查询
hermes --continue          # 恢复最近会话
hermes gateway run         # 启动消息网关
hermes gateway status      # 网关状态
hermes skills browse       # 浏览技能库
hermes skills install <name>  # 安装技能
hermes cron list           # 查看定时任务
hermes update              # 更新到最新版

八、相关资源