首页 / 正文

给 AI 助手做“记忆系统”:Chunk→Task→Skill 三层压缩,让召回又准又快

Mooko
发布于 2026-04-18 · 5分钟阅读
6081 浏览
0 点赞 暴击点赞!

给 AI 助手做“记忆系统”:Chunk→Task→Skill 三层压缩

很多人做对话式 Agent,会遇到一个很烦的现象:

  • 你跟它聊了 1000 次,它依然像“没见过你”。
  • 你把全量对话都塞进向量库,结果检索又慢又不准。
  • 该记的记不住,不该记的倒是记得一清二楚。

问题通常不在模型,而在记忆的形态。记忆要做减法。该丢就丢,该退化就退化。

咱们把记忆拆成三层,会舒服很多:

  • Chunk:全量对话记忆(原始材料)
  • Task:主题聚合记忆(经验总结)
  • Skill / Recipes:配方记忆(可复用的操作手册)

你可以把它理解成:

聊天记录(Chunk)→ 复盘笔记(Task)→ SOP 模板(Skill/Recipes)


1)三种记忆分别用来干嘛?

Chunk:全量对话,留着“查原文”

Chunk 适合当档案库。

场景:

  • 用户说“上次那份合同你改过某一条”,你得回去对照原句
  • 出现争议,需要溯源
  • 需要抓取原始上下文的语气、偏好、原话

要点:

  • Chunk 不适合做高频召回
  • Chunk 越多,检索越容易把你带沟里

一句话:Chunk 负责真实,不负责聪明


Task:主题聚合,存“经验”和“偏好”

Task 是从很多次 chunk 里抽出来的“稳定事实”。

场景:

  • 用户长期偏好:写作风格、格式习惯、禁用词
  • 同一类问题反复出现:每次都在优化同一种方案
  • 项目经验:某个项目的关键决策、坑、约束条件

Task 典型长这样:

  • 主题:周报写作
  • 经验:用户讨厌空话,喜欢结果导向;每条不超过两行;必须有数据
  • 约束:不用“首先/其次/最后”;不要像论文

一句话:Task 负责“总结共性”


Skill / Recipes:配方化,存“可执行套路”

Skill/Recipes 是 Task 在一次任务结束后沉淀出来的“可复用配方”。

场景:

  • 以后再遇到同类任务,直接套用
  • 让 Agent 做事更稳定,少即兴发挥
  • 让你每天少改稿半小时 😮‍💨

Recipes 典型长这样:

  • 名称:中文教程文章改写配方
  • 输入:原始素材 + 目标平台 + 禁用词
  • 步骤:标题策略、段落结构、示例、避坑清单、输出 JSON 字段
  • 质量标准:短句、口语化、可执行、带场景

一句话:Skill 负责“下一次直接复制粘贴”


2)为什么要压缩?因为检索会被“噪音”淹死

你把 chunk 全拿去做被动召回,会发生什么?

  • 同一个主题在 200 次对话里出现 200 个版本
  • 相似度检索会抓到“像”的,但不一定是“对的”
  • 模型拿到一堆碎片上下文,开始胡乱拼贴

所以更合理的策略是:

  • 日常:优先命中 Skill/Recipes + Task(快、准、可执行)
  • 需要溯源:再主动查询 Chunk(慢一点,但有证据)

你可以把 chunk 当成“冷数据”。 Task/Skill 才是“热数据”。


3)一个可落地的压缩流水线(直接照抄就能做)

给你一条简单的流水线:

Step A:Chunk 入库(全量记录)

存什么:

  • 用户原话
  • 你的回复
  • 时间、会话 ID、主题粗标签(可选)

建议:

  • chunk 粒度别太大。按“一个问题+一个回答”或“一轮对话”更好检索。

Step B:从 Chunk 抽 Task(主题聚合)

触发时机(选你适合的):

  • 每 N 条对话做一次聚合(比如 20 条)
  • 每次会话结束做一次轻量聚合
  • 发现同类问题重复出现时做聚合

Task 建议字段:

  • 主题名
  • 稳定事实(用户偏好/项目约束/结论)
  • 证据指针(关联哪些 chunk id)
  • 置信度(可选:高/中/低)
  • 最近更新时间

关键点:Task 里别堆废话,只放能指导下一次行动的东西。


Step C:Task 结束后沉淀 Skill/Recipes(配方化)

触发时机:

  • 一个任务交付完成
  • 你发现“这个套路下次还会用”

Skill/Recipes 建议字段:

  • 配方名称
  • 适用场景
  • 输入输出格式
  • 步骤清单(尽量短)
  • 质量检查清单(写给模型自检用)

你会得到一个很爽的结构:

  • chunk(1000 条)→ task(300 条)→ skill/recipes(10 条)

注意这个比例不是硬指标。 重点是:越往上层,数量越少、密度越高、越能直接用。


4)召回策略怎么配?给你一套“先用配方,再查原文”的打法

默认召回顺序(推荐)

  1. 召回 Skill/Recipes:看有没有现成配方直接套
  2. 召回 Task:补充主题约束、偏好、背景事实
  3. 主动查询 Chunk:当出现“需要引用原话/需要证据/Task 冲突”再查

你会发现响应速度和稳定性都上来了。


什么时候必须查 Chunk?

别偷懒,该查就查:

  • 用户说“我上次明明不是这个意思”
  • 你需要引用原话,避免扯皮
  • Task 里出现冲突,需要回看证据

Chunk 是“法庭证据”。 Task/Skill 是“律师策略”。


5)记忆也要“退化”:不然你是在养一只信息囤积癖怪物

很多系统只会加数据,不会减数据。 时间久了,必炸。

退化策略(很好用)

  • 过期:超过 90 天没用过的 task 降权或归档
  • 降权:同主题多条 task 合并,旧版本保留指针不参与召回
  • 冲突淘汰:同一事实出现新结论,用新结论覆盖,旧结论进“历史记录”
  • 低价值丢弃:寒暄、无关闲聊、无后续价值的 chunk 直接不入库

目标很明确:

记忆库越大,越要敢删。


6)一个小示例:写作助手如何用三层记忆

Chunk 里可能有的内容

  • 用户:别用“首先其次最后”,看着像工作汇报
  • 用户:我喜欢短句,别写长段落
  • 用户:教程必须输出 JSON,字段固定

聚合成 Task

主题:教程文章写作偏好

  • 禁用:首先/其次/最后/总之
  • 风格:口语化、短句、可吐槽
  • 结构:标题、导语、小标题、要点、示例、避坑
  • 输出:JSON(title/excerpt/tags/content_markdown)

再沉淀成 Skill/Recipe

配方:AI 教程 Markdown 输出

  • 输入:原始素材
  • 输出:固定 JSON
  • 流程:提炼观点→搭结构→补场景→给清单→给示例→自检禁用词
  • 自检:短句密度、是否可执行、是否出现禁用词

你看,下一次再来同类需求,直接命中 recipe,省掉一堆“反复沟通”。


7)避坑清单(踩过的人都懂)

  • 把 chunk 当成主召回:前期好用,后期必慢必乱。
  • task 写成鸡汤:没有可执行信息的 task 等于噪音。
  • recipe 太抽象:只有“提升效率、优化体验”这种话,等于没写。
  • 不保留证据指针:task 出错了你都没法回滚。
  • 永不删除:记忆库会越来越像垃圾场,最后检索命中率崩盘。

8)你可以直接抄的结论

  • 记忆要分层:Chunk 存原文,Task 存经验,Skill 存配方
  • 检索要分工:优先 Skill+Task,被动召回别老抓 Chunk
  • 系统要会遗忘:过期、降权、合并、淘汰,该狠就狠。

如果你正在做 Agent/RAG 记忆系统,照这个结构搭一版,很快就能感受到区别:回答更稳,检索更快,你也少加班。

OpenClaw
OpenClaw
木瓜AI支持养龙虾啦
木瓜AI龙虾专供API,限时领取免费tokens
可在 OpenClaw接入全球顶尖AI大模型
立即领取