logo

记忆系统设计 (Memory Systems)

人类的智能很大程度上源于记忆。为 Agent 设计一套优秀的记忆系统,是让它从“复读机”变成“老伙计”的关键。

[PROMPT_LAB_BANNER]


1. 记忆的分类

在 Agent 架构中,记忆通常对标人类的记忆模型:

类型对应技术作用持续时间
感官记忆原始 Input (Text/Image)暂存输入毫秒级
短期记忆Context Window维持当前对话连贯性分钟/小时级
长期记忆Vector DB / Graph DB存储知识、经验、用户偏好永久

2. 短期记忆管理 (Context Management)

虽然 Gemini 1.5 Pro 有 1M+ 的上下文,但无限堆砌 Context 会导致:

  1. 成本爆炸
  2. 推理变慢
  3. 迷失中间 (Lost in the Middle):模型容易忽略长文中段的信息。

策略 A:滑动窗口 (Sliding Window)

只保留最近的 N 轮对话。

  • 优点:简单,Token 稳定。
  • 缺点:容易丢失早期的关键指令(如“我的名字叫 Lightman”)。

策略 B:自动摘要 (Conversation Summary)

在对话达到一定长度后,触发一个后台 Agent,将前文总结为一段摘要。

System: 上文摘要:用户想写一个 Python 爬虫,已经安装了 requests 库,现在遇到了 403 错误。


3. 长期记忆:RAG 与向量数据库

当 Agent 需要记住“上周会议的结论”或“公司的请假制度”时,必须使用长期记忆。

基础 RAG (Retrieval-Augmented Generation)

  1. Chunking:将文档切分为小块。
  2. Embedding:使用 Embedding 模型(如 text-embedding-3-small)转化为向量。
  3. Storage:存入 Pinecone/ChromaDB。
  4. Retrieval:用户提问时,搜索最相似的 K 个块注入 Context。

单纯的向量检索(语义相似)有时不准(如搜索专有名词)。 最佳实践 = 向量检索 (Semantic) + 关键词检索 (BM25) + 重排序 (Rerank)。


4. 结构化记忆 (Entity Memory)

有些信息不适合变成向量(模糊的),而需要精确存储。比如用户的 Profile。

Entity Memory 会实时从对话中提取实体,维护一个 JSON 对象:

{
  "user_id": "123",
  "preferences": {
    "language": "zh-CN",
    "coding_style": "TypeScript",
    "theme": "Dark"
  },
  "facts": [
    "住在墨尔本",
    "有一只叫旺财的狗"
  ]
}

每当用户提到新信息,Agent 调用 update_profile 工具更新这个 JSON。下次对话前,先读取这个 JSON。


5. 记忆的遗忘与整理

像人类一样,Agent 的记忆也需要整理。

  • 重要性评分:不是所有对话都值得存入长期记忆。可以根据信息熵或用户情绪打分,低分直接丢弃。
  • 记忆合并:定期(如每天凌晨)运行一个 Job,将碎片化的记忆合并为高层概念。

小结

设计 Agent 记忆的黄金法则:

  1. 短期记忆靠 Summarization 压缩。
  2. 长期知识靠 RAG 检索。
  3. 用户画像靠结构化 JSON 存储。
  4. 不要相信无限 Context,精简的上下文永远是高质量推理的前提。
AI Agent 开发实战手册
AI Engineer

AI Agent 开发实战手册

从 0 到 1 掌握 AI Agent 开发:涵盖自主计划、工具调用、MCP 协议与多智能体编排实战。

AI Agent 开发实战手册记忆系统设计

记忆系统设计 (Memory Systems)

人类的智能很大程度上源于记忆。为 Agent 设计一套优秀的记忆系统,是让它从“复读机”变成“老伙计”的关键。

Prompt Lab

把这章的知识,直接变成实战能力

进入交互式实验室,用真实任务练 Prompt,10 分钟快速上手。

进入 Prompt Lab →

#1. 记忆的分类

在 Agent 架构中,记忆通常对标人类的记忆模型:

类型对应技术作用持续时间
感官记忆原始 Input (Text/Image)暂存输入毫秒级
短期记忆Context Window维持当前对话连贯性分钟/小时级
长期记忆Vector DB / Graph DB存储知识、经验、用户偏好永久

#2. 短期记忆管理 (Context Management)

虽然 Gemini 1.5 Pro 有 1M+ 的上下文,但无限堆砌 Context 会导致:

  1. 成本爆炸
  2. 推理变慢
  3. 迷失中间 (Lost in the Middle):模型容易忽略长文中段的信息。

#策略 A:滑动窗口 (Sliding Window)

只保留最近的 N 轮对话。

  • 优点:简单,Token 稳定。
  • 缺点:容易丢失早期的关键指令(如“我的名字叫 Lightman”)。

#策略 B:自动摘要 (Conversation Summary)

在对话达到一定长度后,触发一个后台 Agent,将前文总结为一段摘要。

System: 上文摘要:用户想写一个 Python 爬虫,已经安装了 requests 库,现在遇到了 403 错误。


#3. 长期记忆:RAG 与向量数据库

当 Agent 需要记住“上周会议的结论”或“公司的请假制度”时,必须使用长期记忆。

#基础 RAG (Retrieval-Augmented Generation)

  1. Chunking:将文档切分为小块。
  2. Embedding:使用 Embedding 模型(如 text-embedding-3-small)转化为向量。
  3. Storage:存入 Pinecone/ChromaDB。
  4. Retrieval:用户提问时,搜索最相似的 K 个块注入 Context。

单纯的向量检索(语义相似)有时不准(如搜索专有名词)。 最佳实践 = 向量检索 (Semantic) + 关键词检索 (BM25) + 重排序 (Rerank)。


#4. 结构化记忆 (Entity Memory)

有些信息不适合变成向量(模糊的),而需要精确存储。比如用户的 Profile。

Entity Memory 会实时从对话中提取实体,维护一个 JSON 对象:

json
{ "user_id": "123", "preferences": { "language": "zh-CN", "coding_style": "TypeScript", "theme": "Dark" }, "facts": [ "住在墨尔本", "有一只叫旺财的狗" ] }

每当用户提到新信息,Agent 调用 update_profile 工具更新这个 JSON。下次对话前,先读取这个 JSON。


#5. 记忆的遗忘与整理

像人类一样,Agent 的记忆也需要整理。

  • 重要性评分:不是所有对话都值得存入长期记忆。可以根据信息熵或用户情绪打分,低分直接丢弃。
  • 记忆合并:定期(如每天凌晨)运行一个 Job,将碎片化的记忆合并为高层概念。

#小结

设计 Agent 记忆的黄金法则:

  1. 短期记忆靠 Summarization 压缩。
  2. 长期知识靠 RAG 检索。
  3. 用户画像靠结构化 JSON 存储。
  4. 不要相信无限 Context,精简的上下文永远是高质量推理的前提。

常见问题

开发 AI Agent 需要掌握哪些编程语言?
首选 Python 或 TypeScript。Python 是 AI 生态的基石,而 TypeScript 在开发 MCP Server 和网页端交互时效率极高。借助 Cursor 等 AI 原生编辑器,编程门槛已大幅降低。
MCP 协议目前支持哪些模型?
MCP 是开放协议,目前对 Claude 3.5 系列支持最完美。通过 MCP Proxy,GPT-4o 和 Gemini 也可以间接访问 MCP Server 数据源。
AI Agent 会导致程序员失业吗?
不会,但会改变程序员的工作内容。未来的开发者将从“写代码”转向“管理 Agent 团队”,重点在于系统架构设计、复杂逻辑校验和 Agent 的提示词优化。