跳至主要内容

给 AI 装上大脑的海马体:聊聊 MemU 这个记忆框架

· 閱讀時間約 9 分鐘
w0x7ce
MySelf

发布于 2026-02-01 21:46:05(微信公众号导出记录)。

本文来自公众号后台的“导出文章内容”功能。博客正文由导出长图进行本地 OCR 转写,并保留原始排版图用于逐段核对。

原文链接:查看原文

OCR 转写有效文字约 4232 字;代码、流程图和版式以文末原始排版图为准。

正文(本地 OCR 转写)

original wex7ce EI V1ajero 2826年2月1日 21:46 中国台湾 为什么AI总是记不住事情 你有没有发现,现在市面上那些AI助手,联明是真聪明,健忘也是真健忘。 昨天你跟它说过你prefer美式咖啡,今天它又开始给你推荐拿铁。上周你跟它讨论过的一个 技术方案,这周你再提起,它一脸茫然。 本质上是因为这些AIAgent缺少长期记忆能力。它们像一个患有健忘症的天才,推理能力一 流,但就是留不住任何东西, MenU想解决这个问题。

Memory for Always-on Agents ous Al sgents with pers user inter vaa)s nor agh wr Yaur Agar View Dour

简单说,MemU是一个专门给长期运行的AI Agent用的记忆框架。它能让 AI在持续运行 的过程中,自动学习、自动积累、主动回忆。 MemU的核心设计

三层记忆架构

MenU最有意思的设计是它的三层记忆架构。 为什么要分三层?我觉得这个设计挺巧妙的。 Resource(原始数暴层) 对话记录、文档、图像、音频等原始交互数据 ↓白动提取 Iten(记亿事实展) 用户偏好、重要事件、关系图诺等结构化记忆 自动分类 Category(分英摘要层) 个人信息、消费偏好、社交关系等聚合携要 最底层是Resource,存的是原始效据一对话记录、文档、图片、音频这些。这层相当于完整 备份,确保什么信息都不丢。 中间层是Item,从原始数据里提取出来的结构化事实。比如从一段对话里提取出“用户喜欢题 美式觀啡”每周一三五去健身房“这些具体信息。 最上层是Category,自动分类的揭要。个人信息、消费偏好、社交关系这些,会被聚合成更 高维度的换要。 这种设计的好处很明显:不同场景可以调用不同精度的记忆。简单问题查Item就够了,复杂 分析可能需要看Category,要追溯原始信息就去Resource 代码架构 整体分层设计 MenU 的代码组织很清晰,分层很明确: Application Layer (左用层) MenoryService|MenorizeNixin | RetrieveMixin

Morkflow Engine (工作流层) Pipeline | Step | Runner |Interceptor

LLM & Embedding (模型层) LLM Client I Enbedding Backends ↓ Data Storage(存储展) SQLite | PostgreSOL I In-Memory 用到的设计模式 看完代码,我注意到几个摇有意思的设计选择。 Mixin 横式用来拆分功能。主服务类继承了三个Mixin: 1CLass MemoryService(MenorizeMixin, RetrleveMixin, CRUDMixin) : “"记亿服务主类...

  • MerorizeMixin:负责记忆的提取和存储

  • RetrieveNixin:负责记亿的检素和组装

  • CRUDMixin:提供基础的增酬改查操作

这种写法挺 Python1c的,功能拆得干净,测试也好写。 工厂模式处理多种存储后端: def build_databasc(*, config: Databaseconfig, user_nodel: typc[BascMode ""根据配置动态创键致参库实例" 内存数据库用于开发测试,SQLite 可以应付轻量级生产环境,PostgreSQL+pgvector 就能支撑企业级部署。切换后端只需要改配置,代码不用动。 Pipeline模式把记忆处理流程拆成一串可配置的步强: class PipelineManagcr: def reglster(self, name: Str, steps: Iterable[MorkflowStep]) def config step(self, name: str, step id: str, configs: dict) 处理流程是这样的:接收数据+提取信息一分类组织一建索引+持久化。每个步骤都能独 立配置和替换,扩展起来很方便。 Python+Rust 混合 这个设计提有意思。Python 写业务逻辑和 API,Rust 跑性能关键路径,通过 Py03粘在一 起。

  • Python:业务速辑、API设计、集成生态

  • Rust:性能关键路径、数据处理、向量计算

兼顾了开发效率和运行性舰,这个权衡选得挺务实。 核心功能 主动记忆 主动记亿这个功能我觉得做得摄好。 传统记亿系统得你显式告诉它”记住这个",但MemlU是真正的持续学习: async def memorize(self, *, resource_url: str, nodality: str, user: d1c “"持境学习管道·自动从交互中提取记亿 它蓝听你和AI的交互,自动识别有价值的信息,提取出来结构化,然后更新记忆库,全程不 需要你手动触发。 双模式检索 检索方面有个聪明的双模式设计。 RAG模式走向量相似度,毫移级响应,几乎没什么成本,适合实时对话: ncnory = await scrvice,retrieve( query="用户喜效什么类型的咖峰?", 6pJ,=pou1au 4 LLM模式会让大模型深应推理一下,响应恒点成本高点,但能处理复杂问题: nenory - awalt service.retrleve( query="根据月户最近的购买记录,分析他的消费超势“。 11=poqau ) 两种模式可以灵活切换,这个设计在实际工程里会很实用。 意图预测 它还能预测用户意图: async def predict_intent(self, context: dict) -> str: “"基于当前上下文候翘用户下一步意图“ 比如你问天气,它可能提前准备旅行建议:你提到购物,相关的商品推荐就预加载好了。这 种“预判“能力能让交互体验好不少。 多模态支持 Menl统一处理多种数据模态: 处理方式 模态 记忆提取 实体提取、关系识别 文本 对话、文格分析 图像 视觉理解 场景记忆、物体识别 音频 语音转文本 情感分析、内客记忆 虽然现在大部分应用还是文本为主,但这个能力储备放在部里,以后要用就很方便。 成本优化 成本控制这块他们想得挺细:

  • 智能缓存:避免重复的LLM调用

  • 增量更新:只处理新增或变化的内容

  • 分层检索:摘单查询用RAG模式省成本

  • 批量处理:合并多个请求减少API调用

这些优化点说明作者是有实际生产经验的。 应用场景 个人AI助手 这是最直接的应用场景,能记住你的饮食偏好、娱乐习惯、工作日程,重要事项不用重复说,体 验会好很多。 用户:我瑟吃晚餐 AI:根据你之前的偏好,我推荐三意你要欢的意大利餐厅, 而且今天你生日,其中一家还有生日优通。 智能客服 记住客户的历史问题和解决方案,跟踪购买记录和偏好,不用每次都从头问起,股务效率能提升 不少。 客户:我的产品又有问题了 AI:我看到你上周遇到类似问题,我们是通过更换配件解决的, 这次是同样的问题吗?需要我直接安排更换吗? 教育辅导 记录学习进度,识别知识薄器点,生成个性化学习路径。这个比千人一面的教学要强。 学生:我学不好代 AI:我注意到你在因式分解方面比较薄弱,这是理解代数的基础, 让我们从这里开始巩固。 医疗健康 跟踪症状变化、治疗效果,分析健康趋势。当然这个领域数据敏感,合规要求会复杂一些。 更者:我最近头痛顺繁 AI:对比你这去三个月的记录,头痛频率确实尊却了, 而且我注意到这与你的睡据质量下降有关。

工程细节 从工程角度看,有几个点我觉得做得不错。 类型安全。全面用Python类型提示,加上Pydantic做数据验证,这种组合在大型项目里 能省不少坑。 错误处理也做得挺细,异常定义粒度够细,恢复机制也比较完善。生产环境里这个太重要了。 配置驱动的设计让灵活性很高,大量行为可以通过配置调整,不用改代码。 异步优先的设计支撑高并发,这在24/7运行的场景里是刚需。 Rust扩展这块我还没细看代码,但这个思路是对的。Python写起来舒服,Rust跑起来快, 各司其职。 怎么用 上手挺简单的。 from memu import MemoryService service = MemoryService.from_config("config.yaml") #记忆会自动提取和分类 await service.memorize( resource_url="conversation://chat-123", modality="text", user={"id":"user-456"} 1 1 12#检索记忆 result = await service.retrieve( 13 query="用户喜欢什么类型的电影?", 14 method="rag" 15 16 配置用YAML,结构清晰: llm: default: provider: "openai" model:"gpt-40" api_key: "${OPENAI_API_KEY}" database: backend: "sqlite" path:"./memu.db" 10 embedding: 11 backend:"openai" 1 2 model: "text-embedding-3-small" 13 14 workflows: 15 16 memorize: 1 7 steps: 18

  • extract_entities

  • classify_items

19 20

  • update_categories

后续可以怎么演进 我觉得这个框架已经挺完整的,但还是有些可以继续探索的方向。 短期来看,支持更多向量数据库(Milvus、Qdrant这些)会很有用。多模态处理能力也可以 继续加强,检索算法和排序策略也还有优化空间。 长期想的话,跨Agent记忆共享是个有趣的方向,当然得在授权前提下。记忆压缩和遗忘机制 也很值得探索,模拟人类记忆的遗忘曲线可能是个不错的思路。联邦学习可以在保护隐私的前提 下做记忆训练,边缘部署则能让方案适用更多场景。 最后说两句 MemU这个项目给我的感觉是,它是从实际问题出发的,而不是为了炫技。AI要从工具变成伙 伴,记忆能力是绕不开的一环。 代码质量、架构设计、工程实践都做得不错,看得出作者是真的在生产环境踩过坑。如果你在做 需要长期运行的AIAgent,或者对AI记忆系统感兴趣,这个项目值得看看。 项目地址:https://github.com/NevaMind-AI/memU

原始排版图

给 AI 装上大脑的海马体:聊聊 MemU 这个记忆框架:微信公众号导出原始排版图