Agent 记忆实现方案:从上下文窗口到 MemoryOS 的 8 条路线
Agent 的“记忆”不是把更多聊天记录塞进 prompt。它是一条从写入、整理、检索到注入的完整数据链:哪些内容值得保存,什么时候应该更新,回答时如何取回,以及用户如何删除和纠正它们。
本文整理自白白说大模型的 YouTube 视频《Agent记忆实现方案详解:一期讲透8种Memory策略,从窗口到MemoryOS》。视频公开页面目前只有标题、作者、描述和标签,没有提供可直接核验的逐字字幕或章节。因此,下面的八条路线是围绕视频主题、公开的 Agent Memory 资料和 MemoryOS 官方仓库整理出的结构化导读,不是视频逐字稿;视频中的具体演示和表述应以原视频为准。
先看全景:记忆是一个生命周期
可以把一次 Agent 任务拆成四个阶段:
- 写入:从对话、工具结果和用户反馈中识别候选记忆。
- 更新:去重、合并、标记有效期,处理新旧事实冲突。
- 检索:根据当前任务召回相关内容,并过滤过期或无权限的数据。
- 生成:把经过筛选的记忆放入上下文,同时保留来源和不确定性。
这四步比“选哪一个向量数据库”更重要。任何一层缺少边界,都可能出现记错、泄露、召回噪声或成本失控。
八条实现路线
1. 上下文窗口:最便宜的短期记忆
把最近几轮消息、工具结果和当前任务状态直接放进请求,是最简单的记忆方式。它适合一次性任务、短对话和需要完整保留局部细节的工作流。
messages = system + recent_turns + current_tool_results + user_request
它的优点是无需额外存储,行为容易解释。缺点也很明确:窗口有限,历史越长成本越高,而且“在窗口里”不等于模型一定会注意到。应给每个工具输出设置上限,并在达到预算前触发压缩或分支。
2. 摘要与压缩:把长对话变成状态
当对话接近 token 预算时,保留任务目标、已确认事实、未解决问题、关键决策和待办事项,压缩掉重复寒暄与已消费的原始输出。
conversation_state:
goal: 修复订单导出失败
confirmed_facts:
- 失败发生在 CSV 编码转换
decisions:
- 保留 UTF-8 BOM 兼容旧客户端
open_questions:
- 是否还有其他导出格式
source_turns: [42, 45, 49]
摘要必须带来源轮次或事件 ID,并允许重新生成。没有来源的摘要很容易把模型的猜测升级成事实。对关键数据,宁可保留结构化字段,也不要只保留一段自然语言总结。
3. 用户画像与偏好:稳定但可撤销的语义记忆
姓名、语言偏好、输出格式和长期项目背景属于“关于用户的事实”。可以用带时间和来源的事实表保存,而不是把它们埋在一段不可编辑的摘要里。
{
"subject": "user:42",
"predicate": "prefers_output_language",
"object": "zh-CN",
"source": "conversation:abc",
"observed_at": "2026-10-30T08:30:00Z",
"confidence": 0.92,
"status": "active"
}
偏好要能被用户查看、纠正和删除。带有效期的事实不能永久复用;例如“本周需要简短回答”不应被当成永久偏好。
4. 情景记忆:保存发生过什么
情景记忆记录一次任务、一次工具调用或一次结果,而不是把所有原始聊天永久保存。一个可审计的事件至少应包含时间、任务、结果、错误、解决方式和来源指针。
{"id":"evt_001","task":"生成发布包","outcome":"success","tools":["npm","git"],"errors":[],"resolution":"构建并推送","source":"conversation:abc"}
小规模原型可以从追加式 JSONL 开始;需要并发、过滤和权限控制时,再迁移到 SQLite 或其他数据库。事件记录不应直接包含 API key、cookie、完整私聊或无必要的敏感附件。
5. 向量检索:按语义找回相关内容
把文档、事件或事实切块后做 embedding,可以解决“用户换了说法,但意思相近”的检索问题。它适合知识库、历史案例和较大规模的语义召回。
向量相似度不是事实正确性的证明。生产检索通常还要组合时间、实体、权限、来源质量和关键词过滤,并返回证据片段。对“当前余额”“最新部署版本”这类问题,应优先查询权威实时系统,而不是召回旧向量。
6. 结构化与时间记忆:处理关系、冲突和有效期
当问题包含“谁负责什么”“这个配置何时生效”“旧版本何时失效”时,三元组、关系表或带时间的事件模型比纯向量更可靠。
建议让事实显式包含 observed_at、valid_until、status 和 source。冲突时返回两条证据和各自状态,交给 Agent 或人工确认;不要用一个最新写入值静默覆盖历史。
7. 程序性记忆:把成功步骤变成可执行技能
反复成功的任务可以沉淀为 Skill:触发条件、前置条件、工具、步骤、成功标准、失败路径和版本号都应明确。这样保存的不是“上次怎么说”,而是“下次如何做”。
技能晋升要有门槛,例如同类任务多次成功、步骤可复现、工具边界清晰,并且保留来源事件。失败率应按版本和环境统计,不能把不同系统的结果混成一个总分。
8. 记忆操作系统:统一管理多层记忆
当短期对话、中期摘要、长期画像、情景事件和技能文件都存在时,单个 Agent prompt 很难承担调度职责。此时可以引入一层统一的 Memory OS,负责存储、更新、检索和生成之间的编排。
MemoryOS 官方仓库将自己定位为面向个性化 Agent 的 memory operating system,采用分层存储,并拆分为 Storage、Updating、Retrieval、Generation 四个核心模块。它同时提供 MemoryOS-MCP 等接入方式,并说明模型调用使用 OpenAI API 接口,便于接入不同模型提供商。官方 README 还给出了 LoCoMo 基准上的 F1 和 BLEU-1 改进数据;这些是项目自报的基准结果,不能直接等同于你的业务效果,落地前仍需用自己的数据评测。
Memory OS 的价值在于统一生命周期和替换后端,不代表所有项目都需要一套大型基础设施。单 Agent、低并发场景可以先用前六七条路线的组合,等写入规则、召回质量和删除流程稳定后再抽象成统一服务。
如何选型
| 场景 | 首选组合 | 需要特别防范 |
|---|---|---|
| 一次性任务 | 上下文窗口 + 工具结果 | 窗口超限、工具输出过长 |
| 多轮客服 | 摘要 + 用户事实 + 过期时间 | 把临时状态当永久偏好 |
| 研发助手 | 情景事件 + 程序性技能 | 把一次成功升级成错误流程 |
| 企业知识问答 | 向量检索 + 权限过滤 + 来源 | 召回旧文档或越权内容 |
| 复杂个人 Agent | 分层记忆 + 统一编排 | 写入失控、隐私和删除困难 |
一个务实的升级顺序是:先把上下文预算和摘要做好,再增加结构化事实;出现可复用历史案例后引入情景存储;语义检索有明确收益时再加入向量库;最后才考虑 Memory OS 或多 Agent 共享记忆。
在 GPT88 中落地的接口边界
GPT88 的统一大模型接口适合作为上述系统的推理层。记忆服务应保持独立:它负责候选记忆筛选、权限、检索、来源和删除;模型负责理解当前任务、选择工具和生成回答。这样更换模型时,记忆数据和策略不会被绑定到某一个供应商。
每次调用都建议显式传入三类信息:
{
"task": "当前用户请求",
"memory": {
"items": ["经过权限和有效期过滤的记忆"],
"sources": ["event:evt_001"],
"uncertainty": ["该偏好上次确认于 30 天前"]
},
"policy": {
"allow_write": true,
"allow_sensitive_memory": false
}
}
不要把 API key、登录 cookie、支付信息或不必要的原始对话写入长期记忆。为用户提供查看、纠正和删除入口;记录谁在什么时候读写了哪条记忆;对旧数据设置 TTL 和归档策略。对于实时事实,先查业务系统,再让模型解释结果。
一份可执行的验证清单
- 写入测试:同一事实重复出现时是否去重,矛盾事实是否保留证据。
- 检索测试:同义表达、时间过滤、权限过滤和空结果是否正确。
- 生成测试:回答是否引用了过期记忆,是否把低置信度内容说成确定事实。
- 遗忘测试:用户删除后,缓存、向量索引、摘要和备份是否都不再返回。
- 回归测试:更换模型、embedding 或后端后,核心任务成功率和延迟是否仍达标。
真正的 Agent 记忆不是“存得越多越聪明”,而是让每条信息都有清晰的来源、生命周期和使用理由。先从可解释的小系统开始,再根据评测结果增加检索和编排层,通常比一开始堆满组件更容易得到稳定结果。
参考资料
- 白白说大模型:Agent记忆实现方案详解:一期讲透8种Memory策略,从窗口到MemoryOS(视频公开页面;本文未获得逐字字幕)。
- BAI-LAB/MemoryOS(官方仓库与 README,包含架构、模块和项目自报基准)。
- Memory OS of AI Agent(项目 README 链接的论文)。
- Agent Memory 五层架构:让 Agent 真正记住并持续学习。
- Agent Memory 实现:JSONL、SQLite、YAML 与完整执行循环。
- Agent Memory 生产化:测试、观测与安全边界。
संबंधित गाइड
Agent Memory 五层架构:让 Agent 真正记住并持续学习