Agent 有了工具,终于能"动手做事"了——能搜索、能查数据库、能读文件、能调 API。

但你有没有想过一个问题:

Agent 做完了事,它记得自己刚才做了什么吗?

答案是:大多数 Agent 不记得。

更准确地说——它不是"不记得",而是你根本没给它"记住"的能力。

如果你做过多轮对话的 Agent,大概率遇到过这种情况:

  • 聊了十几轮后,Agent 开始"忘事",你在第三轮说过的条件,到第十五轮它已经忘了
  • 换一个新会话,Agent 完全不记得上次聊过什么,一切从零开始
  • 上下文越来越长,Token 成本疯涨,但回答质量反而在下降

这些问题的根因,都指向同一件事:

Agent 没有记忆系统。

一、先说清一个大前提:上下文窗口不是记忆


这是很多人最容易搞混的点。

你可能会说:“现在的模型不是有 128K、200K 的上下文窗口了吗?这不就是记忆吗?”

不是。

上下文窗口和记忆,是两个完全不同的东西。

上下文窗口是"工作台"

上下文窗口是模型单次推理时能看到的全部信息——System Prompt、对话历史、工具调用结果、中间状态,全部加在一起。

它有一个硬上限,超了就会被截断。

你可以把它想象成一张工作台:桌面上能放多少纸条,取决于桌面有多大。桌面满了,最早放上去的纸条就被挤下去了。

记忆系统是"档案柜"

记忆系统是一套独立于上下文窗口的存储和检索机制。它能把重要信息持久化保存,需要时再调出来放到工作台上。

你可以把它想象成档案柜:工作台放不下的东西,你可以归档到柜子里。下次要用的时候,打开柜子找出来就行。

在这里插入图片描述

上下文窗口是临时的、有限的、每次推理都要重新组装的。
记忆系统是持久的、可扩展的、跨会话可用的。

把上下文窗口当成记忆来用,就像把所有文件都堆在桌面上——桌面越来越满,找东西越来越慢,而且桌面一清空,什么都没了。

二、短期记忆和长期记忆各是什么


人的记忆有短期和长期之分,Agent 的记忆系统也是一样的。

短期记忆:当前任务的工作信息

短期记忆管理的是"这一次任务中需要用到的信息"。

典型内容包括:

  • 当前对话历史

    :用户说了什么,Agent 回答了什么

  • 工具调用结果

    :刚刚查了什么、搜了什么、读了什么文件

  • 中间推理步骤

    :Agent 目前的判断、分析、计划

  • 临时工作变量

    :比如计算中间值、待处理的任务列表

短期记忆的特点是:生命周期短,和当前任务强绑定,任务结束后大部分会被丢弃。

在工程上,短期记忆通常就是对话上下文本身,或者用一些管理策略来优化:

  • Buffer 策略

    :保留最近 N 轮对话

  • Summary 策略

    :对早期对话做摘要压缩

  • Sliding Window

    :窗口滑动,只保留窗口内的内容

长期记忆:跨会话持久化的知识

长期记忆管理的是"跨越多次任务、多个会话都需要复用的信息"。

典型内容包括:

  • 用户偏好和习惯

    :比如"这个用户喜欢用中文"、“偏好简洁回答”

  • 历史决策记录

    :比如"上次选了方案 A,效果不好"

  • 过往任务总结

    :比如"用户上周让我帮他写了一份项目计划"

  • 领域知识积累

    :比如"这个项目的技术栈是 Python + FastAPI"

长期记忆的特点是:生命周期长,独立于单次对话,需要持久化存储。

在工程上,长期记忆需要外部存储支持:

  • 向量数据库

    :用于语义检索(Pinecone、Chroma、Milvus 等)

  • 关系数据库

    :用于结构化查询(比如查某个用户的偏好设置)

  • 文件系统

    :用于存储文档、笔记、日志

两者的关系

短期记忆和长期记忆不是孤立的,而是有转化关系:

  • 短期 → 长期

    :任务结束后,把重要信息提炼出来存入长期记忆

  • 长期 → 短期

    :新任务开始时,根据当前需求从长期记忆中检索相关信息

在这里插入图片描述

三、记忆系统在 Agent 架构中的位置


很多人做 Agent 时只关注"模型怎么调"、“工具怎么接”、“Prompt 怎么写”,但忘了记忆在架构中的位置。

记忆系统不是一个可有可无的附加模块,它嵌在 Agent 的核心链路里,影响每一次推理的质量。

看这张架构图:

记忆系统做了两件事:

  1. 检索

    (在推理前):根据当前任务,从记忆存储中找出相关信息,塞进上下文

  2. 写入

    (在推理后):把本次推理中产生的重要信息,持久化到记忆存储

这两步构成了一个闭环。

如果只有检索没有写入,记忆库永远是空的。
如果只有写入没有检索,存了也白存。

四、用一个真实场景,看看记忆到底怎么工作


场景:一个客服 Agent,用户连续咨询了两次。

第一次会话

用户:我买的那个蓝牙耳机,左耳没声音了。
Agent:您好,请问是哪款型号?
用户:就是上周在你们店买的 SoundMax Pro。
Agent:好的,SoundMax Pro 左耳无声,建议您先长按左耳 10 秒重置。如果还是不行,可以申请换货。
用户:好,我先试试重置。

会话结束后,记忆系统做了什么?

记忆管理器提炼关键信息,写入长期记忆:

用户购买了 SoundMax Pro 蓝牙耳机 问题:左耳无声 建议:长按 10 秒重置 用户表示会先试试 状态:待跟进

第二次会话(三天后)

用户:上次那个耳机的问题,重置了还是不行。

如果没有记忆系统,Agent 会问:

“请问您是哪款耳机?什么问题?”

用户已经说过一遍了,再问一遍会很烦。

如果有记忆系统,Agent 在收到消息时:

  1. 记忆管理器检索到上次会话的摘要
  2. 把"SoundMax Pro / 左耳无声 / 已尝试重置 / 未解决"注入上下文
  3. 模型看到完整背景后直接回答:

“SoundMax Pro 左耳无声的问题,您已经试过重置但没有效果,我帮您直接发起换货申请,您看可以吗?”

这就是记忆的价值:Agent 不用重新问,用户不用重新说,体验质的飞跃。

五、没有记忆的 Agent,会遇到哪些真实问题


这不是理论推演,是每个做过 Agent 的人都会遇到的坑。

问题 1:多轮对话信息丢失

对话轮次一多,上下文窗口塞不下了,最早的消息被裁掉。

Agent 就像一个只能看最近 5 页的人——前面的需求、条件、决策,全忘了。

问题 2:跨会话完全失忆

每次新会话,Agent 都是一张白纸。用户上次说过的偏好、做过的选择、确认过的方案,全部重来。

对用户来说,这就像每次打电话客服都要重新报一遍身份信息。

问题 3:Token 浪费严重

没有记忆管理,唯一的"记忆方式"就是把所有历史信息都塞进上下文。

30 轮对话 × 每轮几百 token = 上下文直接爆,成本指数增长,但大部分信息其实是冗余的。

问题 4:无法积累经验

Agent 犯了错误,下次还会犯。
Agent 做过一次正确决策,下次还是要重新推理。

因为它不记得自己之前的经历。

问题 5:无法做个性化

不记得用户是谁、喜欢什么格式、上次选了什么方案、讨厌什么风格。

没有记忆的"个性化 Agent",就是每次见面都自我介绍的社恐。

痛点速查表

问题 根因 影响
多轮忘事 上下文窗口有限 回答不连贯
跨会话失忆 没有持久化存储 用户体验差
Token 浪费 没有信息压缩 成本不可控
不积累经验 没有记忆写入 效率无法提升
无法个性化 没有用户画像 千人一面

六、一个最小可用的记忆系统需要什么


你不需要一上来就搞复杂的向量数据库和知识图谱。

一个最小可用的记忆系统,只需要 5 个组件:

组件 1:对话缓存(Chat Buffer)

保存最近 N 轮对话,确保短期内的连贯性。

`class ChatBuffer:
def init(self, max_turns=20):
self.max_turns = max_turns
self.messages = []

def add(self, role, content):  
    self.messages.append({"role": role, "content": content})  
    if len(self.messages) > self.max_turns * 2:  
        self.messages = self.messages[-self.max_turns * 2:]  
  
def get_recent(self):  
    return self.messages`

组件 2:摘要模块(Summarizer)

当对话太长时,把早期内容压缩成摘要,节省 Token。

`class ConversationSummarizer:
def init(self, llm_client):
self.llm = llm_client

def summarize(self, messages):  
    prompt = f"""请将以下对话历史压缩成一段简洁的摘要,  

保留关键信息(用户需求、已做决策、重要结论):

{messages}“”"
return self.llm.generate(prompt)`

组件 3:记忆存储(Memory Store)

持久化保存重要信息,支持检索。最简单的实现可以用文件或 SQLite。

`import json
from datetime import datetime

class SimpleMemoryStore:
def init(self, storage_path=“memory.json”):
self.path = storage_path
self.memories = self._load()

def save(self, key, content, metadata=None):  
    self.memories[key] = {  
        "content": content,  
        "metadata": metadata or {},  
        "timestamp": datetime.now().isoformat()  
    }  
    self._persist()  
  
def search(self, query, top_k=5):  
    # 最简版本:关键词匹配  
    # 进阶版本:向量语义检索  
    results = []  
    for key, mem in self.memories.items():  
        if query.lower() in mem["content"].lower():  
            results.append(mem)  
    return results[:top_k]`

组件 4:记忆管理器(Memory Manager)

串联以上组件,决定什么时候检索、什么时候写入。

`class MemoryManager:
def init(self, buffer, summarizer, store):
self.buffer = buffer
self.summarizer = summarizer
self.store = store

def before_inference(self, user_input):  
    """推理前:检索相关记忆"""  
    relevant = self.store.search(user_input)  
    context = "\n".join([m["content"] for m in relevant])  
    return context  
  
def after_inference(self, user_input, agent_output):  
    """推理后:更新缓存,判断是否写入长期记忆"""  
    self.buffer.add("user", user_input)  
    self.buffer.add("assistant", agent_output)  
      
    # 判断是否需要持久化(简单策略:每 10 轮做一次摘要)  
    if len(self.buffer.messages) >= 20:  
        summary = self.summarizer.summarize(  
            self.buffer.messages[:10]  
        )  
        self.store.save(  
            key=f"session_{datetime.now().isoformat()}",  
            content=summary  
        )  
        self.buffer.messages = self.buffer.messages[10:]`

组件 5:完整串联

`class AgentWithMemory:
def init(self, llm, tools, memory_manager):
self.llm = llm
self.tools = tools
self.memory = memory_manager

def run(self, user_input):  
    # 1. 检索相关记忆  
    memory_context = self.memory.before_inference(user_input)  
      
    # 2. 组装上下文  
    messages = [  
        {"role": "system", "content": SYSTEM_PROMPT},  
        {"role": "system", "content": f"相关记忆:\n{memory_context}"},  
        *self.memory.buffer.get_recent(),  
        {"role": "user", "content": user_input}  
    ]  
      
    # 3. 模型推理(含工具调用循环)  
    response = self.llm.chat(messages, tools=self.tools)  
      
    # 4. 更新记忆  
    self.memory.after_inference(user_input, response)  
      
    return response`

这五个组件加在一起,你的 Agent 就具备了基本的记忆能力:

  • 短期内能保持对话连贯
  • 长对话能自动压缩
  • 重要信息能持久化
  • 新会话能检索历史

七、记忆设计的常见误区


误区 1:什么都往记忆里存

记忆不是垃圾桶。如果什么都存,检索出来的全是噪声。

正确做法:只存有价值的信息——用户偏好、关键决策、任务结论。日常寒暄不需要存。

误区 2:只存不清理

记忆越积越多,过期信息和冗余信息会严重影响检索质量。

正确做法:设计清理策略——过期淘汰、重要性衰减、定期合并。

误区 3:把所有历史都塞进上下文

“既然记忆很重要,那我就把所有记忆都放进去。”——这会导致上下文爆炸、Token 浪费、推理质量下降。

正确做法:只检索和当前任务相关的记忆,不要全量注入。

误区 4:只有短期没有长期

只做了对话缓存,没有持久化存储。一关程序,什么都没了。

正确做法:起码有一个最简单的持久化层,哪怕是写文件。

误区 5:以为大窗口可以替代记忆

“我用 200K 上下文的模型,不需要记忆。”

200K token 大约是 15 万字。听起来很多,但如果你的 Agent 运行几天,几十轮对话加上工具调用结果,很快就不够了。

而且,窗口越大,推理成本越高,速度越慢。

正确做法:大窗口解决的是"短期能看多少",记忆系统解决的是"长期能记多少"。两者互补,不能替代。

误区速查表

误区 后果 正确做法
什么都存 检索噪声大 只存关键信息
只存不清理 质量衰减 设计淘汰策略
全量注入 Token 爆炸 按需检索
只有短期 无法跨会话 加持久化层
靠大窗口 成本高、速度慢 记忆 + 窗口互补

普通人如何抓住AI大模型的风口?

领取方式在文末

为什么要学习大模型?

目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
在这里插入图片描述

随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
在这里插入图片描述

人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!

最后

只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!

在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
在这里插入图片描述

大模型全套学习资料展示

自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

图片

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!

01 教学内容

在这里插入图片描述

  • 从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!

  • 大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

02适学人群

应届毕业生‌: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

image.png

vx扫描下方二维码即可
【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
在这里插入图片描述

本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!

03 入门到进阶学习路线图

大模型学习路线图,整体分为5个大的阶段:
图片

04 视频和书籍PDF合集

图片

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

图片

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
图片

05 行业报告+白皮书合集

收集70+报告与白皮书,了解行业最新动态!
图片

06 90+份面试题/经验

AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)图片
在这里插入图片描述

07 deepseek部署包+技巧大全

在这里插入图片描述

由于篇幅有限

只展示部分资料

并且还在持续更新中…

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐