后编码时代【04】:从 Hermes 学习 AI 记忆设计

这是「后编码时代」系列的第 4 篇。
上一篇论证了为什么 OPC 行不通——分工不会消失,交接是必然,问题不是消除交接而是让交接不丢信息。这篇接续一个更底层的问题:传键盘意味着长期协作,长期协作意味着 AI 必须有记忆。都说 Hermes Agent 的记忆设计好,好在哪里?好多少?怎么量化?我们需要通过数据澄清这些问题。


传键盘的前提

上一篇论证了传键盘模型的逻辑:人和 AI 轮流操作同一个决策过程,像传接力棒一样。但传键盘有一个没讨论的前提——长期协作

你和同事能传键盘,是因为共事三年积累的默契。他知道你为什么选 React 不选 Vue,知道上次的分库分表踩了什么坑,知道团队倾向稳定优先而不是炫技。这不是聊天记录,这是结构化的决策记忆

AI 没有这个东西。关掉 ChatGPT 对话框,下次它不认识你。Cursor 记得文件但不记得为什么这么写。Claude Code 记得当前会话但换个窗口就重新开始。

传键盘模型要成立,AI 必须有一套记忆系统。 不是存聊天记录,是积累决策和原因、团队偏好、走过的弯路。而且这套系统不能靠人维护——你得像对待真同事一样对待 AI,而不是每天先给它培训一小时。

Hermes 的方案

我找到了 Hermes,NousResearch 开源的 AI Agent 框架。它专门解决一个问题:Agent 怎么在长期使用中不退化?

它给 Agent 设计了一套记忆系统,四个机制:

  1. 生命周期状态机:记录自动从 active → stale → archived,被引用时重新激活
  2. 上下文预取:每次 API 调用前,用 embedding 检索相关信息注入 prompt
  3. 3-phase 压缩:对话过长时,裁剪 → 保护 → 摘要三步压缩
  4. 知识合并:LLM 判断哪些记录该合并,减少冗余

源码写得清楚,设计也优雅。但我不想因为"设计优雅"就信它。

一个设计再好的机制,如果成本比收益高,就是负资产。 传键盘模型要跑起来,AI Agent 每天要调几十次,每次都要过记忆系统。如果记忆管理的成本比记忆本身还高,那这套系统就不值得装。我需要数据。

实验方法

我在本地搭了一套测试环境:Python 3.12 + GLM-5.1 + BGE-small-zh(本地 embedding)。四个实验,每个都有对照组和量化指标:

  • 生成模拟数据(最多 5000 条记录,跨度 730 天)
  • 三种策略对照:Hermes 机制 / 简单过期 / 无管理
  • 跟踪两个维度:效果(召回率、信号质量)和成本(token 消耗、检索计算量)

完整实验报告在 GitHub。下面说结果。

验证一:生命周期状态机——零成本,7 倍节省

Hermes 的状态机是纯算法,不调 LLM,零 token 成本。逻辑简单:记录 30 天没被引用 → stale,stale 再放 90 天 → archived。被引用时自动回到 active。

我模拟了 730 天连续使用(每天新增 5 条记录,10 次查询),看三种策略的成本曲线:

Day Hermes 活跃池 无管理活跃池 无管理 / Hermes 成本
30 150 150 1.0x
180 252 900 3.6x
365 257 1,825 7.1x
730 268(收敛) 3,650(仍在增长) 13.6x

知识库可检索池大小 — 730 天连续增长模拟

关键发现:Hermes 的池子从 Day 180 开始收敛在 ~270,之后每次查询成本恒定。无管理的池子永远在增长,成本只增不减。 这不是线性差异——累计成本是二次方的差距。730 天下来,无管理的总检索成本是 Hermes 的 7.39 倍

每次查询检索成本 — Hermes 收敛 vs 无管理持续增长

再看信号质量。无管理保留了 100% 的记录,但其中 70% 是噪声——没人引用的过时决策混在每次检索的候选里。Hermes 的信号比是 0.90(90% 的候选是有用的),无管理只有 0.30。

这个结果比预期好。零 token 成本,7.39 倍长期节省,信号质量从 30% 提升到 90%。没有任何理由不装。

验证二:上下文预取——11 倍于随机

Hermes 的 prefetch() 在每次 API 调用前,用 embedding 相似度从记忆库中取 top-K 相关记录注入 prompt。问题在于:这个 embedding 排序到底有没有用?会不会随便塞几条上下文效果差不多?

策略 怎么选 5 条 平均引用数 注入 tokens
none 不注入 0.0 0
random 随机选 5 条 0.1 71
prefetch embedding 排序 top-5 1.1 76
full 注入全部 50 条 1.3 731

random 基准线是关键。同样的 5 条记录,随机选只能引用 0.1 次,embedding 排序能引用 1.1 次——11 倍差异。 这证明不是"注入任何上下文都有用",是"注入正确的上下文才有用"。

预取效果对比:embedding 排序 vs random vs full

再看 token 效率:prefetch 用 full 的 10% tokens(76 vs 731)达到了 85% 的效果(1.1 vs 1.3 引用)。每花一个 token,prefetch 获得的相关引用数是 full 的 8 倍。

结论:embedding 排序是 prefetch 有效的根本原因。random 等于没用,没有排序能力的预取不如不做。

验证三:3-phase 压缩——7 步回本

Hermes 的压缩三步:裁剪旧 tool output → 保护 system prompt + 最近消息 → LLM 生成结构化摘要。

策略 压缩比 Token 成本 效果
截断 44.9% 0 丢弃尾部内容
3-phase 8.9% 39,471 保留结构化摘要

压缩质量远优于截断(8.9% vs 44.9%)。但 39,471 tokens 的成本不是免费的——比截断多省了 6,275 tokens,净亏 33K。

回本条件:压缩后的对话被复用 ≥ 7 次后续推理,token 节省开始超过压缩成本。对于 5-8 步的短会话,刚好在回本线附近。对于 20 步以上的长会话,显著正收益。

结论:场景依赖。传键盘的典型会话 5-8 步,刚好在回本线上。长会话场景(持续一个下午的深度协作)有明显收益。

验证四:知识合并——实验设计有问题

Hermes 的 Curator 用 LLM 判断哪些记录该合并。实验看起来 LLM 表现很差:

策略 精确率 召回率 Token 成本
纯 embedding 阈值 94.4% 40.5% 0
LLM 判断(我的实验) 60.0% 14.3% 5,837

LLM 比免费方案精确率低 34%。但仔细审视实验设计,这个比较有三个根本性问题:

第一,候选集不对等。 Embedding@0.70 只审了 18 对(相似度最高的),LLM 审了 50 对(包括更多边界案例)。拿"只审简单案例"的 embedding 和"审了困难案例"的 LLM 比精确率,当然 embedding 赢。

第二,“精确率高"不等于"判断好”。 Embedding@0.70 的 94.4% 精确率本质上是保守策略——只合并相似度非常高的对,这些对本来就是同类。把阈值提到 0.75,精确率直接 100%,但召回率只剩 9.5%。高阈值天然高精确率,这不代表 embedding 比 LLM 聪明。

第三,Ground truth 太粗糙。 我用"同集群 = 应该合并"作为标准。但"缓存击穿用互斥锁解决"和"Pipeline 批量操作优化网络延迟"同属 Redis 集群,不该合并。LLM 的 4 个"误判"可能有一部分是正确的。

这个实验不能证明 embedding 比 LLM 好,也不能证明 LLM 比 embedding 好。只能证明实验设计有缺陷。标注为"待验证"。

经济账

四个机制,两个直接可用,一个看场景,一个待验证:

机制 额外成本 收益 判断
生命周期 0 tokens 7.39x 累计成本节省 立即采用
上下文预取 embedding 计算 + 76 tokens/query full 的 10% tokens 达到 85% 效果 立即采用
上下文压缩 39K tokens/次 ≥7 步回本 长会话采用
知识合并 实验设计有缺陷,不能下结论 待验证

还有一个容易被忽略的对照组:简单过期(30 天不用就删)。它的成本比 Hermes 还低——但代价是知识召回归零。Day 180 只剩 1% 的历史决策,Day 365 一条都不剩。成本最优,但把婴儿和洗澡水一起倒了。所以图中黄色柱子(简单过期)看起来很矮,不是因为它好,是因为它把知识全丢了。

累计检索成本 — 无管理成本加速扩大

我把验证通过的部分整理成了一个可复用的 Skill:Agent 记忆系统构建 Skill。每个机制都包含实现模式、配置建议和必须埋点的观测指标。能直接用。

回到传键盘

上一篇结尾说:传键盘模型让你的团队多了一个"人"——它一直在场,带着全队的记忆,在你需要之前就准备好了。这话听起来像画饼。现在有了数据来检验。

“带着全队的记忆”——生命周期状态机让 AI 用了两年,检索成本跟第一天一样。知识库不会因为积累而退化,每次检索 90% 的候选是有用的。

“在你需要之前就准备好了”——预取机制在每次交接前自动注入最相关的 5 条历史决策。不是把所有记录都塞进去,是精确匹配当前上下文。random 基准线证明了:随便塞等于没用,embedding 排序才有效——11 倍差异。

“一直在场”——不需要人维护,不需要额外标注。状态机自动淘汰过时的,预取自动注入相关的。每次传键盘的交互都在积累结构化决策,系统自己管理。

第一周它像新人,三个月它像老同事,半年后它像一个记得所有决策原因、知道团队偏好、能帮你避坑的团队成员。这不是营销话术——7.39 倍成本节省,11 倍引用提升,90% 信号质量。传键盘的长期协作前提,有数据支撑。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐