尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

大模型AI - Agent 记忆系统

大模型AI - Agent 记忆系统 部分内容可能来自网络或者由AI生成。如有雷同纯属巧合仅供学习参考之用。一、为什么 Agent 需要记忆无状态的困境一句话结论没有记忆的 Agent 是「失忆的孤岛」——每次会话从零开始、跨会话无法积累、多步任务中途断裂记忆的价值不是锦上添花而是 Agent 从「能聊天」走向「能干活」的地基。问题的根源是上下文窗口的物理边界。LLM 的注意力复杂度让长程依赖难以维持Agent「边读边记」时固定长度的窗口会不断被覆盖早期证据被压缩或丢弃 [公开2]。窗口从 2024 年的 200K 扩到 2025 年的 1M 确实有帮助但并不能消除对记忆系统的需求人与 Agent 的关系以周、月为单位发展对话历史会超过任何窗口且全量塞入还要让模型在一堆无关信息里做推理 。没有持久记忆Agent 会撞上三堵墙 个性化在会话间消失这次告诉它偏好 Python下次它一无所知、长程任务断裂多天的调研/调试/评审无法续接、多系统上下文蒸发跨 CRM、工单、可观测栈的调用各自冷启动。对应到记忆的正向价值上下文连贯性对话/行动一致、个性化记住用户偏好与画像、持续学习与经验复用把成功逻辑沉淀下来。这引出了记忆系统要回答的第一个设计问题Agent 到底该记住什么、以什么形式记 后续各章依次拆解。小结记忆是 Agent 的状态层。上下文窗口解决「当下这轮能看到什么」记忆解决「跨轮、跨会话、跨系统还记得什么」两者互补而非替代。二、记忆的分类学从认知科学到工程映射一句话结论几乎所有主流系统都借用了认知科学的记忆分类工作/情景/语义/程序并在工程上叠加了「显式 vs 隐式」「参数 vs 非参数」两条正交轴——理解这套分类是看懂任何记忆系统的第一把钥匙。2.1 认知科学的三个源头记忆分类的理论根基有三Atkinson-Shiffrin 多存储模型1968把记忆分为感知记忆、短期记忆、长期记忆、Baddeley Hitch 的工作记忆1974以及 Tulving 对长期记忆的进一步划分 [热1]。落到 Agent 上业界形成了被反复引用的四类映射认知记忆类型Agent 中的对应存储形态典型例子工作记忆 Working上下文窗口Context Window原始 token / 注意力当前对话的活跃信息情景记忆 Episodic对话历史 / 执行轨迹时间索引的事件某次具体会话、工具调用记录语义记忆 Semantic用户偏好 / 领域规范 / 提炼后的事实与时间无关的知识「用户偏好 Python」程序记忆 Procedural工具使用 / 执行模式Prompt / 策略 / 代码固化下来的操作技能Skill这套四分法正是 CoALACognitive Architectures for Language Agents框架的核心一个带模块化记忆组件、结构化动作空间和统一决策流程的 Agent用 LLM 作中央执行器 [公开3][热2]。一个关键的动态规律是情景记忆会随时间被巩固consolidate为语义记忆——一条脱离原始上下文仍然有用的事实会从「某次对话」升格为「一条稳定知识」原始情景则淡出 [公开2][热4]。2.2 两条工程正交轴在认知分类之外工程上还有两条正交轴显式 vs 隐式可声明式显式能用自然语言写出来的事实vs 不可声明式隐式如肌肉记忆式的行为模式。多数框架只覆盖长期显式记忆。参数 vs 非参数非参数记忆存在外挂存储文本/向量/图参数记忆则内化进模型权重。MemOS 论文进一步把记忆分为三态——纯文本记忆Plaintext、激活记忆Activation即 KV-Cache、参数记忆Parameter并支持三者动态转换 [热1]。这是目前少见地同时覆盖了短/长期、显/隐式记忆的分类体系。小结记住一句话——「记忆区工作/长期× 存在形式参数/非参数、激活/文本× 内容类型情景/语义/程序」这三维框架可以给几乎所有记忆系统定位。多数产品目前只做到「长期 非参数 语义/情景」这一格参数化与激活态记忆仍是前沿。三、记忆的生命周期编码—存储—检索—更新—遗忘一句话结论记忆不是「存起来」这么简单而是一条「读在推理前、写在行动后」的闭环流水线其中存储和检索基本是工程问题而更新、冲突解决和遗忘仍是开放难题。记忆操作的经典划分是编码Encode、存储Storage、提取Retrieval再叠加巩固、再巩固、反思与遗忘 [热1]。在运行时主流框架收敛到一个「read-before-reasoning, write-after-acting」循环 [公开2]1. 接收输入用户 / 触发器 / 上游 Agent 2. 记忆读取载入工作记忆 查询长期存储 组装上下文窗口 3. 推理与规划带记忆上下文调 LLM 4. 行动工具调用 / API / 子 Agent 委派 5. 观察收集结果与反馈 6. 记忆写入更新工作记忆 抽取事实入长期库 可选地摘要旧上下文 7. 循环或终止这个循环写在纸上很简单真正决定生产可用性的是「检索质量」和「写入纪律」两件事 [公开2]。mem0 把它进一步细化为「write-through 缓存」模式用户消息先写会话缓冲短期查询长期索引注入相关上下文生成回复后由异步 worker 抽取有价值的事实如「我叫 Sarah」写入长期索引 [公开1]。这种「异步抽取」几乎是共识——会话上下文异步抽取 、OpenClaw 的预压缩落盘 [热5]、ReMe 的 summary_memory 异步持久化 [用户6]都是同一思路。写入前要有「筛选纪律」不能把每一句「hello」都存下来 [公开1]。用户文章给出了更严格的三道卡口跨任务有效、代码/系统不能低成本恢复、有可验证依据 。生命周期里最难的一环是遗忘。公开资料直言存储和检索如今主要是工程问题而「决定丢弃什么」仍是未解的研究课题选择性遗忘做错了会伤害答案质量、抬高存储成本、把过时上下文泄漏进新会话 [公开2]。这与用户文章「真正危险的不是忘记而是记错」的判断完全呼应 。小结把记忆当成一条流水线来运营而不是一个数据库。读写循环、异步抽取、写入筛选是成熟做法而主动遗忘、冲突解决目前没有银弹需要显式的保留策略与治理规则兜底。四、存储与检索混合检索是默认解一句话结论向量语义检索 BM25 全文检索的「混合检索」已是被多方基准验证的默认最优解在此之上叠加时间衰减、MMR 去冗余、知识图谱增强并正在向「LLM-as-Retriever / Agent-as-Retriever」演进。4.1 为什么是混合检索单纯向量检索擅长语义模糊匹配但对精确关键词人名、报错码、配置项常常失手BM25 全文检索则相反。公开评测给出了明确证据在约 2.5 万条问答、四个数据集上词项检索 稠密检索的组合优于任一单独方法另一项跨八个对话数据集的研究也报告混合方法优于原始 RAG [公开2]。因此「一开始就上混合检索」比「事后再优化」更划算。可交叉验证——分数融合公式几乎都是线性加权finalScore vectorWeight × vectorScore textWeight × textScore其中 OpenClaw 与 ReMe 都取vectorWeight0.7 / textWeight0.3权重归一化为 1.0ReMe 还设min_score0.35过滤低质结果。AgentBase 则更进一步提出查询类型自适应权重——按 6 类查询各配一套 FTS/Vector 权重如偏好推断 0.3/0.7 偏向语义助手回忆 0.7/0.3 偏向全文这是业界尚未普及的差异化能力 。4.2 时间衰减、MMR 与知识图谱检索排序还要考虑时效与多样性。时间衰减普遍用指数半衰期OpenClaw 的实现是decayedScore score × e^(−λ×ageInDays)半衰期默认 30 天今天 100%、7 天 84%、30 天 50%、90 天 12.5%且「常青文件」如 MEMORY.md不衰减 AgentBase 用recency exp(-0.693 × age_days / half_life)知识更新类半衰期 14 天、新鲜度 7 天 。MMR最大边际相关用来去冗余score λ×relevance − (1−λ)×max_similarity_to_selectedλ 默认 0.7 [热5]。知识图谱是另一条增强路线。 Memory 用「复合知识图谱」实体节点 文本块节点建 contains 关系检索四步为向量匹配定种子节点 → LLM 三元组过滤 → PPRPersonalized PageRank上下文感知检索 → 按 PageRank 得分 rerank 排序 。Zep/Graphiti 则构建时间感知知识图谱三层子图情景/语义/社区并用边失效机制处理矛盾事实 [热1]。GBrain 的图谱实测把 P5 从纯混合检索的 17.7% 提到 49.1%31.4ppR5 达 97.9%240 页语料[热3]。4.3 三种检索范式用户文章 提炼出三种正在并存的检索范式很有洞察力检索范式代表系统机制特点传统混合检索OpenClaw / ReMeLight向量 BM25 分数融合成熟、可控、低延迟LLM-as-RetrieverClaude Code用 Sonnet 侧查询在索引里选最多 5 个文件语义理解强、准确Agent-as-RetrieverReMe Vector先查后写、多类型并行检索自主、灵活、贴合场景小结混合检索是安全默认务必从第一天就做。图谱增强在「多跳推理、实体密集」场景收益显著但有构建成本检索的未来趋势是把「检索决策」交给 LLM/Agent 本身。五、上下文压缩与记忆压缩从四种方案到分层压缩一句话结论压缩分两层——「信息层」决定保留哪些历史滑动窗口/摘要/重要性过滤/结构化抽取沿时间/内容/表达三个正交维度「计算层」用 Prompt Caching 避免重复计算生产系统则把它们串成多级渐进式压缩流水线。5.1 四种核心压缩方案系统地把记忆压缩归为四种方案并归入三个正交维度方案维度机制信息保留计算开销滑动窗口时间只保留最近 N 轮硬截断低极低摘要压缩时间先 LLM 提炼再截断可多级摘要中中重要性过滤内容按价值打分筛选保留高中结构化抽取表达换载体抽成结构化 JSON极高高关键实现细节重要性打分按角色权重user 0.2/assistant 0.1、高价值关键词必须/关键/结论等各 0.3、长度与是否问题指令等加权上限 1.0 摘要控制在 100 字内滑动窗口叠加时间衰减因子 0.95^Δt 。这四种方案不是互斥优劣而是互补——短对话用滑动窗口、长对话用摘要重要性、强业务规则用结构化抽取固定系统提示前缀交给 Prompt Caching计算层与信息层垂直互补。5.2 生产系统的多级渐进式压缩单一方案不够用真实系统会把它们串成分级流水线。以 OpenClaw 为例src/agents/compaction.ts上下文剪枝 Pruning仅内存、不写盘、只处理 toolResultTTL 5 分钟、保留最近 3 条助手消息、软修剪保留 head 1500 tail 1500 字符、硬清除替换为占位符触发阈值softTrimRatio0.3 / hardClearRatio0.5最小可裁剪工具输出 50,000 字符。上下文压缩 Compaction旧消息经 LLM 总结成紧凑摘要并持久化 JSONL自适应分块BASE_CHUNK_RATIO0.4单条消息若超过上下文 50% 则无法安全压缩。工具结果守卫单条工具结果最多占上下文 50%总预算 75% headroom超预算把最旧工具输出压成[compacted: tool output removed]。窗口守卫CONTEXT_WINDOW_HARD_MIN_TOKENS16000阻断、WARN_BELOW32000警告默认contextTokens200000、压缩targetTokens0.7。Claude Code 的压缩则是五层Snip → Microcompact → Collapse → AutoCompact → 响应式 reactiveCompact触发后按 9 部分结构化模板生成摘要恢复预算约 50K25K token其断路器MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES3。ReMe 的 ReMeLight 用两阶段截断recent_max_bytes100KB→old_max_bytes3KB并在推理前用 Pre-Reasoning Hook 做四步压工具输出 → Token 阈值检查 → 同步压缩摘要 → 异步持久化 。一个共性的高级设计是「预压缩落盘」OpenClaw 在tokenEstimate contextWindow − reserveTokensFloor − softThresholdTokens时静默提示「Session nearing compaction. Store durable memories now.」每压缩周期仅一次 [热5]。即压缩发生前主动把重要信息从瞬时 Context 落到持久 Memory。小结压缩要分清「信息层」和「计算层」。信息层选方案看场景时间/内容/表达三维生产环境几乎都要多级渐进式压缩且要在压缩前把关键信息落盘——这是「Context 瞬时、Memory 持久」协同的精髓。六、业界系统横向对比一句话结论从 MemGPT 的 OS 分页范式到 Mem0/Zep 的抽取与图记忆再到 MemOS 的记忆张量、以及 OpenClaw/Claude Code 的「文件即真相」主流系统在同一套认知分类下走出了不同工程路线——没有银弹只有权衡。下表综合多篇源码级分析横向对比代表性系统基准数字均标注来源与数据集系统核心范式存储/检索关键基准MemGPT / LettaOS 虚拟内存分页Main Context系统指令工作上下文FIFOvs External Context递归摘要 档案/回忆存储DMR 93.4%Mem0 / Mem0-g两阶段提取→更新 ADD/UPDATE/DELETE图版加实体三元组、冲突标记失效向量 图记忆双检索LoCoMo 综合最佳OSS ~26000 tok/queryZep / Graphiti时间感知知识图谱三层子图情景/语义/社区、边失效语义 BM25 广度优先DMR 94.8%LongMemEval 18.5%A-MemZettelkasten 原子化记忆单元 动态链接 记忆演化向量相似 LLM 判断建链LoCoMo 优于 Letta/MemoryBankMemOS记忆张量三态文本/激活/参数动态转换MemCube 抽象多视角标签/图谱/语义分层LoCoMo Overall 69.92Single-hop 81.09MIRIX6 记忆组件 Multi-Agent Meta Memory Manager 路由分组件检索LoCoMo SOTAKBase Memory产品化记忆中枢多层级用户/会话/应用 复合知识图谱语义/关键词/时序融合 PPR对标 Mem0/Zep/LangMemLoCoMo/LongMemEvalAgentBaseZero-LLM / SQLite-First查询类型自适应权重FTS5 BM25 向量 时序图谱融合LongMemEval 74.8%~3000 tok/queryOpenClaw文件即真相三层Context/中期 MD/长期 MEMORY.md向量 0.7 BM25 0.3 MMR 时间衰减200K 触发压缩半衰期 30 天Claude Code纯文件系统无 DB6 类记忆LLM-as-Retriever三层检索静态加载/Sonnet 侧查询/grepMEMORY.md ≤200 行/25KBinclude ≤5 层ReMeCoPaw双系统 ReMeLight文件 ReMe Vector6 类记忆向量 0.7 BM25 0.3先查后写两阶段截断 100KB→3KB小结选型不是「哪个最强」而是「哪种范式匹配你的规模、Agent 类型和检索精度要求」。个人/小团队可从文件即真相OpenClaw/Claude Code 式起步重时序推理选图谱路线Zep要极致离线可控看 AgentBase 的 Zero-LLM 路线要覆盖参数化记忆则关注 MemOS。七、五大可复用设计范式一句话结论抛开具体实现主流系统沉淀出五条可迁移的设计范式——分层记忆架构、检索与注入解耦、先查后写、渐进式上下文压缩、工具输出全文持久化渐进截断。综合源码级对比 五大范式如下分层记忆架构即时Context Window/ 会话中期滚动文件/ 持久长期精选三层几乎是标配。OpenClaw 的MEMORY.md长期常驻memory/YYYY-MM-DD.md按天 append-only是典型 [热5]。检索与注入解耦检索层只负责「找候选」不裁定「哪个是真相」—— 反复强调检索命中不等于结论有效。先查后写AddDraftAndRetrieveSimilarMemory写入前先检索相似记忆用于去重与冲突发现。AgentBase 的两级去重精确哈希 FTS Jaccard≥0.92是同一思路。渐进式上下文压缩如第五章所述的多级压缩流水线。工具输出全文持久化 渐进截断工具原始输出先全量落盘如 ReMe 的tool_result/uuid.txtContext 里则渐进截断兼顾「可回溯」与「省 token」。演进方向上LLM-Native 检索将成主流、从被动压缩转向主动规划、记忆结构化程度提高到图结构、单 Agent 转向多 Agent 共享、工具输出管理成为标配。小结这五条范式与具体系统无关是可以直接迁移到自研 Agent 的资产。若只能记住一条那就是「让检索与判断解耦」——这直接关系到下一章的核心问题。八、从 Memory 到知识治理记住了为什么还会做错一句话结论Agent 出错的根源常常不在「没记住」而在「记错了/记乱了」——存储成功、检索命中、语义可执行、结论仍有效是四件完全不同的事。Memory 解决「想起来」知识治理解决「想起正确的东西」。一个 Agent 明明写入了记忆却仍然做错可能有四种原因作用域不可见、缺触发条件、被更高优先级流程覆盖、默认值已变但记忆无来源/时效 。据此记忆与知识治理其实解决两个不同问题治理要点可归纳为几条 五类信息不要混协作上下文/动态状态/变更历史/长期知识/私有记忆各有载体写入形态借用 Diátaxis 四分法Tutorial/How-to/Reference/Explanation面向 Agent 主要保留后三种新旧知识的对齐有重复/补充/替代/冲突/邻近五种关系可用性上要求「标题直接表达结论」「每份知识从入口三跳可达」。最危险的反模式是 append-only 只增不删——知识只堆积不演进可信度会随时间腐烂而 Agent 读到过时知识时会「非常确定地做错。这一层与 Karpathy 的 LLM Wiki 思路完全同频 。LLM Wiki 用「编译一次、持续更新」替代 RAG 的「每次现查、只存不整」三层架构 raw只读事实源/ _wikiLLM 编译产出/ Schema人机契约规则三操作 Ingest/Query/Lint [热3][热4]。其工程化实现Obsidian-Wiki、GBrain叠加了 SHA-256 增量追踪、溯源标记^[extracted]/^[inferred]/^[ambiguous]、可见性标签、置信度评分等 [热3]。需要一个清醒的判断现成的 Memory 产品Mem0、Letta、agentmemory、OpenViking、Acontext 等能存能召回但知识治理不应退化成一个 memory engine——它必须保留「判断层」规范知识的作用域、可见性、形态与演进这不是向量库能替代的 。同时 LLM Wiki 与 RAG 是互补而非替代海量文档高并发/合规溯源用 RAG个人/中等规模/跨文档综合推理用 Wiki海量概念级理解则「RAG 底座 Wiki 上层」[热3][热4]。小结如果只从本文拿走一个观点那就是——先治理写入再讨论检索。作用域、可见性、形态、对齐、演进这五件事没做好再强的检索也救不了「记错」。九、评测与开放问题一句话结论当前记忆技术在「记得住、能检索」上已较成熟但在「更新、冲突解决、遗忘、洞察、进化」上仍处初级阶段评测基准本身也存在明显局限。尚未解决的跨会话身份消歧、记忆过时检测与主动淘汰、大规模时序抽象与记忆分层、多模态记忆TextVisionAudioSpatial如 M3-Agent、在线自适应权重学习、以及「从记忆到认知」的演化。特别值得关注两条前沿路线一是 参数化记忆 面向 Memory 的后训练用梯度更新让模型真正「记住」用 RL 提升压缩/洞察能力二是 强化学习驱动的记忆管理代表作 Memory-R1——Memory Manager{ADD,UPDATE,DELETE,NOOP} Answer Agent 双智能体用 PPO/GRPO 训练仅需 152 个训练样本即收敛在 LoCoMo/MSC/LongMemEval 达 SOTA 。一个偏产品视角的提醒 记忆不是越高保真越好——「被理解」与「被监视」只有一线之隔恰当的遗忘和适度的记忆偏差甚至是特性评测记忆应是认知科学/心理学的交叉学科而非纯 IR 指标。小结不要迷信单一 benchmark 分数。精度-延迟-成本三角要一起看更新/遗忘/进化是真正的深水区短期靠工程规则兜底长期看参数化记忆与 RL。十、选型与落地建议一句话结论没有银弹只有权衡按规模、Agent 类型、检索精度沿六大权衡轴做取舍并遵循「从简单起步、渐进演进」的路径。用户文章提炼的六大权衡轴 检索精度 vs 延迟、透明性 vs 扩展性、自动化 vs 可控性、压缩率 vs 信息保留、通用性 vs 专业化、部署简单性 vs 功能丰富性。据此给出一份务实的落地清单从简单起步小规模场景用「Git Markdown 全文检索rg/BM25 结论式标题」就够不要一上来就上向量库和图谱 。检索从第一天做混合向量 BM25 是被多方基准验证的默认解别等到「优化阶段」再补。分层记忆 预压缩落盘即时/会话/持久三层压缩发生前主动把关键信息落到长期记忆文件 。写入要有纪律三道卡口筛选跨任务有效/不可低成本恢复/有可验证依据异步抽取事实别存每一句寒暄 。治理优先于检索规范作用域、可见性、形态Diátaxis、新旧对齐与演进坚决反对 append-only 只增不删。按需上图谱与参数化多跳推理/实体密集场景用知识图谱Zep/GBrain 式对成本/离线敏感看 AgentBase 的 Zero-LLM 路线关注 MemOS 的激活/参数记忆前沿.评测要贴合场景LoCoMo 只是参考务必用自己的垂直数据、中文场景与精度-延迟-成本三角一起评估 [热2][公开2]。小结Agent 记忆的工程价值不在某个「最强框架」而在把「分层存储 混合检索 渐进压缩 严格写入治理」这套组合按场景配好。记忆是基础设施不是一个功能——把它当基础设施来设计与运营。参考来源公开资料Mem0 EngineeringShort-Term vs Long-Term Memory in AI短/长期记忆定义、write-through 抽取、评测指标https://mem0.ai/blog/short-term-vs-long-term-memory-in-aiRedisLong-Term Memory Architectures for AI Agents记忆类型、检索流水线、LOCOMO 精度-延迟-成本权衡、巩固与遗忘https://redis.io/blog/long-term-memory-architectures-ai-agents/Sumers, Yao, Narasimhan, GriffithsCognitive Architectures for Language Agents (CoALA)TMLR 2024 https://arxiv.org/abs/2309.02427
返回列表