5 分钟给你的 AI Agent 加上长期记忆(TiMEM 实战)

最近在做一个 Agent 项目,对话几十轮之后 Agent 就开始忘事儿,用户前面说的东西后面全丢了。研究了一圈记忆方案,试了一下 TiMEM,接入过程比想象中简单,记录一下。

环境准备

pip install timem-ai

需要一个 API Key,去 console.timem.cloud 注册拿。

基本用法:写入 + 检索

核心就两个操作:把对话存进去,需要的时候再查出来。

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": "我叫张明,我是一名后端开发,最近在学 Rust"},
                                                                    {"role": "assistant", "content": "你好张明!Rust 确实很值得学"}
                                                                            ],
                                                                                    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())

跑一下就能看到检索结果,会返回之前存入的相关记忆片段。API 是异步的,并发场景下性能不错。

它是怎么工作的

TiMEM 和 Mem0 这类方案最大的区别是:它不是把所有记忆扁平存储,而是搞了一棵 5 层的时序记忆树(TMT):

L1: 细粒度事实   →  "用户叫张明,在学 Rust"
L2: 会话摘要     →  "本次讨论了用户的技术栈和学习计划"
L3: 日级别模式   →  "用户本周持续关注 Rust 和系统编程"
L4: 周级别趋势   →  "用户正从 Java 后端转向 Rust 方向"
L5: 人格画像     →  "后端开发,3年经验,正在技术转型"

查询的时候有个「复杂度感知召回」的机制:问简单问题(“用户叫什么名字”)只查 L1-L2,秒回;问复杂问题(“根据你对用户的了解推荐学习路线”)才会去查 L4-L5 做综合分析。

这样做的好处是:不会每次都把所有记忆全捞出来塞进 prompt,省 token 也减少噪音。

和 Mem0 简单对比

之前项目用的 Mem0,顺手跑了个对比:

指标 TiMEM Mem0
LoCoMo 准确率 75.30% 66.9%
LongMemEval-S 76.88%
Token 节省 52.20% ~80%(官方称)
Star 数 76 48.6K
上手难度 一般 简单

说几个实际感受:

  1. 准确率差距是真实的。长对话场景下(50+ 轮),Mem0 经常把不相关的旧信息也捞出来,TiMEM 的分层机制在这个场景确实更精准
    1. Token 节省:Mem0 说 80% 但压得比较狠,有时会丢关键信息。TiMEM 52% 是 benchmark 实测
    1. 生态:Mem0 的优势还是生态,LangChain/LlamaIndex 都有集成。TiMEM 这块还在建设中
    1. LLM 支持:TiMEM 支持 OpenAI、Claude、智谱、通义千问和本地模型,覆盖面够用
      如果你的场景是简单的用户偏好记录,Mem0 足够了。如果对话轮次多、要求准确率、在意 token 成本,可以试试 TiMEM。

不需要微调

补充一点:TiMEM 的记忆整合是靠指令引导的,不需要微调模型。换模型也不用重新训练,直接切就行。这对于需要频繁切换 LLM 后端的场景比较友好。

总结

整体接入过程比较顺畅,pip install 之后基本就是 addsearch 两个接口的事儿。5 层记忆树的设计在长对话场景确实比扁平方案体验好不少。

项目还比较新,社区和文档还在完善,但核心功能已经可用了。

相关链接:


以上是个人使用记录,如果你也在做 Agent 记忆相关的东西,欢迎评论交流。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐