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 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 的提示词优化。