Agent Memory Leaderboard
来自 AML 团队

AML 官方博客

来自 Agent Memory Leaderboard 团队的研究、技术实践与最新动态。

一起探索智能体记忆。
← 返回全部文章

AML榜前方案解读|ChronoHybridMem:从对话到可验证的记忆证据

方案聚焦16 分钟阅读

记忆之巅排行榜

Agent Memory 没有唯一答案。

本次方案解读系列邀请记忆之巅排行榜 AML 榜前的开源、商业记忆方案,围绕AML第一期挑战赛,拆解各自如何写入、组织、检索和治理记忆。我们关注的不是排名,而是成绩背后的技术选择、工程取舍与适用边界。






摘要


Agent 的长期记忆不应只返回“相似的历史文本”,而应返回能够支撑当前回答、并可追溯到原始对话的证据。ChronoHybridMem v0.2.0 围绕这一目标,采用原始消息保留、来源绑定事实、SQLite FTS5 双路检索与受约束候选重排的组合设计。在第一期 Agent Memory ChallengeAcademic / Textual Memory 赛道中,正式评测版本 v0.2.0 获得 Rank 5、Overall 44.33。正式评测结束后,我们又围绕结构化查询规划、集合感知重排、证据图、召回失败审计和选择性门控进行了多轮本地研究。本文既介绍正式版本的核心设计,也总结这些赛后实验带来的正向进展、负结果与下一步路线。

核心主张:记忆系统的输出应是“可验证的证据链”,而不是缺少来源的模型摘要。




问题:

Agent 需要的是证据,

不只是相似文本




设想历史对话中先后出现两条信息:“芋头把一包饼送给了图图。”以及“芋头在法院工作。”当用户追问“送饼的人在哪里工作?”时,系统不能只凭单个关键词命中回答。它需要先确认送饼的人是芋头,再找到芋头的工作地点,并能够给出支持这两个判断的历史证据。

这类问题反映出长期记忆系统的三个基础要求:其一,原始对话不能被不可追溯的摘要完全替代;其二,检索需要兼顾原文细节与结构化表达;其三,模型的作用应被限制在候选证据的判断和排序,而不是自由生成新的记忆。




系统总览:

从对话写入到记忆证据




图 1|ChronoHybridMem v0.2.0 从对话消息到可验证记忆证据的核心流程。a,对话消息通过 POST / Add 接口幂等写入,并保留用户、消息与时间标识。b,系统同时保存原始消息(RAW)和模型抽取的结构化事实(FACT);每条事实通过source_message_id 指向来源消息。c,查询在精确 user_id 边界内分别进入原始消息 FTS5 与事实 FTS5 两条全文检索通道,候选结果经合并和去重后形成候选池。d,模型仅对已有候选进行排序,并受用户归属、候选 ID 与来源关系约束。e,系统返回原始消息、结构化事实及来源链接组成的排序证据集。




核心设计




原始消息与来源绑定事实

写入阶段首先将对话原文持久化为 RAW 记录;在模型模式下,系统再从原文中提取边界清晰、可被原文支持的 FACT 表达。FACT 不替代 RAW,而是通过 source_message_id 与其来源消息绑定。这样,事实便于检索,原文负责保留上下文和核验依据。

  • RAW 保留人物关系、原始措辞、时间线索和上下文细节。

  • FACT 提供更紧凑的、便于检索的事实表达。

  • source_message_id 使每条事实都可以回到产生依据的地方,避免记忆成为孤立摘要。

SQLite FTS5 双路候选检索

Search 请求从一开始便携带精确的 user_id 约束。系统分别在原始消息索引和事实索引中执行FTS5/BM25 检索:前者擅长保留关系和原文语境,后者擅长命中简洁、明确的事实表达。两路候选融合后再去重,形成供排序模块使用的证据池。

  • 原始消息通道弥补事实抽取可能带来的语境压缩。

  • 事实通道提升跨表述、跨轮次问题中的检索直接性。

  • 双路候选避免让单一路径决定全部记忆召回结果。

受约束的候选重排

在正式评测版本中,gpt-4o-mini 的职责是对已经召回的候选进行判断与排序。模型接收当前查询和候选集合,只能返回其中真实存在的 ordered_ids;系统会再次校验候选 ID 是否存在、是否属于当前用户,以及事实是否保有合法来源。模型不直接生成最终答案,也不能新建记忆条目。

设计边界:模型负责“在已有证据中做选择”,存储层负责“保证证据真实、隔离且可追溯”。




为什么这套设计强调可验证性




ChronoHybridMem 的目标不是单纯增加记忆条目,而是缩短“当前回答”与“历史依据”之间的距离。对上例而言,系统返回的证据包含识别送饼者的原始消息、说明工作地点的结构化事实及其来源链接;下游 Agent 可据此回答,并按需回到原文核验。

这一机制将可靠性要求落实到工程边界中:幂等写入降低重复记忆污染风险;SQLite WAL 支持稳定的持久化读写;API 与 SQL 查询均以 user_id 为隔离边界;当模型模式所需配置缺失时,系统明确失败,而不是静默改用未知行为。




评测口径:

正式成绩与赛后研究严格分开




本文开头所列 Rank 5、Overall 44.33,对应 v0.2.0。后文 P1 至 P5 的结果均为正式评测之后完成的本地研究,主要使用 LoCoMo 公开数据与本地 Qwen3-4B 代理模型,用于比较检索机制、验证工程边界和筛选研究假设;它们不是新的官方排行榜成绩。

我们采用分层证据口径:官方结果用于说明已被平台验证的历史表现;全量 1977 题本地运行用于比较同一代理模型下的方法变化;固定 20、固定 100、固定 200 和合成分层仅用于机械检查、诊断和升级门控。只有在同一数据、同一模型、同一查询计划和相同调用预算下完成成对比较,才讨论方法增益。

research-v0.3.0 与 research-v0.4.0 同样属于赛后本地研究里程碑。两者均在 1,977 题LoCoMo 严格证据轮次匹配协议下评测,不是新的官方提交,也不改变 v0.2.0 对应 Rank 5、Overall 44.33 的事实。

所有赛后数字都标注为“本地代理结果”。没有通过预先门槛的方案保留代码与实验记录,但不会进入默认路径。




v0.2.0 之后:

从增加模块转向可证伪迭代




赛后研发并不是简单叠加更大的模型或更多检索通道。我们把每一阶段都写成一个可证伪的问题:它解决什么失败类型、是否增加模型调用、能否保持来源可追溯、出现退化时是否能够关闭。由此形成 P1 至 P5 的连续演进。

在进入 P1 至 P5 的结构化检索研究之前,项目还经历了 research-v0.3.0 与 research-v0.4.0 两个本地方法里程碑。它们分别验证了“混合召回”与“专用重排器”两条路线,并为后续把问题进一步拆分为查询规划、召回、融合和排序奠定了实验基础。

前置里程碑 A:research-v0.3.0——词法—稠密融合与轻量交互重排

v0.3.0 保留原有 Add/Search API 与原始证据返回契约,在 Search 阶段并行使用 Porter 规范化BM25 和 BAAI/bge-large-en-v1.5 稠密检索。两路候选分数在各自候选集合内进行 z-score 标准化,并以 alpha=0.3 融合;随后仅对融合结果的 Top-5 使用 answerai-colbert-small-v1 执行 MaxSim 晚交互重排。整个流程只重排已有候选,最终仍返回原始消息,不生成答案。

在 1,977 题 LoCoMo 严格证据轮次匹配评测中,v0.3.0 达到 Hit@1 0.4355、Hit@3 0.6186、Hit@10 0.7577、MRR 0.5183。相较同协议下的无模型词法基线 Hit@1 0.3359,提升 0.0996。固定 200 题的池大小实验还表明,ColBERT Top-5 优于 Top-10 和 Top-20;更大的重排池虽然可能提高深层召回,却会损害首位排序,因此最终冻结为 Top-5。

前置里程碑 B:research-v0.4.0(v0.4.0-local)——时间感知键与专用 Qwen重排

v0.4.0 将主要矛盾从候选召回转向前排排序:在 v0.3.0 的词法—稠密候选池上,使用本地Qwen3-Reranker-4B 的 yes/no 首词概率逐一判断 query—evidence 相关性,并对 Top-10候选排序。模型通过回环 OpenAI 兼容服务运行,只输出相关性概率和既有证据顺序;模型权重、数据与凭据均不进入仓库或 Docker 镜像。

该阶段同时加入时间感知稠密键:将消息日期作为受控元数据加入检索表示,权重固定为 0.5。时间键单独使用时在全量数据上未提高 Hit@1,但扩大了 Top-10 候选覆盖;与专用 Qwen 重排结合后,这部分新增召回被转化为小幅且稳定的前排收益。最终 v0.4.0 在 1,977 题上达到Hit@1 0.5225、Hit@3 0.6808、Hit@10 0.7653、MRR 0.5856;相对 v0.3.0,Hit@1 提升0.0870、MRR 提升 0.0673。

▍research-v0.3.0 与 research-v0.4.0:全量 1,977 题结果

表 1 阶段结果对比|research-v0.3.0 与 research-v0.4.0 均采用 1,977 题 LoCoMo 严格证据轮次匹配。v0.3.0 验证词法—稠密融合与 ColBERT Top-5 重排;v0.4.0 验证时间感知稠密键与专用 Qwen yes/no 重排。以上均为赛后本地研究结果,不属于官方排行榜。

完成上述两个模型侧里程碑后,项目进入下表所示的 P1 至 P5 阶段:研究重点从继续叠加模型,转向对查询规划、集合选择、证据图、召回失败和选择性门控逐项归因。

表 2 ChronoHybridMem 赛后 P1–P5 的研究演进|各阶段分别围绕查询规划、集合感知重排、证据图、召回失败诊断和选择性门控展开。所有结果均来自本地配对实验,不属于官方排行榜成绩;只有通过预设门槛的方案才进入默认路径,未通过的模块保留用于复现与失败分析。其中,P4-A q2 为当前最强本地代理基线。

P1:结构化查询规划

P1 将单条自然语言查询拆为 intent、core terms、expansions、entities、temporal cues 与最多四项 evidence needs。不同字段分别进入既有词法通道,证据需求则作为后续实验可复用的、范围受限的查询侧信号。P1 不增加 Search 阶段的模型调用次数,也不改变 Add/Search API;当规划输出不完整时,系统回退到安全的一阶段检索。

在固定 200 题的本地筛选中,结构化规划器相对平面规划器将 Hit@1 从 0.545 提升到 0.565,MRR 从 0.6145 提升到 0.6292,Hit@10 保持 0.740。随后在 1,977 题全量本地运行中,P1 达到 Hit@1 0.5761、Hit@3 0.7157、Hit@10 0.7618、MRR 0.6479。

P2:集合感知重排

多跳问题往往需要多条互补证据,而普通排序容易把表达相近、来源重复的记录同时推到前排。P2 因此尝试在 P1 的既有候选中,根据 evidence needs 的新增覆盖程度进行确定性选择;它不新建候选、不改变候选内容,也不增加模型调用。固定 20 题中,P2 的 Hit@1 与 P1 持平,Hit@3 和 MRR 有所改善。

但在冻结查询计划的 35 个公开合成分层案例中,Hit@1 从 1.00 降至 0.8571,MRR 从 1.00 降至 0.9286。原因是“覆盖更多需求词”并不等于“更适合作为第一证据”。因此 P2 被明确拒绝进入默认路径,只保留为可复现实验和失败分析。这一结果促使我们把研究重点从前排多样性转向召回失败的精确归因。

P3:证据图与来源见证

P3 探索用证据图表示人物、地点、组织、关系与时间更新,但坚持一个约束:每个节点、实体提及和关系边都必须由原始消息独立见证,搜索最终仍只返回原始证据。这样可以避免把模型抽取的、无法核验的关系直接当作真实记忆。

严格关系图 P3-A 在固定切片的 419 条原始消息中只得到 3 条可独立见证的关系边,说明高精度约束下图结构十分稀疏。P3-B1 进一步构建来源局部的实体提及锚点,覆盖 363/419 条消息(86.63%),但固定 20 题的 Hit@1 从 0.40 降至 0.35,Hit@10 从 0.55 降至 0.50。P3 因此没有成为全局默认检索通道。它留下的核心经验是:图结构的价值不能由边数或覆盖率证明,必须通过成对检索收益与来源审计共同证明。

P4:从失败归因到当前最强本地基线

P4 首先建立逐题召回审计。固定 100 题中共有 30 个 Top-10 召回失败:20 个属于 fusion miss,即相关证据曾被至少一个通道找到,却没有进入融合后的候选池;8 个属于 channel miss,即所有词法通道都没有找到;只有 2 个属于 reranker drop。这个分布说明主要瓶颈并不是模型把正确候选排错,而是证据没有稳定进入重排池。

针对最大的 fusion miss 桶,P4-A 将 P1 已生成的每条 evidence need 作为独立、有界的检索通道,并为其保留固定 2 个候选位置,再与其他候选共同进入原有重排流程。该方法复用同一次查询规划,不增加 Search 模型调用,也不生成新证据。

▍P4-A q2:全量 1,977 题结果

表 3|P1 与 P4-A q2 在同一 1,977 题 LoCoMo、本地 Qwen3-4B 代理口径下的全量对比。P4-A 将 8 个原本位于 Top-10之外的问题救回 Top-10,其中 4 个直接进入 Top-1;Hit@1、Hit@3、Hit@10 与 MRR 均小幅上升,因此被保留为当前最强的赛后本地代理基线。以上数字不属于官方排行榜。

P5:选择性门控的负结果

P4-A 的逐题诊断显示,一部分问题可以通过候选置换获得 Top-1,但另一部分原本正确的 Top-1也可能被替换。P5 因此尝试只在 Top-1 与 Top-2 接近且次位候选具有更强证据信号时交换两者。我们依次检验通道计数、query token 重叠、temporal/correction strata 和模型自报 confidence。

四类信号均未通过固定 200 题门槛:通道计数使 Hit@1 变化 -0.005,query 重叠为 -0.035,strata 收窄为 -0.010;confidence 门控不触发,而要求本地模型输出置信度的提示本身使 Hit@1下降 0.045。结论是,无标准答案泄漏时,这些简单信号无法可靠判断“何时应该交换”。P5 保留为默认关闭的消融代码,门控式置换方向停止继续调参。




下一步工作:

围绕新规则重建评测与研发闭环




比赛规则已经更新,因此下一阶段首要工作是把新规则转换为可执行、可审计的协议,然后再判断哪些模块适合进入候选版本。技术路线仍坚持“来源可追溯、候选有边界、实验可成对、失败可回退”四项原则。

路线摘要:近期先冻结新规则下的评测协议与 recall_miss 诊断集;中期验证来源受约束的邻接、桥接及时序召回;长期形成同时覆盖效果、成本、来源完整性与稳定性的模型无关评测框架。

优先解决抽象关系与多跳问题的 channel miss

P4 审计发现,完全没有被词法通道找到的案例集中在关系、身份、性格、决定与多跳类问题。下一步将研究来源受约束的桥接召回:先以查询实体定位一组原始消息,再只沿同一用户、同一会话或被原文见证的关系进行一次有限扩展。该方法必须设置候选上限、遍历深度和可复现平局规则,不能把模型生成的关系当作证据。

将邻接上下文从“全局扩展”改为“条件触发”

早期 P1.1 的无条件相邻轮次扩展在固定切片上没有带来增益。这并不等于邻接上下文没有价值,而是说明对所有问题统一扩展会引入大量无关候选。后续只在查询包含代词指代、前后事件关系或同一会话连续事实时启用来源局部的邻接恢复,并以成对诊断验证它究竟恢复了哪些 gold、又挤出了哪些已有证据。

建立时序、纠错与规则状态的可审计表示

长期对话中的事实会变化:用户可能修改时间、撤销计划、纠正姓名或补充适用条件。下一阶段拟将状态变化建模为“原始陈述—更新/纠错—当前有效状态”的证据链,同时保留全部历史来源。

系统输出当前状态时,必须能够解释它覆盖了哪条旧信息、依据是什么,而不是仅保留最后一次摘要。

让评测同时覆盖效果、成本与可靠性

后续实验除 Hit@K、MRR 和 Evidence Recall 外,还将持续记录候选池来源、模型调用次数、异常回退、数据库摘要、用户隔离、结果稳定性和运行成本。规则适配版本将固定模型标识、服务端点类别、超时与失败策略,保证同一结果能够由独立运行复核。对于未通过门槛的方案,代码可以保留为默认关闭的消融。




对 Agent Memory 的阶段性认识




长期记忆的关键不在于将历史对话压缩得越短越好,而在于让系统在真正需要回忆时,能够找到正确、完整且可核验的证据。原始消息、来源绑定事实、双路候选检索和受约束排序并不是彼此独立的功能模块:它们共同构成了从写入、召回到证据返回的闭环。

P1 至 P5 的结果还带来三点阶段性认识。第一,查询规划带来的稳定收益可能比盲目增加检索器更重要;第二,覆盖率高、结构复杂或解释性强,并不自动等于检索效果好,必须通过成对实验验证;第三,负结果不是研发终点,而是帮助系统收缩到更清晰边界的证据。正因为 P2、P3 和P5 的部分假设被否决,P4 才能把精力集中到真正占主导的召回失败。

我们认为,面向 Agent 的长期记忆应把“可追溯的事实表达”“原始来源保留”“候选范围约束”“精确用户隔离”和“可证伪的评测协议”视为基础能力。只有这样,记忆系统才能从回答中看似相关的文本检索,进一步走向能够支撑复杂任务的证据系统。




结语




ChronoHybridMem v0.2.0 尝试回答一个朴素但关键的问题:当 Agent 回忆历史时,系统能否说明“为什么找到了这些信息”?赛后 P1 至 P5 的迭代进一步表明,可验证记忆不仅是一套存储结构,也是一种研发方法:每个新模块都要说明证据从哪里来、解决哪类失败、付出多少成本,以及在何种条件下应被否决。下一阶段,我们将依据更新后的比赛规则重新冻结评测协议,在不牺牲来源完整性与用户隔离的前提下,继续推进多跳召回、时序状态与模型无关评测。

项目与团队信息


内容说明:本文所涉及的系统架构、技术实现、数据分布、相关讨论等由 ChronoHybridMem 团队提供,仅代表该团队对自身方案的介绍与理解,不代表 Agent Memory Leaderboard(AML)的官方技术立场或推荐意见。

AML 仅对文中引用的对应评测周期、赛道、组别、参评版本及正式榜单成绩进行核验。

本文不构成对该方案在所有场景下的效果保证、产品推荐或采购建议。