首个针对多模态、多来源个性化参照记忆问答的基准,涵盖约 4 年的长时间跨度,支持基于证据的检索与回答。
🚀 快速开始 • 🤖 智能体结果 • 🧠 记忆系统 • 📊 Oracle / NIAH • 🏆 在线榜单 • 📖 引用
📄 论文: According to Me: Long-Term Personalized Referential Memory QA
🌐 项目主页: https://atmbench.github.io/
🏆 在线榜单: https://atmbench.github.io/leaderboard.html
agent_systems/)——为 Claude Code、Codex、Pi、OpenCode 和 OpenClaw 提供隔离的、按问题独立运行的运行器。🏆 最新结果请查看 ATM-Bench 在线榜单。 下方静态表格可能落后于最新提交。
ATM-Bench-Hard 上的通用智能体结果如下。QS 分数使用 gpt-5-mini 作为主要评判模型。
| 智能体 | 模型 | QS (Acc.) ↑ | 总 Token 数 ↓ | 成本 (USD) ↓ |
|---|---|---|---|---|
| Claude Code | Claude Opus 4.7 (max) | 46.6% | 6.9M | $9.58 |
| Claude Code | Claude Opus 4.6 | 33.8% | 4.9M | $8.01 |
| Claude Code | Claude Opus 4.7 | 39.5% | 5.0M | $7.70 |
| Claude Code | Claude Opus 4.7 (w/o SGM) | 23.1% | 17.0M | $19.84 |
| Claude Code | Claude Opus 4.8 | 41.6% | 4.4M | $7.49 |
| Codex | GPT-5.2 | 39.7% | 15.5M | — |
| Codex | GPT-5.2 (w/o SGM) | 16.3% | 22.2M | $9.22 |
| Codex | GPT-5.5 | 41.4% | 16.1M | $27.17 |
| Codex | GPT-5.5 (xhigh) | 48.1% | 22.9M | $39.74 |
| OpenCode | GLM-5 | 27.0% | 16.9M | $14.92 |
| OpenCode | Qwen3.5-397B-A17B | 24.5% | 12.1M | $4.93 |
| OpenCode | Kimi K2.5 | 30.3% | 8.5M | $1.81 |
| OpenCode | Kimi K2.5 (w/o SGM) | 6.5% | 21.4M | $6.40 |
| OpenCode | MiniMax M2.5 | 22.9% | 14.5M | $4.43 |
| OpenCode | MiniMax M2.7 | 27.8% | 13.5M | $1.36 |
| OpenClaw 🦞 | Kimi K2.5 | 25.4% | 9.6M | $2.37 |
| Pi | GLM-5.1 | 38.8% | 8.2M | $4.33 |
| Pi | Kimi K2.5 | 37.8% | 9.9M | $2.67 |
| Pi | MiMo v2.5 | 36.1% | 18.2M | $2.06 |
| Pi | MiniMax M3 | 43.2% | 15.6M | $3.39 |
| Pi | Qwen3.6-27B | 38.5% | 7.1M | $2.45 |
| Pi | Qwen3.6-27B (w/o SGM) | 16.6% | 20.8M | $6.29 |
成本为一次完整 ATM-Bench-Hard 运行(31 个问题)的估算 USD API 费用,依据每次调用的 token 用量(未缓存输入、缓存写入、缓存读取、输出)按各提供商公开标价(≤200K 上下文档位,含缓存折扣)计算。
max 或 xhigh 等 reasoning effort,编程智能体均使用默认配置。编程智能体在 ATM-Bench-Hard 上仍然表现不佳,但显著优于各种智能体记忆基线。
要复现这些结果,请参见 agent_systems/ 下的通用智能体测试框架,它为 Claude Code、Codex、Pi、OpenCode 和 OpenClaw 提供隔离的、按问题独立运行的运行器。
除特别说明外,下面的记忆系统基线使用 Qwen3-VL-8B-Instruct-FP8 作为回答模型,Qwen3-VL-2B-Instruct 作为共享的图像/视频描述预处理器。ATM-Bench-Hard 使用 atm-bench-hard 发布集合,因此结果可能与原始预印本不同。
| 系统 | 索引时间 (hr) ↓ | ATM-Bench QS ↑ | ATM-Bench Recall@10 ↑ | ATM-Bench-Hard QS ↑ | ATM-Bench-Hard Recall@10 ↑ |
|---|---|---|---|---|---|
| A-Mem | 12.6 | 44.8 | 66.4 | 9.9 | 31.7 |
| mem0 | 16.7 | 43.5 | 61.9 | 9.2 | 23.7 |
| MemoryOS | 36.6 | 47.2 | 59.2 | 13.7 | 32.7 |
| HippoRAG2 | 1.5 | 42.9 | 66.4 | 9.4 | 31.9 |
| MemPalace | 0.5 | 56.8 | 76.4 | 9.7 | 28.3 |
| SimpleMem | 15.7 | 27.3 | 23.3 | 3.2 | 7.0 |
| Memexa(DeepSeek-V4-flash 记忆+回答,Qwen3.6-27B captions) | — | 68.0* | 79.1 | 47.9* | 44.7† |
| ATM-RAG(本文方法) | 0.5 | 51.0 | 68.7 | 8.4 | 28.8 |
* 表示 QS 使用 DeepSeek-V4-flash 评判模型,而不是其他行使用的 gpt-5-mini 评判模型。† 表示 ATM-Bench-Hard Recall 使用固定的 Qwen3-VL-2B captions 汇报,尽管已提交的 Hard QS 运行使用 Qwen3.6-27B captions 回答。我们在包含 31 个问题的 ATM-Bench-Hard 划分上,报告多模态回答模型在 SGM 与 Raw(真实图像/视频)设置下的 Oracle 上限和 NIAH haystack 扫描(k=25/50/100)QS,使用 gpt-5-mini 作为评判模型。
完整报告请参见 ATM-Bench 在线榜单。
| 模型 | 上下文窗口 | 参数量 | Oracle | NIAH-25 | NIAH-50 | NIAH-100 |
|---|---|---|---|---|---|---|
| Qwen3-VL-8B-Instruct | 256K | 8B LM(总计约 9B) | 28.0 | 16.3 | 15.8 | 12.7 |
| MiniMax-M3 | 1M | 总计 428B / 激活 23B | 60.5 | 45.9 | 55.1 | 43.4 |
| MiMo-V2.5 | 1M | 总计 310B / 激活 15B | 44.6 | 39.1 | 34.5 | 31.8 |
| Kimi-K2.5 | 256K | 总计 1T / 激活 32B | 41.9 | 47.9 | 39.6 | 33.5 |
| Qwen3.6-27B | 262K | 27B LM | 42.8 | 39.2 | 29.6 | 27.4 |
| 约输入上下文深度 | — | — | ≈4.5K | ≈12K | ≈22K | ≈44K |
| 模型 | 上下文窗口 | 参数量 | Oracle | NIAH-25 | NIAH-50 | NIAH-100 |
|---|---|---|---|---|---|---|
| Qwen3-VL-8B-Instruct | 256K | 8B LM(总计约 9B) | 40.1 | 25.4 | 24.9 | 10.9 |
| MiniMax-M3 | 1M | 总计 428B / 激活 23B | 61.8 | 41.8 | 34.2 | 35.2 |
| MiMo-V2.5 | 1M | 总计 310B / 激活 15B | 52.1 | 43.3 | 33.1 | 23.6 |
| Kimi-K2.5 | 256K | 总计 1T / 激活 32B | 57.1 | 45.4 | failed | failed |
| Qwen3.6-27B | 262K | 27B LM | 62.3 | 50.5 | failed | failed |
| 约输入上下文深度 | — | — | ≈6.5K | ≈18K | ≈31K | ≈60K |
为什么选择 SGM 而不是 Raw? Raw 在 Oracle 上限下优于 SGM,但这种优势在现实条件下会消失:随着 haystack 中干扰项增多,Raw 的性能会下降,甚至因 payload/上下文限制而失败;在智能体检索中差距更加明显,所有“w/o SGM”(Raw)智能体的表现都远低于对应的 SGM 运行。SGM 是在现实噪声条件下更稳健的表示方式。
failed 表示请求超过了模型允许的最大图像/视频数量,或 API 服务器的最大上传/payload 大小,导致该规模的输入无法处理。这属于服务限制,而不是模型质量结果。
现有的长期记忆基准主要关注对话历史,无法捕捉基于真实生活经验的个性化参照。ATM-Bench 通过以下特性填补了这一空白:

记忆摄入分为两个步骤:

我们比较了两种预处理表示:
在 SGM 中,模式字段与模态相关。例如:
time、location、entities、ocr、tagstime、summary、bodyDM 和 SGM 包含相同的底层信息,但使用不同的格式。
在本代码库中,DM 以描述/标题风格的文本实现,SGM 以基于模式的键值文本字段实现。
记忆存储的组织方式:
除了端到端的检索+生成评估外,我们还提供了 NIAH(大海捞针) 评估:
niah_evidence_ids),包含所有真实记忆项。参见:
- docs/niah.md
ATM-Bench 托管在 Hugging Face Jingbiao/ATM-Bench。下载脚本会下载完整发布数据,并自动将文件放到评估脚本期望的位置。
完整下载(约 3.3 GB) — 包含 QA、NIAH 池、预处理记忆、emails、原始图像、原始视频以及 GPS 反向地理编码缓存:
bash scripts/download_data.sh
执行后将得到:
data/atm-bench/atm-bench.json
data/atm-bench/atm-bench-hard.json
data/atm-bench/niah/...
data/raw_memory/email/emails.json # emails
data/raw_memory/image/... # 原始图像
data/raw_memory/video/... # 原始视频
data/raw_memory/geocoding_cache/... # GPS 反向地理编码缓存
output/image/qwen3vl2b/batch_results.json # 预处理的图像记忆
output/video/qwen3vl2b/batch_results.json # 预处理的视频记忆
HF 上的 data/processed_memory/{image,video}_batch_results.json 会被脚本自动重命名并复制到 output/image/qwen3vl2b/batch_results.json 与 output/video/qwen3vl2b/batch_results.json。
脚本使用 huggingface_hub Python 包(若未安装会自动安装)。若数据集为私有,请先运行 huggingface-cli login。
conda create -n atmbench python=3.11 -y
conda activate atmbench
pip install -r requirements.txt
pip install -e .
通过环境变量设置:
export OPENAI_API_KEY="your-key"
export VLLM_API_KEY="your-key"
或使用本地密钥文件(已 gitignore):
- api_keys/.openai_key
- api_keys/.vllm_key
运行这些基线之前,output/{image,video}/qwen3vl2b/ 下必须存在 batch_results.json。有两种方式:
方式 A(推荐):直接从 Hugging Face 下载预处理记忆。
若已运行上面的 bash scripts/download_data.sh,预处理的记忆文件已就位:
output/image/qwen3vl2b/batch_results.jsonoutput/video/qwen3vl2b/batch_results.json无需其他操作,可直接跳到下面的快速命令。
方式 B:从原始图像/视频重新生成记忆文件。
仅当你需要重新预处理(例如换用其他 VLM 或使用自己的原始记忆)时才需要。需要 data/raw_memory/image/ 下的原始图像与 data/raw_memory/video/ 下的视频:
# 可选但推荐:预加载反向地理编码缓存
# 缓存文件以媒体文件名为键,因此缓存包必须与当前图像/视频文件名匹配。
bash scripts/memory_processor/image/copy_gps_cache.sh output/image/qwen3vl2b/cache
bash scripts/memory_processor/video/copy_gps_cache.sh output/video/qwen3vl2b/cache
# 生成记忆项化结果
bash scripts/memory_processor/image/memory_itemize/run_qwen3vl2b.sh
bash scripts/memory_processor/video/memory_itemize/run_qwen3vl2b.sh
# MMRAG(同时运行 ATM-bench 和 ATM-bench-hard)
# 需要:`bash scripts/download_data.sh`
# + 本地运行的 vLLM 服务,地址 http://127.0.0.1:8000/v1/chat/completions,
# 模型 Qwen/Qwen3-VL-8B-Instruct-FP8(可通过 VLLM_ENDPOINT / ANSWERER_MODEL
# 环境变量覆盖)。
bash scripts/QA_Agent/MMRAG/run.sh
# Qwen3-VL-8B 原始图像/视频 Oracle(本地上界)
# 需要:`bash scripts/download_data.sh`
# + 本地 vLLM 服务,模型 Qwen/Qwen3-VL-8B-Instruct-FP8。
bash scripts/QA_Agent/Oracle/run_oracle_qwen3vl8b_raw.sh
# GPT-5 原始图像/视频 Oracle(无需本地 GPU / vLLM)
# 需要:`bash scripts/download_data.sh`
# + 环境变量 OPENAI_API_KEY 或文件 api_keys/.openai_key。
bash scripts/QA_Agent/Oracle/run_oracle_gpt5.sh
MMRAG、Oracle、NIAH)在主 atmbench 环境中测试。A-MemHippoRAG2mem0MemoryOSMemPalaceSimpleMemMemoryOS 和 MemPalace。MemoryOS 使用 FAISS / sentence-transformers 依赖栈,MemPalace 使用 ChromaDB / ONNX 本地嵌入依赖栈;隔离环境可避免它们与核心基线环境及彼此之间发生依赖冲突。A-Mem、HippoRAG2 和 mem0 经测试与核心基线环境兼容,但为确保可复现性和依赖隔离,仍建议使用独立环境。SimpleMem 通过克隆的上游仓库(LanceDB + Tantivy FTS 依赖栈)运行;详见 memqa/qa_agent_baselines/SimpleMem/README.md。固定的上游 commit 为 094027eca4c890dc9912be8cee1da04428de8076(由 scripts/QA_Agent/SimpleMem/run.sh 校验)。third_party/ 下:third_party/A-mem/third_party/HippoRAG/third_party/mem0/third_party/MemoryOS/MemPalace 以 PyPI 包形式发布(mempalace==3.3.5),通过 memqa/qa_agent_baselines/Mempalace/requirements.txt 安装;不需要放入 third_party/。SimpleMem 未纳入 third_party/。请在 ATMBench 旁边克隆上游仓库到固定的 commit,并将 SIMPLEMEM_DIR 指向它(默认值为 ../SimpleMem):bash
git clone https://github.com/aiming-lab/SimpleMem.git ../SimpleMem
git -C ../SimpleMem checkout 094027eca4c890dc9912be8cee1da04428de8076
pip install -r ../SimpleMem/requirements.txt
pip install -r memqa/qa_agent_baselines/SimpleMem/requirements.txt
- 面向全部五个智能体(Claude Code、Codex、Pi、OpenCode、OpenClaw)的通用智能体评估框架位于 agent_systems/。
详细的设置、数据布局和可复现性设置,请参见:
- docs/README.md
- docs/data.md
- docs/reproducibility.md
- docs/baseline.md
- docs/niah.md
ATMBench/
├── memqa/ # 核心记忆问答实现
├── scripts/ # 实验脚本
├── docs/ # 文档
├── data/ # 数据目录(用户提供)
├── third_party/ # 外部智能体记忆系统
└── output/ # 实验输出(已 gitignore)
docs/README.md - 入门指南docs/data.md - 数据格式与准备docs/baseline.md - 基线实现docs/niah.md - NIAH 协议与使用docs/metrics.md - 评估指标docs/reproducibility.md - 复现说明docs/repo_structure.md - 仓库组织如果您在研究中使用了 ATM-Bench,请引用:
```bibtex @article{mei2026atm, title={According to Me: Long-Term Personalized Referential Memory QA}, author={Mei, Jingbiao and Chen, Jinghong and Yang, Guangyu and Hou, Xinyu and Li, Margaret and
$ claude mcp add ATM-Bench \
-- python -m otcore.mcp_server <graph>