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