文章目录
- 前言
- 零、论文基本信息
- 一、背景与问题:为什么"带时间戳的向量库"还不够
- [二、相关工作:TiMem 与已有层级记忆差在哪里](#二、相关工作:TiMem 与已有层级记忆差在哪里)
- 三、方法总览:五层时间树如何形成和使用
- [四、Memory Consolidator:记忆如何从事实长成 persona](#四、Memory Consolidator:记忆如何从事实长成 persona)
-
- [1. 每层生成时,不只看孩子,也看近期同层历史](#1. 每层生成时,不只看孩子,也看近期同层历史)
- [2. 不同层必须承担不同语义职责](#2. 不同层必须承担不同语义职责)
- [3. Stratified Scheduling:实时写事实,按时间边界写模式](#3. Stratified Scheduling:实时写事实,按时间边界写模式)
- 五、复杂度自适应召回:问题决定要看树的哪些层
-
- [1. Recall Planner:先判断问题要事实、模式还是全层证据](#1. Recall Planner:先判断问题要事实、模式还是全层证据)
- [2. L1 双通道激活:语义匹配与关键词匹配互补](#2. L1 双通道激活:语义匹配与关键词匹配互补)
- [3. Hierarchical Recall:从命中的事实沿父链找上下文](#3. Hierarchical Recall:从命中的事实沿父链找上下文)
- [4. Recall Gating:读取时遗忘,而不是删除存储](#4. Recall Gating:读取时遗忘,而不是删除存储)
- 六、实验设置:主张建立在哪些评估上
- [七、主实验:TiMem 在哪里真正领先](#七、主实验:TiMem 在哪里真正领先)
-
- [1. LoCoMo:四类问题都领先,时间与单跳提升明显](#1. LoCoMo:四类问题都领先,时间与单跳提升明显)
- [2. LongMemEval-S:总体领先,但并非每个类别第一](#2. LongMemEval-S:总体领先,但并非每个类别第一)
- 八、消融实验:为什么细节层与抽象层都不能少
-
- [1. Planner 与 Gating:少召回不等于召回得好](#1. Planner 与 Gating:少召回不等于召回得好)
- [2. 层级架构:只有摘要和只有碎片都不够](#2. 层级架构:只有摘要和只有碎片都不够)
- 九、效率与参数:在线上下文省了,离线构建并非免费
-
- [1. 召回长度与延迟](#1. 召回长度与延迟)
- [2. 完整树的构建开销](#2. 完整树的构建开销)
- [3. Segment 大小:更细更准,也意味着更多节点](#3. Segment 大小:更细更准,也意味着更多节点)
- [十、Memory Manifold:高层记忆真的形成了 persona 吗](#十、Memory Manifold:高层记忆真的形成了 persona 吗)
- 十一、案例分析:高层画像如何帮助反事实问题
- [十二、与 Agent Memory 系列的横向比较](#十二、与 Agent Memory 系列的横向比较)
- [十三、工程启发:怎样迁移到 Coding、Tool 与 Multi-Agent](#十三、工程启发:怎样迁移到 Coding、Tool 与 Multi-Agent)
- 十四、局限性与我的理解
- 十五、总结
- 参考资料
前言
长期陪伴型 Agent 面临的麻烦,不只是历史对话越来越长,也不是简单地"搜不到某一句话"。更棘手的是:用户今天说的一件事,可能要到数周以后才表现为稳定偏好;某个阶段的选择,可能又会被下一阶段的新经历修正。如果系统只保留平铺的事实片段,它可以记得许多局部,却很难回答"这个人一贯喜欢什么""这种倾向最近是否变化""过去哪些经历共同塑造了现在的选择"。
此前的 Agent Memory 工作已经探索了事实抽取、笔记链接、图结构、多粒度检索和主动回访。TiMem 选择了另一条非常明确的轴:时间不是记忆条目的附属元数据,而是决定记忆如何被逐层整合的骨架。 它把单轮事实沿着 session、day、week、profile 的时间跨度不断压缩,让短期经历逐渐形成长期模式;查询时再根据问题复杂度,决定需要回到多细或多高的层级。
TiMem 的唯一核心增量可以概括为:用具有严格时间包含关系的五层 Temporal Memory Tree,把原始交互逐级巩固成事实、事件、模式和 persona,并让查询复杂度动态控制层级召回,从而同时保留可核实细节与长期人物画像。 论文中的提示词巩固、分层调度、语义与词法双通道检索、Recall Planner 和 Recall Gating,都是为"时间层级化巩固"这条主线服务。
零、论文基本信息
- 论文名称:TiMem: Temporal-Hierarchical Memory Consolidation for Long-Horizon Conversational Agents
- 发表平台:Findings of the Association for Computational Linguistics: ACL 2026
- 代码仓库 :TiMem
- 作者:Kai Li, Xuanqing Yu, Ziyi Ni, Yi Zeng, Yao Xu, Zheqing Zhang, Xin Li, Jitao Sang, Xiaogang Duan, Xuelei Wang, Chengbao Liu, Jie Tan
一、背景与问题:为什么"带时间戳的向量库"还不够
设想用户半年里多次谈到音乐。第一次只是说最近在听古典乐;随后又表现出对现代音乐的兴趣;几周以后,他在工作、放松和社交场景中选择的音乐不同。若系统把每一句话独立存储,查询"给我推荐一些音乐"时,最相似的一条可能碰巧来自很久以前,或者只反映某个瞬时情境。若系统只维护一份不断覆盖的用户画像,又可能把例外写成长期偏好,或丢失画像背后的原始证据。
这暴露了三组矛盾:
- 细节与抽象:原始片段可核实,却碎片化;persona 简洁稳定,却可能过度概括。
- 新鲜与稳定:最近一次表达重要,但长期重复出现的模式也重要。
- 准确率与上下文成本:复杂问题需要跨层证据,简单事实问题不应召回整棵树。
很多外部记忆方法虽保存时间戳,却仍按语义相似度聚类或检索,时间只用于排序或过滤。TiMem 的出发点是:若要让短期事件真正"巩固"为长期人物特征,父记忆覆盖的时间区间应该显式包含子记忆,抽象过程也应该遵循 session、日、周、月等时间边界,而不是只把语义相似的内容混在一起。
先看 Figure 1,可以直观理解它如何将对话流、巩固和按复杂度召回放进同一条时间轴。

Figure 1:TiMem 框架概览。对话从 Segment 逐层巩固到 Profile,查询则按 Simple、Hybrid 或 Complex 选择不同层级的记忆。
这张图最重要的不是"有五种颜色的节点",而是两条相反方向的流:写入时由细到粗、由短期到长期;读取时从细粒度证据激活出发,再按问题需要向祖先层级扩展。高层画像不能替代底层事实,底层事实也无法单独承担所有长期个性化。
二、相关工作:TiMem 与已有层级记忆差在哪里
长上下文与参数化压缩方法扩大模型一次能读的内容,却不等同于可持续更新、跨 session 的外部记忆。Mem0、MemoryBank 等强调事实抽取、更新与检索;MemGPT、MemoryOS、MemOS 使用操作系统或多层存储的隐喻管理上下文;RAPTOR、MemTree 形成树状或层级表示;A-MEM、Nemori、RMM 等引入自组织或更主动的记忆机制;Zep、Theanine 等还显式处理实体和时间知识。
因此,TiMem 不是"第一种层级记忆"。它更具体的区别在于:
- 层级由真实时间跨度的包含关系约束,而非主要由语义聚类形成;
- 每一层有不同的巩固目标,从事实逐渐过渡到行为模式和 persona;
- 查询不是固定召回同一组层,而是由 Planner 判断问题复杂度,再沿已激活的 L1 叶子取相应祖先;
- Gating 在读取时做一次"临时遗忘",过滤与当前问题无关、重复或冲突的候选。
最近邻对照不是单一方法。与 MemoryOS 相比,TiMem 的层级具有更明确的时间包含与逐级语义变换;与 RAPTOR/MemTree 相比,树不是按纯语义相似性递归聚类;与 MemGAS 相比,TiMem 选择的是时间层级和问题复杂度,而不是为同一记忆的多种粒度计算连续路由权重。
三、方法总览:五层时间树如何形成和使用
TiMem 包含三个部分:Temporal Memory Tree(TMT)定义时间层级;Memory Consolidator 通过每层不同的提示词生成记忆;Memory Recall 先规划查询复杂度,再从 L1 激活叶子、向选定层级传播,最后用 LLM 过滤候选。
Figure 2 给出了比 Figure 1 更完整的组件连接。理解后续公式前,需要先确认三条路径:左侧是写入输入,中间是层级结构,右侧是查询读取。

Figure 2:TiMem 架构。左侧 Consolidator 按层生成记忆;中间 TMT 维持时间包含;右侧 Planner、Hierarchical Recall 和 Gating 生成最终记忆上下文。
论文把 TMT 写为:
T = ( M , E , τ , σ ) \mathcal T=(\mathcal M,\mathcal E,\tau,\sigma) T=(M,E,τ,σ)
其中 M = ⋃ i = 1 L M i \mathcal M=\bigcup_{i=1}^{L}\mathcal M_i M=⋃i=1LMi 是按 L L L 层划分的记忆节点, E \mathcal E E 是父子边; τ ( m ) = t s t a r t , t e n d \tau(m)=t_{\\mathrm{start}},t_{\\mathrm{end}} τ(m)=tstart,tend 是节点覆盖的连续时间区间, σ ( m ) \sigma(m) σ(m) 是文本与嵌入形式的语义记忆。论文实际使用五层:
- L1 Segment:单个用户---助手交互中的具体事实;
- L2 Session:一个会话内部去重后的事件摘要;
- L3 Daily:一天内的情境、习惯和重复兴趣;
- L4 Weekly:跨日变化的行为特征和偏好模式;
- L5 Profile:按月增量更新的稳定个性、偏好与价值观。
TMT 有三项结构约束。第一,父节点的时间范围必须包含子节点:
τ ( m u ) ⊇ τ ( m v ) , ( m u , m v ) ∈ E \tau(m_u)\supseteq\tau(m_v),\qquad (m_u,m_v)\in\mathcal E τ(mu)⊇τ(mv),(mu,mv)∈E
第二,越高层的节点数量越少,即 ∣ M i ∣ ≤ ∣ M i − 1 ∣ |\mathcal M_i|\leq|\mathcal M_{i-1}| ∣Mi∣≤∣Mi−1∣。第三,父节点语义不是简单向量平均,而由本层指令 I i I_i Ii 对子记忆生成:
σ ( m u ) = LLM ( { σ ( m v ) } , I i ) \sigma(m_u)=\operatorname{LLM}(\{\sigma(m_v)\},I_i) σ(mu)=LLM({σ(mv)},Ii)
所以 TiMem 的"树"既是时间索引,也是一条语义加工链。
四、Memory Consolidator:记忆如何从事实长成 persona
1. 每层生成时,不只看孩子,也看近期同层历史
第 i i i 层的巩固函数为:
Φ i : C i × H i × I i → M i \Phi_i:\mathcal C_i\times\mathcal H_i\times\mathcal I_i\rightarrow\mathcal M_i Φi:Ci×Hi×Ii→Mi
式 1 中, C i \mathcal C_i Ci 是下层孩子, H i \mathcal H_i Hi 是本层近期历史, I i \mathcal I_i Ii 是该层提示词。输入孩子使高层记忆有底层证据;输入同层历史则让连续两个时间窗口不会完全割裂。论文所有层都保留最近 w i = 3 w_i=3 wi=3 条同层记忆。
对时间分组 g ∈ G i g\in\mathcal G_i g∈Gi,第 i ≥ 2 i\geq2 i≥2 层的孩子是时间范围落在 g g g 中的下层节点:
C i ( g ) = { m ∈ M i − 1 : τ ( m ) ⊆ g } \mathcal C_i(g)=\{m\in\mathcal M_{i-1}:\tau(m)\subseteq g\} Ci(g)={m∈Mi−1:τ(m)⊆g}
同层历史为:
H i = { m − j ( i ) : 1 ≤ j ≤ w i } \mathcal H_i=\{m_{-j}^{(i)}:1\leq j\leq w_i\} Hi={m−j(i):1≤j≤wi}
例如 L3 要生成某一天的记忆,它会查看当天的 L2 session 记忆,也查看最近三条 L3 日记忆。这使模型能写出"今天延续了此前的跑步习惯"之类的变化,而不是孤立总结当天。
2. 不同层必须承担不同语义职责
L1--L2 的提示目标是事实巩固:保留人物、事件、数值、日期,合并 session 内重复内容。L3--L4 开始观察演化模式:哪些兴趣重复、哪些偏好改变、哪些情境经常伴随某种行为。L5 进一步形成稳定 persona,但仍应基于下层证据更新,而非凭一次表达直接下结论。
这是 TiMem 与"一段对话连续总结五次"的关键区别。如果每层只是长度更短的同义改写,高层不会带来新结构。层级有效的前提是提示词确实让不同时间尺度学习不同概念。论文不需要额外 fine-tuning,但代价是巩固质量受通用 LLM 与提示词约束。
3. Stratified Scheduling:实时写事实,按时间边界写模式
TiMem 使用两级调度:L1 在线生成,默认每一个用户---助手 turn 立即形成 Segment;L2--L5 在 session 结束、一天结束、一周结束或月度 Profile 窗口结束时触发。这样既避免每来一句话就重算整棵树,也避免长时间不写底层事实。
这里的时间边界是人为预设、便于复现的工程选择,不是从对话密度或事件变化中自适应学出的。对聊天频率不均的用户,"一天"和"一周"不一定是合适的认知尺度:某用户一天说 100 轮,另一用户一月只说两轮。论文也把自适应时间边界列为未来方向。
五、复杂度自适应召回:问题决定要看树的哪些层
1. Recall Planner:先判断问题要事实、模式还是全层证据
Planner 用一次 LLM 调用把查询 q q q 映射成复杂度 c c c 与关键词集合 K K K:
p : Q → C × K , q q u a d c ∈ { simple , hybrid , complex } p:Q\rightarrow C\times K,qquad c\in\{\text{simple},\text{hybrid},\text{complex}\} p:Q→C×K,qquadc∈{simple,hybrid,complex}
论文把 L1--L2 视为事实层 L f a c t \mathcal L_{\mathrm{fact}} Lfact,L3--L4 视为模式层 L p a t t \mathcal L_{\mathrm{patt}} Lpatt,L5 视为画像层 L p r o f \mathcal L_{\mathrm{prof}} Lprof。三个召回范围为:
S ( simple ) = L f a c t ∪ L p r o f S(\text{simple})=\mathcal L_{\mathrm{fact}}\cup\mathcal L_{\mathrm{prof}} S(simple)=Lfact∪Lprof
S ( hybrid ) = L f a c t ∪ L p a t t p a r t i a l ∪ L p r o f S(\text{hybrid})=\mathcal L_{\mathrm{fact}}\cup\mathcal L_{\mathrm{patt}}^{\mathrm{partial}}\cup\mathcal L_{\mathrm{prof}} S(hybrid)=Lfact∪Lpattpartial∪Lprof
S ( complex ) = L f a c t ∪ L p a t t ∪ L p r o f S(\text{complex})=\mathcal L_{\mathrm{fact}}\cup\mathcal L_{\mathrm{patt}}\cup\mathcal L_{\mathrm{prof}} S(complex)=Lfact∪Lpatt∪Lprof
Simple 仍然包含 L5,因为一句很短的问题也可能询问稳定喜好。Hybrid 加入部分 L3;Complex 可以访问更广的 L3、L4。附录 Table 7 给出实际预算:三类查询均最多激活 20 个 L1 和 1 个 L5;Simple 另取 4 个 L2;Hybrid 再取 2 个 L3;Complex 可取 L2:8、L3:4、L4:2。
Planner 的意义不是"复杂问题多取一些"这么简单,而是提前决定哪些抽象层具有资格进入候选。风险也很明确:把复杂问题误判为 Simple 会漏掉中间模式层,把简单问题误判为 Complex 会扩大噪声和成本。
2. L1 双通道激活:语义匹配与关键词匹配互补
召回先从最细的 L1 叶子开始。每条 Segment 的分数结合向量语义相似度和 BM25 词法匹配:
s ( m , q , K ) = λ s s e m ( m , q ) + ( 1 − λ ) s l e x ( m , K ) s(m,q,K)=\lambda s_{\mathrm{sem}}(m,q)+(1-\lambda)s_{\mathrm{lex}}(m,K) s(m,q,K)=λssem(m,q)+(1−λ)slex(m,K)
式 7 中, s s e m s_{\mathrm{sem}} ssem 是嵌入余弦相似度,能处理改写; s l e x s_{\mathrm{lex}} slex 是基于 Planner 关键词的 BM25,能抓住精确名字、日期和稀有词。默认 λ = 0.9 \lambda=0.9 λ=0.9,表明系统更依赖语义通道,但保留 10% 词法信号。Top- k 1 k_1 k1 Segment 构成 Ω 1 ( q , K ) \Omega_1(q,K) Ω1(q,K),主设置 k 1 = 20 k_1=20 k1=20。
附录敏感性实验中, λ = 0.7 , 0.8 , 0.9 , 1.0 \lambda=0.7,0.8,0.9,1.0 λ=0.7,0.8,0.9,1.0 的 LoCoMo LLJ 分别为 73.96、74.55、75.30、74.68。纯语义(1.0)略低于 0.9,说明精确词法信号有小幅但稳定的补充作用;0.7--1.0 的波动不大,也说明结论并非只靠一个非常脆弱的权重。
3. Hierarchical Recall:从命中的事实沿父链找上下文
对每个被激活的 L1 叶子 m m m,系统收集 Planner 允许层级中的祖先:
A ( m , c ) = { m ′ ∈ M : m ⪯ m ′ , ℓ ( m ′ ) ∈ S ( c ) } \mathcal A(m,c)=\{m'\in\mathcal M:m\preceq m',\ \ell(m')\in S(c)\} A(m,c)={m′∈M:m⪯m′, ℓ(m′)∈S(c)}
m ⪯ m ′ m\preceq m' m⪯m′ 表示 m ′ m' m′ 是 m m m 的祖先。完整候选集合为:
Ω c ( q , K ) = Ω 1 ( q , K ) ∪ ⋃ m ∈ Ω 1 ( q , K ) A ( m , c ) \Omega_c(q,K)=\Omega_1(q,K)\cup\bigcup_{m\in\Omega_1(q,K)}\mathcal A(m,c) Ωc(q,K)=Ω1(q,K)∪m∈Ω1(q,K)⋃A(m,c)
这是 TiMem 的一个关键选择:系统不是直接在 L5 Profile 中搜一句答案,而是先用具体事实定位时间分支,再沿分支带回 session、日、周和画像。这让高层抽象与原始证据有一条可追踪的父子路径,也避免全局召回大量与当前问题无关的 Profile 片段。
不过,它也意味着"正确高层记忆的召回"依赖至少一个正确 L1 叶子先被激活。如果问题措辞与所有底层 Segment 相差很远,祖先传播不会凭空修复入口错误。
4. Recall Gating:读取时遗忘,而不是删除存储
候选形成后,Gating 再用一次 LLM 调用判断每条记忆是否保留:
Ω ϕ ( q , c ) = { m ∈ Ω c ∣ ϕ ( m , q , c ) = r e t a i n } \Omega_{\phi}(q,c)=\{m\in\Omega_c\mid\phi(m,q,c)=\mathrm{retain}\} Ωϕ(q,c)={m∈Ωc∣ϕ(m,q,c)=retain}
Simple 查询更强调精确、保留更少;Complex 查询允许更宽的上下文。保留项最后按层级与层内时间距离排序:
Ω f i n a l ( q , c ) = sort ( Ω ϕ ( q , c ) , key = ( ℓ ( m ) , ∣ t q − t m ∣ ) ) \Omega_{\mathrm{final}}(q,c)=\operatorname{sort}\left(\Omega_{\phi}(q,c),\operatorname{key}=(\ell(m),|t_q-t_m|)\right) Ωfinal(q,c)=sort(Ωϕ(q,c),key=(ℓ(m),∣tq−tm∣))
这里 t m = t e n d ( m ) t_m=t_{\mathrm{end}}(m) tm=tend(m),表示记忆区间结束时间。论文称其为 recall-time forgetting:它只是这次回答不带入某些记忆,并没有从数据库永久删除。因而 TiMem 解决了"本次上下文太长",但没有解决存储随时间无限增长的问题;作者也明确承认缺少 storage-time forgetting。
六、实验设置:主张建立在哪些评估上
论文使用两个长对话记忆基准。LoCoMo 包含 10 个用户组、平均跨越六个月,使用 1,540 道题,分为 Single-Hop、Temporal、Open-Domain 和 Multi-Hop。LongMemEval-S 含 500 段合成长对话、500 道题,覆盖知识更新(KU)、多 session(MS)、单 session 助手/偏好/用户信息(SSA/SSP/SSU)和时间推理(TR)。
基线是 MemoryBank、A-MEM、Mem0、MemoryOS 和 MemOS。为统一比较,所有方法使用 gpt-4o-mini-2024-07-18 做记忆巩固与召回,Qwen3-Embedding-0.6B 做嵌入,召回预算 k = 20 k=20 k=20;主回答模型也是 gpt-4o-mini,LongMemEval-S 另报告 GPT-4o-2024-11-20。主要指标是 LLM-as-a-Judge(LLJ)准确率,LoCoMo 还报告 F1 和 ROUGE-L。
LLJ 分数报告均值与波动,但论文没有把它描述成严格统计显著性检验。LoCoMo 采用 Mem0 的评测提示;LongMemEval-S 使用官方模板,其原 benchmark 报告该 Judge 与人工判断一致率超过 97%。这提高了可信度,却不等于所有开放式答案都不会受 Judge 偏好影响。
七、主实验:TiMem 在哪里真正领先
1. LoCoMo:四类问题都领先,时间与单跳提升明显
Table 1 很宽,下面用可编辑表格重制 LLJ 主列,并保留 F1、ROUGE-L 总体结果。
方法 Single-Hop Temporal Open-Domain Multi-Hop Overall MemoryBank 46.18 29.34 36.67 33.36 39.77 A-MEM 52.82 60.87 43.75 38.37 51.29 Mem0 62.09 59.25 37.70 50.14 57.79 MemoryOS 68.37 52.46 46.67 52.76 60.79 MemOS 76.07 69.47 45.14 56.85 69.24 TiMem 81.43 77.63 52.08 62.20 75.30 \begin{array}{l|rrrr|r} \text{方法}&\text{Single-Hop}&\text{Temporal}&\text{Open-Domain}&\text{Multi-Hop}&\text{Overall}\\\hline \text{MemoryBank}&46.18&29.34&36.67&33.36&39.77\\ \text{A-MEM}&52.82&60.87&43.75&38.37&51.29\\ \text{Mem0}&62.09&59.25&37.70&50.14&57.79\\ \text{MemoryOS}&68.37&52.46&46.67&52.76&60.79\\ \text{MemOS}&76.07&69.47&45.14&56.85&69.24\\ \text{TiMem}&\mathbf{81.43}&\mathbf{77.63}&\mathbf{52.08}&\mathbf{62.20}&\mathbf{75.30} \end{array} 方法MemoryBankA-MEMMem0MemoryOSMemOSTiMemSingle-Hop46.1852.8262.0968.3776.0781.43Temporal29.3460.8759.2552.4669.4777.63Open-Domain36.6743.7537.7046.6745.1452.08Multi-Hop33.3638.3750.1452.7656.8562.20Overall39.7751.2957.7960.7969.2475.30
Table 1:LoCoMo 各题型 LLJ 准确率(%)。 TiMem 在四类问题及总体分数上均高于所比基线。
总体上,TiMem 75.30 比最强基线 MemOS 69.24 高 6.06 个百分点。Temporal 从 69.47 提升至 77.63,Single-Hop 从 76.07 到 81.43,Multi-Hop 从 56.85 到 62.20;Open-Domain 的最佳基线是 MemoryOS 46.67,TiMem 为 52.08。F1=54.40、ROUGE-L=54.68,也高于基线最高值 45.36 和 47.41。
这些结果与方法动机相符:时间题直接受益于明确的时间层级;多跳题同时需要底层事实与高层上下文。不过,主表不能单独判断提升究竟来自 TMT 结构、额外 LLM Gating,还是更精心的提示词;后续消融才负责拆开它们。
2. LongMemEval-S:总体领先,但并非每个类别第一
方法 KU MS SSA SSP SSU TR Overall MemoryBank 21.79 9.77 50.00 12.00 29.71 17.14 21.04 A-MEM 72.82 40.30 87.50 39.33 82.86 36.09 55.44 Mem0 78.72 66.17 51.79 50.00 94.29 49.17 64.96 MemoryOS 56.15 44.81 78.18 51.33 81.14 53.38 58.04 MemOS 76.67 58.80 67.86 50.67 93.71 65.11 68.68 TiMem 86.16 70.83 82.14 63.33 95.71 68.42 76.88 \begin{array}{l|rrrrrr|r} \text{方法}&\text{KU}&\text{MS}&\text{SSA}&\text{SSP}&\text{SSU}&\text{TR}&\text{Overall}\\\hline \text{MemoryBank}&21.79&9.77&50.00&12.00&29.71&17.14&21.04\\ \text{A-MEM}&72.82&40.30&87.50&39.33&82.86&36.09&55.44\\ \text{Mem0}&78.72&66.17&51.79&50.00&\mathbf{94.29}&49.17&64.96\\ \text{MemoryOS}&56.15&44.81&78.18&51.33&81.14&53.38&58.04\\ \text{MemOS}&76.67&58.80&67.86&50.67&93.71&65.11&68.68\\ \text{TiMem}&\mathbf{86.16}&\mathbf{70.83}&82.14&\mathbf{63.33}&95.71&\mathbf{68.42}&\mathbf{76.88} \end{array} 方法MemoryBankA-MEMMem0MemoryOSMemOSTiMemKU21.7972.8278.7256.1576.6786.16MS9.7740.3066.1744.8158.8070.83SSA50.0087.5051.7978.1867.8682.14SSP12.0039.3350.0051.3350.6763.33SSU29.7182.8694.2981.1493.7195.71TR17.1436.0949.1753.3865.1168.42Overall21.0455.4464.9658.0468.6876.88
Table 2:LongMemEval-S 各任务 LLJ(GPT-4o-mini,%)。 TiMem 总体最高,但 SSA 低于 A-MEM,SSU 与 Mem0 的差异也很小。
总体从 MemOS 的 68.68 提升到 76.88,差 8.20 点;知识更新从最佳基线 78.72 到 86.16,多 session 从 66.17 到 70.83,时间推理从 65.11 到 68.42。反例同样重要:SSA(单 session 助手信息)中 TiMem 82.14,低于 A-MEM 的 87.50;SSU 中 TiMem 95.71,只比 Mem0 的 94.29 高 1.42 点。对于本来靠一条具体事实就能回答的问题,深层时间巩固未必产生明显优势。
更换外部回答模型为 GPT-4o-2024-11-20 后,TiMem 总体达到 78.96,仍然最高;SSA=85.71 也高于 A-MEM 的 83.21。但 SSP=55.33 低于 A-MEM 的 56.67,知识更新 87.69 也只略高于 A-MEM 的 87.18。由此可见,类别优势会随回答模型改变,不能只引用总体分。
八、消融实验:为什么细节层与抽象层都不能少
1. Planner 与 Gating:少召回不等于召回得好
KaTeX parse error: Undefined control sequence: \multicolumn at position 35: ...|rr} \text{配置}&\̲m̲u̲l̲t̲i̲c̲o̲l̲u̲m̲n̲{2}{c|}{\text{L...
Table 3:Recall Planner 与 Recall Gating 消融。 自适应规划和过滤同时启用时,准确率与召回长度的组合最好。
Gating 很能压缩:LoCoMo Simple 从 3,710.30 token 降到 367.68,但准确率也从 73.51 降到 71.88。这说明上下文更短本身不是成功,过窄的层级范围会让过滤器无证可留。固定 Hybrid + Gating 是固定范围里最好的一项,达到 73.38;再由 Planner 逐题选范围后升到 75.30,同时只召回 511.25 token。
Planner 单独使用却没有优势:无 Gating 时 LoCoMo 只有 72.99,召回 4,411.09 token。真正有效的是 Planner 决定候选范围,Gating 再做查询相关筛选,两者形成组合,而非任一模块单独解决问题。
2. 层级架构:只有摘要和只有碎片都不够
KaTeX parse error: Undefined control sequence: \multicolumn at position 49: ...层}&\text{召回方式}&\̲m̲u̲l̲t̲i̲c̲o̲l̲u̲m̲n̲{2}{c|}{\text{L...
Table 4:层级与平铺架构比较。 完整 L1--L5 配合层级召回最佳;仅高层摘要的结果最差。
"只用高层记忆"在 LoCoMo 只有 51.23 或 57.08,远低于完整层级 75.30,说明 persona 和周模式无法取代细粒度事实。仅 L1 的 Flat 在 LongMemEval-S 为 57.40,换成 Hierarchical Recall 达到 72.40;完整 L1--L5 再升到 76.88。这证明两个方向都成立:底层为回答提供事实锚点,高层为复杂问题提供跨时间的语义背景。
需要注意 Table 4 的"仅 L1 + Hierarchical Recall"看起来有些反直觉,因为若系统真的只剩一层,就不存在向 L2--L5 传播。结合论文叙述,它更适合被理解为以 L1 为基本记忆、使用层级式的召回/过滤流程,而不是拥有完整高层内容。论文没有进一步澄清该标签,因此不应过度解释这一行的结构含义。
九、效率与参数:在线上下文省了,离线构建并非免费
1. 召回长度与延迟
KaTeX parse error: Undefined control sequence: \multicolumn at position 35: ...|rr} \text{方法}&\̲m̲u̲l̲t̲i̲c̲o̲l̲u̲m̲n̲{2}{c|}{\text{L...
Table 6:在线召回效率。 TiMem 在 LoCoMo 召回文本最短,在 LongMemEval-S 位居第二;其延迟并非最低。
论文所称 LoCoMo 上减少 52.20%,是用 511.25 与 Mem0 的 1,070.10 token 相比。它不是相对所有方法的平均降幅,也不是存储或构建 token 降幅。LongMemEval-S 上 MemOS 的 1,091.51 token 反而短于 TiMem 的 1,270.62。延迟方面,TiMem P50 为 2.35 秒和 1.76 秒,处于可用范围,却不及 MemoryOS 的 1.66、1.63 秒,也不及 MemOS 的 1.69、1.64 秒。
Planner 和 Gating 每个查询各需一次 LLM 调用;层级遍历本身不调用 LLM。因此它把外部回答模型的上下文缩短了,却增加了回答前的控制流程。是否划算取决于大模型上下文成本、并发目标和正确率要求。
2. 完整树的构建开销
数据集 仅 L1 调用 完整 TMT 调用 额外调用 增幅 LoCoMo 2871 3717 846 29.5 % LongMemEval-S 124272 155333 31061 25.0 % \begin{array}{l|rrrr} \text{数据集}&\text{仅 L1 调用}&\text{完整 TMT 调用}&\text{额外调用}&\text{增幅}\\\hline \text{LoCoMo}&2871&3717&846&29.5\%\\ \text{LongMemEval-S}&124272&155333&31061&25.0\% \end{array} 数据集LoCoMoLongMemEval-S仅 L1 调用2871124272完整 TMT 调用3717155333额外调用84631061增幅29.5%25.0%
Table 5:五层 TMT 的巩固调用数。 高层记忆为在线召回节省上下文,但使离线/增量构建调用增加约四分之一到三成。
这是理解"效率"的必要补充。TiMem 并非凭空压缩:它预先支付更多巩固计算,将大量原始交互加工成 session、日、周和 Profile。对于会被频繁查询的长期用户,这笔成本可以摊薄;对于只问一两次的短会话,建五层树可能得不偿失。论文没有给出按 API 价格折算的端到端总成本或能耗。
3. Segment 大小:更细更准,也意味着更多节点
附录 Table 9 中,L1 从 1 turn 增至 2、4、8 turns,LoCoMo LLJ 从 75.30 降至 73.64、70.00、65.26;F1 从 54.40 降至 46.94。细粒度 Segment 更容易保留原子事实,也更容易准确定位;粗粒度把多个事件混在一起,检索和 Gating 都更难判断相关性。
但是,1 turn 最优不等于任何生产系统都应无条件采用最细切分。它也造成 2,871 个 LoCoMo L1 节点和 124,272 个 LongMemEval-S L1 节点,进一步推动存储、嵌入与构建成本。论文展示了准确率方向,没有绘制完整的"节点数---成本---准确率"Pareto 曲线。
十、Memory Manifold:高层记忆真的形成了 persona 吗
作者用 UMAP 与流形指标观察不同层的嵌入几何。看 Figure 3 时应把它当成表示分析,而不是 QA 正确性的直接证明。

Figure 3:层级记忆嵌入分布。LoCoMo 高层逐渐区分不同用户,LongMemEval-S 高层则向共享 persona 结构收缩。
LoCoMo 中,L1 到 L5 的内在维度从 73 降到 13,Silhouette Score 从 0.093 升到 0.574,分离比从 0.30 升到 2.14。作者将其解释为逐层提炼用户特征。LongMemEval-S 的 Spread 从 0.692 降到 0.345,有效半径从 0.789 降到 0.444,说明合成数据中共享模板噪声被压缩。
两组数据出现相反几何效果并不矛盾:真实用户的差异应被放大,来自共享模板的合成 persona 则可能收敛。但 UMAP 具有可视化参数依赖,聚类更清晰也不自动意味着信息更真实。更重要的是,LoCoMo L5 的 Trustworthiness 从 L4 的 0.972 降到 0.818,LongMemEval-S 从 L2 的 0.942 降到 L5 的 0.789;高层压缩不可避免地改变了局部邻域。这部分更适合支持"表示被重塑",不足以单独证明"persona 绝对正确"。
十一、案例分析:高层画像如何帮助反事实问题
论文 Figure 4 问:"如果 Caroline 成长过程中没有得到支持,她还会想从事心理咨询吗?"这不是查一条事实,而是连接"曾得到支持""这段经历产生影响""因此想帮助相似处境的人""形成职业愿望"的因果链。

Figure 4:反事实案例。TiMem 同时召回带时间戳的细粒度证据和月度 Profile,并过滤无关项;碎片式基线遗漏支持经历与职业动机之间的联系。
TiMem 找到 5 月和 6 月的底层事件,并用 5 月 Profile 串起"获得支持 → 想帮助他人 → 探索心理健康职业"的关系,回答"很可能不会";Mem0 展示的片段虽包含职业与支持相关记录,却没有形成完整联系,给出相反答案。
这个案例很好地展示了层级设计的目标,但它是作者选取的成功例,不构成独立统计证据。更值得追问的是:若高层 Profile 错误地把时间相关性写成因果关系,反事实答案会更加自信地出错。论文没有专门评估因果归纳或 Profile 幻觉率。
十二、与 Agent Memory 系列的横向比较
| 方法 | 主要关注点 | 与 TiMem 的关键差别 |
|---|---|---|
| A-MEM | 把经历转为带属性、可链接并持续演化的记忆笔记 | A-MEM 更强调语义链接和笔记网络;TiMem 用时间包含确定父子关系,并把不同时间尺度分配给事实、模式和 persona。A-MEM 是本文实测基线。 |
| MAGMA | 结构化记忆及多类关系组织 | MAGMA 可表达更丰富关系;TiMem 的结构更受时间轴约束,优势在可预测的逐层巩固和召回路径。 |
| CoM | 记忆形成、整合和使用的整体过程 | TiMem 把"整合"具体化为 session/day/week/profile 调度,但没有学习自适应边界。 |
| ReMemR1 | 写入时主动回看历史,修正边读边记的信息损失 | TiMem 的同层历史窗口也用于保持连续,但重点是按固定时间尺度向上巩固,而不是为当前写入自由回访任意旧记忆。 |
| Mem²Evolve | 用交互反馈驱动记忆演化 | TiMem 会月度更新 Profile,却未用任务成败或用户反馈学习怎样修正巩固策略。 |
| MemGAS | 同一对话的多粒度表示及按查询动态加权 | 两者都反对固定粒度;MemGAS 在多个粒度视图间软路由,TiMem 先由 L1 命中,再沿时间树取祖先。 |
| CompassMem | 事件图上的逻辑关系导航与多路径搜索 | CompassMem 解决"沿什么逻辑关系继续找";TiMem 解决"跨什么时间尺度逐步巩固与回忆"。逻辑图更灵活,时间树更规整。 |
这张比较表用于定位方法,而不是说 TiMem 已在相同条件下打败所有这些工作。论文主实验只比较 MemoryBank、A-MEM、Mem0、MemoryOS 和 MemOS。它没有与 MemGAS、CompassMem 等采用同一回答模型、同一 token 预算的直接实验。
十三、工程启发:怎样迁移到 Coding、Tool 与 Multi-Agent
以下是基于 TiMem 机制的工程推演,不是论文已经验证的结果。
对 Coding Agent,L1 可以保存一次明确的代码修改、测试失败或命令输出;L2 汇总一次开发 session;L3 汇总当天解决的问题;L4 形成一周的架构决策与风险;L5 则是项目长期约束和团队偏好。查询"为什么这个模块一直避免使用全局状态"时,高层可给设计习惯,底层提交和测试用于核实。时间树节点必须绑定 commit、branch 和文件版本,不能让 LLM 摘要代替源代码证据。
对 Tool Agent,L1 是单次工具调用及返回,L2 是完整任务执行,L3/L4 是周期性工作模式,L5 是稳定操作偏好。简单问题如"上次导出文件在哪"只需事实层;复杂问题如"为什么每周同步总在周一失败"需要跨日模式。Gating 应保留原始错误码和时间,不可只留下抽象趋势。
对 Multi-Agent,每个 Agent 的局部观察可作为 L1,共同任务阶段作为 L2,周期性协作模式作为高层;Planner 决定是查看具体执行记录还是团队层面的稳定分工。不过 TMT 默认每棵树隔离一个用户,直接迁移到多 Agent 时还需来源、权限和冲突机制,否则某个 Agent 的错误总结会被上层巩固成共享 persona。
TiMem 最值得复用的一条原则是:长期抽象必须能回到其时间范围内的原始证据,而召回抽象时不应默认舍弃细节。 工程系统可以在每个高层节点中保留 child IDs、摘要版本与生成模型,支持审计和局部重建。
十四、局限性与我的理解
第一,固定日/周/月边界便于工程实现,却不一定符合真实事件节奏。一次重要的人生变化可能发生在一小时内,一个稳定偏好也可能要几年才形成。交互频率差异会使同样的时间窗口承载完全不同的信息量。论文承认需要自适应边界,但尚未给出解决方案。
第二,高层巩固可能产生不可逆的信息污染。每层都由 LLM 对子记忆和近期同层历史生成文本。如果 L2 漏掉关键限定,L3--L5 会在错误摘要上继续抽象;如果 Profile 把偶发行为误写成稳定性格,后续个性化可能形成自我强化。论文分析了嵌入几何,却没有直接评价每层摘要的事实一致性、persona 精确率或错误传播率。
第三,读取时遗忘不能控制存储增长。完整 TMT 比仅 L1 多 25%--30% 的巩固调用,所有层还会持续累积。Gating 只缩短当前回答上下文,不删除陈旧、矛盾或低价值记忆。论文把 storage-time forgetting 列为限制,这也是长年部署必须补上的模块。
第四,Planner 与 Gating 是两个额外 LLM 判断点。它们可以改善准确率与上下文长度,却会增加延迟、成本和不确定性。Table 3 显示 Gating 在范围过窄时会明显掉分,说明过滤并非总是安全;论文没有报告 Planner 三分类准确率、Gating 保留/删除的人工精确率或错误案例分布。
第五,主结果依赖 LLJ,且部分结论受回答模型影响。附录 Table 8 中,GPT-4o-mini 内部记忆模型配 Qwen3-235B-A22B 回答时,LLJ-G 高达 80.45,但 F1 只有 42.17;换不同 Judge 仍趋势类似,却说明生成风格和评分器会影响"准确率"。论文没有人工复核所有主结果,也没有显著性检验。
第六,"persona 分离"需要谨慎对待。LoCoMo 的用户嵌入更分开,可能说明个性被提炼,也可能放大了模型对用户的刻板归纳。真实产品中,高层画像应允许用户查看、纠正和删除,还要标注证据时间与置信度,而不能把生成的 Profile 当成永久真实身份。
我的理解是,TiMem 的价值并不是证明"五层"是最终答案,而是把记忆巩固从模糊概念变成一个可实现、可消融的流程:事实何时写入,何时向上总结,父子如何保持时间对应,问题如何决定抽象层,回答前如何丢弃噪声。未来更合理的方向可能是保留这套可追踪骨架,同时让时间边界、层数、巩固触发与遗忘策略由数据和风险动态决定。
十五、总结
TiMem 用 Segment、Session、Daily、Weekly、Profile 五层时间树,把短期对话逐步巩固为长期 persona;查询时先在 L1 结合语义与词法找事实,再按问题复杂度带回对应祖先,并通过 Gating 控制最终上下文。它在 LoCoMo 和 LongMemEval-S 上取得 75.30% 和 76.88% 总体 LLJ,并将 LoCoMo 相对 Mem0 的召回文本缩短 52.20%。与此同时,完整树增加 25%--30% 的构建调用,延迟并非所有基线中最低,也尚未解决存储遗忘与高层摘要错误传播。
一句话概括:TiMem 把"时间连续性"升级为 Agent Memory 的结构约束,让零散事实能够逐级形成长期画像,又能在回答时沿树回到具体证据。