AgentLife benchmark
收藏资源简介:
AgentLife基准测试生成合成但真实的个人助理代理生活流:一系列带日期的事件(事实陈述、更新、撤销及噪音),随后进行最终考试。答案源自程序化的时间世界状态,而非人工标注。它设计用于测量LLM代理的记忆性能,具有可构造的正确答案键、精确可审计的评分、可证伪的新鲜度、类型化错误分类、使用情况检测和确定性生成等特点。
AgentLife benchmark generates synthetic yet realistic personal assistant agent life streams: a sequence of dated events (factual statements, updates, retractions, and noise), followed by a final examination. The answers are derived from programmed temporal world states rather than human annotations. It is designed to measure the memory performance of LLM agents, featuring constructible correct answer keys, precisely auditable scoring, falsifiable freshness, typed error classification, usage detection, and deterministic generation.
数据集概述:CLS-Ledger
基本信息
- 项目名称: CLS-Ledger
- 论文标题: The Ledger Knows What the Weights Know: Entity-Level Parametric Memory with Provenance Guarantees for LLM Agents
- DOI: 10.5281/zenodo.21375428
- 所属阶段: Phase 0 — AgentLife,即该项目的测量工具(benchmark)
AgentLife 基准(Benchmark)设计
AgentLife 生成合成但逼真的“生命轨迹”,模拟个人助理智能体的一系列带有时间戳的事件(事实声明、更新、撤销及噪声),随后进行最终测试。答案源自程序化的时序世界状态,无需人工标注。
设计原则
- 答案键正确性由构造保证:特权oracle必须得到100%得分,且在CI中强制执行。
- 精确、可审计的评分,不依赖LLM裁判:每个查询附带
accepted(所有正确表面形式)和rejected(已过时版本、易混淆实体值)字符串,在归一化后进行词边界匹配。 - 新鲜度可证伪:故意过时的oracle(始终回答事实的第一个版本)在
current_updated查询上必须得0分,在CI中强制执行;值循环变化的事实(A→B→A)不纳入新鲜度探测。 - 类型化错误分类:响应分为
correct / stale / hallucination / wrong_value / ambiguous / abstain / miss,使失败模式可测量。 - 使用情况可检测:生命周期中的“在线”查询将事实标记为热/冷,并生成每个事实的检索统计信息,作为合并策略实验的输入。
- 确定性:相同预设+种子产生完全相同的字节级数据集,跨进程和哈希种子(在CI中强制执行)。
查询类型
| 类型 | 探测内容 |
|---|---|
current_stable |
从未改变过的事实的保留情况 |
current_updated |
经过1到k次更新后的新鲜度(旧值被拒绝) |
current_volatile |
高变化频率事实(如停车位、办公桌)的新鲜度 |
point_in_time |
时间推理:在特定日期D时有效的值 |
multihop_2/3 |
跨多个事件(相隔≥5天)的组合推理 |
revoked |
明确撤销的事实(如取消的项目、放弃的饮食计划) |
absent |
从未陈述过的事实——测量幻觉/弃权 |
online |
生命周期中的查询;构建热/冷使用日志 |
使用方法
bash
生成数据集(预设规模:S, M, L, XL)
PYTHONPATH=. python3 -m agentlife.generate --preset M --seed 1 --out data/M-1
评估参考系统(oracle必须输出100%)
PYTHONPATH=. python3 -m agentlife.harness.run_eval --data data/M-1 --system oracle PYTHONPATH=. python3 -m agentlife.harness.run_eval --data data/M-1 --system stale PYTHONPATH=. python3 -m agentlife.harness.run_eval --data data/M-1 --system null
自验证套件
PYTHONPATH=. python3 agentlife/tests/test_agentlife.py
数据集布局:public/(事件流+问题)是系统可见部分;private/(答案键、世界状态、使用统计)仅用于评分。
参考系统性能(M-1预设)
| 系统 | 最终准确率 | 特征 |
|---|---|---|
| oracle | 100% | 验证答案键+评分器端到端 |
| stale | 64.6% | 在updated/volatile/revoked上得0%,在stable上得100%——拒绝集捕获陈旧性 |
| null | 9.8% | 仅在absent上得100%——弃权下限 |
关键实验结果
基于上下文(记忆=上下文)
| 系统 | S-1最终 | M-1最终 | 备注 |
|---|---|---|---|
| oracle | 100% | 100% | 答案键验证 |
| full-context | 86.4% | 76.8% | 随生命周期长度下降;M上multihop_3为0% |
| RAG BM25 k=8 | 70.5% | 58.5% | M上revoked为0%,24个陈旧错误——新鲜度失败 |
参数化记忆(无上下文,S-1)
| 系统 | 最终 | cur_stable | cur_updated | 陈旧错误 | 通用探测 |
|---|---|---|---|---|---|
| base model | — | — | — | — | 93.8% |
| naive LoRA (raw text) | 15.9% | 0% | 0% | 2 | 87.5% |
| SEAL-lite (episode QAs) | 20.5% | 37.5% | 25.0% | 10 | 87.5% |
| CLS-Ledger v0 (state QAs) | 31.8% | 75.0% | 75.0% | 3 | 68.8% |
v2.3结果(局部3B模型)
| 数据集 | CLS v1 | CLS v2.3 | RAG local | RAG 4.1-mini | full 4.1-mini |
|---|---|---|---|---|---|
| S-1 | 50.0% | 84.1% | 52.3% | 70.5% | 86.4% |
| M-1 | 35.4% | 63.4% | 37.8% | 58.5% | 76.8% |
v3结果——隔离插槽(Isolated Slots with Routed Activation)
| 指标 | monolithic (v2.3) | slots-routed (v3) |
|---|---|---|
| S-1最终 | 84.1% | 88.6%(超越full-context-4.1-mini 86.4%) |
| 通用探测 | 75.0% | 93.8% = 基础模型精确值(0.0%遗忘) |
| 去学习附带损害 | 19/40答案改变(重新蒸馏) | 0/40(插槽丢弃,无需重新训练) |
v5结果——能力检索(4个种子,M预设)
| 指标 | CLS-Ledger | BM25 RAG | Embeddings RAG |
|---|---|---|---|
| 总体 | 74.9 ± 7.2% | 38.4 ± 2.6% | 48.3 ± 3.3% |
| 归纳:计数 | 87.5 ± 10.2% | 31.2% | 21.9% |
| 归纳:习惯 | 100 ± 0% | 0% | 12.5% |
| 归纳:趋势 | 100 ± 0% | 66.7% | 66.7% |
| 遵循:日期日优先 | 100 ± 0% | 0% | 0% |
| 遵循:城市大写 | 77.5 ± 7.9% | 12.7% | 0% |
技术架构亮点
- 隔离插槽:每个实体一个rank-4 LoRA插槽,由账本的路由器在查询时仅激活所查询实体的插槽
- 去学习:插槽丢弃无需重新训练,0/40附带损害
- 符号解析:账本内解析时间点(point-in-time 20%→80-100%)和链式问题(multihop 0%→70%)
- 周期性睡眠:使权重路径在生命周期中期可用,账本通过构造防止权重陈旧
关联系统对比(obsidian-ledger)
| 系统 | 确定性超期 | 查询时类型化verify | 符号化induce | 控制权重 | 适用于个人知识库 |
|---|---|---|---|---|---|
| Zep/Graphiti | 否 | 否 | 否 | 否 | 否 |
| Mem0 | 否 | 否 | 否 | 否 | 否 |
| MemStrata | 是 | 否 | 否 | 否 | 否 |
| TOKI / STALE | 写入时 | 仅写入侧 | 否 | 否 | 否 |
| bicameral | 是 | 否 | 否 | 否 | 转录本,非知识库 |
| basic-memory / MCP memory | 否 | 否 | 否 | 否 | markdown,无事实 |
| CLS-Ledger / obsidian-ledger | 是 | 是(4种判决,含CONTRADICTED_STALE→当前值) | 是(计数/习惯/趋势) | 是(LoRA插槽) | 是(一次安装) |
路线图
- 修复绑定:每张卡更多释义 + ~450-600次迭代与重放;为易混淆实体对添加对比行
- 强化事件路径:更好的检索(基于每个事实的卡片代替原始事件)和/或更大的局部阅读器
- 在M-1上进行H1消融(策略:稳定 vs. 热 vs. 全部),待事件路径不再成为混杂因素后
- 为外科手术式去学习实现真正的隔离插槽(在MLX中的每个实体LoRA融合)
- 预先注册的成功标准:合并事实的召回率≥90%(移除外部记忆后);通用探测退化≤1%;插槽删除对事实的附带损害<1%





