type
Post
status
Published
date
Apr 14, 2026
slug
mem0-source-code-analysis-3
summary
Mem0 的记忆管理——从事实提取、相似性判断,到增删改决策——每一个环节都是通过精心设计的提示词驱动 LLM 完成的。这些提示词不是简单的指令,而是包含了:
- 明确的任务定义
- 详细的分类指南
- 具体的示例演示
- 结构化的输出格式
- 严格的边界约束
tags
agent
Mem0
长期记忆
category
agent
icon
password
这是 Mem0 源码解析系列的第二篇文章。我们将深入探讨 Mem0 提示词系统的设计思路、实现细节和应用技巧,理解为什么”Mem0 增删改查记忆的本质是提示词工程”。
一、引言
在上一篇文章中,我们了解了 Mem0 的记忆添加流程,提到了一个关键观点:Mem0 的智能管理能力源于精心设计的提示词。这句话道出了 Mem0 的核心技术本质。
Mem0 的记忆管理——从事实提取、相似性判断,到增删改决策——每一个环节都是通过精心设计的提示词驱动 LLM 完成的。这些提示词不是简单的指令,而是包含了:
- 明确的任务定义
- 详细的分类指南
- 具体的示例演示
- 结构化的输出格式
- 严格的边界约束
本文将深入剖析 Mem0 的提示词系统,理解其设计哲学和技术实现。
重要说明:为了方便中文读者理解,本文展示的提示词内容均已翻译为中文。
二、Mem0 提示词体系概览
Mem0 的提示词定义在
mem0/configs/prompts.py 中,主要包含以下几类:
Mem0 提示词体系架构
提示词体系的树状结构清晰展示了四大类提示词及其分支。这些提示词构成了 Mem0 智能管理的完整框架:
三、事实提取提示词详解
事实提取是 Mem0 的第一步,也是最关键的一步。Mem0 提供了三个不同的事实提取提示词,覆盖不同的信息来源:

三个事实提取提示词对比
三列对比清晰展示了三种提示词的核心差异:FACT_RETRIEVAL_PROMPT(通用型,旧版本)从用户和助手消息中提取信息,USER_MEMORY_EXTRACTION_PROMPT(用户专用,当前版本)仅从用户消息提取,AGENT_MEMORY_EXTRACTION_PROMPT(Agent专用)仅从助手消息提取。
提示词选择逻辑:Mem0 根据调用参数自动选择提示词:
- 存在
agent_id + 有 assistant 消息 → 使用 AGENT_MEMORY_EXTRACTION_PROMPT
- 其他情况 → 使用 USER_MEMORY_EXTRACTION_PROMPT
- FACT_RETRIEVAL_PROMPT 作为旧版本保留,主要用于兼容性场景让我们深入分析每个提示词的设计。
3.1 核心提示词:FACT_RETRIEVAL_PROMPT
位于
mem0/configs/prompts.py:14,这是最基础的事实提取提示词。提示词内容(中文翻译版)
结构分析
优秀提示词的结构可以分解为7个关键要素:

提示词结构分解图
1. 明确的角色定位
这个角色定位明确了:
- 任务性质:信息组织者
- 专业领域:事实、记忆、偏好
- 核心能力:准确存储
2. 分类指南(7种信息类型)
每种类别都有明确的定义和范围:
这确保了 LLM 知道哪些信息值得记录:
- ✅ “我喜欢喝咖啡” → 值得记录(个人偏好)
- ❌ “天气很好” → 不值得记录(无关信息)
3. Few-shot 示例(5个场景)
这些示例教会 LLM:
- 什么情况下返回空列表(无价值信息)
- 如何提取有价值的信息(姓名、职业等)
- 如何格式化输出(JSON结构)
4. 结构化输出要求
结构化输出确保:
- 可程序化处理(JSON格式)
- 格式一致性(统一的键名)
- 易于解析(字符串列表)
5. 边界约束
这些约束防止了:
- 提示词泄露(prompt leakage)
- 无关信息混入(irrelevant information)
- 格式错误(format errors)
6. 动态信息注入
注入当前日期,让 LLM 能够:
- 理解时间上下文(temporal context)
- 准确处理时间相关信息(time-related information)
- 例如:“明天我要开会” → “明天有会议(2025-04-10)”
3.2 增强版提示词:USER_MEMORY_EXTRACTION_PROMPT
位于
mem0/configs/prompts.py:62,这是增强版的用户记忆提取提示词。提示词内容(中文翻译版)
关键改进
1. 更严格的边界约束
使用
[重要] 标记和惩罚威胁,确保:
- 只提取用户信息
- 避免混入 Assistant 的信息
- 避免混入 System 信息2. 完整的对话示例
完整对话示例让 LLM 理解:
- 如何区分 User 和 Assistant 信息
- 如何忽略 Assistant 的自我介绍
- 如何只提取用户相关的事实
3. 语言检测
确保:
- 中文输入 → 中文事实
- 英文输入 → 英文事实
- 保持语言一致性
3.3 Agent记忆提取:AGENT_MEMORY_EXTRACTION_PROMPT
位于
mem0/configs/prompts.py:123,这是专门提取 Agent(AI助手)记忆的提示词。提示词内容(中文翻译版)
设计差异
关键区别:
提示词类型 | 提取目标 | 信息类型 |
USER_MEMORY | 用户信息 | 偏好、个人详情、计划 |
AGENT_MEMORY | Agent信息 | 能力、性格、偏好 |
示例对比:
四、记忆管理提示词详解
记忆管理提示词是 Mem0 智能的核心,它决定了如何处理新提取的事实。
4.1 DEFAULT_UPDATE_MEMORY_PROMPT
位于
mem0/configs/prompts.py:175,这是记忆增删改决策的核心提示词。提示词内容(中文翻译版)
四种操作详解
记忆管理的核心是四种操作类型,每种操作都有明确的触发条件:

四种操作类型决策图
颜色编码清晰展示了四种操作:绿色(ADD)、黄色(UPDATE)、红色(DELETE)、灰色(NONE),每种操作都配有实际示例。
1. ADD(添加)
决策逻辑:新信息,记忆库不存在 → 创建新记录
2. UPDATE(更新)
决策逻辑:
- 信息变化 → UPDATE
- 信息相同但表述不同 → NONE(保留原有)
- 新信息更丰富 → UPDATE(合并信息)
3. DELETE(删除)
决策逻辑:矛盾信息 → DELETE
4. NONE(无操作)
决策逻辑:信息已存在 → 无需操作
输出格式
结构化输出确保:
- 程序可解析
- 操作类型明确
- 可追溯旧内容(UPDATE时)
边界约束
这些约束确保:
- 格式正确
- ID管理正确
- 操作逻辑一致
4.2 动态提示词生成:get_update_memory_messages()
位于
mem0/configs/prompts.py:405,这是一个函数,动态生成记忆管理提示词。动态注入信息:
- 当前记忆内容(
retrieved_old_memory_dict)
- 新提取的事实(response_content)智能处理:
- 记忆为空 → 提示”Current memory is empty”
- 记忆存在 → 显示具体内容
示例生成的完整提示词:
[“Dislikes cats”, “Loves dogs”]
五、总结
通过深入分析 Mem0 的提示词系统,我们理解了为什么”Mem0 增删改查记忆的本质是提示词工程”。
核心发现
1. 提示词是 Mem0 的核心
Mem0 的智能能力不是来自复杂的算法,而是来自精心设计的提示词:
- 事实提取:7 种信息类型 + Few-shot 示例
- 记忆管理:4 种操作类型 + 详细决策逻辑
- 其他任务:各有专门的提示词
2. 结构化设计是关键
优秀的提示词包含:
- 明确的角色定位
- 清晰的任务分类
- 充分的 Few-shot 示例
- 严格的输出格式
- 明确的边界约束
3. 动态信息注入增强灵活性
通过函数动态生成提示词:
- 注入当前记忆内容
- 注入新提取的事实
- 注入时间等上下文信息
4. 自定义提示词扩展应用
用户可以自定义提示词:
- 调整提取规则
- 修改决策逻辑
- 适应特定领域
技术价值
Mem0 的提示词设计不仅展示了如何管理记忆,更重要的是展示了:
- 如何用提示词驱动复杂系统
- 如何设计结构化提示词
- 如何平衡灵活性和可控性
- 如何通过 Few-shot 教会 LLM 判断标准
这些设计思路对构建其他 LLM 应用系统也有重要借鉴价值。
下一步
在本系列的下一篇文章中,我们将探讨:
- 第三篇:记忆是如何被检索的?深入理解向量相似性搜索