Hermes Docker 数据卷方案

架构总览

Hermes Agent 的运行时文件按功能分层,每层对应 /opt/data 中的一组目录:

接入层 Gateway 进程 → 监听 Telegram / Discord / CLI 等平台的消息
gateway_state.json gateway.lock / .pid channel_directory.json
↓ 读取配置 · 加载 skill · 管理 session
配置层 启动与认证 → 决定 Hermes 行为和身份
config.yaml .env auth.json SOUL.md
↓ 操作项目 · 调用工具 · 读写知识库
数据层 用户资产 → 你的项目、知识库、skill、对话历史
home/
www/ 项目 · gbrain 知识库 · trilium-mcp · bun
skills/ 25 个 skill 分类,Hermes 的程序性记忆
sessions/ memories/ 对话历史 + 跨会话持久记忆
↓ 索引 · 调度 · 记录
状态层 运行时状态 → 会话索引、定时任务、日志
state.db cron/ kanban.db logs/ research/
↓ 安全扫描 · 缓存加速 · 模型发现
运行时层 自动产物 → 容器自动下载/生成,迁移时不应带走
bin/tirith cache/ models_*_cache.json .local/ + home 下 4 个隐藏缓存

/opt/data/ 文件树

/opt/data/
│
├── 13K  config.yaml              # 配置层 · ✅ 必须 · Hermes 全量配置
├── 20K  .env                     # 配置层 · ✅ 必须 · 421 个环境变量
├── 1.3K channel_directory.json   # 接入层 · ✅ 必须 · 频道/群组 ID 映射
│
├── 1.9G home/                    # 数据层 · ✅ 必须 · 用户目录
│   ├── 336M gbrain/              #   含 212M node_modules + 37M bun-linux-aarch64.zip(可删)
│   ├── 97M  bun-new/             #   Bun 二进制
│   ├── 77M  trilium-mcp/         #   含 68M node_modules
│   ├── 49M  www/                 #   用户项目
│   │   ├── 21M  brain/
│   │   ├── 16M  _gsdata_/
│   │   ├── 8.7M hermes-fund-deck/
│   │   └── 4.0M kc-fof-excel/
│   ├── ⚠️  490M  .local/         # 运行时层 · ❌ 不应 · pip 包
│   ├── ⚠️  337M  .bun/           # 运行时层 · ❌ 不应 · Bun 缓存
│   ├── ⚠️  316M  .gbrain/        # 数据层 · ⭐ 推荐 · 知识库
│   ├── ⚠️  279M  .gbrain.backup/ # 数据层 · ⭐ 推荐 · 备份
│   ├── ⚠️  105M  .cache/         # 运行时层 · ❌ 不应
│   └── ⚠️   32M  .npm/           # 运行时层 · ❌ 不应
│
├── 9.6M skills/                  # 数据层 · ✅ 必须 · 自定义 skill
├── 55M sessions/                 # 数据层 · ⭐ 推荐 · 对话记录
├── 56M state.db                  # 状态层 · ⭐ 推荐 · 会话索引
│
├── 2.8K cron/jobs.json           # 状态层 · ✅ 必须 · 定时任务
├── 100K kanban.db                # 状态层 · 📋 可选 · 看板
├── 796K logs/                    # 状态层 · 📋 可选 · 日志
├── 4.0K memories/                # 数据层 · ⭐ 推荐 · 跨会话记忆
│
├── 2.9K auth.json                # 配置层 · ⭐ 推荐 · OAuth 凭据
├──  536 SOUL.md                  # 配置层 · ⭐ 推荐 · 人格提示词
│
├── ❌  11M  bin/tirith            # 运行时层 · ❌ 不应 · 安全扫描
├── ❌ 200K  cache/                # 运行时层 · ❌ 不应
├── ❌ 2.6M  .local/               # 运行时层 · ❌ 不应
├── ❌ 1.9M  models_*_cache.json   # 运行时层 · ❌ 不应
├── ❌  671  ollama_*_cache.json   # 运行时层 · ❌ 不应
└── ❌  ...其他运行时文件          # 运行时层 · ❌ 不应

映射方案

整个目录映射,不做特殊改造:

services:
  hermes-agent:
    image: nousresearch/hermes-agent:v2026.5.7
    volumes:
      - ./data:/opt/data
    environment:
      - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
    restart: unless-stopped

迁移

打包:

tar czf hermes-migrate.tar.gz \
  --exclude='home/.local' \
  --exclude='home/.bun' \
  --exclude='home/.cache' \
  --exclude='home/.npm' \
  --exclude='home/gbrain/bun-linux-aarch64.zip' \
  --exclude='bin' \
  --exclude='cache' \
  --exclude='.local' \
  --exclude='models_*_cache.json' \
  --exclude='ollama*' \
  --exclude='gateway.lock' \
  --exclude='gateway.pid' \
  --exclude='interrupt_debug.log' \
  --exclude='.hermes_history' \
  --exclude='state.db-wal' \
  --exclude='state.db-shm' \
  --exclude='home/.gbrain.backup-*' \
  -C /path/to ./data

解压:

tar xzf hermes-migrate.tar.gz
mv data /path/to/
docker compose up -d

图例

图标级别含义
必须不携带则新实例上无法运行或丢失核心进化
推荐带上更好,丢了也不致命(可重新生成)
📋可选有更好但没有也不影响正常运行
不应运行时产物,容器重启后自动重建,迁移时不拷