很多人做对话式 Agent,会遇到一个很烦的现象:
- 你跟它聊了 1000 次,它依然像“没见过你”。
- 你把全量对话都塞进向量库,结果检索又慢又不准。
- 该记的记不住,不该记的倒是记得一清二楚。
问题通常不在模型,而在记忆的形态。记忆要做减法。该丢就丢,该退化就退化。
咱们把记忆拆成三层,会舒服很多:
- Chunk:全量对话记忆(原始材料)
- Task:主题聚合记忆(经验总结)
- Skill / Recipes:配方记忆(可复用的操作手册)
你可以把它理解成:
聊天记录(Chunk)→ 复盘笔记(Task)→ SOP 模板(Skill/Recipes)
Chunk 适合当档案库。
场景:
- 用户说“上次那份合同你改过某一条”,你得回去对照原句
- 出现争议,需要溯源
- 需要抓取原始上下文的语气、偏好、原话
要点:
- Chunk 不适合做高频召回
- Chunk 越多,检索越容易把你带沟里
一句话:Chunk 负责真实,不负责聪明。
Task 是从很多次 chunk 里抽出来的“稳定事实”。
场景:
- 用户长期偏好:写作风格、格式习惯、禁用词
- 同一类问题反复出现:每次都在优化同一种方案
- 项目经验:某个项目的关键决策、坑、约束条件
Task 典型长这样:
- 主题:周报写作
- 经验:用户讨厌空话,喜欢结果导向;每条不超过两行;必须有数据
- 约束:不用“首先/其次/最后”;不要像论文
一句话:Task 负责“总结共性”。
Skill/Recipes 是 Task 在一次任务结束后沉淀出来的“可复用配方”。
场景:
- 以后再遇到同类任务,直接套用
- 让 Agent 做事更稳定,少即兴发挥
- 让你每天少改稿半小时 😮💨
Recipes 典型长这样:
- 名称:中文教程文章改写配方
- 输入:原始素材 + 目标平台 + 禁用词
- 步骤:标题策略、段落结构、示例、避坑清单、输出 JSON 字段
- 质量标准:短句、口语化、可执行、带场景
一句话:Skill 负责“下一次直接复制粘贴”。
你把 chunk 全拿去做被动召回,会发生什么?
- 同一个主题在 200 次对话里出现 200 个版本
- 相似度检索会抓到“像”的,但不一定是“对的”
- 模型拿到一堆碎片上下文,开始胡乱拼贴
所以更合理的策略是:
- 日常:优先命中 Skill/Recipes + Task(快、准、可执行)
- 需要溯源:再主动查询 Chunk(慢一点,但有证据)
你可以把 chunk 当成“冷数据”。 Task/Skill 才是“热数据”。
给你一条简单的流水线:
存什么:
- 用户原话
- 你的回复
- 时间、会话 ID、主题粗标签(可选)
建议:
- chunk 粒度别太大。按“一个问题+一个回答”或“一轮对话”更好检索。
触发时机(选你适合的):
- 每 N 条对话做一次聚合(比如 20 条)
- 每次会话结束做一次轻量聚合
- 发现同类问题重复出现时做聚合
Task 建议字段:
- 主题名
- 稳定事实(用户偏好/项目约束/结论)
- 证据指针(关联哪些 chunk id)
- 置信度(可选:高/中/低)
- 最近更新时间
关键点:Task 里别堆废话,只放能指导下一次行动的东西。
触发时机:
- 一个任务交付完成
- 你发现“这个套路下次还会用”
Skill/Recipes 建议字段:
- 配方名称
- 适用场景
- 输入输出格式
- 步骤清单(尽量短)
- 质量检查清单(写给模型自检用)
你会得到一个很爽的结构:
- chunk(1000 条)→ task(300 条)→ skill/recipes(10 条)
注意这个比例不是硬指标。 重点是:越往上层,数量越少、密度越高、越能直接用。
- 召回 Skill/Recipes:看有没有现成配方直接套
- 召回 Task:补充主题约束、偏好、背景事实
- 主动查询 Chunk:当出现“需要引用原话/需要证据/Task 冲突”再查
你会发现响应速度和稳定性都上来了。
别偷懒,该查就查:
- 用户说“我上次明明不是这个意思”
- 你需要引用原话,避免扯皮
- Task 里出现冲突,需要回看证据
Chunk 是“法庭证据”。 Task/Skill 是“律师策略”。
很多系统只会加数据,不会减数据。 时间久了,必炸。
- 过期:超过 90 天没用过的 task 降权或归档
- 降权:同主题多条 task 合并,旧版本保留指针不参与召回
- 冲突淘汰:同一事实出现新结论,用新结论覆盖,旧结论进“历史记录”
- 低价值丢弃:寒暄、无关闲聊、无后续价值的 chunk 直接不入库
目标很明确:
记忆库越大,越要敢删。
- 用户:别用“首先其次最后”,看着像工作汇报
- 用户:我喜欢短句,别写长段落
- 用户:教程必须输出 JSON,字段固定
主题:教程文章写作偏好
- 禁用:首先/其次/最后/总之
- 风格:口语化、短句、可吐槽
- 结构:标题、导语、小标题、要点、示例、避坑
- 输出:JSON(title/excerpt/tags/content_markdown)
配方:AI 教程 Markdown 输出
- 输入:原始素材
- 输出:固定 JSON
- 流程:提炼观点→搭结构→补场景→给清单→给示例→自检禁用词
- 自检:短句密度、是否可执行、是否出现禁用词
你看,下一次再来同类需求,直接命中 recipe,省掉一堆“反复沟通”。
- 把 chunk 当成主召回:前期好用,后期必慢必乱。
- task 写成鸡汤:没有可执行信息的 task 等于噪音。
- recipe 太抽象:只有“提升效率、优化体验”这种话,等于没写。
- 不保留证据指针:task 出错了你都没法回滚。
- 永不删除:记忆库会越来越像垃圾场,最后检索命中率崩盘。
- 记忆要分层:Chunk 存原文,Task 存经验,Skill 存配方。
- 检索要分工:优先 Skill+Task,被动召回别老抓 Chunk。
- 系统要会遗忘:过期、降权、合并、淘汰,该狠就狠。
如果你正在做 Agent/RAG 记忆系统,照这个结构搭一版,很快就能感受到区别:回答更稳,检索更快,你也少加班。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/271143.html