记忆系统 Memory

记忆系统 Memory:分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程,以架构、轨迹与故障重放完成工程验收。

学习目标

  • 能解释“记忆系统 Memory”如何分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程
  • 能区分工作记忆、长期记忆、语义检索、记忆写入策略、遗忘,并标出控制权、状态和副作用边界
  • 能冻结输入与版本,沿以下证据定位首个分叉:memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志
  • 能注入“全局向量库未按租户过滤,把另一用户的偏好和历史写进当前回答”,完成阻断、恢复、复位和同输入重放

来源、课程身份与适用边界

“记忆系统 Memory”以Anthropic 公开全文《Building effective agents》建立工程总纲,并用Anthropic《Effective context engineering for AI agents》核对本章机制。

这不是一本名为《AI Agent 开发实战》的官方出版物,也不存在官方十四章目录。平台把公开工程文章、官方开发文档和原始论文重组为 14 个工程单元;下列 112 个节点是站内课程地图。正文、代码、图表、实验与练习均为独立教学重写,模型、API、协议或安全边界变化时必须重新验证。

本单元的八个工程坐标

  • 记忆系统 Memory:这是“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的第 1 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 小特聊久了会忘事,得有个本子记下来:这是“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的第 2 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 两种记忆:脑子里的当下,本子里的长期:这是“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的第 3 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 记忆怎么用起来:写入、检索、遗忘三个操作:这是“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的第 4 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 检索的灵魂:按「意思」找回,不是按关键词:这是“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的第 5 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 记忆里都装些啥:情景、语义、程序三类:这是“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的第 6 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 动手一:换个查询,看它按「意思」捞回哪条:这是“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的第 7 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 动手二:三类记忆,分别该装什么:这是“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的第 8 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。

术语与运行合同

本页不变量是:记忆只能在正确主体、权限和生命周期内读写,检索结果进入上下文前再次核验。任何“成功”结论都要保存memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志;模型自评、最终措辞和单次 demo 都不能替代环境事实。

工程机制与反证实验

不是所有对话都该记

把临时请求、敏感值和错误结论长期保存会污染后续任务。

动手验证:对候选记忆执行保存/不保存分类并审查误写。

语义相似不代表有权读取

向量分数只衡量含义接近,租户、ACL 和时效要先做确定性过滤。

动手验证:用两个租户的相似记录验证零串读。

来源让记忆可纠正

没有创建时间和事实来源的记忆无法判断过期,也难以撤销。

动手验证:更新来源事实后找到并失效所有派生记忆。

遗忘是系统能力

用户删除、保留期和低价值淘汰必须真正影响索引与备份。

动手验证:执行删除后从主库、索引和读取路径逐层验证。

从架构到故障重放

分步1 / 3

1. 架构复杂度实验

在“记忆系统 Memory”中切换简单基线、受控工作流和自主循环,先判断“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”是否真的需要更高自主性,再比较延迟、成本、可观测性与风险。

Architecture decision laboratory

记忆系统 Memory

分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程

复杂度档位

不变量:记忆只能在正确主体、权限和生命周期内读写,检索结果进入上下文前再次核验

受控工作流:只激活能够由收益证明的阶段1选择写入2加元数据3索引保存4权限检索5使用或遗忘蓝色表示当前方案承担的责任;虚线阶段仍留在系统边界外。关键证据:memory_id…
自主性46
延迟52
成本48
可观测78

最小可运行切片

async function retrieveMemory(query: Query, actor: Actor) {
  const candidates = await vectorIndex.search(embed(query.text));
  return candidates
    .filter((item) => item.tenantId === actor.tenantId)
    .filter((item) => !isExpired(item) && policy.canRead(actor, item))
    .slice(0, 5)
    .map(withProvenance);
}

切片只表达“分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程”的核心合同。生产实现还要补齐持久化、超时、密钥隔离、结构化日志、幂等和批量评测;如果不能重新取得memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志,代码跑通也不能证明机制正确。

练习与答案

练习

问题 1:最小证明。 怎样用正常、边界和单故障三类样本证明“记忆只能在正确主体、权限和生命周期内读写,检索结果进入上下文前再次核验”?

问题 2:节点覆盖。 记忆系统 Memory、小特聊久了会忘事,得有个本子记下来、两种记忆:脑子里的当下,本子里的长期、记忆怎么用起来:写入、检索、遗忘三个操作、检索的灵魂:按「意思」找回,不是按关键词、记忆里都装些啥:情景、语义、程序三类、动手一:换个查询,看它按「意思」捞回哪条、动手二:三类记忆,分别该装什么如何从目录词变成工程证据?

问题 3:恢复验收。 怎样证明“全局向量库未按租户过滤,把另一用户的偏好和历史写进当前回答”已经修复?

本章回顾

  • “记忆系统 Memory”解决的是分离工作记忆与长期记忆,设计带来源、租户、保留期和删除语义的写入检索流程。
  • 核心不变量是记忆只能在正确主体、权限和生命周期内读写,检索结果进入上下文前再次核验。
  • 首要反例是全局向量库未按租户过滤,把另一用户的偏好和历史写进当前回答。
  • 最小证据包包含memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志。

名词解释

本章出现的专业名词,用大白话再讲一遍。

工作记忆

当前任务上下文中的短期状态。在“记忆系统 Memory”中必须能按以下证据重新定位:memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志。

长期记忆

跨轮次或会话保存在外部存储的状态。在“记忆系统 Memory”中必须能按以下证据重新定位:memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志。

语义检索

按向量相似度寻找含义接近的记录。在“记忆系统 Memory”中必须能按以下证据重新定位:memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志。

记忆写入策略

决定哪些信息值得保存以及保存多久的规则。在“记忆系统 Memory”中必须能按以下证据重新定位:memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志。

遗忘

按过期、用户删除或低价值规则移除记忆。在“记忆系统 Memory”中必须能按以下证据重新定位:memory_id、租户、来源、写入理由、向量版本、检索分数、过期时间与删除日志。

阅读导航

← 工具调用 Tool Calling · 规划与任务分解 →

讨论

评论区加载中…