Agent 长对话 Memory 怎么设计?四层机制解决摘要丢信息
· 6 min read
长对话的 Agent Memory 不是「压缩就行」,是分层管理。
- 问题核心:summary 平等压缩所有内容,用户核心目标和硬性偏好被一起稀释。
- Working Memory:类似 system prompt 的常驻字段,永久不参与压缩,守住硬性约束。
- 分段增量摘要:滚动窗口分段保存,每段打时间戳 + 优先级标签,不合并。
- 向量数据库兜底:摘要丢细节没关系,原文存向量库按需召回。
- 多 Agent 方案:Coordinator + Observer + Reflect + Retriever 四角色分工。
- 场景选型:几十轮轻量对话 / 中长期 / 超长期多工具三档,对号入座。
摘要为什么会丢信息?
根因是「一锅煮」——所有内容被平等压缩,没有分层。
多轮对话 summary 丢信息是工程界公认的痛点,但 4 个具体原因往往被混在一起讨论:
- 平等对待所有内容:核心需求和闲聊被同等压缩,硬性约束被噪声淹没。
- 时序丢失:早期「不要用 Vue」和后期闲聊「今天天气不错」,几轮后根本分不清哪条是约束。
- 静态偏好和临时会话混在一起压缩:用户身份、长期目标这些不该压缩的东西,被一起扔进 summary。
- 粗颗粒度丢失细节:否定类需求("不要出错"、"输出简洁")、工具参数级别的约束,summary 根本装不下。
说白了,这不是 summary 模型的锅,是 system prompt 没设计好——没告诉模型「哪些是底线、哪些可以压缩」。