记住几百次对话,却学不会你的习惯: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)。
这里面有三个很毒的坑,也是我看完觉得"这基准设计得确实懂行"的地方:
- 重复出现 ≠ 可以泛化。用户周二点了十次轻食,不代表他周末也想吃轻食——习惯有边界。
- 助手建议过 ≠ 用户采纳了。历史记录里躺着一条"推荐您试试基金定投",用户当时没理它。记忆系统如果把这个当成用户偏好,后面就会瞎推荐。
- 习惯会变。用户 2023 年用顺丰,2025 年改成了京东物流。记住"用户用顺丰"反而是错的。

图 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:堆参数救不了

图 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% 随机线上方不远处。
模型的解读很直白:模型变大并不带来一致提升。有些方法甚至非单调。这不是一个"等下一代大模型就能解决"的问题,是记忆表征层面缺了东西。

图 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 产品,这篇论文的行动建议很直接:
- 别急着上 fancy 的记忆架构。先拿 BM25 + 一个固定 answerer 跑你自己的数据——如果连 BM25 都打不过,花几十万 token 构建记忆库没有意义。
- 记忆的存储单元需要重新设计。当前方法存的大多是"事实"或"事件摘要",但习惯需要的是 <默认值, 支持证据, 适用条件, 有效期, 是否被用户认可> 这样的五元组结构。尤其是"未被采纳的建议"必须显式标记——这是所有系统都在踩的坑。
- 分领域调预期。如果你的场景接近 Travel(单习惯迁移),记忆系统可能真有用;如果接近 Finance(多习惯组合 + 时点解析),现在的技术还没准备好。
收尾
HABIT-Bench 最有价值的一句话,其实是摘要里那句:"access to past interactions" 和 "ability to infer and appropriately use user habits" 之间存在持续差距。记忆系统的军备竞赛搞了两年,这个基准用 3,328 道精心设计的题告诉我们:我们造出了越来越会"记"的系统,却还没造出会"懂事"的系统。
这大概是记忆方向接下来一两年的真问题:不是怎么存得更多,而是怎么存出"结构"——默认值和它成立的条件之间的关系。谁先把这个表征想清楚,谁就能从 33% 的泥潭里爬出来。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我