一、个人版存储架构解析

Hermes Agent 在个人使用场景下,所有存储均围绕本机文件系统构建,以下是从实际环境中观察到的存储布局与数据流。

1.1 会话存储

核心数据库文件位于 ~/.hermes/state.db,采用 SQLite 3.x 引擎。通过分析其表结构,主要包含以下部分:

表名 用途
sessions 会话元数据(ID、模型、用户ID、时间戳等)
messages 消息记录(角色、内容、工具调用、时间戳)
state_meta 键值对形式的元数据存储
messages_fts 全文搜索索引(含 trigram 分词支持)
compression_locks 上下文压缩的并发控制锁

sessions 表存储每次对话的元信息,messages 表存储完整的对话记录,包括用户消息、助手回复、工具调用的输入输出。state_meta 表以键值对形式存储了记忆系统的持久化数据。

1.2 记忆系统

Hermes 的记忆功能通过 memory 工具实现,数据同样持久化在 state.dbstate_meta 表中。当前版本对记忆总容量有明确限制:

  1. 记忆(memory):2200 字符
  2. 用户画像(user profile):1375 字符

配置项位于 config.yamlmemory 段:

memory:

  memory_enabled: true

  user_profile_enabled: true

  memory_char_limit: 2200

  user_char_limit: 1375

  provider: ''            # 留空表示使用内置 SQLite

  nudge_interval: 10      # 每 N 轮触发一次记忆刷新

  flush_min_turns: 6      # 最少对话轮次后才写入

1.3 配置文件与密钥

~/.hermes/config.yaml     # 主配置(14K+ 行,覆盖全系统行为)

~/.hermes/.env            # API 密钥与敏感信息

~/.hermes/auth.json       # OAuth token 和凭证池

~/.hermes/logs/           # 网关运行日志

~/.hermes/sessions/       # 会话转录归档

1.4 推理层缓存

当前版本支持 OpenRouter 响应缓存(response_cache),TTL 默认 300 秒。这是应用层之外的网络层缓存,不涉及会话状态的分布式管理。

openrouter:

  response_cache: true

  response_cache_ttl: 300

二、企业场景的核心瓶颈

个人模式在企业级使用环境下,会明确暴露以下五类问题:

1. 存储单点:SQLite 是单文件数据库,不支持多节点并发写入。当多个 Gateway 实例同时服务不同用户时,SQLite 会成为写入瓶颈,且无法通过简单加机器扩展。

2. 多租户隔离缺失:所有用户的会话、记忆数据混合在同一数据库中。企业场景需要严格的租户隔离,既为了数据安全,也为了日志审计。

3. 高可用缺失:单节点部署,Gateway 进程或所在机器故障会导致服务完全不可用。

4. 记忆容量受限:2200 字符的记忆上限在长周期、多项目的团队协作中远远不够。跨项目的上下文切换、人员变动后的知识传承都无法有效支撑。

5. 上下文窗口压力:企业用户的单次任务往往更复杂,对话轮次更长。上下文压缩频繁触发,摘要质量直接影响后续推理的正确性。

三、企业级部署架构设计

3.1 整体架构

                    ┌─────────────────────────────┐

                    │     Load Balancer (Nginx)    │

                    └─────────────┬───────────────┘

                                  │

              ┌───────────────────┼───────────────────┐

              ▼                   ▼                   ▼

     ┌────────────────┐  ┌────────────────┐  ┌────────────────┐

     │  Gateway Pod #1 │  │  Gateway Pod #2 │  │  Gateway Pod #3 │

     └───────┬────────┘  └───────┬────────┘  └───────┬────────┘

             │                   │                   │

     ┌───────┴───────────────────┴───────────────────┴───────┐

     │                   Redis Cluster                       │

     │            (会话缓存、频率控制、锁服务)                   │

     └───────────────────────┬───────────────────────────────┘

                             │

     ┌───────────────────────┴───────────────────────────────┐

     │               PostgreSQL Cluster                      │

     │        (会话记录、消息历史、元数据存储)                   │

     │     Primary ─────► Replica-1                          │

     │              └────► Replica-2                          │

     └───────────────────────┬───────────────────────────────┘

                             │

        ┌────────────────────┼────────────────────┐

        ▼                    ▼                    ▼

  ┌───────────┐      ┌────────────┐      ┌──────────────┐

  │ Mem0 /    │      │  共享存储   │      │  LLM 网关    │

  │ Honcho    │      │  (NFS/S3)  │      │  (私有化部署) │

  └───────────┘      └────────────┘      └──────────────┘

3.2 会话存储层升级

企业场景应将会话存储从 SQLite 迁移至 PostgreSQL。核心理由是:读写分离支持多 Gateway 并发、按租户分区隔离数据、通过 pgvector 实现语义检索替代内置 FTS。

用户表可按租户 ID 做分区:

CREATE TABLE sessions (

    id TEXT PRIMARY KEY,

    tenant_id TEXT NOT NULL,

    model TEXT,

    user_id TEXT,

    created_at TIMESTAMP DEFAULT NOW(),

    updated_at TIMESTAMP DEFAULT NOW()

) PARTITION BY LIST (tenant_id);

CREATE TABLE messages (

    id INTEGER PRIMARY KEY,

    session_id TEXT REFERENCES sessions(id),

    role TEXT NOT NULL,

    content TEXT,

    created_at TIMESTAMP DEFAULT NOW()

);

Gateway 配置中指定 PostgreSQL 连接:

session_store:

  backend: postgresql

  dsn: "postgresql://hermes_user:${PG_PASSWORD}@pg-primary.internal:5432/hermes"

  pool_size: 20

  read_replicas:

    - "postgresql://hermes_user:${PG_PASSWORD}@pg-replica-1.internal:5432/hermes"

    - "postgresql://hermes_user:${PG_PASSWORD}@pg-replica-2.internal:5432/hermes"

3.3 记忆后端替换

Hermes 已内置可插拔的记忆后端机制(memory.provider 配置项)。企业场景建议从两种成熟方案中选择:

方案一:Mem0 向量记忆平台

Mem0 提供了云端向量存储,支持自动向量化、语义检索、多租户隔离和用量审计。

安装与配置:

hermes config set memory.provider mem0

.env 中补充 Mem0 API 密钥:

MEM0_API_KEY=your-mem0-api-key

方案二:Honcho 对话记忆管理

Honcho 专注于对话级别的记忆管理,适合以对话为单位做知识沉淀和检索。

安装与配置:

hermes honcho setup

在配置文件中确认:

honcho:

  url: "https://api.honcho.dev"

  api_key: "${HONCHO_API_KEY}"

两种方案均通过 Hermes 插件机制集成,不需要修改核心代码。

3.4 Redis 分布式缓存层

引入 Redis 作为中间缓存层后,可以覆盖以下场景:

会话上下文活跃缓存:对话过程中,将最新 N 轮消息缓存在 Redis 中,TTL 设为会话最大空闲超时时间(例如 30 分钟),每次请求优先读缓存,减少对数据库的频繁读取。

API 调用频率控制:企业通常有内部 API 配额,通过 Redis 计数器实现滑动窗口限流。

redis:

  url: "redis://redis-cluster.internal:6379"

  session_context_ttl: 1800  # 30 分钟

  rate_limit:

    window_seconds: 60

    max_requests_per_user: 100

分布式锁:上下文压缩(compression_locks 表)在多 Gateway 实例下会出现竞争,Redis 的 SETNX 原语可以替代数据库锁。

3.5 多租户隔离方案

Hermes 的 Profile 机制提供了原生的隔离边界。每个 Profile 拥有独立的配置、会话存储、Skills、Cron 和 Memory:

# 为每个团队/租户创建独立 Profile

hermes profile create team-alpha

hermes profile create team-beta

hermes profile create external-client

Profile 的物理存储路径:

~/.hermes/profiles/team-alpha/config.yaml

~/.hermes/profiles/team-alpha/.env

~/.hermes/profiles/team-alpha/state.db   # 独立会话数据库

~/.hermes/profiles/team-alpha/skills/    # 独立技能集

企业可通过自动化脚本实现 Profile 自助供给:

#!/bin/bash

# provision-tenant.sh

TENANT_NAME=$1

hermes profile create "${TENANT_NAME}"

hermes config --profile "${TENANT_NAME}" set "agent.max_turns" 120

# 从模板注入租户专属配置

cp /etc/hermes/tenant-template.yaml "~/.hermes/profiles/${TENANT_NAME}/config.yaml"

3.6 Gateway 高可用部署

多副本 + 负载均衡

# 在每台机器上安装为系统服务

hermes gateway install

hermes gateway start

# Nginx 层做负载均衡

# /etc/nginx/conf.d/hermes.conf

# upstream hermes_backends {

#     server 10.0.1.10:8000;

#     server 10.0.1.11:8000;

#     server 10.0.1.12:8000;

# }

凭证池与故障转移

企业通常会购买多个 API 密钥或部署多个 LLM 端点。Hermes 的凭证池支持自动轮换:

# 为同一提供商添加多个凭证

hermes auth add --provider openrouter

hermes auth add --provider openrouter

# 查看凭证池状态

hermes auth list openrouter

配置轮换策略:

credential_pool_strategies:

  openrouter: round_robin   # 轮询

  deepseek: fill_first      # 先耗尽一个再切换

  anthropic: failover       # 故障时自动切换

自动启停方案

# 确保 Gateway 在服务器重启后自动启动

sudo loginctl enable-linger $USER

hermes gateway install  # 注册 systemd 或 supervisor 服务

3.7 私有化 LLM 端点

对于数据不出域的企业需求,Hermes 支持通过 custom provider 指向内部 LLM 网关:

model:

  default: enterprise-vllm

  providers:

    enterprise-vllm:

      provider: custom

      base_url: "https://llm-gateway.company.internal/v1"

      api-key: "${ENTERPRISE_LLM_KEY}"

      context_length: 131072

私有部署可供选择的推理框架:

框架 适用场景
vLLM 高吞吐量在线服务,PagedAttention 优化显存
SGLang 长上下文场景,RadixAttention 复用 KV Cache
Ollama 中小规模,部署简单,模型管理友好
LM Studio 研发调试阶段,本地快速验证

四、当前版本的原生分布式能力边界

需要客观说明的是,截至当前版本,Hermes Agent 的分布式支持还在演进中。以下是明确的已实现和待建设清单:

已原生支持

  1. Profile 多租户隔离(配置、会话、技能、Cron 独立)
  2. 可插拔记忆后端(内置 SQLite / Mem0 / Honcho)
  3. 凭证池与多 API 密钥轮换
  4. Gateway 多实例 + 负载均衡接入
  5. 自定义 LLM Provider 指向内部端点
  6. Docker / Singularity / Modal 容器化运行时

需要自研或等待社区支持

  1. 会话存储从 SQLite 迁移到 PostgreSQL(理论上可行,存储层有抽象但未官方支持)
  2. Redis 缓存层集成(当前版本无原生 Redis 支持,关键路径仍需自建中间件)
  3. 会话数据库的水平分片
  4. 跨 Gateway 实例的会话迁移(用户断连后重连到其他节点)

五、分阶段落地建议

第一阶段:Profile 隔离(1-2 天)

适用于 10-50 人的团队,数据量不大,优先解决多租户隔离问题。

# 实施步骤

1. 为每个团队/业务线创建独立 Profile

2. 配置各 Profile 的记忆策略(记忆后端选择)

3. 部署 Gateway 为 systemd 服务保证可用性

第二阶段:记忆 + 凭证池升级(3-5 天)

适用于对用户画像和跨会话知识积累有强需求的场景。

# 实施步骤

1. 接入 Mem0 作为企业记忆后端

2. 配置凭证池实现 API 密钥自动轮换

3. 接入内部 LLM 端点

第三阶段:存储层 + 缓存层升级(2-4 周)

适用于 200+ 用户的企业级部署,需要专门的运维资源。

# 实施步骤

1. 会话语义化迁移(SQLite → PostgreSQL)

2. 部署 Redis Cluster 作为缓存层

3. Nginx 负载均衡 + Gateway 多副本

4. 建立会话数据归档和清理策略

六、环境参考配置

以下是一份经过精简的企业版 config.yaml 关键配置段,可作为部署基线:

# 模型配置

model:

  default: enterprise-vllm

  provider: custom

  base_url: https://llm-gateway.internal/v1

# 记忆后端

memory:

  memory_enabled: true

  user_profile_enabled: true

  provider: mem0

  memory_char_limit: 10000

  user_char_limit: 5000

# 凭证池策略

credential_pool_strategies:

  openrouter: round_robin

  deepseek: failover

# Gateway 配置

agent:

  gateway_timeout: 3600

  max_turns: 120

  api_max_retries: 5

# 安全配置

security:

  redact_secrets: true

  tirith_enabled: true

# 上下文压缩

compression:

  enabled: true

  threshold: 0.4

  target_ratio: 0.15

# Profile 外部技能目录

skills:

  external_dirs:

    - /opt/hermes/shared-skills/

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐