首页Home 产品Products 服务Services 案例Work 知识库Blog 关于About 联系Contact
KNOWLEDGE · 2026-09

AI Agent 记忆系统实战:三层架构与落地实现

Agent memory systems: a three-tier architecture for lasting context

#AI Agent #记忆系统 #向量检索 #工程实践

背景

大多数 Agent 跑不起来的原因不是模型不够强,而是没有记忆:每次对话都从空白开始,用户上轮说过的偏好、项目里已确认的决策、查过的资料,全部丢失。结果就是重复提问、重复犯同样的错、任务一长就前后矛盾。本文给出可直接落地的三层记忆架构,以及不需要重型基础设施的文件系统实现方案。

三层记忆架构

参考人类认知的分工,Agent 记忆拆成三层,每层解决一类问题,各自的读写频率和存储介质完全不同:

短期工作区:会话即记忆

短期工作区就是当前会话的上下文窗口。它负责:当前任务的步骤衔接、上一条工具调用的输出、用户刚做的修正。这一层不需要持久化设计,交给 LLM 的上下文窗口即可,但要养成两个习惯:一是在关键节点把结论「落盘」到长期记忆,二是用显式的状态摘要压缩上下文,避免窗口被历史对话占满。

长期记忆:事实与偏好

长期记忆存放跨会话稳定的事实:用户的称呼与语言偏好、项目的技术栈与目录结构、已经拍板的架构决策、常用命令的别名。这层的特征是「写入少、读取多、更新慢」,适合用结构化的纯文本或 JSON 文件存储,每条记录带时间戳和来源,方便回溯与修正。

任务工作记忆:可回滚的状态

任务工作记忆介于两者之间:它是某个正在进行的任务的进行时状态。典型内容是「已完成步骤列表」「待办清单」「遇到的坑」。它必须可回滚——任务中断后重启,Agent 读回这份状态就能从断点继续,而不是从头再来。落地形式是一个简单的任务清单文件,每完成一步就更新一次。

落地:先用文件系统,再谈向量库

很多团队一上来就上向量数据库,其实 80% 的记忆需求用文件系统就能满足,而且可读、可审计、可手工修正。只有到了「需要按语义模糊召回」的阶段,才值得引入向量检索。

磁盘即记忆的目录设计

  • memories/facts/:长期事实,每主题一个 .md 文件,如 user-profile.md、project-decisions.md
  • memories/tasks/:任务工作记忆,每任务一个 .md,文件名即任务 ID
  • memories/refs/:沉淀下来的参考资料、代码片段、命令备忘
  • 每条记录固定格式:时间戳 + 来源(哪次会话/哪个工具)+ 内容,便于追溯与去重

何时引入向量检索

当长期记忆超过几百条、且「精确匹配文件名」已经找不到需要的内容时,再考虑向量化:给 memories/refs/ 里的条目生成嵌入,检索时做 Top-K 召回再交给模型重排。务必备份原始文本文件——向量库只是索引,文本才是真相。日常单 Agent 或小团队场景,文件系统 + grep 级检索通常已经够用。

写入去重与更新策略

  • 写入前先查:同一主题文件里是否已有等价记录,有则合并更新而非追加
  • 事实冲突时以「带证据的最新记录」为准,并保留旧记录的历史版本
  • 临时性信息(一次性的路径、一次性口令)不进长期记忆,避免污染
  • 定期压缩:把细节折叠成要点,控制每个主题文件在几十行以内

实战检查清单

  • 会话开始时:先读长期记忆中的用户画像与项目决策,再开始干活
  • 每个里程碑完成时:把结论写入任务工作记忆,关键事实提升到长期记忆
  • 任务中断重启时:能从工作记忆恢复断点,并向用户说明当前进度
  • 记忆修正路径:用户说「记住/以后别这样」时,能即时写入并返回确认
  • 全链路可审计:任何一条记忆都能追溯到来源会话与写入时间

常见坑

  • 把整个历史对话原样倒进记忆——噪音大于信号,检索质量急剧下降
  • 记忆只写不读:Agent 从不主动加载,库再大也是死数据
  • 不做去重:同一事实写了几十条,后期合并成本极高
  • 依赖外部记忆服务却不同步备份,服务一挂全部失忆

小结

记忆不是模型参数的附属品,而是工程产物。先分层、后落地:短期靠上下文,长期靠文本文件,跨任务靠工作记忆文件;向量检索只在语义召回成为瓶颈时引入。按这个顺序做,最小的改动就能让 Agent 从「每次重新认识你」进化到「记得住、接得上、能复盘」。

记忆不是模型的参数,而是工程的产物:先分层、再落地, 让 Agent 从「每次重新认识你」进化到「记得住、接得上、能复盘」。