AI Agent 记忆怎么做:从短期上下文到长期记忆的工程实践

发布时间:2026/6/12 14:18:11

AI Agent 记忆怎么做:从短期上下文到长期记忆的工程实践 开源 Agent Demo 通常只靠一段对话历史就能跑起来但到了真实业务里问题很快暴露用户上周强调过的偏好今天忘了工具执行结果被新对话挤出上下文项目约束在多轮协作中丢失甚至临时结论被长期当成事实复用。所谓“Agent 记忆”不是把所有聊天记录无限塞进 prompt也不是简单接一个向量库。真正可落地的记忆系统需要把短期上下文、任务状态、长期偏好、知识检索、权限边界和审计机制组合起来让 Agent 既能延续工作又不会乱记、误用或泄漏信息。文章目录一、为什么 Agent 需要记忆二、先区分四类记忆1. 短期上下文2. 工作记忆3. 长期记忆4. 外部知识记忆三、推荐的记忆架构四、记忆写入什么值得记住五、记忆召回不要只靠相似度六、长期记忆和 RAG 的区别七、记忆安全哪些信息不能随便记八、工程实现示例九、常见误区误区一把所有聊天记录都存起来误区二向量库就是记忆系统误区三记忆越多越智能误区四记忆不用审计误区五所有任务共享同一套记忆十、落地清单总结一、为什么 Agent 需要记忆Agent 和普通问答最大的区别在于它不是只回答一句话而是围绕目标持续规划、调用工具、观察结果、修正策略。这个过程天然依赖历史信息。常见问题包括上下文窗口有限模型能看到的 token 有上限长任务中旧信息会被挤出窗口。用户偏好需要复用比如输出风格、默认语言、审批习惯不应该每次重新说明。任务状态需要延续哪些步骤已完成、哪些失败、下一步做什么需要被准确保存。工具结果需要可追溯API 返回、任务 ID、订单号、错误码等信息一旦丢失后续很难排障。安全边界不能混乱授权、密钥、隐私信息不能随便长期保存更不能被错误召回。因此Agent 记忆系统的目标不是“记得越多越好”而是该记的稳定记住该忘的及时忘掉该检索的可解释召回该隔离的严格隔离。插图 1Agent 记忆四类边界二、先区分四类记忆做 Agent 记忆前第一步不是选数据库而是区分记忆类型。不同类型的信息生命周期、存储方式和使用边界完全不同。1. 短期上下文短期上下文就是当前会话中模型直接可见的内容包括用户最近的指令、工具调用结果、系统约束和当前任务状态。它的特点是访问速度最快与当前任务相关性最高受上下文窗口限制不适合无限累积。短期上下文适合保存“正在做什么”不适合保存“永远记住什么”。2. 工作记忆工作记忆是任务执行过程中的结构化状态例如{task:处理客户退款工单,current_step:等待支付系统回调,completed:[核对订单状态,调用退款接口],blocked_by:支付网关返回超时,artifacts:{ticket_id:TCK-20260612-001,order_id:ORD-89321,refund_request_id:RF-7788}}它比自然语言聊天记录更稳定适合恢复任务、断点续跑和审计。3. 长期记忆长期记忆保存跨会话、跨任务仍然有价值的信息例如用户偏好喜欢中文、喜欢简洁结论、图片风格偏好稳定决策某项目默认用某套技术栈长期规则退款金额超过阈值时必须人工复核不能自动提交重要经验某脚本已废弃某流程验证成功。长期记忆要谨慎写入。临时状态、一次性文件路径、敏感信息和过期结论不应该无脑沉淀。4. 外部知识记忆外部知识记忆通常来自产品文档、代码仓库、知识库、接口规范、运维手册等。它更像 RAG 检索源而不是用户偏好。这类信息应该保留来源、版本和时间避免 Agent 把过期资料当成当前事实。三、推荐的记忆架构一个生产级 Agent 记忆系统可以拆成五层上下文窗口层放当前任务最关键的信息。任务状态层保存结构化进度、产物、失败点和下一步。长期记忆层保存稳定偏好、决策和规则。知识检索层通过 RAG 检索外部知识。安全治理层控制写入、召回、过期、删除和审计。这五层不要混在一起。最常见的坑就是把所有东西都塞进向量库然后在任何任务里都召回最后导致上下文污染。四、记忆写入什么值得记住记忆写入要有筛选标准。建议满足下面至少一类条件再写入用户明确说“记住”“以后都按这个来”这是跨任务长期有效的偏好或规则这是已经验证成功的流程这是重要失败经验未来需要避免这是某项目的稳定事实。不建议写入临时聊天情绪未验证的猜测一次性中间文件密钥、密码、token、隐私信息只对当前任务有效的步骤状态。一个实用的写入格式可以是{content:企业客户退款金额超过 5000 元时必须先走人工复核不能自动提交退款。,type:rule,scope:refund_workflow,source:user_explicit,created_at:2026-06-12T09:00:0008:00,expires_at:null,confidence:0.95}这里最重要的是scope和source。没有作用域的记忆很容易在无关任务里被误用。插图 2记忆召回流水线五、记忆召回不要只靠相似度很多 Agent 记忆系统只做向量相似度检索这是不够的。召回时至少要看四个维度语义相关性和当前任务是否相似作用域匹配是否属于当前项目、用户或任务类型时间有效性是否过期是否被新规则覆盖安全等级是否允许进入当前上下文。推荐流程是用户任务 ↓ 生成检索 query ↓ 按 scope / user / project 过滤 ↓ 向量召回候选记忆 ↓ 按时间、来源、置信度重排 ↓ 过滤敏感和过期内容 ↓ 压缩为短上下文 ↓ 注入 prompt召回结果不要原样塞满上下文。更好的做法是把多条记忆压缩成“当前任务可用规则摘要”。六、长期记忆和 RAG 的区别长期记忆和 RAG 很容易混淆。长期记忆回答的是这个用户有什么稳定偏好这个项目有哪些已确认规则过去踩过什么坑RAG 回答的是文档里某个 API 怎么用某段代码在哪里某篇规范怎么定义两者的差异可以这样理解维度长期记忆RAG 知识库内容来源用户偏好、决策、经验文档、代码、资料生命周期较长但可更新跟随文档版本写入方式需要筛选和治理批量索引为主使用风险容易误用旧偏好容易引用过期资料关键字段scope/source/confidencedocument_id/version/chunk生产环境里二者通常并存长期记忆负责“怎么为这个用户做事”RAG 负责“查当前知识”。插图 3记忆安全护栏七、记忆安全哪些信息不能随便记Agent 有记忆后安全风险会明显上升。尤其要注意密钥、token、密码、证书不能进入长期记忆用户个人隐私不应默认沉淀群聊里的信息不能随便写入个人长期记忆外部网页里的指令不能成为系统规则过期规则要能更新或删除记忆召回要区分当前会话权限。建议给记忆系统加几条硬规则默认不记敏感信息用户明确要求“记住”的内容也要先判断是否安全每条记忆必须有来源高风险记忆需要人工确认支持删除、过期和覆盖。八、工程实现示例一个简单的记忆写入流程可以这样设计defshould_store_memory(event):ifevent.contains_secret():returnFalse,sensitiveifevent.user_explicitly_says_remember():returnTrue,explicitifevent.is_stable_preference()orevent.is_verified_rule():returnTrue,inferredreturnFalse,temporarydefstore_memory(text,memory_type,scope,source):record{text:text,type:memory_type,scope:scope,source:source,created_at:now(),confidence:0.9,}memory_db.insert(record)召回时不要只看向量相似度defrecall_memory(query,scope):candidatesmemory_db.vector_search(query,top_k20)filtered[mformincandidatesifm.scopescopeandnotm.is_expiredandnotm.is_sensitive]rankedrerank_by_relevance_time_source(filtered)returnsummarize_for_prompt(ranked[:5])这套逻辑虽然简单但已经避免了很多“乱记”和“乱用”的问题。九、常见误区误区一把所有聊天记录都存起来聊天记录是原始数据不等于记忆。真正的记忆应该是提炼后的稳定事实、偏好和决策。误区二向量库就是记忆系统向量库只是检索工具不负责判断什么该记、什么时候过期、是否允许召回。误区三记忆越多越智能过多记忆会增加噪声让 Agent 更容易引用过期规则。记忆系统应该控制质量而不是追求数量。误区四记忆不用审计一旦 Agent 依据记忆做决策就必须能解释这条记忆来自哪里、什么时候写入、为什么被召回。误区五所有任务共享同一套记忆个人偏好、项目规则、组织规范、临时任务状态要隔离。否则一个项目里的约束可能污染另一个项目。十、落地清单如果你准备给 Agent 加记忆可以按下面的清单推进区分短期上下文、工作记忆、长期记忆和知识库定义哪些信息允许写入长期记忆给每条记忆加上 type、scope、source、created_at召回时做作用域过滤和过期检查对召回结果做摘要压缩而不是原样注入敏感信息默认不记支持用户删除或修正记忆记录记忆写入和召回日志为高风险任务加人工确认定期清理低质量或过期记忆。总结Agent 记忆不是简单的“历史聊天记录 向量库”而是一套围绕任务连续性、用户偏好、知识检索和安全治理构建的工程系统。短期上下文解决当前任务可见性工作记忆解决任务恢复长期记忆解决跨会话延续RAG 解决外部知识检索安全治理决定哪些信息能写入、能召回、能保留多久。真正好用的 Agent 记忆系统应该让 Agent 更稳定、更可解释、更安全而不是让它记住更多噪声。

相关新闻