# 2509.00xxxx_MemU: 一个前瞻性很强但尚不成熟的记忆框架 * GitHub: * 官网: ## 主要内容 ```note memU 是一个前瞻性很强但尚不成熟的记忆框架。它展示了如何通过多阶段LLM调用实现智能记忆管理,尤其在“心智理论”和记忆结构化方面很有启发性。然而,由于其强依赖LLM响应能力与文件系统存储限制,目前更适合作为研究或轻量级项目使用。 ``` ### 最佳场景: * 情感陪伴应用:虚拟伴侣、数字人等需要建立情感连接的场景 * 心理咨询:需要理解用户情感状态和历史的应用 * 健康管理:长期跟踪用户健康状况和生活习惯的系统 * 个性化推荐:基于用户偏好和历史行为的推荐系统 ### 核心架构:记忆即文件系统 * memU 将记忆视为一个自主运行的文件系统,所有记忆内容都被组织成不同的“文件夹”(分类),每个记忆项都是一个“文件”。 * 当你与AI对话时,memU 会自动: * 提取关键信息 * 更新现有记忆 * 生成新记忆 * 链接相关记忆 * 动态优化存储结构 ### 技术架构 * 自生长文件夹机制:动态创建和组织记忆结构,适应不断变化的对话主题 * 动态知识图谱:自动识别对话中的实体和关系,构建演进的知识网络 * 多模式检索:支持语义/混合/上下文感知检索,适应不同查询需求 * 离线分析引擎:在非交互时段分析记忆数据,生成新洞察并主动更新知识库 ### 两大核心接口 * memorize(记忆):将对话内容提取并存储为结构化记忆 * retrieve(检索):根据上下文快速找回相关记忆 ### 核心处理流程 #### 记忆抽取与处理 * 架构图: * memU 的核心在于其多阶段、LLM驱动的记忆处理流水线。当你提交一段对话后,它会异步处理、依次执行以下6个关键子过程: 1. add_activity_memory - 原始对话结构化 * 目的:将杂乱无章的原始对话转换成一条条结构清晰、自包含的“记忆项”。 * 做法:使用LLM对原始对话进行理解和重组,将相关的语句组合成一条完整的活动描述(例如,将“我昨天去了公园。公园很漂亮。我看到了很多花。”合并为“用户昨天去了一个漂亮的公园,并看到了很多花。”),并为每条记忆生成唯一ID和嵌入向量。 * 输出:一组格式规范、可供后续处理的基础记忆单元。 2. run_theory_of_mind - 心智理论推断 * 目的:读出用户的“言外之意”,推断出用户未明确表达但可能隐含的信息、情绪或特质。 * 做法:基于上一步的结构化记忆,让LLM扮演一个“心理学家”,进行推理和分析(例如,用户说“项目终于上线了,累死了”,可以推断出“用户可能对工作成就感到自豪,但同时近期压力很大”)。 * 输出:一系列带有“可能”、“也许”等模态副词的推断性记忆项,丰富了用户画像的维度。 3. generate_memory_suggestions - 生成记忆建议 * 目的:决定哪些信息值得被存入长期的、分类的记忆库中。 * 做法:综合分析前两步得到的所有记忆项,判断每条信息最适合放入哪个记忆类别(如profile个人档案、event事件、activity活动等),并生成具体的存储建议。 * 输出:一个针对各个记忆类别的、包含具体内容建议的列表。 4. update_memory_with_suggestions - 执行记忆更新 * 目的:根据上一步的建议,实际执行对记忆库的增、删、改、查操作。 * 做法:再次调用LLM,将其视为一个“数据库管理员”。LLM会对比新建议和记忆库中的现有内容,决定是需要新增一条记忆、更新某条现有记忆、删除过时信息,还是仅刷新一下时间戳(TOUCH)。 * 输出:一系列具体的操作指令(ADD/UPDATE/DELETE/TOUCH),并最终写入文件系统。 5. link_related_memories - 链接相关记忆 * 目的:打破记忆孤岛,在不同记忆之间建立关联网络,模拟人脑的联想式记忆。 * 做法:首先通过 embedding 向量相似度进行初步筛选,找到内容上可能相关的记忆候选集。然后,可选地使用LLM进行精细过滤,判断这些记忆在语义上是否真正相关(例如,“用户在巴黎旅行”和“用户喜欢法国烘焙”是相关的)。 * 输出:在记忆项之间建立双向链接,形成一张知识图谱。 s 6. cluster_memories - 记忆聚类 * 目的:对记忆库进行宏观管理,自动发现新的主题或分类,优化存储结构。 * 做法:检查大量的记忆项,通过LLM判断是否可以将某些记忆合并成新的主题类别,或者调整现有的分类结构,使整个记忆系统更加有序和高效。 * 输出:优化后的记忆分类结构。 ### memU 优缺点 ✅ 优点: * 记忆提取更准确,格式规范(如时间必须为绝对日期) * 自动分类,记忆结构清晰易检索 * 引入“心智理论”,能推断用户隐含信息 ❌ 缺点: * 对LLM提示词要求高,部分模型无法正确响应 * 存储基于文件系统,扩展性差,不适合大规模使用 * 调用LLM次数多,成本较高 * 记忆关联性仅存于内容中,重建耗时