Mem0 源码解析系列(二):提示词工程的深度剖析
2026-4-14
| 2026-4-14
Words 7458Read Time 19 min
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 中,主要包含以下几类:
notion image
Mem0 提示词体系架构
提示词体系的树状结构清晰展示了四大类提示词及其分支。这些提示词构成了 Mem0 智能管理的完整框架:

三、事实提取提示词详解

事实提取是 Mem0 的第一步,也是最关键的一步。Mem0 提供了三个不同的事实提取提示词,覆盖不同的信息来源:
notion image
三个事实提取提示词对比
三列对比清晰展示了三种提示词的核心差异: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个关键要素:
notion image
提示词结构分解图
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,这是记忆增删改决策的核心提示词。

提示词内容(中文翻译版)

四种操作详解

记忆管理的核心是四种操作类型,每种操作都有明确的触发条件:
notion image
四种操作类型决策图
颜色编码清晰展示了四种操作:绿色(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 应用系统也有重要借鉴价值。

下一步

在本系列的下一篇文章中,我们将探讨: - 第三篇:记忆是如何被检索的?深入理解向量相似性搜索

敬请期待!

附录:完整提示词模板

A. 事实提取模板

B. 记忆管理模板

  • agent
  • Mem0
  • 长期记忆
  • QAnything 1.4.1 文档处理逻辑以及检索逻辑分析AI 早报 — 2026年04月14日 周二
    Loading...