乐于分享
好东西不私藏

为什么 2026 年的 AI 助手还是"金鱼记忆"?Hermes 给出了不同答案

为什么 2026 年的 AI 助手还是"金鱼记忆"?Hermes 给出了不同答案

0.png

阅读提示:本文面向有一定工程背景的读者,将从架构设计层面分析 Hermes Agent 的核心差异化。预计阅读时间 12 分钟。


前言:AI 时代的”无状态”困局

在 2025 年的技术版图中,大模型的推理能力已然触及新的高度,但一个令人沮丧的困局依然普遍存在:无论你与 AI 助手进行了多少次深度长谈,一旦开启新对话,它依然是个”熟悉的陌生人”。你不得不一次次重复背景、偏好与决策逻辑,这种摩擦力正在持续消磨开发者对 Agent 工具的生产力预期。

这个现象揭示了行业的一个公开秘密:市场上绝大多数 AI 助手,本质上只是无状态套壳(Stateless Wrapper)——它们包装了模型的推理能力,却没有承载人类工作痕迹的容器。

Hermes Agent 正在尝试打破这一局面。它不仅是一个聊天接口,而是一个真正的有状态智能体运行时(Stateful Agent Runtime)——不仅在对话,而是在持续学习并固化你的数字资产。


架构全景:六层单向依赖

在深入各个设计决策之前,有必要先建立整体认知。Hermes 的核心是一套严格的六层单向依赖架构:

设计哲学:每一层只依赖下层,不感知上层。从零依赖的 hermes_constants.py 开始,这种极致解耦使得各层可以独立测试、替换和扩展,是构建长期可维护系统的基本前提。


一、拒绝向量数据库:回归 SQLite + WAL 的确定性

当大多数开发者盲目推崇向量数据库(Vector DB)进行语义检索时,Hermes 做出了一个看似逆潮流的选择:SQLite + WAL(Write-Ahead Logging)模式

这个决策背后有清晰的技术逻辑。向量检索的核心是语义相似度,在处理模糊信息时有效,但在记忆检索场景中极易产生语义漂移——它可能找回一条数学上相似但逻辑上谬误的记录。对于需要精确回溯决策历史的 Agent 来说,概率性的模糊匹配是一个结构性缺陷。

确定性检索:FTS5 全文索引

Hermes 押注的是 SQLite 内置的 FTS5(Full-Text Search 5)。通过 session_search 工具,Agent 可以进行精确的前缀、布尔和短语搜索,从原始记录中提取线索,而不依赖模糊的数学猜测。

更重要的是,FTS5 虚拟表通过触发器与 messages 表保持实时同步:

-- 任何新消息写入,立即同步到全文搜索索引CREATE TRIGGER messages_ai AFTER INSERT ON messages BEGIN    INSERT INTO messages_fts(rowid, content)    VALUES (new.id, new.content);END;

这意味着:无需额外维护 Elasticsearch 或 Redis,所有对话记录的变更都自动反映到搜索索引中。

高并发下的稳健性

WAL 模式配合 BEGIN IMMEDIATE 事务,Hermes 实现了读写并发支持。当 Gateway 多平台同时写入遭遇 database is locked 时,系统会进行最多 15 次、带随机抖动(20–150ms)的指数退避重试。无论是 Telegram 和 Discord 同时调用,还是后台正在进行记忆固化,系统都能保持稳健。

单文件的 SQLite 还带来了额外的工程红利:备份、迁移、调试的复杂度降至最低,这正是构建持久化生产工具所需要的确定性基石。


二、从任务中自动提炼技能:Agent 的内生学习

Hermes 真正差异化的能力,在于其闭环学习机制:它不是被动执行指令,而是能从任务经验中自动提炼结构化知识。

Mermaid Diagram

技能固化流水线

当 Agent 完成复杂任务后,会通过 skill_manager_tool 将成功经验抽象为 SKILL.md 文件,存储在 ~/.hermes/skills/ 目录下。每个技能文件遵循统一的 frontmatter 格式,包含 namedescriptionplatform 等元数据。

加载策略同样经过细致设计。prompt_builder.py 中的 build_skills_system_prompt() 采用双层缓存:进程内 LRU 缓存 + 磁盘 mtime 检测。只要技能目录未发生修改,就直接返回缓存结果,避免每轮对话反复扫描磁盘。扫描时还会进行平台感知过滤——SKILL.md 中的 platform 字段若与当前运行平台不匹配,该技能自动跳过,确保上下文的纯净度。

前缀缓存保护:一个被忽视的 Token 成本优化

这里有一个值得专门说明的架构细节。Hermes 将 pre_llm_call 插件返回的动态上下文注入用户消息(User Message),而非系统提示词(System Prompt)。

原因在于:Anthropic 等主流提供商对静态系统提示词有前缀缓存优化。如果系统提示词每轮都变化,缓存失效会导致输入 Token 成本显著增加。将动态记忆上下文放在用户消息中,既能让模型获取最新信息,又能保持系统提示词稳定,充分享受缓存优惠。

由于 Gateway 每轮对话都会新建 AIAgent 实例,实例级缓存自然失效。Hermes 的解决方案是从 SQLite 回读上一轮存储的 system_prompt,确保前缀缓存跨实例不被破坏。


三、消息网关:统一入口与会话血缘管理

Hermes 的 Gateway 不是简单的消息转发器,它是一套统一的平台抽象。无论通过 Telegram、Discord、Slack、WhatsApp、Signal、Matrix 还是 Email 接入,背后的逻辑全部收敛于核心的 AIAgent.run_conversation()

Mermaid Diagram

平台适配器的抽象边界

gateway/platforms/base.py 中的 BasePlatformAdapter 将各平台原生消息统一转换为 MessageEvent,使 Agent 完全解耦于具体平台。每个适配器在 connect() 时获取平台锁,防止同一用户启动两个实例导致 Token 冲突。

上下文压缩与会话血缘

当对话接近模型上下文上限时,ContextCompressor 触发压缩。但它不是简单地”丢弃数据”——压缩后,原始 session 被 end_session() 标记为 end_reason='compressed',同时创建新的 session,其 parent_session_id 指向旧 session。

Mermaid Diagram

这一设计将上下文压缩从”信息销毁”变为”信息归档”,带来三个关键保障:

  1. 1. 被压缩的原始内容仍可通过 FTS5 精确检索
  2. 2. get_session_lineage(session_id) 可返回完整的 session 谱系列表
  3. 3. 跨平台记忆一致——你在 Telegram 里建立的知识,CLI 里同样可以访问

以下是五层记忆系统的流转全貌:


四、多层安全防护:从不信任外部输入

当 Agent 拥有执行终端命令和自我进化的能力,安全性成为最高优先级。Hermes 的安全体系建立在多个相互独立的防护层之上。

Mermaid Diagram

Prompt Injection 扫描

在将 AGENTS.md.cursorrules.hermes.md 注入系统提示词之前,prompt_builder.py 会执行安全扫描,分为两个阶段:

  • • 不可见字符检测:识别 zero-width space(U+200B)等隐藏 Unicode 字符
  • • 模式匹配:正则检测 ignore previous instructions 等典型注入模式

一旦检测到威胁,文件内容会被替换为警告文本,防止恶意仓库通过上下文文件劫持 Agent。

执行环境物理隔离

BaseEnvironment 与宿主机解耦,支持 Local、Docker、SSH、Modal 以及 Daytona。同一段代码在不同后端上无缝运行,文件操作和终端执行不绑定本地操作系统。

工具并发的精细风险控制

工具调用并非简单的”全并行”或”全串行”。_should_parallelize_tool_batch() 基于工具名称和文件路径重叠进行精细分析:

工具类型
并发策略
_NEVER_PARALLEL_TOOLS

(如 clarify
始终串行
_PATH_SCOPED_TOOLS

(如 read_filewrite_file
检查路径是否重叠,父子目录关系也纳入判断
_PARALLEL_SAFE_TOOLS
路径不冲突时启用 ThreadPoolExecutor 并发

错误分类与自动恢复

agent/error_classifier.py 将 API 错误分为 RATE_LIMITAUTH_FAILUREPAYLOAD_TOO_LARGECONTEXT_OVERFLOWSERVER_ERROR 等类型,并决定重试策略或故障转移路径。更关键的是,_restore_primary_runtime() 会在每次 run_conversation() 启动时自动切回主模型——一次网络抖动不会导致永久降级。


五、框架定位对比:广度生态 vs 深度运行时

在 2025 年的开源 Agent 生态中,不同框架的设计取向存在根本性差异:

维度
广度生态型框架
Hermes Agent
核心定位
平台集成与生态连接
有状态运行时 + 持久化学习
记忆系统
基于规则的静态回填或向量 RAG
五层动态记忆 + SQLite FTS5 确定性检索
工具体系
追求集成数量
40+ 内置工具,专注调用质量与路径级并发控制
安全模型
依赖社区审计
物理级隔离 + Prompt Injection 扫描 + 并发锁
学习能力
静态配置,手动维护
内生学习,自动生成 SKILL.md
上下文压缩
简单截断或摘要
归档并保留 parent_session_id 血缘链路
适用场景
多团队协作、商业分发
个人深度使用、专属知识积累

广度生态型框架适合需要大量平台连接的商业场景;Hermes 的价值主张则不同——它是一个随使用深度持续增值的工具,贪婪地吸收你的决策逻辑,并将其转化为专属的生产力资产。


结语:数据飞轮的终极形态

Hermes Agent 的架构选择,折射出一种对 AI 工具本质的不同理解:AI 不应只是消耗品,而应是能够承载人类工作痕迹和决策逻辑的容器。

通过 SQLite 的确定性记录、精密的 Token 成本优化、严密的安全防护,以及自主的技能提炼机制,Hermes 试图构建的是一种真正的”数据飞轮”——越用越好,越用越懂你。

这也引出一个值得认真思考的问题:当一个 Agent 完整数字化了你的经验、决策偏好乃至犹豫时的直觉,这份”经验资产”究竟归谁所有? 是存储于算力巨头云端的模型服务,还是你亲手调教出来的本地系统?

Hermes 选择了后者,将数据主权交还给用户。在 AI 工具日益同质化的今天,这或许是最值得关注的差异化方向——不是更强的推理,而是更深的记忆。


延伸阅读

  • • 第1篇 10 分钟装好 Hermes,用 Profile 隔离你的“工作人格”和“生活人格”[1]
  • • 第3篇 一条消息的“生死之旅”:穿越 Hermes 六层架构的 2900 行状态机[2]
  • • 第4篇 别再往 System Prompt 里塞东西了!深度拆解 Hermes Agent 的“五层记忆”黑科技[3]