深夜提醒

现在是深夜,建议您注意休息,不要熬夜哦~

🏮 🏮 🏮

新年快乐

祝君万事如意心想事成!

share-image
ESC

构建有记忆的AI Agent:三层记忆模型的设计与实现

引言:为什么AI Agent需要记忆?

在使用 ChatGPT、Claude 等大语言模型时,你是否遇到过这样的困扰:每次开启新对话,AI 都像是”失忆”了一样,完全不记得你们之前的交流内容。你不得不一遍遍地重复自己的背景、偏好和需求。这种”金鱼记忆”严重限制了 AI 成为真正的个人助手。

为了让 AI Agent 能够像人类一样持续学习和成长,我设计并实现了一套三层记忆模型。这套系统灵感来源于认知科学中的人类记忆机制,让 AI 能够记住用户的身份信息、偏好设置、重要事实,甚至是跨会话的长期知识。
构建有记忆的AI Agent:三层记忆模型的设计与实现

三层记忆架构:模仿人类认知

人类的记忆系统分为工作记忆(短期保持信息)、短期记忆(近期事件)和长期记忆(持久知识)。借鉴这一理念,我结合openclaw的设计复现了 AI 记忆系统包含以下三层:
clip_1775255744490_ggbjnt.png

第一层:工作记忆(Working Memory)

工作记忆是 AI 的”临时工作台”,存储当前对话会话中的完整上下文。它就像人类的意识焦点,让 AI 能够理解和回应用户当前的输入。

核心特性:

  • 完整对话记录:保存当前会话中所有的用户输入和 AI 回复
  • Token 限制管理:监控上下文长度,避免超出模型处理极限
  • 实时访问:AI 可以立即获取当前会话的所有信息

实现代码示例:

@dataclass
class WorkingMemory:
messages: List[Dict[str, Any]] = field(default_factory=list)
context_window: int = 4000 # Token 限制提示

def add_message(self, role: str, content: str, metadata: Dict = None):
"""添加消息到工作记忆"""
self.messages.append({
"role": role,
"content": content,
"timestamp": datetime.now().isoformat(),
"metadata": metadata or {}
})

第二层:短期记忆(Short-term Memory)

当工作记忆变得过于庞大时,短期记忆发挥作用。它会将旧的对话压缩成摘要,提取关键要点,让 AI 在不丢失重要信息的前提下,高效处理长对话。

核心特性:

  • 对话摘要:将冗长的对话压缩成精炼的总结
  • 关键要点提取:识别并保存对话中的重要信息点
  • 用户意图追踪:记录用户在会话中的主要目标和需求

应用场景:当你与 AI 进行了 50 轮深入的技术讨论后,AI 仍然能够准确回顾你们讨论的核心问题,而不需要重新阅读全部对话。

第三层:长期记忆(Long-term Memory)

长期记忆是这套系统的精髓。它允许 AI 跨会话记住用户的信息,形成持久的用户画像。这是让 AI 从”工具”转变为”伙伴”的关键。

我设计了七种记忆类别:

类别 图标 说明 示例
identity 👤 身份信息 “用户叫阿文,是一名软件工程师”
preference 偏好设置 “用户喜欢简洁的回答”
fact 📌 重要事实 “用户正在开发一个 AI Agent 项目”
lesson 📚 经验教训 “上次用 Python 3.9 遇到了兼容性问题”
goal 🎯 目标计划 “用户计划在三个月内上线产品”
relationship 👥 关系信息 “用户的团队成员有小明、小红”
instruction 📜 指令要求 “请总是用中文回复”

当AI学习了在去问就会基于历史的会话来回答记忆中的内容

clip_1775255941004_5rkzda.png

clip_1775256057217_eih517.png

智能记忆提取:自动识别重要信息

最酷的功能是自动记忆提取。系统会分析每一轮对话,自动识别值得记住的信息,无需用户显式告知。

支持的自然语言模式

1. 主动记忆请求

用户:请记住我的邮箱是 awen@example.com
用户:记住,我讨厌太长的回复

2. 身份信息识别

用户:我叫阿文,是一名全栈工程师
用户:我在杭州工作

3. 偏好信息提取

用户:我喜欢简洁明了的回答
用户:我不喜欢用第三方库

4. 指令要求捕获

用户:你应该总是先给出代码示例
用户:请不要使用专业术语

实现原理:使用正则表达式模式匹配 + LLM 分析,从对话中智能提取结构化记忆。

记忆注入:让 AI 拥有上下文感知

提取的记忆如何影响 AI 的回复?答案是记忆注入。在每次对话开始前,系统会自动将相关记忆注入到系统提示(System Prompt)中:

==================================================
【关于用户的记忆】
用户名称: 阿文
用户特点: 软件工程师、全栈开发
沟通风格: 简洁直接

👤 身份信息:
• 用户姓名: 阿文
• 用户身份: 全栈工程师

⭐ 偏好设置:
• 用户喜欢: 简洁明了的回答
• 用户不喜欢: 太长的回复

📌 重要事实:
• 用户正在开发 LangGraph Agent
• 用户使用 Python 3.11
==================================================

请根据以上记忆信息,更好地理解和帮助用户。

这样,AI 在每次回复时都能考虑到用户的背景和偏好,真正做到个性化服务。

技术实现:Markdown 存储 + 优先级管理

Markdown 格式存储

长期记忆采用 Markdown 文件存储,便于人工查看和编辑:

# ⭐ 偏好设置

## 2026-04-03 14:30 | 重要性: ⭐⭐⭐

用户喜欢简洁明了的回答,不喜欢冗长的解释

> 来源: session_a1b2c3d4

---

## 2026-04-02 09:15 | 重要性: ⭐⭐⭐⭐

用户偏好使用 Python 进行开发,不喜欢 JavaScript

> 来源: session_e5f6g7h8

---

记忆优先级

不是所有记忆都同等重要。系统为每条记忆设置 1-5 级重要性:

  • ⭐⭐⭐⭐⭐ 身份信息(最高优先级)
  • ⭐⭐⭐⭐ 指令要求
  • ⭐⭐⭐ 重要事实、偏好设置
  • ⭐⭐ 经验教训
  • ⭐ 临时信息

在记忆注入时,系统会优先加载高优先级的记忆,确保在有限的上下文窗口中保留最关键的信息。

应用场景:一个真实的对话示例

让我演示这套记忆系统的实际效果:

第一次对话(新用户)

用户:你好,我叫阿文,是一名软件工程师
AI:你好阿文!很高兴认识你。有什么我可以帮助你的吗?

[系统自动提取记忆:用户姓名=阿文,身份=软件工程师]

第二次对话(跨会话)

用户:帮我看看这段代码有什么问题
AI:好的,阿文。作为软件工程师,你应该对代码质量有较高要求。
让我帮你分析一下...

[AI 自动调用了用户的姓名和身份]

第三次对话(更深层的个性化)

用户:我想学习 LangGraph
AI:阿文,考虑到你是软件工程师,我推荐你从 LangGraph 的核心概念开始:
StateGraph、节点(Nodes)和边(Edges)。
需要我提供一个完整的示例项目吗?

[AI 结合用户身份给出了针对性的建议]

与其他技术的结合

与 LangGraph 的集成

def run_agent(user_input: str, thread_id: str = "default", user_id: str = None):
# 1. 添加到工作记忆
memory_store.add_to_working_memory(thread_id, "user", user_input)

# 2. 注入长期记忆到系统提示
memory_context = memory_store.get_system_prompt_with_memory(user_id)
messages = [SystemMessage(content=memory_context)]
messages.append(HumanMessage(content=user_input))

# 3. 执行对话
result = graph.invoke({"messages": messages}, config=config)

# 4. 提取新的长期记忆
memory_store.extract_memories_from_dialogue(user_id, session_id, user_input, ai_msg)

return result

与 MCP 服务的协同

记忆系统与 MCP(Model Context Protocol)服务无缝协作。当 AI 调用外部工具时,记忆上下文会被一同传递,确保工具调用也能享受个性化服务。

未来展望

这套记忆系统还有很大的进化空间:

  1. 记忆向量化:使用向量数据库存储记忆,支持语义检索
  2. 记忆遗忘机制:模拟人类的遗忘曲线,自动清理过时记忆
  3. 跨用户记忆:识别用户群体间的共性,提供群体智能
  4. 记忆可视化:为用户提供记忆管理界面,查看和编辑 AI 记住的内容

结语

记忆是智能的基石。没有记忆,AI 只能是一次性的工具;有了记忆,AI 才能成为真正理解你、陪伴你的智能伙伴。

这套三层记忆模型已经在我的 LangGraph Agent 项目中落地运行,让 AI 助手从”金鱼”进化成了”知己”。如果你也对构建有记忆的 AI 感兴趣,欢迎一起交流探讨!


相关技术栈:

  • LangGraph - 工作流编排
  • LangChain - LLM 应用框架
  • Python 3.11+ - 开发语言
  • Markdown - 记忆存储格式

参考项目:

  • OpenClaw - 开源的记忆增强型 AI 助手
  • MemGPT - 虚拟上下文管理
文章作者:阿文
文章链接: https://www.awen.me/post/61411.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客

评论

0 条评论
😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️
您的评论由 AI 智能审核,一般1分钟内会展示,若不展示请确认你的评论是否符合社区和法律规范
加载中...

留言反馈

😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️