跳到主要内容
Agent Memory 分离式协同

第3章:业界主流缓解路线综述

把 Anthropic Skill / Programming Tool Call / Tool Search / 上下文压缩 / HNSW / DiskANN / SPANN / RabitQ 等业界主流缓解方案放在同一张地图上,逐一标出能解什么、不能解什么——为后面 Ch4-6 鲲鹏路线"切的是哪条缝隙"提供精准定位

Agent Memory Anthropic Skill Tool Search HNSW DiskANN SPANN RabitQ

Ch2 把三大挑战在工业数据下的”待解题清单”摆出来了。这一章把当前业界对这清单的主流缓解路线全部摊开——上下文管理一侧(Skill / Tool Search / 渐进式披露 / 上下文压缩),检索一侧(HNSW / DiskANN / SPANN / RabitQ + PCA)——逐一标注它们各自能解什么、不能解什么。把这些方案的能力边界画清楚,Ch4-6 的鲲鹏路线”切的到底是哪条缝隙”就一目了然。

📑 目录


1. 路线地图:从问题到方案的全景图

            Agent Memory 系统的"上下文 + 检索"问题

              ┌─────────────┴──────────────┐
              ▼                            ▼
      上下文管理一侧                    检索一侧
              │                            │
   ┌──────────┼──────────┐      ┌─────────┼─────────┐
   ▼          ▼          ▼      ▼         ▼         ▼
[路线 A]   [路线 B]   [路线 C]  [路线 D] [路线 E] [路线 F]
压缩/摘要   工具瘦身   渐进披露  HNSW    DiskANN   量化压缩
            (sub-agent) (Skill /          (磁盘    (RabitQ
                       Tool Search)        ANN)    + PCA)
   │          │          │      │         │         │
   ▼          ▼          ▼      ▼         ▼         ▼
   信息有损   流程复杂   工程实现 内存爆炸   尾延迟   量化精度
              重         成本高    (千亿)    高      与召回的
                                                    取舍

整张地图分两侧八条路线(其中量化压缩 = RabitQ + PCA 这种向量量化体系)。我们逐一过一遍,再在第 4 节给一张能力对照矩阵。

2. 上下文管理一侧的四条路线

2.1 路线 A:上下文压缩 / 摘要

最朴素的思路:当上下文塞不下时,把过去的内容摘要重要性评分后压缩成更短的版本。

核心机制

  • 重要性评分(per-message / per-token)+ 阈值删减
  • 滑动窗口 + 摘要替换被滚出的内容
  • 结构化压缩(事件级 / 实体级 / 关系级)

业内代表实现

  • LangChain ConversationSummaryBufferMemory
  • LlamaIndex 各种 memory 模块
  • Anthropic / OpenAI 官方 cookbook 的多种”总结—保留”模板

能解决什么

  • 长会话场景下”历史 token 累积”这一层
  • 中等程度地缓解 prefill TTFT

解不了什么

  • ❌ 工具定义占用——工具定义不是历史,无法被摘要
  • ❌ 中间数据传递——中间结果是当前 turn 内必须用的,不能摘要后再用
  • ❌ 信息有损——压缩本身就是丢信息,长期累积下用户感受为”AI 总忘事”

🌟 关键判断:上下文压缩处理的是 Ch2 三层 token 结构里最薄的一层(30%)——它对工具定义和中间数据这两个真正的大头几乎无效

2.2 路线 B:工具瘦身 / Sub-Agent 拆解

第二条思路:既然 58 个工具吃 55K token,就别一次性灌进同一个 Agent——把工具按场景拆成多个 Sub-Agent,每个 Sub-Agent 只看自己需要的子集。

核心机制

  • 主控 Agent 只看”调度类工具” + 决策”调用哪个 Sub-Agent”
  • Sub-Agent 各自看自己的工具子集(GitHub / Slack / DB 各一)
  • 父子之间的数据通过结构化消息(不是裸输出)传递

业内代表实现

  • LangGraph 的多 Agent 协作
  • AutoGen / CrewAI 的多角色编排
  • Anthropic Sub-Agent + Skill 的混合方案

能解决什么

  • 工具定义 token 被分散到多个 Agent 上——单 Agent 上下文显著瘦身
  • 任务领域清晰可拆时,工程上可读性好

解不了什么

  • ❌ 跨域任务:当任务横跨多个 Sub-Agent 领域,编排开销很大
  • ❌ 子 Agent 之间的中间数据传递依然会回到主 Agent 上下文
  • ❌ 工程复杂度高:调试多 Agent 拆解经常变成排查”消息丢哪了”

第三条思路是 2025-2026 年最有方法论价值的一类:不要一次性把工具全部 declare 出来,按需”按目录索引、按需展开”

核心机制

  • 工具集分层组织:先给一个目录级的简介(比如 5 个 SaaS 名 + 一句话描述)
  • 当需要某个 SaaS 时,再 fetch 该 SaaS 的具体工具列表
  • 工具的具体参数 schema 在首次调用时才被加载到上下文
  • 这一切对模型是 “Tool Search” 这种专门接口,由 Harness 实现

业内代表实现

  • Anthropic Skill API(2026)—— 把”技能”作为可被按需加载的二阶段 declaration
  • Anthropic Programming Tool Call(2026)—— 让模型能”先 search 工具再决定用哪个”
  • Tool Search Tool(开源社区参考实现)—— 给现有 Agent Harness 加 search 接口

能解决什么

  • 工具定义 token 占用 —— 这是渐进式披露的核心痛点,效果立竿见影
  • ✅ 跨 SaaS 任务能在同一 Agent 内完成
  • ✅ Harness 可以给”工具的描述”做 token-efficient 优化(短描述 + 按需展开)

解不了什么

  • ❌ 中间数据传递——工具调用结果还是要回到上下文
  • ❌ 检索一侧的所有问题
  • ❌ 当用户任务需要密集调用很多工具时,多次”先 search 再调用”反而引入额外延迟

关键观察:渐进式披露精确命中了 Ch2 三层 token 结构里最大的一层(30%,工具定义)——这是它的核心工程红利。

2.4 路线 D:上下文缓存(外部内存池)

第四条思路是 2025-2026 年新兴的一条——把中间数据搬到 LLM 上下文之外的”内存层”

核心机制

  • 中间结果(search 返回 / db_read 返回)不直接放进 LLM 上下文
  • 而是写到外部缓存(key 是数据 ID)
  • LLM 上下文只保留”指针 + 摘要”
  • 后续步骤需要原始数据时,由 Harness 按需取回来再传入相关步骤

业内代表实现

  • 学术界:multiple papers on “external memory for LLMs”(2024-2026)
  • 工业界:少量 Agent 框架开始引入”intermediate cache”
  • 鲲鹏路线 1(Ch4 详细展开) —— 用 UB 内存池作为缓存底座

能解决什么

  • 中间数据传递 token 占用 —— 这是另一条精确命中点
  • ✅ Prefill TTFT 显著下降(不再带着冗余中间数据走平方)
  • ✅ 多步工具链总成本下降

解不了什么

  • ❌ 工具定义占用(这归路线 C)
  • ❌ 历史会话压缩(这归路线 A)
  • ❌ 检索一侧的问题
  • ❌ 需要新硬件 / 新工程协议(不是纯软件层能闭环的)

🍎 直觉比喻:路线 C 像”开会前先发一张目录,需要哪页再发”;路线 D 像”会议室角落放一个文件柜,会上引用文件号即可,不必把文件复印到每个人手上”。

3. 检索一侧的四条路线

3.1 路线 E:HNSW(Hierarchical Navigable Small World)

业界最主流的 图索引 方案。把向量组织成多层近似最近邻图,查询时从顶层稀疏图开始下钻。

核心特性

  • 召回质量高(recall@10 > 0.95 是常态)
  • 延迟低(小到中规模 P50 < 10ms)
  • 内存占用大(图本身约为原始向量 1.2-1.5 倍)

主要工程实现

  • hnswlib / faiss-hnsw / pgvector hnsw
  • 国内主流向量库(Milvus / Vespa / 阿里 Hologres / 腾讯云 VectorDB)

能解决什么

  • ✅ 中小规模高质量召回的事实标准

解不了什么

  • ❌ 千亿规模下单机内存装不下——必须分片
  • ❌ 分片后的全局 recall 下降(每个分片只看局部图)
  • ❌ 没有原生的”快慢介质”分层支持(HNSW 整体设计假设全内存)

3.2 路线 F:DiskANN(Microsoft 2019)

把 HNSW 的图结构改造为对 SSD 友好的版本,让大底库可以放到磁盘上。

核心机制

  • Vamana 图(图度数受控、IO 友好)
  • PQ 量化(Product Quantization)做内存常驻摘要
  • 真实距离计算时从 SSD 异步读原始向量

主要工程实现

  • Microsoft DiskANN(开源)
  • FreshDiskANN / Filtered DiskANN(增量更新 / 带过滤的扩展)
  • AlayaDB(基于 DiskANN 的产品化)

能解决什么

  • ✅ 单机 SSD 上承载 1-10 亿规模向量
  • ✅ 内存占用比 HNSW 降一个量级(约 1/10)
  • ✅ P50 延迟仍然在 10-30ms

解不了什么

  • ❌ 千亿规模下单机 SSD 也放不下,仍需分片
  • ❌ P99 延迟受 SSD 尾延迟波动影响(高 IOPS 下尾部不稳)
  • ❌ rerank 阶段访问原始向量的延迟难压

3.3 路线 G:SPANN(Microsoft 2021)

第三条路线是面向超大规模的另一种思路——把向量先聚类,每次查询只在几个最相关的簇里做精细搜索。

核心机制

  • 离线:用 K-means 把全量向量分成 ~百万级簇
  • 在线:先做”找最近 N 个簇”的粗筛(簇中心搜索)
  • 在选定簇内做精细 ANN 搜索

核心特性

  • 存储成本极低(簇中心常驻内存,原始向量在磁盘)
  • 可扩展性极好(支持百亿规模)
  • 召回质量受聚类质量影响

能解决什么

  • ✅ 百亿到千亿规模的工程可行性
  • ✅ 簇中心常驻内存,主存压力小

解不了什么

  • ❌ 召回质量比 HNSW 低(聚类导致簇间召回不连通)
  • ❌ 不擅长”极小簇”或”高维空洞”的语料
  • ❌ 增量更新比 HNSW / DiskANN 复杂

3.4 路线 H:量化压缩(RabitQ + PCA + SIMD)

最近一两年(2024-2025)兴起的面向超低内存的量化路线。核心想法:把每个原始向量压成几十比特的紧凑表示,配合 PCA 降维,让上 TB 量级的向量压成 GB 量级。

核心机制

  • PCA 粗排压缩:把 768 维降到 64-128 维,损失少量精度换 5-10x 压缩
  • RabitQ(旋转 + 二值化):把 float32 向量压成 1-bit 的紧凑符号
  • SIMD 加速距离计算:在 1-bit 表示上用 popcount 做汉明距离
  • 二阶段精排:粗排过后再回原始向量做精确距离

业内代表实现

  • 2024 年的 RabitQ 论文及配套实现
  • 多个开源向量库正在集成
  • 鲲鹏路线 3(Ch6 详细展开) —— 把 RabitQ + PCA + SIMD 整合进新硬件路径

能解决什么

  • 内存占用:千亿向量从 ~300 TB 压到 ~3 TB(降 99%+
  • 粗排速度:SIMD 下汉明距离极快
  • 冷数据成本:压缩后能放进相对便宜的介质

解不了什么

  • ❌ 量化精度损失需要二阶段精排来补——精排访问原始向量仍是瓶颈
  • ❌ 不同语料对量化敏感度不同——通用性需要工程调参

关键观察:路线 H 的核心红利是 “用内存换延迟” 这条曲线被显著重构——而这条曲线恰好和 Ch6 鲲鹏路线 3 的 UB + SSD 混合介质设计形成完美互补。

4. 各路线的能力对照矩阵

把上面 8 条路线在 Ch2 提出的”待解题清单”上各自的覆盖情况画一张矩阵:

待解题A 压缩B Sub-AgentC 渐进披露D 上下文缓存E HNSWF DiskANNG SPANNH 量化
工具定义 token⚠️ 部分⭐ 强
中间数据 token⚠️ 部分⭐ 强
历史会话 token⭐ 强
Prefill TTFT⚠️ 部分⚠️ 部分⭐ 强⭐ 强
千亿规模存储⚠️ 部分⭐ 强⭐ 强
高召回质量⭐ 强⭐ 强⚠️ 部分⚠️ 部分
P99 延迟⚠️ 部分⭐ 强⚠️ 部分⚠️ 部分⚠️ 部分
介质成本⭐ 强⭐ 强⭐ 强⭐ 强
跨节点共享⭐ 强
增量更新⚠️ 部分⚠️ 部分⭐ 强⭐ 强⭐ 强⚠️ 部分⚠️ 部分

这张矩阵传达的几个关键信号

信号 1:上下文管理一侧的 4 条路线各自命中不同 token 大头——它们是 互补的,不是替代。理想 Agent 应该 4 条都用上:

  • C(渐进披露)解工具定义
  • D(上下文缓存)解中间数据
  • A(压缩)解历史会话
  • B(Sub-Agent)解多领域协作

信号 2:检索一侧”千亿规模”+“高召回”+“低 P99”这三件事难以同时兼得——HNSW 召回好但塞不下,DiskANN 装得下但 P99 不稳,SPANN / 量化压缩规模好但召回略降。这正是 Ch5-6 鲲鹏路线想突破的死结。

信号 3:D(上下文缓存)和 G/H(检索量化)都直接受益于”中间档介质”——这是这两条路线和 RDMA / CXL / UB 内存池天然契合的地方。

5. 留给鲲鹏路线的精确缝隙

把上面所有结论收拢,2025-2026 年业界主流路线没充分覆盖的精确缝隙至少有三处:

缝隙 1:跨节点共享的”中间数据池”

路线 D(上下文缓存)方向对,但当前业内实现都是单机 / 单 Agent 进程内的缓存——多个 Agent 协作 / 多机推理时,这个缓存没有跨节点共享层

🌟 填补:基于 UB 内存池的”跨节点上下文缓存”——Ch4 详细展开

缝隙 2:千亿规模下的”全局整图”

路线 E(HNSW)召回好但单机装不下;分片牺牲召回;DiskANN / SPANN 走的是”减容量”而不是”扩共享内存”。有没有可能”千亿规模 + 全图整库 + 高召回”同时做到?

🌟 填补:基于 UB 内存池的全局向量检索(多节点共享同一份完整 HNSW 整图)——Ch5 详细展开

缝隙 3:超低内存量化 + 中间档介质的协同

路线 H(量化)能压到 1/100 内存,但需要二阶段精排访问原始向量;如果原始向量在 SSD,精排延迟难压。有没有一种介质能让”压缩后的索引”+“完整原向量”同时在合理延迟内被访问?

🌟 填补:基于 UB + SSD 混合介质的超低内存检索——Ch6 详细展开

🎯 自我检验清单

读完本章你应该能回答:

  • 上下文管理一侧的四条路线(A/B/C/D),各自命中三层 token 结构里的哪一层?为什么它们是互补不是替代?
  • HNSW、DiskANN、SPANN 在”千亿规模 + 高召回 + 低 P99”这三件事上各做了什么取舍?
  • RabitQ + PCA 这种量化路线的红利在哪、代价在哪?为什么它需要”二阶段精排”?
  • 写出 Ch3 最后给出的”三处精确缝隙”——为什么它们恰好都需要”跨节点共享内存”这种新硬件能力?
  • 如果你的项目预算有限,只能选两条路线先实施,你会选哪两条?为什么?

📚 参考资料

上下文管理路线

  • Anthropic Skill API & Programming Tool Call(2026)—— 渐进式披露代表实现
  • Anthropic Tool Search Tool(参考实现)
  • LangChain Memory Modules(持续维护)—— 上下文压缩主流实现
  • AutoGen / LangGraph / CrewAI(2024-2026)—— Sub-Agent 编排框架

检索路线

  • HNSW(Malkov & Yashunin, TPAMI 2018)
  • DiskANN(Microsoft NeurIPS 2019)
  • FreshDiskANN(Microsoft 2021)—— 增量更新扩展
  • Filtered DiskANN(2023)—— 带 metadata 过滤
  • SPANN(Microsoft NeurIPS 2021)
  • RabitQ(VLDB 2024)—— 旋转 + 二值化量化
  • AlayaDB(2024-2025)—— DiskANN 产品化

系统综合

  • OpenClaw(2026)—— 开源 Agentic AI 框架
  • OpenViking(2026)—— Agent 编排平台
  • 本系列模块十三 新型互联与远程内存

下一章预告:Ch4 进入鲲鹏路线 1 的详细复盘——基于 UB 内存池的上下文缓存系统——把”中间数据搬出 LLM 上下文”做成跨节点共享的工程底座。我们会拆开它的数据流、内存布局、典型负载下的延迟分布,并和路线 D(单机上下文缓存)做精确对照。