记住几百次对话,却学不会你的习惯:HABIT-Bench 戳破了 Agent Memory 的窗户纸

你有没有这种体验:跟一个 AI 助手聊了几十轮,明确纠正过它"我不吃香菜"、"转账前一定要二次确认",结果下次它照样踩坑。更让人泄气的是,这不是模型没记住——你去翻记录,那几句话明明都在。记住和使用,中间隔着一条巨大的鸿沟。

上交 LUMIA Lab 和上海人工智能实验室的这篇 HABIT-Bench(arXiv:2610.24520),就是把这条鸿沟量化出来的一篇工作。结论相当扎心:8 个主流记忆系统跑下来,最好的 macro 准确率只有 33.61%,而随机乱猜是 25%。更要命的是,哪怕把标注好的证据直接喂给模型,准确率也只有 39–58%。

核心摘要

这篇论文提出了 HABIT-Bench,一个专门评测"智能体从纵向弱证据中归纳用户习惯"的基准。它构造了 114 个合成用户、37,152 个会话的超长历史,横跨 Food、Finance、Software、Travel 四个领域,用 3,328 个四选一任务考察记忆系统能否处理习惯的适用范围、临时例外、时间漂移和"未被采纳的建议"。评测发现:最好的记忆方法(A-MEM,Qwen3-235B)只有 33.06% 的 macro 准确率,和朴素 BM25 检索(32.50%)几乎打平;GLM-5.3-Flash 上"压缩全文塞进上下文"的 Full Memory(41.98%)甚至反超所有记忆方法。这不是一个"刷榜型"基准,而是一面照妖镜——它告诉我们,能访问历史 ≠ 会推断习惯,当前 Agent Memory 的架构假设可能从根上就有问题。如果你在做个性化 Agent,这篇值得细读。

论文信息 - 标题:HABIT-Bench: Evaluating Habit Induction from Longitudinal Weak Evidence in Agent Memory - 作者:Junming Zhang, Rubin Wei, Xu Cheng, Hao Sun, Jiarui Wang, Ruoxi Cheng, Xiquan Wang, Peisong Wu, Mingsong Chen, Zhouhan Lin - 链接:https://arxiv.org/abs/2610.24520 (2026 年 10 月 17 日提交,v2 于 10 月 20 日更新) - 资源:GitHub LUMIA-Group/habit-bench,HuggingFace hollyming/HABIT-Bench


🎯 为什么需要这个基准:现有评测测的都是"查户口"

先搞清楚这篇论文反对什么。

现有的记忆基准——LoCoMo、LongMemEval、MemoryAgentBench、MemoryArena 等等——论文列了 15 个来对比。它们测的东西基本是一个模式:显式事实召回。"用户说过 X"、"用户最喜欢的颜色是什么"——只要检索到位,答案就在原文里躺着。

但真实场景里的用户习惯完全不是这么长的。想想看,"我周五晚上一般点川菜,但如果有同事聚餐就不点"——这个习惯从来不会以一句话的形式出现,它藏在几十次点餐选择的模式里,还附带例外条件。论文把这个能力叫 habit memory:从跨会话的不完整证据里归纳行为默认值,并且搞清楚它的适用范围(scope)、例外(exceptions)、时间有效性(temporal validity)和用户是否真正认可(endorsement)。

这里面有三个很毒的坑,也是我看完觉得"这基准设计得确实懂行"的地方:

  1. 重复出现 ≠ 可以泛化。用户周二点了十次轻食,不代表他周末也想吃轻食——习惯有边界。
  2. 助手建议过 ≠ 用户采纳了。历史记录里躺着一条"推荐您试试基金定投",用户当时没理它。记忆系统如果把这个当成用户偏好,后面就会瞎推荐。
  3. 习惯会变。用户 2023 年用顺丰,2025 年改成了京东物流。记住"用户用顺丰"反而是错的。

HABIT-Bench 框架总览

图 1:HABIT-Bench 总体框架。(A)现有基准测的是显式事实、单会话焦点、表面匹配,HABIT-Bench 测的是重复弱线索、范围边界、罕见例外和时间漂移;(B)基准构造管线:从任务型对话数据集提取种子,加上受控习惯图(scopes/exceptions/dependencies/drift),合成数千次交互的"伪用户生命线",刻意制造弱证据、例外、情境范围和漂移四种难度来源;(C)受控评估流程:超长历史 → 被测记忆系统 → 检索/归纳出的记忆 → 固定 answerer 模型 → 结构化四选一输出与诊断指标。注意"固定 answerer"这个设计——所有记忆方法用同一个推理引擎,保证了比较的公平性。


🏗️ 基准是怎么搭出来的:114 个"伪用户"的一生

说实话,构造部分是我觉得这篇论文工程量最大的地方。

直接拿真实用户数据不行——你无法知道"正确答案"是什么,也没法控制证据的强弱。作者的做法是合成受控历史:从真实任务型对话数据集(CookDial、MultiDoGO、Taskmaster-2)提取种子任务,再叠加一个人工设计的习惯图(habit graph),定义每个习惯的支持证据怎么散布、适用边界在哪、什么时候漂移、哪些建议是"被用户拒绝的诱饵"。

最终规模:114 个用户、37,152 个会话、3,328 个探测任务(probes)。

领域 用户数 会话数 探测数 源数据集
Food 30 3,900 630 CookDial
Finance 36 19,440 1,368 MultiDoGO
Software 18 9,720 680 MultiDoGO
Travel 30 4,092 650 Taskmaster-2

四个领域的难度来源是刻意错开的。Food 考的是情境边界:每个稳定习惯配 10 个信号会话,包括 3 次确认复用、2 个边界观察、1 个单例例外、还有 1 个被拒绝的助手建议当诱饵。Finance 历史拉到四年半(2021.1–2025.6,每用户 540 个会话),考多习惯组合决策——944 个双习惯 + 424 个三习惯探针,还要解析"as-of 时点"的历史状态反转。Software 考高频漂移:71 条替换链,有的用户经历 6 次习惯替换。Travel 考跨情境迁移,194 个习惯实例分给 30 个用户。

每个 probe 是一个四选一选择题,候选动作的设计就是上面那三个毒坑的具象化:一个应用过时习惯的、一个过度泛化的、一个把未采纳建议当既定事实的,加上正确答案。模型要躲过的不是"找不到信息",而是"用错信息"。

数据质量上,两名评审在 gold-blind 条件下独立标注,第三人裁决。A/B 一致率:Food 99.50%、Finance 100.00%、Software 99.68%、Travel 92.84%。这个一致率相当高了,说明任务的正确答案是良定义的,不是玄学。


🔧 评测设置:8 个记忆系统,一个共享的"裁判"

被测方法分三档。

6 个单存储记忆方法:A-MEM(自主构建记忆表征的 Agentic Memory)、Mem0(生产级长期记忆)、MemOS(记忆操作系统)、MemRL(情景记忆 + 运行时 RL)、LightMem(轻量记忆增强生成)、SeCom(面向个性化对话的记忆构建与检索)。

2 个多存储方法:Letta(就是 MemGPT 那一系)和 MIRIX(多智能体记忆系统)。

检索基线和诊断对照:No Memory(完全无历史)、Full Memory(压缩全文)、Recency-5/10、BM25、Dense RAG(BGE-M3)、Temporal Hybrid RAG;以及两个"开卷"对照——Oracle Evidence(直接给标注证据)和 Oracle Habit State(直接给私有习惯状态)。

关键设计:所有方法摄入完历史后,检索出的上下文交给同一个 answerer 模型做四选一,温度 0、固定 JSON schema。主模型是 Qwen3-235B-A22B 和 GLM-5.3-Flash,指标是四个领域等权的 macro 准确率。这个"共享裁判"的做法很干净——记忆的锅和推理的锅分得开。


📊 实验结果:三个让人坐不住的数字

主实验:33% vs 25%

Qwen3-235B-A22B 主表(精确匹配准确率 %):

方法 Food Finance Software Travel Macro
No Memory 22.38 23.54 24.85 28.31 24.77
Full Memory 48.25 20.54 21.76 33.38 30.99
BM25 45.08 23.03 22.50 39.38 32.50
Dense 39.84 22.08 23.53 39.85 31.32
TH-RAG 45.24 22.37 22.79 38.00 32.10
A-MEM 42.70 22.44 25.74 41.38 33.06
Mem0 32.70 22.95 25.29 33.08 28.51
MemOS 40.32 21.86 21.47 34.77 29.60
MemRL 42.70 23.32 23.24 38.15 31.85
LightMem 28.25 22.81 25.88 31.08 27.01
SeCom 41.11 22.08 22.94 38.31 31.11
Letta 41.59 22.73 23.24 40.92 32.12
MIRIX 26.98 22.73 25.59 34.62 27.48

GLM-5.3-Flash 上 A-MEM 的 macro 是 33.61%,也是最好成绩——但注意,GLM 下的 Full Memory 拿到 41.98%,把所有记忆方法甩在身后。

三个让我觉得"坐不住"的点:

其一,Finance 全军覆没。 Qwen 下 8 个记忆方法在 Finance 上全部低于 No Memory 的 23.54%——给了历史反而比不给还差。你想想看,这意味着记忆系统检索回来的东西不仅没帮上忙,还在误导模型。Finance 恰恰是最需要多习惯组合 + 时点解析的领域,说明当前记忆方法在"证据组合"这个环节是崩的。

其二,记忆系统没打过 BM25。 A-MEM 33.06% vs BM25 32.50%,0.56 个点的差距,考虑到随机种子和方差基本可以视为打平。花了大量 token 构建记忆库、维护记忆表征,最后和一个 2010 年代的关键词检索算法成绩相当。这个数据对做记忆系统的团队来说挺残酷的。

其三,GLM 上 Full Memory 碾压一切。 41.98% vs A-MEM 33.61%。当模型上下文够长、压缩做得够好时,"简单粗暴全塞进去"反而是最优解。这让人怀疑:记忆压缩过程中丢失的"证据—条件"关联,可能正是习惯归纳最需要的东西。

Oracle 实验:给了答案线索也做不对

Table 4 是我觉得全文最有信息量的一张表:

方法 Qwen3-8B Macro Qwen3-235B Macro
No Memory 24.22 24.77
Oracle Evidence 39.20 49.00
Oracle Habit State 94.79 98.86

Oracle Habit State 冲到 98%+,证明 answerer 本身没问题——给它特权信息,它能答对。但 Oracle Evidence(直接给标注好的支持证据)只有 39–58%。

这就排除了一个最方便的借口:"记不住"。证据都摆在那了,模型还是不会用。瓶颈不在检索,在归纳与决策——从散落的弱证据里抽象出"默认值 + 适用条件"这个结构,当前的 LLM 推理本身就做不到位。

证据访问诊断也印证了这一点:Qwen3-32B 下 6 个方法的 Hit@5 只有 37.77%–41.44%,标注证据召回更是低到 11.17%–13.89%,答案和证据同时正确的 Joint A+E 只有 12.92%–16.20%。检索端确实也烂,但就算检索完美,天花板也就在这。

Scaling:堆参数救不了

Qwen 模型规模与准确率

图 2:Qwen3 从 4B 到 235B 的 scaling 曲线。每个方法一组柱,颜色从浅到深对应 4B/8B/14B/32B/235B。A-MEM 从 4B 的 29.41% 爬到 235B 的 33.06%,单调但缓慢;LightMem 在 14B 达到 28.14%、32B 反而掉到 25.04%、235B 又回升到 27.01%——非单调。所有方法在所有规模上都贴着 25% 随机线上方不远处。

模型的解读很直白:模型变大并不带来一致提升。有些方法甚至非单调。这不是一个"等下一代大模型就能解决"的问题,是记忆表征层面缺了东西。

GLM-5.3-Flash 各方法分领域准确率

图 3:GLM-5.3-Flash 上 8 个记忆方法在四个领域的分组柱状图。一个非常一致的规律:Travel(紫色)一柱擎天(44–55%),而 Food(蓝)、Finance(橙)、Software(绿)全部趴在 20–37% 的区间,贴着 25% 随机线。记忆方法的增益高度依赖领域结构——Travel 的习惯更"可迁移",而 Finance/Software 的多习惯组合决策几乎全军覆没。

消融与成本:多检索一点有点用,多塞上下文没用

Qwen3-8B 上的敏感性实验:检索 top-k 从 2 加到 20,A-MEM 从 29.23% 升到 31.21%,Letta 从 28.53% 升到 31.71%——多给点候选有点用。但摄入块从 128 加到 4096 token 没有一致提升——上下文窗口不是瓶颈。

成本账也值得记一下:A-MEM 给每个用户构建记忆要 54.59 小时 + 107.80M LLM token,而查询阶段只要 13.24 分钟 + 3.39M token。构建成本是查询的几十倍,换来的却只有打平 BM25 的成绩。这个 ROI,工程上很难说服人。


🤔 我的判断

先给结论:这是今年我看到的记忆方向里最"诚实"的一篇基准工作,它值钱的不是分数,而是把"记忆系统有用吗"这个问题问到了痛处。

亮点有三个。一个是任务设计真的懂个性化:诱饵选项不是随便凑的——过时习惯、过度泛化、未采纳建议,每一个都对应线上系统真实会犯的错。做过个性化推荐或者 Copilot 产品的人看到这些坑会有共鸣。另一个是 Oracle 分层诊断(Evidence vs Habit State)把"检索失败"和"归纳失败"干净地解耦了,这种诊断设计比单纯报一个分数有价值得多。第三个是够狠的负面结果:敢把"记忆方法打平 BM25"、"Finance 全负收益"这种数字放出来,对社区是好事。

但也有几个地方我觉得要泼点冷水。

合成数据的天花板问题。 所有历史都是从习惯图程序化生成的,证据分布、例外频率、漂移节奏都是设计出来的。真实用户的噪声模式要脏得多——用户会自相矛盾、会随口说说、会试探性采纳再放弃。在这套"干净"合成数据上只有 33%,真实数据上大概率更惨,但具体惨到什么程度,基准本身回答不了。

四选一的评估形式偏窄。 真实 Agent 场景里,习惯的应用往往是生成式的("帮我订一家餐厅"),而不是从四个候选里挑一个。选择题便于自动评分,但它测的是"辨别"而非"运用"。我注意到论文没有开放生成式的评估,这是个可以接受的工程妥协,但结论外推时要小心。

baseline 里没有"人肉最优"。 我挺想知道一个人类标注员读完 540 个会话后能拿多少分——如果人类也只有 60%,那"习惯归纳"本身可能是信息不对称问题;如果人类能到 90%,那机器的 33% 就更难看了。这个人类基线缺席是个遗憾。

还有一点坦率说我没完全想明白:GLM 上 Full Memory 的 41.98% 到底是"压缩历史足够好"还是"GLM 对这个分布过拟合了某种捷径"?论文没有深入拆这个结果,我倾向于前者,但证据不够。

对工程的启发

如果你在做带记忆的 Agent 产品,这篇论文的行动建议很直接:

  1. 别急着上 fancy 的记忆架构。先拿 BM25 + 一个固定 answerer 跑你自己的数据——如果连 BM25 都打不过,花几十万 token 构建记忆库没有意义。
  2. 记忆的存储单元需要重新设计。当前方法存的大多是"事实"或"事件摘要",但习惯需要的是 <默认值, 支持证据, 适用条件, 有效期, 是否被用户认可> 这样的五元组结构。尤其是"未被采纳的建议"必须显式标记——这是所有系统都在踩的坑。
  3. 分领域调预期。如果你的场景接近 Travel(单习惯迁移),记忆系统可能真有用;如果接近 Finance(多习惯组合 + 时点解析),现在的技术还没准备好。

收尾

HABIT-Bench 最有价值的一句话,其实是摘要里那句:"access to past interactions" 和 "ability to infer and appropriately use user habits" 之间存在持续差距。记忆系统的军备竞赛搞了两年,这个基准用 3,328 道精心设计的题告诉我们:我们造出了越来越会"记"的系统,却还没造出会"懂事"的系统。

这大概是记忆方向接下来一两年的真问题:不是怎么存得更多,而是怎么存出"结构"——默认值和它成立的条件之间的关系。谁先把这个表征想清楚,谁就能从 33% 的泥潭里爬出来。

觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我