AI认知篇7:详解agent记忆系统

AG前言

这是我的agent系列文章的第7篇,该系列分为三部分:

  • AI认知篇:详细讲解相关基础概念
  • AI实践篇:分享诸如skills怎么写、怎么ai coding、怎么写好prompt等的最佳实践
  • AI八股篇:分享我自己整理的应付大模型应用开发岗位必备的八股笔记后端与agent2手抓学习专栏

随着 AI Agent 应用的快速发展,智能体需要处理愈发复杂的任务和更长的对话历史,而 LLM 的上下文窗口限制、持续增长的 token 成本,以及如何让 AI 有效 “记住” 用户偏好和历史交互,成为构建实用 AI Agent 系统的核心挑战。记忆系统(Memory System) 正是解决这些问题的关键技术,它让 AI Agent 能像人类一样,在单次对话中保持上下文连贯性(短期记忆),同时跨会话记住用户偏好、历史交互和领域知识(长期记忆),既提升了用户体验的连续性与个性化,也为构建更智能的 AI 应用奠定基础。

一、Memory 基础概念

1.1 记忆的定义与分类

对于 AI Agent 而言,记忆是其记住过往互动、从反馈中学习并适配用户偏好的关键,主要分为两个层面,核心划分依据并非时间维度,而是是否跨 Session 会话

  • 会话级记忆(短期记忆):用户与智能体在一个会话中的多轮交互(user-query & response),仅服务于单次会话交互。
  • 跨会话记忆(长期记忆):从多个会话中抽取的通用信息,可跨会话辅助 Agent 推理与个性化决策,其信息从短期记忆中提炼而来并实时更新,同时会反作用于短期记忆,辅助模型的个性化推理。

1.2 各 Agent 框架的定义差异

各主流 Agent 框架对记忆的命名虽有不同,但均遵循 “会话级 + 跨会话级” 的双层划分逻辑,核心区别体现在组件定位和功能设计上:

Google ADK

Session

Memory (Long-Term Knowledge)

Memory 作为可搜索的知识库,包含多次对话信息

LangChain

Short-term memory

Long-term memory

Long-term memory 不属于基础核心组件,是高阶 “个人知识库” 外挂

AgentScope

Memory

Long TermMemory

API 层面为两个独立组件,功能有明确区分,按需驱动使用

二、Agent 框架集成记忆系统的架构

各 Agent 框架集成记忆系统的实现细节虽有差异,但均遵循统一的通用架构模式,核心围绕短期记忆与长期记忆的双向交互展开。

2.1 通用集成模式

框架集成记忆系统分为四个核心步骤,形成闭环的记忆流转与利用流程:

  1. 推理前加载:根据当前用户查询(user-query),从长期记忆中加载相关信息;
  2. 上下文注入:将检索到的长期记忆信息加入当前短期记忆,辅助模型推理;
  3. 记忆更新:推理完成后,将短期记忆中的有效信息存入长期记忆;
  4. 信息处理:长期记忆模块结合 LLM + 向量化模型,完成信息的提取、向量化与检索。

2.2 短期记忆(Session 会话)

短期记忆存储会话中产生的各类消息,包括用户输入、模型回复、工具调用及其结果等。这些消息直接参与模型推理,实时更新,并受模型的 maxToken 限制。当消息累积导致上下文窗口超出限制时,需要通过上下文工程策略(压缩、卸载、摘要等)进行处理,这也是上下文工程主要处理的部分。核心特点如下:

  1. 存储内容:会话中的所有交互消息,包括用户输入、模型回复、工具调用及其结果等;
  2. 核心作用:作为 LLM 的输入上下文,直接参与推理;
  3. 动态特性:实时更新,每次交互都会新增消息;
  4. 关键限制:受模型 maxToken 限制,消息累积超出阈值时,需通过上下文工程策略(压缩、卸载、摘要等)优化。

2.3 长期记忆(跨会话)

长期记忆与短期记忆形成双向交互:一方面,长期记忆从短期记忆中提取“事实”、“偏好”、“经验”等有效信息进行存储(Record);另一方面,长期记忆中的信息会被检索并注入到短期记忆中,辅助模型进行个性化推理(Retrieve)。

与短期记忆的核心交互

  • Record(写入):通过 LLM 对短期记忆的会话消息进行语义理解和抽取,提取 “事实”“偏好”“经验” 等有效信息,存储至长期记忆;
  • Retrieve(检索):根据当前用户查询,从长期记忆中检索相关信息,注入短期记忆作为上下文,辅助个性化推理。

信息组织维度

不同长期记忆产品在信息组织维度上有所差异:一些产品主要关注个人信息(个人记忆),而一些产品除了支持个人记忆外,还支持工具记忆、任务记忆等更丰富的维度。

1.***用户维度(个人记忆):*面向用户维度组织的实时更新的个人知识库

  • 用户画像分析报告个性化推荐系统,千人千面处理具体任务时加载至短期记忆中

2.***业务领域维度:*沉淀的经验(包括领域经验和工具使用经验)

  • 可沉淀至领域知识库可通过强化学习微调沉淀至模型

三、短期记忆的上下文工程策略

短期记忆直接参与 Agent 和 LLM 的交互,随着对话历史增长,上下文窗口会面临 token 限制和成本压力。上下文工程策略旨在通过智能化的压缩、卸载和摘要技术,在保持信息完整性的同时,有效控制上下文大小。

****备注:*需要说明的是,各方对上下文工程的概念和理解存在些许差异。*狭义的上下文工程*特指对短期记忆(会话历史)中各种压缩、摘要、卸载等处理机制,主要解决上下文窗口限制和 token 成本问题;*广义的上下文工程****则包括更广泛的上下文优化策略,如非运行态的模型选择、Prompt 优化工程、知识库构建、工具集构建等,这些都是在模型推理前对上下文进行优化的手段,且这些因素都对模型推理结果有重要影响。本章节主要讨论狭义的上下文工程,即针对短期记忆的运行时处理策略。

上下文工程策略针对狭义概念展开(即对短期记忆的运行时处理),核心解决 token 限制和成本压力问题,在控制上下文大小的同时保持信息完整性,主要包含三大核心策略,并遵循明确的选择原则。

3.1 核心策略

1. 上下文缩减(Context Reduction)

核心目标:通过减少上下文的信息量降低 token 消耗,属于有损压缩;会导致信息丢失,但能有效减少 token 消耗。

实现方式

  1. 保留预览内容:对于大块内容,只保留前 N 个字符或关键片段作为预览,原始完整内容被移除
  2. 总结摘要:使用 LLM 对整段内容进行总结摘要,保留关键信息,丢弃细节

2. 上下文卸载(Context Offloading)

核心目标:解决缩减内容的可恢复性问题,实现无损保存

实现方式:将原始完整内容卸载至外部存储(文件系统、数据库等),上下文仅保留引用指针(文件路径、UUID 等),需完整信息时通过指针重新加载;

适用场景:网页搜索结果、超长工具输出、临时计划等占 token 较多的内容;

核心优势:上下文更简洁、占用更小,信息不丢失且随取随用。

3. 上下文隔离(Context Isolation)

核心目标:拆分上下文、降低单个 Agent 负载,避免信息交叉污染,属于模块化处理

实现方式:基于多智能体架构,将任务拆分至子智能体,子智能体的上下文仅由主智能体的任务指令组成,完成任务后仅返回结果;

适用场景:任务有清晰简短指令、仅需最终输出的场景(如代码库中搜索特定片段);

核心优势:上下文小、开销低、实现简单直接。

3.2 策略选择原则

需结合数据特征综合选择处理策略,核心考虑三大因素:

  • 时间远近:近期消息通常更重要,需要优先保留;历史消息可以优先进行缩减或卸载;
  • 数据类型:不同类型的消息(用户输入、模型回复、工具调用结果等)重要性不同,需要采用不同的处理策略;
  • 信息可恢复性:对于需要完整信息的内容,应优先使用卸载策略;对于可以接受信息丢失的内容,可以使用缩减策略;

3.3 各框架的实现方式

各主流框架均内置上下文处理策略,支持参数化配置,核心差异体现在集成方式和策略精细化程度:

Google ADK

通过 events_compaction_config 独立设置上下文处理策略,与 Session 数据存储解耦,示例代码:

from google.adk.apps.app import App, EventsCompactionConfig
app = App(
    name='my-agent',
    root_agent=root_agent,
    events_compaction_config=EventsCompactionConfig(
   

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

内容包含: 1.后端八股大全:多一句没有少一句不行的最精简八股整理,完全可以应付校招八股拷打! 2.速成项目话术:目前有魔改苍穹外卖项目话术(额外扩展了很多技术亮点),能速成拿去面试,后面会更新agent开发等等热门高质量项目话术 3.智力题超详细题解汇总; 4.面试时非技术问题话术整理,绝对震惊面试官一年; 5.算法lc hot100全题系列题解:绝对通俗易懂。 欢迎订阅!

全部评论
谢谢楼主 很实用
点赞 回复 分享
发布于 昨天 03:44 美国

相关推荐

评论
3
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务