Agent 记忆不该只是聊天记录压缩,而要分清任务、用户、历史事实和可复用能力的权威层级。
从 L0 到 L4 拆解工作记忆、长期记忆和 Skill 治理边界
Agent 没有记忆时,每个新任务都像重新认识用户。
它不知道你之前定过什么规则,不知道哪些方案已经试过,也不知道上一个线程里留下了什么结论。结果就是重复确认、重复试错、决策漂移和不稳定执行。
记忆系统的目标,是在正确时机,把正确层级的记忆交给正确的 Agent。保存聊天记录只是原料,不是结果。
一个可用的记忆系统,至少要同时处理任务连续性、用户连续性和能力连续性。
图:分层记忆要先按权威性和作用域摆正位置
记忆让 Agent 从一次性执行器变成协作系统
没有外部记忆时,模型只处理当前窗口。
窗口里有什么,它就知道什么。窗口外发生过的决策、失败、偏好和规则,如果没有被重新注入,它就近似不知道。
这会带来四类问题:
| 问题 | 表现 | 需要的记忆 |
|---|---|---|
| 任务中断后难恢复 | 忘记进度、重复调用工具、重新分析旧问题 | 工作记忆 |
| 用户反复说明偏好 | 每次都问语言、格式、权限和业务口径 | 显式长期记忆 |
| 历史事实会变化 | 旧偏好继续生效,新决策没有覆盖旧决策 | 隐式长期记忆 |
| 同类任务反复踩坑 | 工具参数、失败路径和验证方式无法复用 | 程序性记忆 |
记忆的价值取决于使用时机:该用时能用,不该用时不污染当前任务。
四类记忆不要混成一层
Agent 记忆可以先按内容类型分成四类。
| 类型 | 解决什么问题 | 典型载体 | 写入方式 |
|---|---|---|---|
| 工作记忆 | 当前任务到哪一步 | 消息、工具结果、Runtime State、Checkpoint | 执行中自动更新 |
| 显式长期记忆 | 用户明确要求长期记住什么 | 用户偏好文件、结构化事实源 | 用户确认后写入 |
| 隐式长期记忆 | 从历史中推断出的事实、关系和变化 | Memory Bank、Fact、Observation | 系统抽取,保留来源 |
| 程序性记忆 | 同类任务以后怎样做 | TaskGuide、Skill、Workflow、Playbook | 自动沉淀或用户维护 |
这四类的治理方式不同。
工作记忆追求实时一致。显式长期记忆追求可见、可改、可删。
隐式长期记忆追求来源可追溯和时间可纠错。程序性记忆追求复用,但必须区分自动建议和正式规则。
把它们塞进一个"memory"字段,只会让冲突越来越难处理。
L0 到 L4 是工程权威分层
落到工程实现,可以把记忆分成五层。
| 层级 | 定位 | 作用域 | 权威性 |
|---|---|---|---|
| L0 | 任务与线程工作记忆 | 单任务、单线程 | 当前任务内最高 |
| L1 | 用户确认的显式长期记忆 | 单用户、跨线程 | 用户长期事实 |
| L2 | 系统抽取的隐式长期记忆 | 单用户、跨线程 | 候选事实,需带来源 |
| L3 | 自动生成的任务经验 | Agent 或任务域 | 低权威建议 |
| L4 | 用户维护的 Skill / Workflow | 团队、项目或任务域 | 正式执行规则 |
L0 负责不断线。
L1 和 L2 负责用户连续性。L1 来自用户明确确认,优先级高。L2 来自历史抽取,必须可纠错,不能覆盖 L1。
L3 和 L4 负责能力连续性。L3 可以自动学习经验,但只能作为建议。L4 是经过用户或负责人确认的正式流程,必须有版本、所有者和回滚机制。
读取时先过滤,再注入
记忆不能全部塞进上下文。
长记忆如果常驻,会浪费 token,也会把过期信息和不相关经验带进当前任务。
更稳的做法是任务开始前生成一个只读 MemoryContext。
图:记忆进入上下文前要经过过滤和冲突处理
这一步要处理四个问题。
第一,作用域。用户记忆不能跨用户污染,项目规则不能误用到另一个项目。
第二,权限。某些记忆可以供系统判断,但不适合直接注入模型。
第三,冲突。当前请求和工具结果优先于历史记忆。
用户确认事实优先于系统推断,正式流程优先于自动经验。
第四,预算。高相关、短摘要、可追溯证据优先进入上下文,长历史按需读取。
L1 要有结构化事实源,不能只写文件
显式长期记忆保存的是用户确认过的稳定事实。
例如默认语言、输出风格、长期权限边界、业务背景和固定工作习惯。
这类信息必须可见、可编辑、可删除、可审计。推荐做法是结构化事实源加运行时投影,而不是让模型直接改一个 user.md。
| 组件 | 职责 |
|---|---|
| 事实源 | 保存原子事实、作用域、来源、版本和状态 |
| Memory Service | 处理权限、冲突、删除、审计和投影 |
| 只读投影 | 给不同 Harness 生成可消费的 user.md 或上下文片段 |
| 记忆工具 | 提供查看、新增、修改、删除和策略配置 |
| 管理界面 | 让用户直接检查和纠错 |
模型只能通过工具写入,不能直接修改投影文件。
用户说"以后报告默认中文",可以写入 L1。
用户说"这次报告用中文",只进入 L0,不能变成长期偏好。
L2 要从历史里抽取事实,而不是召回整段对话
隐式长期记忆面对的是变化中的事实。
普通向量检索可以找相似片段,但它不擅长处理新旧信息、精确实体、多跳关系和历史决策原因。
更适合的流程是先抽取,再召回。
任务结束后,系统生成带来源的事件记录。Eligibility Gate 先过滤寒暄、临时参数、执行噪声和敏感凭证。Retain 再提取事实、实体、关系和时间,写入用户独立的 Memory Bank。
新请求开始时,Recall 按多路信号召回证据:
| 召回通道 | 解决什么 |
|---|---|
| Semantic | 表达不同但语义相近的偏好或事实 |
| Keyword | 人名、项目名、错误码和术语精确命中 |
| Graph | 沿实体关系补全多跳链路 |
| Temporal | 处理时间范围、新旧变化和过期事实 |
L2 的输出应当是带来源的候选事实。它可以帮助模型判断历史背景,但不能覆盖当前用户要求,也不能覆盖 L1。
L3 自动经验要低权威、可衰减
Agent 做过的任务里,最有价值的往往是失败后恢复成功的路径。
但失败日志不能直接变成经验。只有根因被确认、恢复路径被验证、适用条件能说清,才值得沉淀。
L3 的产物不该是完整日志,而是精简的 ExperienceCard 或 TaskGuide:
{
"problem_signature": "适用的问题类型",
"preconditions": ["前置条件"],
"recommended_steps": ["推荐步骤"],
"avoid_steps": ["已验证无效或高风险的步骤"],
"validation": ["结果验证方法"],
"confidence": 0.8
}
在线使用时,L3 只召回少量高相关经验,通常控制在 1 到 3 条。它们进入规划阶段,提醒 Agent 少走弯路。
L3 不能放进不可覆盖的系统规则区,也不能和当前用户请求、L4 正式流程冲突。
自动经验应该能增强、降权、修正和过期。一次失败不能永久污染后续任务。
L4 是正式能力,不是自动经验
L4 保存经过确认的 Skill、Workflow 和 Guardrail。
它和 L3 最大的区别是权威性。
L3 可以自动生成,适合做建议。L4 必须由用户、负责人或团队确认,适合作为生产执行规则。
一条 L3 经验要晋升 L4,至少经过这些步骤:
- 汇总跨任务证据
- 生成可编辑草稿
- 写明适用场景、输入输出、工具权限和验证规则
- 用户确认作用域和负责人
- 发布前做静态检查和样例回放
- 发布后保留版本、监控和回滚能力
自动系统可以提出草稿,不能静默发布正式规则。
写回要按信息性质分层
任务结束时,系统要先判断信息类型,再决定写到哪一层。
图:不同记忆层的写入权威和使用边界不同
读取失败不能阻断主任务,除非缺的是强制 Workflow。写回失败也不应该影响本次结果,应该记录日志并重试。
自动写入尤其要谨慎。错误记忆一旦长期存在,会在多个后续任务里反复放大。
冲突处理要分事实和规则
记忆冲突分两类。
事实冲突回答"现在什么是真的"。
执行规则冲突回答"现在应该怎么做"。
两类冲突不能混在一起比较。
| 冲突类型 | 推荐优先级 |
|---|---|
| 事实 | 当前请求和工具结果 > L0 有效状态 > L1 明确事实 > L2 候选事实 |
| 执行规则 | 系统安全与当前要求 > L4 正式规则 > L3 自动建议 |
新旧事实冲突时,不要静默删除旧证据。保留来源、时间和置信度,给后续纠错留路。
L3 经验和 L4 流程冲突时,L4 胜出。自动经验可以提出更新建议,但不能覆盖正式规则。
建设顺序从确定性开始
记忆系统不要一开始就追求全自动。
更稳的建设顺序是:
- 先做 L1 显式记忆,建立结构化事实源和用户可编辑能力
- 再统一
MemoryContext,解决身份、权限、作用域、冲突和 token 预算 - 做 L2 试点,验证抽取、召回、时间更新和成本
- 让 L3 离线学习,通过影子评测证明能减少步骤、工具调用和错误恢复
- 补齐 L4 发布、版本、权限和回滚,再开放 L3 晋升
验收指标也不该是"存了多少条记忆"。
真正有意义的指标包括任务成功率、重复说明次数、无效工具调用、token 成本、延迟、错误记忆率和用户纠错成本。
记忆系统的价值,是让 Agent 少问、少错、少重复,并且在出错时知道为什么错、该从哪里修。
好记忆必须可控
Agent 记忆不是越自动越好。
没有治理的记忆,会把一次性要求变成长期偏好,把失败尝试变成推荐路径,把旧事实变成新任务的错误前提。
一套可靠的记忆系统要同时做到:
- 小索引常驻,详细内容按需读取
- 用户确认事实高于系统推断
- 自动经验低权威、可衰减、可回滚
- 正式流程必须有所有者和版本
- 每条长期记忆都保留来源、作用域和删除路径
记忆让 Agent 变聪明的前提,是它始终可解释、可撤回、可治理。
否则,记住得越多,错得越稳定。