核心判断Memory 是一个受治理的未来决策先验。写入意味着系统愿意让这条信息影响未来行为,因此“记错”通常比“没记住”更危险。

先定义记忆要改善什么决策

“提高个性化”不是可验收目标。应明确决策、受益对象和坏结果,例如:减少用户重复提供项目约束;让跨会话任务恢复未完成事项;在重复故障中优先检查曾被验证的根因。每个目标都应有无 Memory 基线,否则 Memory 命中率再高也不能证明有业务价值。

有些信息不应成为 Memory:实时余额由业务系统读取;一次情绪表达不能自动升级为长期偏好;模型推测的身份和健康信息不应在无确认时持久化;完整聊天归档属于记录,不等于已提炼 Memory。

从决策目标反推 Memory 契约
目标应该记不应该替代主要负效应
延续长期任务已确认目标、产物位置、未完成项Run Checkpoint 与副作用账本从过期计划错误恢复
减少重复输入用户确认且稳定的偏好/约束当前订单或表单字段偏好变更后继续套用
复用工程经验环境、症状、证据、修复与反例Runbook 的正式版本把偶然相关当因果

按用途区分记忆类型

认知科学术语只能帮助提出问题,不能直接决定数据库表。工程分类的价值在于让不同信息采用不同写入、召回、验证和遗忘策略。MemGPT 用操作系统式分层 Memory 探索有限 Context 之外的信息移动,但这是一种架构思路,不是生产存储治理规范。

工作记忆

当前 Run 的事实、计划、局部变量和未完成项,生命周期最短,通常属于 Runtime State。它需要精确恢复和并发控制,不适合只做相似度搜索。

情景记忆

记录“在什么条件下发生了什么,结果如何”。一条可用的情景包含时间、参与对象、环境版本、动作、观察和结果。只有一句“上次修好了”无法迁移,因为缺少适用条件与证据。Generative Agents 展示了从观察记录中按相关性、时效和重要性召回并生成更高层反思的架构,但其“行为可信度”实验不等于企业事实正确性证明。

语义记忆

跨事件提炼出的较稳定事实或偏好,例如用户确认的语言偏好。它不是事件的简单摘要,需要合并重复证据、保留反例和置信来源。

程序性记忆

经过验证的操作策略、Playbook、Prompt/Skill 引用或失败规避规则。它必须绑定工具、模型、环境和版本;未经回归就把一次成功轨迹升级为全局程序性规则,会把偶然行为制度化。

物理存储不是类型短期/长期、向量库/关系库描述的是时长或实现;工作、情景、语义、程序性描述的是用途。一个系统往往需要交叉组合,而不是四选一。

写入要经过价值、真实性和权限判断

写入流水线至少做四次判定:未来是否复用;信息是事实、偏好、推断还是模型猜测;主体是否允许保存;影响等级是否要求确认。高影响 Memory(健康、身份、授权、安全规则)不应依赖模型一次抽取自动生效。

// 可执行的 Schema 示例;真实系统仍需数据库约束和服务端鉴权
type MemoryRecord = {
  id: string
  tenantId: string
  subjectId: string
  kind: 'episodic' | 'semantic' | 'procedural'
  statement: string
  factStatus: 'observed' | 'user-confirmed' | 'inferred'
  sourceRefs: string[]
  confidence: number
  validFrom: string
  expiresAt?: string
  supersedes?: string[]
  policy: { sensitivity: 'normal' | 'sensitive'; requiresConfirmation: boolean }
}

function eligible(record: MemoryRecord) {
  if (!record.sourceRefs.length) return false
  if (record.factStatus === 'inferred' && record.policy.requiresConfirmation) return false
  return record.confidence >= 0.75
}

LangGraph 的 Memory 文档把写入区分为热路径与后台路径。热路径可以立即生效,但增加响应延迟并把写入决策暴露在同一轮模型错误中;后台提炼降低交互延迟、可跨多次事件整合,却存在生效延迟。默认建议:高价值且用户明确确认的信息同步写入;模式归纳与去重在后台完成;两者都通过同一权限和 Schema 门禁。

从事件到稳定记忆需要整合

整合不是压缩字数,而是建立证据关系。重复事件可以提高置信,反例可以缩小适用条件,新事实可以替代旧事实。保留 derivedFrom 与 supersedes,让系统能够解释一条语义 Memory 为什么成立,并在源记录删除时重新计算。

Memory 从候选到生效再到纠错的状态链
候选从事件抽取,尚不能影响高风险决策。
确认/整合核对来源、权限、反例和重复证据。
生效带作用域、置信、版本和过期进入召回。
替代/删除保留审计关系,阻止旧版本继续被召回。

把自然语言摘要覆盖写入同一个字段,会丢失变化历史并放大漂移。Profile 适合少量稳定字段,集合式 Memory 适合多条可独立检索事件;两者应分别测试合并冲突和召回噪声。

召回后仍需判断能否使用

Memory 搜索不是“Top-K 语义相似度”。先按租户、主体、Memory 类型、有效期和敏感策略过滤,再综合语义相关性、时效、重要度、置信和多样性排序。相似结果应去重,冲突结果成组返回,而不是只保留分数最高的一条。

进入 Context 时标明“这是历史派生 Memory,不是实时业务事实”。如果 Memory 会触发副作用,例如自动选择收货地址,应重新询问或读取权威系统。模型可以使用 Memory 形成建议,但服务端策略决定它能否影响动作。

召回正确仍可能使用错误“用户以前偏好周五发布”可能被正确召回,却不适用于当前紧急修复。检索质量和决策适用性必须分开评测。

遗忘与纠错是核心能力

时效衰减与过期。衰减不等于物理删除。它降低默认召回权重,适合可能随时间变化的偏好;安全规则和已确认过敏信息不能仅因时间自动降低,应由明确来源更新。

替代关系。新事实替代旧事实时,旧版本停止生效但保留审计边。查询默认只取当前版本,事故调查可沿关系回溯。

删除传播。删除不仅清除文本,还包括 Embedding、索引项、缓存、派生 Profile、后台任务输入和可能的 Eval 副本。使用 Tombstone 防止异步重建把已删记录重新写回。

错误经验的隔离。一次错误修复被写入程序性 Memory 后,可能跨会话持续伤害。发现后应立即停用、标记失败证据、定位所有派生规则并回归相关任务,而不是在末尾加一句“谨慎使用”。

评估“有记忆”是否比“无记忆”更好

离线测试至少包含应记、可记、不应记、已过期、相互冲突和已删除样本;分别测写入 Precision/Recall、召回正确率、冲突识别、删除有效性和敏感信息违规。端到端再比较无 Memory、原始历史、受治理 Memory 三种系统的任务成功、用户重复输入、错误影响和成本。

长期评测需要时间轴:先写入偏好,再改变偏好;先记录成功经验,再升级工具版本;删除后触发索引重建。只在同一轮对话问“你记得吗”无法覆盖漂移和纠错。

主动提取:为什么写入 Precision 往往比 Recall 更重要?
漏记通常导致再次询问或效率下降;错记会在未来多次自动影响决策,并可能被进一步整合成“稳定事实”。具体权重仍应按业务后果确定。
边界辨析:完整保存对话历史,为什么仍然不等于拥有长期 Memory?
历史是原始事件记录,包含噪声、过时陈述和模型猜测;Memory 需要按未来决策价值提炼,带作用域、来源、确认、冲突和遗忘协议。两者可以互相引用但不能互相替代。
迁移判断:语义相似度很高的旧故障经验,何时不能复用?
工具、模型、配置或依赖版本不同;旧修复未通过当前环境验证;症状相似但证据链不同。程序性 Memory 必须带适用条件和验证版本。
实践证据:一个 Memory Demo 怎样升级为可评审系统?
提供 Schema 与作用域、写入门禁、确认路径、冲突/替代/删除状态、无 Memory 对照实验、隐私越界测试和可追溯 Trace,而不只是演示跨会话记住姓名。

资料与事实边界

以下以官方文档、标准、论文和原始工程资料为主。厂商 API、价格、限额与模型能力会变化,落地时仍需按目标版本做能力探测和回归。

  1. Park et al.:Generative Agents — 观察、检索、反思和规划的实验性 Memory 架构;实验目标是行为可信度,不应外推为企业正确性结论
  2. Packer et al.:MemGPT — 分层 Memory 与有限 Context 之间的数据移动思路
  3. LangGraph:Memory overview — 短期线程状态、长期命名空间与热/后台写入的框架实现例证
  4. Anthropic:Effective context engineering for AI agents — 长时 Agent 的 Context 策划、压缩与外部 Memory 思路