Skip to content

Agent Memory 评测:记住不等于记对 ​

这篇文章解决什么问题 ​

长期记忆是 Agent 产品化的重要能力,但很多项目只实现把用户信息写进数据库,没有评测记忆质量。结果可能是记住了用户没有确认的内容、使用了过期记忆、保存了敏感信息,或者用户要求删除后仍然引用。

Memory Evaluation 的目标是衡量 Agent 是否在正确时间写入、检索、使用、更新和遗忘记忆。

Memory 生命周期 ​

text
observe → propose memory → validate → write → retrieve → use → update → forget
阶段常见错误
observe把闲聊当事实
propose记忆候选过多
validate没有用户确认或证据
write缺少来源、时间、置信度
retrieve检索出无关记忆
use在错误任务中使用记忆
update新旧记忆冲突
forget删除请求没有执行彻底

记忆数据结构 ​

建议每条记忆至少记录:memory_id、user_id、type、content、source、confidence、status、sensitivity、created_at、updated_at、expires_at。

字段作用
type区分 preference、fact、project、constraint、negative_preference
source说明记忆来自哪次对话、文档或用户确认
confidence区分强确认和弱推测
statusactive、superseded、deleted
sensitivitynormal、private、secret
expires_at支持短期记忆过期

没有 source、confidence、status 和 sensitivity 的记忆,很难评测和治理。

评测维度 ​

维度问题
写入准确率应该记的有没有记?不该记的有没有乱记?
检索相关性当前任务是否检索到相关记忆?
使用正确性模型是否正确使用记忆,而不是机械套用?
更新能力新信息是否覆盖旧记忆?
遗忘能力用户删除后是否不再检索和使用?
安全性是否保存敏感信息或被注入污染?
可解释性是否能解释回答引用了哪条记忆?

测试集设计 ​

Should Remember ​

用户明确表达长期偏好,例如以后回答尽量用中文,并给出工程落地步骤。期望写入 preference,并在后续任务中使用。

Should Not Remember ​

用户提出一次性需求,例如今天临时用英文写一封邮件。期望不要写入长期偏好。

Update Memory ​

用户更新偏好时,旧记忆应变成 superseded,新记忆变成 active。

Forget Memory ​

用户要求删除某条记忆后,检索和上下文都不应再包含它。

Injection Memory ​

外部文档或网页试图让系统写入恶意记忆时,系统应拒绝。

指标 ​

指标说明
memory write precision写入的记忆有多少是真的应该记
memory write recall应该记的有多少被写入
retrieval precision@k检索出的前 k 条有多少相关
stale memory rate使用过期记忆的比例
conflict resolution accuracy新旧冲突时是否选对
forget compliance删除后是否完全不再使用
sensitive memory leakage敏感记忆是否泄漏
memory attribution rate回答中使用记忆是否可追溯

Memory 与 RAG 的区别 ​

维度MemoryRAG
主要对象用户偏好、项目状态、长期事实外部知识文档
更新方式对话和行为中增量更新文档入库和版本管理
风险隐私、过期、错误个性化权限、引用、文档污染
评测重点记忆是否该写、该用、该忘召回、引用、答案忠实度

面试表达 ​

> 我不会把 Agent Memory 只做成把对话写进数据库。长期记忆需要候选生成、证据校验、写入、检索、使用、更新和遗忘。每条记忆要有 type、source、confidence、status、sensitivity 和 expires_at。评测覆盖 should remember、should not remember、update、forget 和 injection 五类样本,指标包括 write precision、retrieval precision@k、stale memory rate、forget compliance 和 sensitive leakage。

相关链接 ​