返回 FEED
PAPER2026-05-27

Agent Memory 的分层架构:存储便宜,注意力昂贵

如果你只改变一件事来改变 agent memory 的设计方式,改变这个:停止把存储成本和注意力成本当作同一件事。

对 19 个系统的深度分析中,处理记忆好的系统不是检索最复杂的。它们是弄清楚哪些记忆属于提示的系统。这是不同的问题,有不同的解决方案。

核心洞察

存储便宜。注意力昂贵。

128K 上下文模型读 110K 平庸上下文,empirically 不比相同模型读 8K 精心选择的上下文更好的 agent。研究一致表明:随着上下文充满噪音,检索质量 degrade,且 degrade 不是线性的。模型不会简单地忽略无关材料。它处理它,而处理挤占了信号。

存储没有这种属性。数据库中的事实 sitting 成本为零。成本只在检索并加载到提示时才到来。所以问题不是"我该存这个吗?"而是"我该检索这个吗?如果是,何时?"

分层架构

不同记忆项有不同的访问模式:

  • 每轮需要:用户名、当前项目、声明的偏好
  • 经常但不总是需要:近期决策、开放问题、前几期的事实
  • 需要时能找到但不应负担每轮:三个月前的会议记录、已完成任务、原始逐字稿

平坦存储把三个类别同等对待。热项支付冷项的搜索成本。冷项用噪音膨胀提示。没有机制让项目随着变得更相关而升级,也没有机制随着变得不那么相关而老化。

CPU 有 L1、L2、L3、RAM、SSD 和磁盘,不是因为字节不同,而是因为访问频率按数量级变化。19 个系统中有 7 个在分析前已构建了显式分层。其中两个值得详细理解。

MemoryOS:三 tiers,热驱动

短期 tier:Python deque,最大长度 10 QA 对。无嵌入、无搜索索引、无热追踪。微秒级延迟的纯对话原材料。deque 满时,最老的对 drain 到中期 tier。

中期 tier:最多 2000 会话。每个会话携带摘要、嵌入、关键词集和热计数器。Faiss 索引,余弦相似度搜索。容量满时,最冷会话被驱逐。会话够热时,提升到长期 tier。

长期 tier:90 维心理学和对齐 schema,两个知识库 deque(用户事实和助手事实),各上限 100 条目。持久层,跨会话存活。

热公式:12 行 Python。三个信号:访问频率(LFU 模拟)、交互深度(主题参与代理)、近期衰减(24 小时半衰期指数)。段在 5.0 跨提升阈值。提升后,访问和交互计数器归零,热 collapse 回约 1.0。

关键设计决策:热 gate 提升,不是检索。检索是纯语义的(中期嵌入的余弦相似度)。热是背景信号,决定段是否应毕业到长期 tier。两个关注点解耦。

MemoryOS 的盲区:系数硬编码 1.0,没有从实际使用模式学习权重的机制。没有降级路径;一旦到长期 tier,就 stay。公式优化频率而非重要性——关键但罕见的事实(伴侣名字、医疗状况、硬约束)可能永远不会跨阈值。

Hindsight:三 tiers,LLM 驱动

三个 tiers:World(客观宇宙声明,ground truth,始终开启,长期存活)、Experience(系统自身的第一人称动作,情景记录)、Observations(从 World 和 Experience 事实衍生的整合信念,携带源记忆 ID、证明计数、追踪信念演变的历史字段)。

所有三个 tiers 在同一数据库表,事实类型 discriminator 区分。每事实类型的部分 HNSW 索引。Schema 统一;访问模式不统一。

Hindsight 的提升不是计数驱动。是批处理 LLM 驱动的 consolidation。新事实写入时,enqueue 到异步操作表。背景 worker 获取新事实和现有重叠 observations,构建批处理 prompt,请求模型做 creates、updates、deletes。源记忆打 consolidated-at 时间戳防止再处理。每个新事实,无论访问频率,都被考虑提升到 Observations tier。

关键差异:通过把上层提升绑定到 consolidation 而非热,Hindsight 避免了 MemoryOS 对关键但罕见事实的盲区。单次 consolidation pass 考虑每个新事实。频率与是否毕业无关。

收敛进化

两个系统,不同第一原则,不同实现语言,不同目标用例,都落在三 tiers:底部原材料,中间工作层,顶部合成持久层。都使用异步提升。都携带溯源回到下层 tiers。

这是软件架构中收敛进化的样子,也是我知道的模式是 load-bearing 的最强信号。

supermemory:托管 API 部署

三 tiers:静态 profile(稳定长期事实,hot tier)、动态 profile(近期和情景上下文,warm tier,许多条目携带 forgetAfter TTL)、文档和 chunk store(cold tier,通过搜索端点查询)。

分层发生在写入时。提取 LLM 用 isStatic boolean 分类每个传入记忆,可选 forgetAfter。分类由封闭提取 prompt 强制执行,跨所有消费者统一。

托管 API 部署实现三件事:冷 tier 数据可 sitting 在更便宜硬件;热 profile 单独端点带 SLA;提取 prompt 集中化,分层分配一致。

权衡:远程热 tier 只有网络快时才快。Agent 不能覆盖引擎的分层分类。提取 prompt 是黑盒。

mem9:对比案例

mem9 有 memory-type 列,三个值:pinned、insight、digest。Pinned 由显式内容写入路径分配,手动创建,受 LLM reconciliation 保护。Insights 由每个 LLM 提取写入分配。两者参与相同混合召回,相同 RRF 评分。Type 字段是写入保护标志,不是检索过滤,不是 tier 信号。

这是类型学(typology),不是分层。 类型学描述治理:谁能在什么条件下变异这个记忆。分层描述访问模式:这个记忆多频繁需要,什么存储表示最服务那个频率。

四个平坦存储的问题

  1. 热路径支付冷路径的搜索成本:每次检索扫描相同索引。Agent 查找用户名支付与查找六个月前会议记录相同的搜索成本。
  2. 冷路径用噪音膨胀提示:检索返回语义近项,包括 standing context、superseded facts、事实正确但当前轮无关的材料。
  3. 没有升级机制:记忆不是静态的。早期关系的短暂情景事实可能随时间变成关于用户偏好或约束的持久信号。平坦存储没有注意到这个转变的机械。
  4. 没有老化机制:降级不是删除。平坦存储想移除陈旧材料必须删除。分层存储可移到更冷表示,仍可找到,不再负担热路径。

构建建议

如果你从零构建 agent memory,19 个系统指向的 progression:

  1. 识别 agent 每轮需要什么 → hot tier
  2. 识别经常但不总是需要什么 → warm tier
  3. 识别需要时能找到但不应负担每轮什么 → cold tier
  4. 选择 promotion 机制:MemoryOS 的热驱动、Hindsight 的 LLM 判断、或 supermemory 的提取时分类
  5. 选择 demotion 机制:时间衰减、TTL、或新鲜度类别
  6. 保持 promotion 和 retrieval scoring 最初分离(解耦比解开更容易)
  7. 追踪从上层 tiers 回到下层 tiers 的溯源

19 个系统在很多事情上没有共识。在这件事上,他们有:单个平坦记忆存储是任何非平凡 agent memory 系统的错误默认。

存储便宜。注意力昂贵。构建利用差异的系统。