🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
← 全部攻略

跨会话记忆不靠提示词,靠一张七层表

对话 / 记忆类文章2026/10/22 发布4 次阅读

大多数人做跨会话记忆,第一步都是在提示词里加一段「请记住以下事项」。写到第三十条会发现两个问题:这段话每轮都在付费,而且它一直在变,把 provider 的缓存全打掉。meow-memory 换了条路:拆成七张表,按需取、按轮取、闲时整理。

这篇谈分工,不谈参数:什么该写进哪一层、什么时候该结掉一个话题、哪几个默认值会让人以为插件坏了。插件是 Phant0Meow 的 dsh-meow-memory,npm 包名是 meow-memory。

七层各回答一个问题

| 层 | 回答的问题 | 典型内容 |

|---|---|---|

| soul | 这个 AI 是谁 | 自身定位、说话方式、能力边界 |

| user | 用户是谁 | 身份、技术栈、偏好、禁忌 |

| project | 这个项目是什么 | 目录结构、约定、subcategory 下的分支 |

| fact | 什么是真的 | 版本号、路径、接口名、结论性事实 |

| lesson | 什么不能再犯 | 踩过的坑、被纠正过的做法 |

| topic | 现在在做什么 | 进行中的话题,带一句目标 |

| rules | 该怎么做事 | 设计原则、评审口径、行为准则 |

每层一张 SQLite 表,UUID 带时间前缀,id 顺序就是创建顺序 —— 按 id 排就是时间线。七层不是七个文件夹,是七种粒度:判断一条信息进哪层,问「它会在什么情况下失效」。

fact 和 lesson 的分界线

这两层最容易写混。判据是:能被验证对错的是 fact,能改变下次行为的是 lesson。

「这个项目用 pnpm」是 fact,描述现状,会随仓库改;「在这个仓库跑 npm install 会破坏 lockfile,要用 pnpm install --frozen-lockfile」是 lesson,描述后果并规定动作。

写错层的代价不对称:fact 写进 lesson,中性信息被当成行为约束,模型过度谨慎;lesson 写进 fact,下次遇到同样场景不会被提醒,等于白记。

lesson 还要写「触发条件 + 后果 + 正确做法」三段;只写「别用 X」几乎不会被命中,因为它没有场景关键词。

topic 什么时候该结

topic 是七层里唯一有生命周期的,带一句目标句,描述「现在在做什么」。

该结的信号三个:目标达成、目标消失(不做了或换方案)、目标被吸收(沉淀成 project 的约定或 lesson)。前两个是关闭,第三个是升级。

隔两天没碰不算结束。拖着不结的后果是检索池被稀释:topic 参与每轮命中,池子里躺一堆已完成的旧话题,top-2 就容易混进无关项。

首轮注入什么,为什么首轮不命中

第一条用户消息之前注入四样:soul、user、设计原则(rules)、一段记忆导引。它以独立 plugin snapshot 消息放在真实 user 消息之前 —— 是「之前」不是「改写」,用户 prompt 一个字符都没动。

然后是最常被误会的设计:首轮不跑关键词命中。不是漏了:首轮消息往往很短(「继续」「帮我看看」),拿它提关键词质量差,还容易拉进无关条目。从第二条用户消息起才检索 fact / lesson / rules / topic,全局加当前 project 锚定,取 top-2。

所以「第一句话它就忘了我上周说的事」,若那件事在 fact 或 lesson 里,是预期行为;想让第一句就知道,写进 user 或 soul。静态的 meow-memory:guide section 只注册一次、文本恒定,这是第二处缓存设计。

project 锚定:锚了和没锚差在哪

带 project 参数即锚定当前项目,检索范围是「全局 + 当前项目」;未锚定时只搜全局。

多项目并行时差别很具体:A 项目里记的「构建要先跑 codegen」,锚定了才搜得到;换目录没锚定,它就沉在 A 的库里,不污染 B 的判断。

反过来,用户偏好不该只写在某个 project 下,换项目就丢。全局标记就是给这种情况用的,它和「留空」不是一回事;memory_project 要求 project 必填,也是同一个取向。

/dream 与窗口空闲那三个小时

dream 是整理环节:沉淀原子记忆、结掉 topic、写项目总结,分三轮,由该窗口自己的主 agent 跑。

两道条件:窗口空闲 ≥180 分钟(默认),且不在峰时。峰时抑制默认是北京时间 09:00–12:00 与 14:00–18:00,按 API 峰谷电价的峰段设的。

两道都过不了时,/dream 是出口:敲一下立刻整理,不受峰时抑制。它不是「天天手动跑」,而是「这次会话很重要,不想等三小时」。会话列表还有状态:🌙 已整理、呼吸灯 进行中、灰月牙斜杠 已跳过。

几个被默认值坑到的地方

promptLang 要显式配。它决定注入、反思、dream 与工具描述的语言,也影响模型写条目用的语言 —— 关键词按条目语言提取。内置 zh / en / pt-br,取值就是 src/prompts/ 的子目录名,逐字匹配:填个不存在的名字(比如 pt)不报错,静默落回中文包。

backup.enabled 默认关。0.31.0 加了防误删兜底:空库首轮独立通知,dream 收尾用 VACUUM INTO 做一致性快照、轮转到 memory.db.bak,mtime 增量、失败静默。前提是开关打开;失败静默也意味着备份坏了没提示,得自己看文件在不在。

能力档位先说清楚

站点扫描档位是 🔵「含敏感能力」,98 处证据,前 21 条包括读写与删除本地文件(readdirSync / rmdirSync / renameSync / unlinkSync / writeFileSync)、写入剪贴板(该项不计风险),以及网络请求 —— 目标全是插件自身的 /meow-memory/* 端点。

尚无人工评估,站点也没做风险分级。 这是能力清单,不是结论:扫过不等于审过。

总结

七层表的价值不在层数,而在它逼你先回答「这条信息是什么」,再决定「谁该读到它」。顺序很简单:写的时候分清 fact 与 lesson、topic 做完就结;查的时候信那两道检索;整理交给 dream,急用就 /dream;再把 promptLang 与 backup.enabled 改掉。想对照同类插件的中文清单与安装形态见 DeepSeek Harness Hub 插件清单。

适合与不适合

适合:同时维护多个项目、需要把项目约定与踩坑分开记的人;会话经常被压缩、希望压缩后不失忆的人;愿意把记忆条目当代码库维护的人。

不适合:只想开箱就记住一切、不打算整理条目的人 —— 它给的是结构,不是自动摘要;靠语义相似度找记忆的人 —— 命中走关键词与 BM25;白天大部分时间在峰时段跑长任务、又不愿手动 /dream 的人。

标签:七层记忆、DeepSeek Harness、跨会话记忆、SQLite、应用实践

本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。

回到顶部