☰
52.9%准确率是怎么来的:agent-memory在LongMemEval-S上的评测设计与harness解读
2026/10/7 15:31:25 网站建设 项目流程

52.9%准确率是怎么来的:agent-memory在LongMemEval-S上的评测设计与harness解读

【免费下载链接】agent-memoryLong-term memory runtime for AI agents — plain Markdown as the source of truth, local ranked retrieval, and an independent sleep-time Manage layer. Claude Code and Codex share one store. No API key.项目地址: https://gitcode.com/gh_mirrors/age/agent-memory

agent-memory 是一个为 AI Agent 提供长期记忆的运行时:以纯 Markdown 为唯一事实来源、本地排序检索、独立的睡眠期 Manage 层。本文解读它的官方实验框架 harness 如何在 LongMemEval-S 基准上跑出52.9% 的 W2 臂准确率,以及这个数字背后每一个可复现、可审计的测量细节。

52.9% 到底是哪场实验的产物

先给出结论表(数据来自 README.md 的 "Proof it works" 一节):

臂(arm)池化准确率与 agent-memory 配对比较
agent-memory W2127/240 = 52.9%—
MemCore W286/240 = 35.8%+37/−17, p=0.009 · +35/−14, p=0.004
无记忆7/120 = 5.8%+61/−4 · +60/−4, p<0.001

三个数字拆解得很干净:

  • 120 个 episode × 每臂 2 次考试重放 = 240 次判分。52.9% 就是 127 次判对。
  • 被测宿主是claude -p(Haiku 4.5),评审是经过校准的Sonnet 5。
  • haystack(对话语料)被有界化到每 episode 12 个会话——所以这是"写入策略研究",不是"语料规模研究"。
  • 系统间那一行(MemCore vs agent-memory)写入和读取同时不同,属于端到端比较,README 明确声明它"不授权把差异归因给写入或读取的任何一半"。

W 矩阵:五种写入策略同台对照

harness 把"记忆怎么被写进去"抽象为五种 W 选项,定义在 arms.py 中:

臂模式含义
W0none无记忆(对照组)
W1boundary + blocking会话边界自写,但阻塞任务收尾
W2boundary + non-blocking边界分叉,蒸馏脱离关键路径(胜出者)
W3cold事后冷读归档转录
W4inline对话进行中内联写入

关键设计:W 选项全部是配置项而非代码分支(ADR-006),命令行一个--set SECTION.KNOB=VALUE就能改一个旋钮,所有臂共用同一套评测代码——这是"分数差异只能来自 W"的前提。

harness 评测流水线:从数据集到报告

整套流水线由 main.py 的mem-exp子命令驱动,可以拆成 4 步:

1️⃣ prepare — 有界化语料,一次落盘

prepare命令把 haystack 裁剪到每 episode 12 个会话,且答案证据会话优先保留。裁剪一次、落盘一次,之后所有臂重放完全相同的语料——否则任何比较都无效。

2️⃣ 分层抽样 — 每个臂看到同一份题单

sampling.py 按问题类型分层,默认每层 4 题、固定种子 20260901 抽满 120 题,并对题单做 SHA-256 指纹。run --resume时会核对指纹:换了一组题或换了一个记忆系统,恢复直接拒绝。

3️⃣ run — 并发跑 W × episode 矩阵

每条记录写入runs.jsonl,字段包含正确与否、写入记忆条数、各阶段耗时、检索指纹、episode 指纹(见 metrics.py)。一个值得注意的细节:碰到限流(quota/rate limit)整场矩阵停机,已测结果保留——配额失败是环境失败,不是测量数据,绝不能把剩下每题记成"答错"。

4️⃣ report — 归因守卫

report.py 输出汇总表,并打印一行attribution licensed: true/false。只有当所有臂共享同一个检索指纹和同一个题单指纹时,归因才被授权——这是"数字能不能当结论用"的最后一道闸。

LLM 判卷:如何让一个"噪声仪器"可信

评审本身是实验变量,harness 在 judge.py 里做了三层防护:

  • 5 票多数制:每道题并行投 5 票,有效票中过半 yes 才算对。LLM 评审器是噪声仪器,重复投票就是给噪声定界。
  • 判分规则分三类:ABSENCE(正确答案是"没说过")、STANDARD(偏好型标准)、FACT(事实值)。对 abstention 题,"含糊地猜一个答案"判错——这是记忆系统"自信编造"失效模式的直接探针。
  • 投票在隔离环境进行:每票跑在临时目录里、禁用工具、清空记忆库环境变量,与被测工作区完全隔离。

配套还有两个子命令:

  • calibrate --cases <人工标注题>:评审器没对过已知答案就不算测量仪器,先校准再上岗;
  • regrade:换评审模型后只重新判分、不重跑宿主,判分器升级不花宿主调用成本。

两种考试模式:agentic vs fixed

exam.py 定义了两种考试方式,这一节是理解误差来源的关键:

模式检索由谁驱动特性
agentic宿主自己驱动mem recall最接近真实使用,但宿主搜索行为本身成为测量变量
fixedharness 自己执行检索、拼上下文、单问单答消除了"agent 循环"的自由度,让记忆配置真正可比

文件头注释给出了量级参考:同一冻结配置反复重放 agentic 考试,波动可达±7 题 / 120 题——足以埋没记忆配置之间的差异。所以"配置谁更优"的结论要用 fixed 模式拿,"系统端到端好不好用"用 agentic 模式拿,两者回答的是不同问题。

第二个基准 LoCoMo:为什么值得转换进来

locomo.py 把 LoCoMo 基准转换(而非适配)成与 LongMemEval-S 相同的 episode 形状。理由写在模块 docstring 里:一个第二基准只有问出第一基准问不了的东西才值得存在——LoCoMo 的问题按类别分级,其中包含一类**诚实答案是"对话里根本没说过"**的题目。转换而非适配还保证了 driver、隔离门和报告对"存在第二套题"完全无感知,两套基准才能互相可比。

对应的系统测试在 tests/system/test_locomo.py。

这个数字的诚实边界

README 里有一段必须原样理解的声明:绝对数值不可与公开的 LongMemEval 分数直接对比——因为 haystack 被有界到每 episode 12 会话,52.9% 度量的是"写入策略",不是"语料规模下的检索能力"。系统间行同样只支持端到端结论,不授权拆分归因。理解这两点之后,52.9% 才是一个站得住的数字。

如何自己复现这套 harness

git clone https://gitcode.com/gh_mirrors/age/agent-memory cd agent-memory uv sync --all-packages

核心命令序列(详见 main.py 的mem-exp子命令):

mem-exp prepare --source <LongMemEval-S.json> --target suite.json --sessions 12 mem-exp run --suite suite.json --workspace /tmp/run --arms W0,W2 --host claude-code mem-exp report --workspace /tmp/run

想验证评审器本身,先跑mem-exp calibrate --cases <标注集>;想检查本机哪些宿主可用,跑mem-exp hosts --probe。


小结:52.9% 不是一次跑分,而是一整套工程化测量——有界语料一次落盘、分层固定种子抽样、W 矩阵配置化、5 票校准评审、指纹归因守卫、双基准(LongMemEval-S + LoCoMo)互为补充。它示范的与其说是一个准确率,不如说是"如何让一个 AI 记忆系统的评测数字经得起审计"。

【免费下载链接】agent-memoryLong-term memory runtime for AI agents — plain Markdown as the source of truth, local ranked retrieval, and an independent sleep-time Manage layer. Claude Code and Codex share one store. No API key.项目地址: https://gitcode.com/gh_mirrors/age/agent-memory

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询