Agent记忆系统设计:短期记忆与长期沉淀

Agent记忆系统设计:短期记忆与长期沉淀

作者: AI系统架构实践者
发布时间: 2026-05-26
分类: 人工智能 · 系统设计 · 记忆机制
标签: AI Agent, Memory系统, RAG, 知识管理


一、没有记忆的Agent是金鱼

想象一下:你和一个朋友聊天,每说一句话,他就忘了之前说过什么。你得不断重复背景信息,对话根本无法深入。

这就是没有记忆系统的Agent。

记忆对Agent的意义:

  • 连续性:多轮对话保持上下文
  • 个性化:记住用户偏好,提供定制化服务
  • 经验积累:从过去任务中学习,越用越聪明

二、记忆的分层架构

我设计了一个三层记忆模型:

复制代码
┌─────────────────────────────────────┐
│         工作记忆 (Working Memory)      │  ← 当前任务上下文
│    最近对话 + 任务状态 + 临时变量       │    容量小,访问快
├─────────────────────────────────────┤
│         短期记忆 (Short-term Memory)   │  ← 会话级记忆
│      当前会话历史 + 用户本次偏好        │    会话结束可归档
├─────────────────────────────────────┤
│         长期记忆 (Long-term Memory)    │  ← 持久化知识
│    用户画像 + 经验总结 + 领域知识        │    跨会话可用
└─────────────────────────────────────┘

三、工作记忆:当前任务的"草稿纸"

作用

  • 存放当前任务的关键信息
  • 作为推理过程的临时工作区
  • 供工具调用时读取参数

实现方式

方案A:直接放在提示词上下文

复制代码
current_context = """
【当前任务】
生成一份Python入门教程

【已确认信息】
- 目标读者:编程零基础的小白
- 篇幅要求:3000字左右
- 待确认:需要包含实践项目吗?
"""

messages = [
    {"role": "system", "content": agent_persona},
    {"role": "user", "content": current_context + user_input}
]

方案B:结构化存储

复制代码
working_memory = {
    "task": "生成Python入门教程",
    "confirmed": {
        "audience": "编程零基础",
        "length": "3000字"
    },
    "pending": ["是否需要实践项目"],
    "temp_data": {
        "outline": "已完成,待审核",
        "current_section": "第2章"
    }
}

最佳实践

  • 保持精简,只放当前任务相关
  • 定期清理已完成的信息
  • 关键决策点要显式记录

四、短期记忆:会话的"行车记录仪"

作用

  • 记录完整对话历史
  • 支持多轮引用和追问
  • 会话结束后可提炼为长期记忆

实现方式

滑动窗口策略

只保留最近的N轮对话,避免上下文过长:

复制代码
MAX_HISTORY = 10

def get_context(history):
    # 保留最近10轮
    recent = history[-MAX_HISTORY:]
    
    # 更早的对话做摘要
    if len(history) > MAX_HISTORY:
        older = history[:-MAX_HISTORY]
        summary = generate_summary(older)
        return [summary] + recent
    
    return recent

摘要压缩策略

当历史太长时,生成摘要替代原始对话:

复制代码
原始对话(10轮)→ 摘要:"用户想学习Python,已确认零基础、3000字篇幅,正在讨论是否需要实践项目"

最佳实践

  • 重要信息要及时"确认"并记录
  • 定期做摘要压缩,释放上下文空间
  • 区分"事实"和"临时讨论",只保留事实

五、长期记忆:Agent的"知识库"

作用

  • 跨会话记住用户信息
  • 积累任务经验和最佳实践
  • 存储领域知识,提升专业能力

存储方案对比

方案 优点 缺点 适用场景
向量数据库 语义检索,模糊匹配 构建成本高 大规模知识库
关系数据库 结构清晰,精确查询 需要预定义schema 结构化信息(用户画像)
文件系统 简单直接,版本可控 检索效率低 小规模、开发阶段
图数据库 关系表达强 学习成本高 复杂关系网络

我的混合方案

复制代码
用户画像 → 关系数据库(SQLite/PostgreSQL)
  ├─ 用户ID、偏好设置、常用指令
  
经验知识 → 向量数据库(Chroma/Pinecone)
  ├─ 成功案例分析
  ├─ 失败教训总结
  └─ 领域知识文档

原始记录 → 文件系统(Markdown/JSON)
  └─ 完整会话日志,供回溯

六、长期记忆的更新机制

问题:记忆不是越多越好,垃圾记忆会污染系统。

筛选策略

不是所有信息都值得长期保存:

复制代码
def should_remember(event):
    # 只保留高价值信息
    if event["type"] == "user_preference":
        return True  # 用户偏好很重要
    
    if event["type"] == "task_result":
        if event["success"] and event["novelty"] > 0.7:
            return True  # 成功的创新解法值得记
        if not event["success"] and event["lesson"]:
            return True  # 失败的教训也值得记
    
    return False

定期整理

设置定时任务,定期整理记忆:

复制代码
# 每周运行一次
def weekly_memory_maintenance():
    # 1. 去重:合并相似的记忆
    merge_similar_memories()
    
    # 2. 遗忘:删除低价值、过时的记忆
    purge_outdated_memories()
    
    # 3. 总结:提炼本周的经验模式
    generate_weekly_insights()

七、RAG:记忆的"搜索引擎"

对于大规模长期记忆,直接塞给模型不现实。用RAG(检索增强生成)按需获取:

复制代码
用户提问
    ↓
向量化用户问题 → 在记忆库中检索相关片段
    ↓
将检索结果 + 用户问题一起传给模型
    ↓
模型生成回复

关键优化点

  1. 分块策略:长文档怎么切分?按段落、按主题、还是固定长度?
  2. 召回质量:检索到的内容真的相关吗?需要调优embedding模型
  3. 去重合并:检索到多个相似片段,怎么合并避免重复?

八、踩坑记录

坑1:记忆污染

早期我把所有对话都存进长期记忆,结果系统越来越"糊涂",经常引用不相关的旧信息。

解决:建立准入门槛,只有经过筛选的高价值信息才能进长期记忆。

坑2:记忆冲突

用户上周说"我喜欢简洁风格",这周说"请详细一点"。两个偏好都存着,Agent不知道该听谁的。

解决:给记忆加时间戳和置信度,优先用最新的、高置信度的记忆。

坑3:向量检索语义漂移

"苹果"在水果语境和科技公司语境下,向量表示可能相似,但实际含义完全不同。

解决:检索时加入上下文过滤,或用metadata标记领域。


九、小结

  • 记忆分三层:工作记忆、短期记忆、长期记忆
  • 工作记忆要精简,短期记忆要做摘要压缩
  • 长期记忆要筛选,不是越多越好
  • RAG让大规模记忆可用,但需要优化检索质量
  • 定期整理记忆,避免污染和冲突
相关推荐
摩尔线程8 小时前
喜报|摩尔线程MTT S5000(PH100芯片)通过国家《安全可靠测评》
人工智能·摩尔线程
Ricky05538 小时前
RF-DETR:实时检测变换器(transformers)的神经架构搜索(美国2025.12研究)
图像处理·人工智能·算法
HZZSDSCYZ8 小时前
2026年杭州电商新趋势:专业公司如何引领未来市场
大数据·人工智能·python
心疼你的一切8 小时前
Llama.Cpp 本地大模型极速部署与调用指南
人工智能·ai·aigc·llama
程序员cxuan8 小时前
还在用 xigh 拉满跑?大错特错
人工智能·后端·程序员
完成大叔9 小时前
模块二,Agent的推理模式是什么
人工智能
猫先生Mr.Mao9 小时前
一文梳理主流 LLM 架构技术演进
人工智能·架构·大模型·llm·transformer
土星云SaturnCloud9 小时前
基于 YOLOv8 + ByteTrack 的冷库叉车智能出入库监管系统设计
人工智能·ai·边缘计算
w1wi9 小时前
【AI应用】利用AI生成优雅且可编辑PPT
人工智能·powerpoint·agi
YueJoy.AI9 小时前
AI应用的容器化部署:从Docker到Kubernetes
人工智能·ai·语言模型