跳到主要内容

记忆系统

记忆系统概述

概念解释

记忆(Memory)在 Agent 语境里,指系统为完成多轮对话、长期任务与个性化服务而存储、组织、检索、更新信息的一整套机制。没有记忆,Agent 只能做「无状态函数调用」:每次请求都像第一次见面,无法延续偏好、历史决策与上下文因果。

原理详解

  • 状态与上下文的区别:单次请求的 prompt 是瞬时输入;记忆是跨请求持久或半持久的状态,可被策略性地注入 prompt、工具参数或规划模块。
  • 与 RAG 的关系:长期记忆常与向量检索结合,但记忆还强调时间线、重要性、用户维度、写入策略(不只是「找文档」)。
  • 设计目标:在 Token 预算、延迟、成本、隐私 约束下,最大化「对当前任务有用」的信息覆盖率。

人类记忆类比(感觉 / 短期 / 长期)

心理学概念大致特征Agent 中的常见对应
感觉记忆极短、容量大、未加工原始多模态输入缓存、流式 ASR 缓冲、截图/音频临时块
短期记忆 / 工作记忆容量小、可主动操作对话上下文、Working Memory、ReAct 轨迹中的「当前 scratchpad」
长期记忆持久、需巩固向量库、文档库、用户画像表、知识图谱、会话摘要归档

类比的价值:帮助划分模块职责——哪些必须快、哪些可以慢;哪些必须忘、哪些必须存。

为什么 Agent 需要记忆?没有行不行?

需要。原因包括:(1)多轮一致性——避免重复追问、前后矛盾;(2)长任务——工具调用链、子目标状态需要延续;(3)个性化——偏好、禁忌、领域术语;(4)成本——不必每次把全量背景塞进 prompt,可通过摘要与检索按需加载。

「没有记忆」在简单 FAQ 或单次工具调用场景可能够用,但在助理、客服、编程 Agent、游戏 NPC 等场景会明显不可用。

用 RAG 算不算记忆?

算长期记忆的一种实现路径,但完整记忆系统通常还包括写入策略、衰减、用户隔离、摘要与时间线,而不仅是检索切片。

用人类记忆模型设计 Agent 记忆有什么好处?

好处是模块化与可解释:短期对应上下文窗口与 scratchpad,长期对应向量库/图谱;感觉记忆对应流缓冲。你可以针对不同模块设不同 SLA(延迟、持久化)。风险是类比不能硬套——计算机没有神经可塑性,需要工程上显式实现「巩固、遗忘、冲突解决」。

程序性记忆怎么落地?

常放在 工具说明书、工作流模板、可执行策略(policy) 或 微调/少样本示例 中,不一定进向量库。

短期记忆(Short-term / Working Memory)

概念解释

短期记忆一般指当前会话或当前任务周期内可被模型直接「看到」的信息载体,通常受 Token 上限与延迟约束。

原理详解

会话上下文(Conversation Buffer)

  • 做法:将多轮 user / assistant(及可选 system)消息按时间顺序拼接进模型输入。
  • 特点:信息保真度高;对话越长,越贵、越慢、越易注意力分散。

滑动窗口记忆(Window Buffer)

  • 做法:只保留最近 (k) 轮或最近 (n) 个 Token。
  • 特点:成本可控;可确保信息保真度;可能丢失信息。
如何做 Token 预算分配才不容易翻车?

建议顺序:system 指令 > 安全/策略 > 工具定义(若必须)> 高优先级记忆(用户偏好/任务状态)> 近期对话 > 其他。并预留 10%~20% 给模型输出与格式冗余。对长工具返回要压缩、引用 ID、存外部而不是全文塞入。

工具 schema 特别长怎么办?

工具分层(核心工具常驻 + 动态加载)、摘要版 schema、或 工具路由 先选子集再展开。

长期记忆(Long-term Memory)

概念解释

长期记忆用于跨会话、跨任务保留信息,典型实现是「向量数据库 + 元数据」:把记忆文本(或结构化记录)向量化,通过相似度检索召回。

长期记忆为什么常用向量数据库?有什么局限?

常用是因为语义检索能处理「换说法」的匹配。局限包括:相似≠正确(会召回到表面相近的噪声)、难精确匹配(账号、订单号更适合关键字/关系库)、更新一致性需业务层保障。

会话摘要与压缩

摘要与压缩是把长对话变为更短表示,以在 Token 预算内保留尽可能多的「任务有效信息」。

为什么需要摘要压缩

对话变长后:成本高、延迟高、模型更容易漏看中间约束。

摘要把信息搬到更短载体,配合长期记忆检索,实现「短上下文 + 广记忆」。

只用向量检索、不做摘要可以吗?

可以,但你会失去低成本的全局叙事(例如任务阶段、未决事项)。摘要擅长提供「主线」,向量擅长提供「细节证据」。最佳实践常是摘要 + 检索并存。

情景记忆与语义记忆

情景记忆(Episodic):关于具体事件——时间、地点、参与者、发生了什么。例如「昨天下午用户让我把报表改成 PDF」。

语义记忆(Semantic):一般性知识——概念、事实、规则。例如「PDF 是便携式文档格式」「公司退货政策是 7 天」。

高级记忆框架

当对话与工具轨迹变复杂后,会出现「上下文装不下、长期记忆难组织」的问题,业界提出更接近操作系统的记忆架构。

MemGPT / MemOS

  • MemGPT 核心思想:把 LLM 上下文当作「有限 RAM」,把外部存储当作「磁盘」,通过 分页/换入换出 与 事件驱动 控制信息进出上下文。典型流程包括:当上下文将满时,由控制逻辑(可外挂函数)决定把哪些内容外溢到外部归档,并在需要时再加载回上下文;这与「每次用户提问都做一次相似度检索」的被动 RAG 不同,更强调对记忆载体的主动管理。
  • 你要能讲清的点:外溢策略(FIFO、重要性、摘要)、主上下文 vs 外部上下文 的边界、以及为何能缓解长对话的 lost-in-the-middle 与成本问题。
  • MemOS:多指「记忆操作系统」式架构——把记忆拆成 多层(例如:瞬时上下文、会话工作区、用户级长期存储、共享知识),并由调度器决定读写路径与配额;与 MemGPT 同属「分层 + 调度」一脉,名称随论文/开源项目演进,面试重点在思想而非单一产品版本。

Mem0 框架

  • 定位:面向应用的 记忆层(memory layer),把「从对话中抽取可复用记忆 → 更新 → 检索」做成可集成组件,常与 向量检索、图结构、用户画像 组合使用。
  • 价值:把「写记忆」从纯 prompt 技巧下沉为 可复用模块,便于在多应用间复用同一套写入与冲突处理策略。
  • 面试表述:Mem0 偏 工程化记忆中间件;与 MemGPT 的「OS 分页」可互补——前者管 抽取与存储管线,后者管 上下文与外存之间的搬运策略。

综合

如何评测记忆系统好坏?

离线:召回率/精确率(给定标注 relevant memories)、摘要一致性、冲突率。

在线:任务成功率、用户纠正次数、成本与延迟。

未来记忆系统趋势你怎么看待?

更强调 分层 + 可学习检索 + 用户可控;合规与可删除性成为默认需求;与 世界模型/仿真 结合用于更强规划(开放题,言之成理即可)。

多 Agent 共享记忆要注意什么?

区分 共享语义知识(可读多 Agent)与 私有工作记忆(单 Agent);写权限要审计;避免一个 Agent 写入污染全局记忆——可用 命名空间、审批流、置信度门槛。