Memory Benchmark Harness Audit — 大白话版
完整版见 audit_memory_benchmarks.md(367 行,带 file:line 代码引用)。这份只讲做决定要知道的事。
一句话结论
只有 AMemGym 有真 harness 可借鉴。MemoryArena 是 dataset-only,Mem2ActBench 是 data-construction-only。
GAME.md 提到的”借鉴现有 benchmark”基本就是借鉴 AMemGym 一家。
三个意外发现
-
MemoryArena 没开源 harness。 项目主页 (memoryarena.github.io) 上的 “Code” 链接是字面意义的
https://github.com占位符。HuggingFace 上只有 700 行 dataset (ZexueHe/memoryarena,5 个 subset)。Stanford+UCSD+UIUC+Princeton 的论文,没有 evaluation runner。 -
AMemGym 根本没有 memory abstraction。 没有
MemoryStoreABC,没有 adapter protocol。Memory 完全活在每个BaseAgentsubclass 里——换 backend = 写新 agent class。Mem0Agent123 行包了mem0.Memory.from_config()。Memory 是 agent-shaped 不是 service-shaped——这跟主流叙事相反,但代码里就是这样。 -
AMemGym 的 LLM simulator 自己承认会泄露 ground-truth。
env/gen.py:152-164是一个 20-retry validation loop + schema-hiding prompt,只为阻止 LLM 在 user turn 里说漏 user state。这是我们坚持 YAML NPC 的最强外部证据——LLM simulator 真的会泄。
三个 benchmark 一句话定位
- AMemGym:唯一有完整 harness 的。
BaseAgentABC 6 个方法(act/add_msgs/load_state/save_state/answer_question/reset)。answer_question是 read-only inference——这正是我们 hook-triggered test session 需要的(测试时不能 mutate memory)。直接照抄。 - MemoryArena:dataset 设计可借鉴(interdependent subtasks with causal dependency),但 harness 自己写。
- Mem2ActBench:5 个 dataset construction script + JSONL,没 runner。唯一值得借鉴的是 per-argument grounding tags(
explicit/inferred/default)——可以映射到我们 IPaS 的 High/Medium/Low confidence。
六个工程问题谁怎么答
| AMemGym | MemoryArena | Mem2ActBench | |
|---|---|---|---|
| Q1 PA↔memory 接口 | Single ABC, agent owns memory | 未发布 | 未发布 |
| Q2 PA↔env 接口 | 纯 LLM 对话,无 tool | 未发布 | Schema-validated tool calls (no execution) |
| Q3 Harness↔PA | Black-box messaging + filesystem checkpoint per “period” | 未发布 | 未发布 |
| Q4 Diagnostic trace | External re-query at每 period,分 write_pos vs read_pos | 论文级 SR/PS only | Per-arg grounding tag at build time |
| Q5 Simulator | LLM with 20-retry leak guard | Frozen QA | Frozen reverse-generated query |
| Q6 已知坑 | 配置硬编码、match factory 难扩展 | 没 code | API key checked in (04_qa_construction.py:30) |
MCP-server vs MemoryArena env:tradeoff
- MCP 赢的地方:interaction style attributes(verbosity, proactivity, transparency)只能在 live execution 里观察到。MemoryArena 的 frozen QA 根本测不了 interaction style。
- MCP 输的地方:reproducibility 更脆弱,工程成本更高(要维护 stateful server + reset hook)。
- 解法:MCP server 当 live shell,里面跑 MemoryArena 风格的 task DAG(subtask 之间有 causal dependency)。两边都要。
YAML NPC vs AMemGym LLM simulator:tradeoff
- YAML 赢的地方:reproducibility 完全可控;无 simulator bias 污染 eval;ground truth 就是 script 本身。
- YAML 输的地方:(1) caricature 风险——脚本+CharCard 太硬可能让 PA “检测不到 drift”实际是用户表达太机械;(2) 覆盖盲区——脚本只能编进作者想到的 drift 信号。
- 解法:preference-bearing turn 完全脚本化;filler turn(“听起来不错”、复述)允许 templated 或 tightly-prompted LLM 填充。AMemGym 的
add_msgsoff-policy mode (eval/overall.py:81-95) 是 hybrid 的好模板。
实施建议(v1 优先级排序)
- 照抄 AMemGym
BaseAgentABC,但act→respond,加observe(env_event)让非对话刺激(calendar 通知、tool result)能进;保留answer_question的 read-only 区分。 - Agent factory 用 dict registry,不用
match。AMemGym 都被迫 comment-outa-mem和nemori两个 case (assistants/__init__.py:37-41)。 save_state/load_state强制 manifest 文件(写了什么 + checksum)。AMemGym 的 freeform pickle 一旦 mem0 目录损坏要等 eval crash 才知道。- Diagnosis runner 单独 entry point。AMemGym 把
eval/diagnosis.py和eval/overall.py分开,可以不重跑 on-policy 直接换诊断逻辑——我们 Per-attribute Judge 也该这样。 - Off-policy replay 当 first-class,不是 flag。一个 persona × 一个 PA backend × 一个 simulator seed 应该产生 frozen interaction log,所有其他 memory backend 都能 re-ingest——这是 Judge 跨条件可比的结构基础。
- MCP server 必须有
reset(seed)+snapshot()/restore(snapshot)三件套。否则 IQI 的 “session 10 vs 25 vs 50” 在跨 run 之间不可比。 - 不要复用 AMemGym 的 MC-answer eval format 给 IQI。
OVERALL_PROMPT让 agent 从列表里挑——这把 interaction style 折叠没了。坚持 PrefIx-adapted free-form + Judge,贵也认。 - 加 memory-dependency probe(per scenario × attribute)。GAME.md 的 personalization-necessity check 是跨 persona 维度的;Mem2ActBench 的
solvable_without_memory思路是跨 memory 条件的——两个都要。 - Mem2ActBench 的
explicit/inferred/defaultgrounding tag 直接借——映射到 IPaS extractor 的 confidence + evidence type。 - Forced event nodes 借 AMemGym 的 two-stage 思路:state evolution 离线生成(确定性),然后 live replay。映射到我们 forced event node 几乎完美。
一句话给写论文用
“Of three concurrent agentic-memory benchmarks (AMemGym, MemoryArena, Mem2ActBench), only AMemGym ships a usable harness; none target interaction preference, and none use within-subject preference shifts as a controlled stimulus.”