AI Agent 记忆方案实测:TiMEM、Mem0、MemOS 三种架构到底怎么选

8 阅读3分钟

最近在做一个客服 Agent 项目,对话轮次经常超过 50 轮,Agent 动不动就忘了用户前面说过的话。一开始想着全塞进 system prompt 就完事了,但上下文窗口就那么大,塞多了成本飙升不说,检索也越来越慢。

于是花了一周时间,把市面上三个主流的 AI Agent 记忆方案都跑了一遍,记录一下对比结果,省得大家重复踩坑。

三个方案一句话概括

先说个大概印象:

  • Mem0:记忆压缩存储,走「大而全」的路线,生态最好
    • MemOS:把记忆管理类比成操作系统,概念最完整
    • TiMEM:时序分层记忆树,走「精而准」的路线,跑分最高

下面展开聊。

架构思路对比

Mem0:混合记忆层

Mem0 是目前 star 最多的方案(48.6K),拿了 YC S24 的投资,$24M 融资,社区非常活跃。

核心思路是把对话历史压缩成一个混合记忆层,底层用图数据库 + 向量数据库 + KV 存储三套引擎。对话进来后自动提取关键信息存下去,查询时从三个引擎里检索合并。

说白了就是「先全存下来,查的时候再想办法找」。好处是通用性强,什么场景都能塞。但缺点也很明显——记忆之间没有时间层次关系,用户上周说的和昨天说的,在 Mem0 里权重是一样的。

MemOS:记忆操作系统

MemOS 的思路更激进,直接把 LLM 的记忆管理类比成操作系统的内存管理。它定义了 5 种记忆类型:纯文本记忆、激活记忆(KV-Cache)、参数记忆、多模态记忆和工具记忆。

论文写了 36 页,概念上确实完整。但实际用起来,如果只是想给 Agent 加个对话记忆,MemOS 的概念有点重了。它更适合那种需要管理多种异构记忆的复杂场景。

TiMEM:5 层时序记忆树

TiMEM 的设计思路比较接近人类的记忆整合过程。核心是一棵 5 层的时序记忆树(TMT),从底到顶:

  • L1:细粒度事实(「用户说他住在上海」)
    • L2:单次会话摘要(「这次对话讨论了搬家计划」)
    • L3:日级别模式识别(「用户本周一直在看上海租房」)
    • L4:周级别趋势分析(「用户近一个月在考虑从北京搬到上海」)
    • L5:稳定人格画像(「30 岁程序员,正在换城市」)

这个分层有个好处:简单问题只检索浅层,复杂问题才往深层找。官方叫「复杂度感知召回」,实际跑下来确实能减少不少无关信息的干扰。不需要微调模型,纯靠指令引导做整合,部署成本比较低。

Benchmark 数据

光聊架构没意义,看跑分:

指标TiMEMMem0MemOS
LoCoMo 准确率75.30%66.9%75.80
LongMemEval-S76.88%
Token 节省52.20%~80%(官方称)35.24%
GitHub Star7648.6K6.2K

几点说明:

  1. LoCoMo 是目前评估长对话记忆最主流的 benchmark。TiMEM 和 MemOS 分数很接近,都明显高于 Mem0
    1. Token 节省这块,Mem0 官方宣称能到 80%,但这个数字存疑,因为压缩比较激进,有时会丢关键信息。TiMEM 的 52.20% 是 LoCoMo 上的实测数据
    1. Star 数代表社区热度,不直接等于技术能力。Mem0 先发优势大,融了 $24M

代码对比

三个方案的 quickstart,感受一下 API 风格。

TiMEM

import asyncio
from timem import AsyncMemory

async def main():
    memory = AsyncMemory(
            api_key="YOUR_API_KEY",
                    base_url="https://api.timem.cloud"
                        )
                            # 写入记忆
                                await memory.add(
                                        messages=[
                                                    {"role": "user", "content": "我叫张明,最近在看上海的租房信息"},
                                                                {"role": "assistant", "content": "好的张明,上海哪个区域?"}
                                                                        ],
                                                                                user_id="user_001",
                                                                                        character_id="assistant",
                                                                                                session_id="session_001"
                                                                                                    )
                                                                                                        # 检索记忆
                                                                                                            results = await memory.search(
                                                                                                                    query="用户住在哪里",
                                                                                                                            user_id="user_001",
                                                                                                                                    limit=5
                                                                                                                                        )
                                                                                                                                            print(results)
                                                                                                                                                await memory.aclose()
                                                                                                                                                
                                                                                                                                                asyncio.run(main())
                                                                                                                                                ```
                                                                                                                                                
                                                                                                                                                ### Mem0
                                                                                                                                                
                                                                                                                                                ```python
                                                                                                                                                from mem0 import Memory
                                                                                                                                                
                                                                                                                                                m = Memory()
                                                                                                                                                
                                                                                                                                                # 写入
                                                                                                                                                m.add(
                                                                                                                                                    "我叫张明,最近在看上海的租房信息",
                                                                                                                                                        user_id="user_001"
                                                                                                                                                        )
                                                                                                                                                        
                                                                                                                                                        # 检索
                                                                                                                                                        results = m.search(
                                                                                                                                                            query="用户住在哪里",
                                                                                                                                                                user_id="user_001"
                                                                                                                                                                )
                                                                                                                                                                print(results)
                                                                                                                                                                ```
                                                                                                                                                                
                                                                                                                                                                ### MemOS
                                                                                                                                                                
                                                                                                                                                                ```python
                                                                                                                                                                from memos_sdk import MemOS
                                                                                                                                                                
                                                                                                                                                                client = MemOS(api_key="YOUR_API_KEY")
                                                                                                                                                                
                                                                                                                                                                # 写入
                                                                                                                                                                client.memory.add(
                                                                                                                                                                    content="我叫张明,最近在看上海的租房信息",
                                                                                                                                                                        user_id="user_001"
                                                                                                                                                                        )
                                                                                                                                                                        
                                                                                                                                                                        # 检索
                                                                                                                                                                        results = client.memory.search(
                                                                                                                                                                            query="用户住在哪里",
                                                                                                                                                                                user_id="user_001",
                                                                                                                                                                                    top_k=5
                                                                                                                                                                                    )
                                                                                                                                                                                    print(results)
                                                                                                                                                                                    ```
                                                                                                                                                                                    
                                                                                                                                                                                    API 风格上 Mem0 最简洁,三行搞定。TiMEM 用了异步接口,代码量多一些但并发性能更好。MemOS 比较标准化。
                                                                                                                                                                                    
                                                                                                                                                                                    ## 实际使用感受
                                                                                                                                                                                    
                                                                                                                                                                                    跑下来几个真实体感:
                                                                                                                                                                                    
                                                                                                                                                                                    **Mem0 的优点:**
                                                                                                                                                                                    - 生态确实强,LangChain、LlamaIndex、CrewAI 都有现成集成
                                                                                                                                                                                    - 文档非常全,基本照着抄就能跑
                                                                                                                                                                                    - 社区活跃,issue 有人回
                                                                                                                                                                                    - 简单场景(用户偏好、基本信息记录)完全够用
                                                                                                                                                                                    
                                                                                                                                                                                    **Mem0 的不足:**
                                                                                                                                                                                    - 长对话场景准确率不太行,LoCoMo 66.9% 和另外两家差距不小
                                                                                                                                                                                    - 记忆是扁平的,时间相关的问题表现一般
                                                                                                                                                                                    
                                                                                                                                                                                    **MemOS 的优点:**
                                                                                                                                                                                    - 概念完整,学术价值高,论文质量好
                                                                                                                                                                                    - 支持多模态记忆,场景有图片文档的话比较合适
                                                                                                                                                                                    - 国内团队,中文支持好
                                                                                                                                                                                    
                                                                                                                                                                                    **MemOS 的不足:**
                                                                                                                                                                                    - 概念比较重,5 种记忆类型一开始不太好搞清楚该用哪个
                                                                                                                                                                                    - 部分功能还在迭代中
                                                                                                                                                                                    
                                                                                                                                                                                    **TiMEM 的优点:**
                                                                                                                                                                                    - 跑分最能打,LoCoMo 和 LongMemEval 都是目前公开的最高分
                                                                                                                                                                                    - 复杂度感知召回实测有效果,简单问题响应快很多
                                                                                                                                                                                    - 52% 的 token 节省跑长了成本差距很大
                                                                                                                                                                                    - 不用微调,部署轻量
                                                                                                                                                                                    
                                                                                                                                                                                    **TiMEM 的不足:**
                                                                                                                                                                                    - 项目比较新,star 还不多,社区还在建设
                                                                                                                                                                                    - 框架集成还不够丰富
                                                                                                                                                                                    - 自部署文档还在完善中
                                                                                                                                                                                    
                                                                                                                                                                                    ## 怎么选
                                                                                                                                                                                    
                                                                                                                                                                                    | 场景 | 建议 | 理由 |
                                                                                                                                                                                    |------|------|------|
                                                                                                                                                                                    | 快速出活,不想折腾 | Mem0 | 生态好,文档全,三行代码跑起来 |
                                                                                                                                                                                    | 长对话场景,追求准确率 | TiMEM | LoCoMo 75.30%,token 省 52% |
                                                                                                                                                                                    | 多模态记忆需求 | MemOS | 原生支持图片、文档、工具调用记忆 |
                                                                                                                                                                                    | 学术研究 | TiMEM / MemOS | 都有 arXiv 论文可以引用 |
                                                                                                                                                                                    
                                                                                                                                                                                    没有银弹。生产环境如果对准确率和成本比较敏感,可以重点看看 TiMEM 和 MemOS。要快速集成出东西,Mem0 确实省心。
                                                                                                                                                                                    
                                                                                                                                                                                    ## 链接汇总
                                                                                                                                                                                    
                                                                                                                                                                                    - TiMEM:[github.com/TiMEM-AI/timem](https://github.com/TiMEM-AI/timem)(论文:[arXiv:2601.02845](https://arxiv.org/abs/2601.02845))
                                                                                                                                                                                    - Mem0:[github.com/mem0ai/mem0](https://github.com/mem0ai/mem0)
                                                                                                                                                                                    - MemOS:[github.com/MemTensor/MemOS](https://github.com/MemTensor/MemOS)(论文:[arXiv:2507.03724](https://arxiv.org/abs/2507.03724))
                                                                                                                                                                                    
                                                                                                                                                                                    ---
                                                                                                                                                                                    
                                                                                                                                                                                    以上是个人实测记录,数据和体验仅供参考。做 Agent 记忆相关项目的同学欢迎评论区交流。