Memory 系统让 Agent 能够长期协作,但它也是最容易失控的模块之一。没有记忆,Agent 每次都像新手;记忆太多,Agent 会被噪音干扰,甚至带来隐私风险。
构建可控 Memory 系统的关键,是明确什么该记、什么时候记、如何检索、如何更新、如何删除。
记忆类型
Agent 的记忆可以分为几类。
任务记忆保存当前任务状态,例如已完成步骤、资源 ID、错误原因。
偏好记忆保存用户长期偏好,例如文章不要一级标题、每篇标签不超过 3 个。
知识记忆保存项目背景,例如某个系统的 API 约定、业务规则、部署方式。
经验记忆保存执行过程中发现的问题,例如某个 CLI 创建文章必须先创建 draftId。
不同记忆类型不应该混在一起,因为它们的生命周期和使用场景不同。
写入策略
Memory 不应该自动保存所有内容。写入条件可以包括:用户明确要求、偏好重复出现、任务结束后生成摘要、关键经验经过确认。
对于敏感信息,例如 token、密码、个人信息,默认不进入长期记忆。确实需要保存时,也要脱敏、加密、设置过期时间。
读取策略
读取记忆时要根据当前任务检索相关内容。写文章时读取内容风格偏好,操作系统时读取工具使用经验,排障时读取历史错误记录。
向量检索适合从大量记忆中找相似内容,但结果仍需要过滤。不是所有相似记忆都应该进入上下文。
记忆压缩
长期任务会产生很多细节。保存完整对话通常不划算,更好的方式是保存摘要和决策。
例如一次排障可以压缩成:“treasure article create 需要先创建 draftId,否则后端会报错。”这条经验比保存整段对话更有用。
用户控制
可控 Memory 必须让用户可查看、可修改、可删除。用户说“忘掉这个偏好”时,系统必须真正删除,而不是后续继续使用。
这不仅是体验问题,也是隐私和合规问题。
小结
Memory 的目标不是无限记忆,而是保留对未来任务有价值的信息。好的 Memory 系统应该分类清晰、写入克制、检索精准、可被用户控制。
实战案例:保存用户内容偏好
在内容管理 Agent 中,用户可能反复提出偏好:正文不要一级标题、教程内容控制在 1500 到 2000 字符、每篇文章最多 3 个标签、搜索图片必须上传到自有素材系统。
这些信息如果只存在当前对话中,下一次任务就可能丢失。可以把它们写入偏好记忆,并标注适用范围:内容创作、Treasure 平台、教程文章。后续创建文章时,Agent 先检索这些偏好,再生成内容和执行命令。
但偏好记忆也要允许覆盖。用户这次要求 1500 到 2000 字符,并不代表所有内容都必须如此。因此记忆最好带有来源、时间和作用域,而不是变成全局不可变规则。
记忆更新与冲突处理
记忆不是只新增不修改。用户偏好可能变化,项目规则也可能更新。比如最初要求文章 1500 到 2000 字符,后续可能要求更短的摘要版。Memory 系统需要能识别新旧规则冲突,并优先使用最近、作用域更精确、用户明确确认过的规则。
一种可行做法是为每条记忆保存 metadata,包括来源对话、创建时间、适用范围、置信度和是否用户确认。检索到多条冲突记忆时,Agent 不应该随意选择,而应按规则排序,必要时向用户澄清。
删除与遗忘机制
可控 Memory 还需要“遗忘”能力。用户可能要求删除某条偏好,也可能要求清理某个项目的历史上下文。系统应支持按用户、项目、记忆类型和时间范围删除。删除后,Agent 不应继续在后续任务中使用这条记忆。
对于企业系统,遗忘机制还涉及合规要求。比如用户离职、项目归档、敏感数据过期,都可能要求清理相关长期记忆。因此 Memory 系统最好从一开始就把删除和审计纳入设计。