agent2026.08.27 · 10 分钟阅读
Memory 的管理策略
LLM 无状态,每次调用的上下文窗口有限,对话一长就"装不下、记不住"。三种常用记忆策略 = 三种"腾空间、留信息"的方式。
L
Leo
2026.08.27 · 更新于 2026.09.23
4 次浏览
Agent 对话记忆(memory-use 三种方式)
核心问题:LLM 无状态,每次调用的上下文窗口有限,对话一长就"装不下、记不住"。三种常用记忆策略 = 三种"腾空间、留信息"的方式。
三种方式对比
| 方式 | 对应文件 | 核心思路 | 优点 | 缺点 |
|---|---|---|---|---|
| 截断 | truncation-memory.js | 超限后只留最近 N 条消息 / N 个 token,旧的直接丢 | 零成本、实现最简单、无延迟 | 信息永久丢失,对话一长就"失忆" |
| 总结 | summarization-memory.js / summarization-memory2.js | 超限后把旧消息用 LLM 压成摘要,最近几条原文保留 | 保留关键信息、省大量 token | 每次调 LLM(耗时+花钱);摘要丢细节、可能有误差 |
| 向量数据库 | milvusmemory.js(写)/ retrieval-memory.js(RAG 查) | 每轮对话 embedding 后存进 Milvus;新提问按语义相似度召回最相关历史 | 跨会话长期记忆、按需召回、可扩展 | 要部署 Milvus + embedding;检索质量决定上限 |
1. 截断(truncation-memory.js)
- 两个变体:
- 按消息数量:
allMessages.slice(-maxMessages)保留最近 N 条。 - 按 token 数:用
js-tiktoken的cl100k_base编码计数,配合 LangChain 的trimMessages(strategy: "last")保留最近的部分。
- 按消息数量:
- 本质是上下文预算管理,最省事,但没有任何"找补"——旧信息直接没了。
2. 总结(summarization-memory.js / summarization-memory2.js)
- 超过阈值(消息数 / token 数)→ 把
slice(0, -keepRecent)的旧消息拼成文本 → 丢给 LLM 生成摘要 →history.clear()后只重放最近保留的消息。 - 摘要保住"大意",丢掉"细节";每次总结要调一次 LLM(额外 +token、+延迟)。
3. 向量数据库(milvusmemory.js → retrieval-memory.js)
- 写入:对话文本 →
OpenAIEmbeddings转 1024 维向量 → 存入 Milvus(字段 id/vector/content/round/timestamp,IVF_FLAT+COSINE索引)。 - 查询(RAG 记忆流):新提问 → 同样转向量 →
client.search召回 top-k 相似历史 → 拼进 Prompt → LLM 基于召回回答 → 新对话再回写进库。 - 本质:把 RAG 用在记忆上——检索对象从"文档库"换成了"历史对话库"。
记忆基础存储(三种策略的地基)
memory.js:InMemoryChatMessageHistory纯内存,会话内有效。longmemory.js/readlongmemory.js:FileSystemChatMessageHistory持久化到chat_history.json,跨会话恢复。
分层记忆示意图(Mermaid)
读图要点:写(内存 → 文件持久化)→ 管(超限时截断 / 总结 / 入库)→ 取(热上下文 + 摘要 + 语义检索拼成最小可用上下文)。
市场调研结论(2026.08)
一句话:市场上没有产品只做上面某一种技术,成熟的记忆系统都是"分层混合"架构——你学的三种方式,恰好就是所有商业记忆层的三个基本组件。
头部三条技术路线
| 产品 | 技术路线 | 融资 / 规模 |
|---|---|---|
| Mem0 | 通用记忆层 SDK:向量 + 图关系 + 键值多存储;写入时自动抽取事实,不存原始对话 | $24M A轮(2025.10),58K+ stars,AWS Agent SDK 独家记忆供应商,Apache 2.0 可自托管 |
| Letta(原 MemGPT) | Agent 运行时:上下文=RAM、外部存储=磁盘,由 agent 自己决定分页换入换出;Core/Archival/Recall 三层记忆 | $10M 种子,源于 UC Berkeley 论文(长任务 3.4× 提升) |
| Zep(Graphiti) | 时序知识图谱:实体为节点、关系为边、边带双时间戳,追踪"事实如何随时间变化"而非覆盖 | 五家中唯一 SOC2/HIPAA/GDPR 全认证,适合审计严格的行业 |
平台巨头下场
- OpenAI:ChatGPT Dreaming V3——空闲时把"记忆碎片"整理成带权重的"记忆链",新会话自动联想;API 侧
memory_context参数 + Responses API Server-side Compaction(服务端压缩而非粗暴截断)。但标准 API 本身仍无记忆。 - Anthropic:官方 memory tool(文件系统式"笔记本")配合 CLAUDE.md 项目记忆 + 自动 context editing;实测 100 轮搜索任务 token 降 84%。官方博客专门写了《用 Milvus 给 Claude Managed Agents 加长期记忆》——正是你练的方向。
- AWS 选 Mem0,微软 Azure AI Foundry、Oracle 各自出了原生记忆。
国内
- 腾讯云 TencentDB Agent Memory(2026.5 开源,MIT,80 天 15K+ stars):四层记忆金字塔 L0 原始对话 → L1 原子记忆 → L2 场景归纳 → L3 用户画像,任意信息沿"高层符号→中层索引→底层原文"100% 找回;上下文卸载(工具结果写外部文件、上下文只留一行摘要+路径)让 token 降 61%、成功率反升。
市场共识(四条)
- 分层记忆是唯一共识:热上下文(最近 N 轮)+ 滚动摘要 + 语义检索,三层各司其职——基本就是你把三份 demo 拼起来的样子。
- 存什么 ≠ 存原文:领先方案都是"写入时抽取结构化事实",而不是存原始对话;原文仅作为可追溯的证据链底层。
- 检索是新一代战场:从纯向量 → 混合检索(向量 + BM25 关键词 + 实体/图匹配,多路得分融合),再加时间衰减 / 主动遗忘模拟人脑遗忘曲线。
- 可解释 + 合规:每条记忆可审计("agent 为什么想起这个")、可被用户纠正、软删除 + 版本化,是生产级标配。
你的代码 ↔ 市场对应:截断 ≈ 各家的"上下文预算管理";总结 ≈ Letta 的 rolling summary、腾讯 L0→L1 的提取-聚合;向量检索 ≈ Mem0 向量存储 / Letta archival memory / Anthropic 官方推荐的 Milvus 方案。下一步可练的"第四层":事实抽取 + 混合检索 + 时间衰减/遗忘机制。
标签 / TAGSagent
读者留言
COMMENTS · 0发表留言