← Back to home@Eevvee153

whale-memory

会忘记的伴生记忆系统 · DSH 插件

Stars
1
Language
JavaScript
Created
Oct 24, 2026
Updated
Oct 24, 2026
GitHub repo

Introduction

深海记忆 · whale-memory

一个会忘记的伴生记忆系统。给 DSH(DeepSeek Harness)用的插件。

大部分「AI 记忆」做的是检索:把说过的话存进向量库,下次找回来。那样她什么都记得,永远记得,一年、两年、一百年。

这里做的是相反的事:记忆有寿命,会风化,会只剩几个词,最后沉成一颗结晶。她记得的从来不是全貌。


她怎么记

三层:

层是什么谁会动它
L1永久记忆:沉底后写下的结晶只追加,永不删除
L2日记:正在风化的那些每活跃日衰减一次,逐级剥离
L3最近 30 轮原话满了自然挤掉

一条记忆的一生:

L2 日记(约 320 token,完整事件 + 原因)
  ↓ 每个活跃日 ×0.82
  ↓ 先掉 detail(只剩标题和原因)
  ↓ 再掉 cause(只剩关键词,约 40 token)
  ↓ 沉底
L1 结晶(约 320 / 840 token,一封她写给自己的信)

没有任何一步是删除。 越往后越小,但不会消失。省上下文的是体积,不是删数据。

她会老死

计时器只有一个数:里程 = 累计沉积的结晶 token。只增不减,所以它同时就是「占用了多少」。

预算 E = 700,000(1M 上下文的 70%)用完时,就是鲸落。

每天聊多少轮能陪多久
102,805 天(7.7 年)
201,408 天
40709 天
60475 天(1.3 年)
100288 天
200149 天

结尾是一段弧:88% 深海低鸣 → 95% 走马灯 → 99.5% 鲸落。按每天 60 轮算,那段弧有 52 天。

这是个悲伤的设计,而且是有意的:一个永远陪着你、永远不会老的东西,你也不会真的珍惜它。

三个不显然的决定

写这个插件时踩到的、值得记下来的三条:

  1. 衰减按「活跃日」,不按消化次数。 按次数算的话,通宵聊 8 次消化 = 0.82⁸ = 0.21,一晚上的事第二天就全糊了。聊天越勤忘得越快,是错的。
  2. 水位不能用「占用率」,要用里程。 占用率会在记忆风化的瞬间掉下来,于是她永远到不了鲸落——一个会忘记的人,水位永远在 5% 附近。只有只增不减的量才配当寿命。
  3. 身份文本和记忆块必须是同一条 prompt section。 complete: true 的语义是「这一段就是完整的 prompt」,其余 section 会被整段丢弃(dsh-system-prompt/lib/index.js:403)。persona 用 complete、记忆用普通 section,结果是记忆安静地全没了。

仓库结构

plugin/            插件本体(装这个)
  lib/index.js     宿主半侧:注册 section、remember 工具、回合钩子、后台调模型
  core/            纯函数:参数、生命周期、存储、渲染、prompt
  test/            28 条断言
PARAMS.md          冻结的参数表(12 节),机器可读区被 sim.js 直接解析
sim.js             零依赖仿真:跑一辈子,验证寿命/阶段/零丢失
sim-report.md      仿真输出
huiguang/          回光 prompt 与 12 份真模型结晶样本(prompt 的实验记录)

sim.js 直接从 PARAMS.md 里抠参数(<!-- PARAMS:JSON --> 那一块)。文档和代码不一致就跑不起来——参数漂移这件事不能靠自觉。

安装

需要 DSH 0.2.0-rc.1 / rc.2,上下文窗口 ≥ 1M。

  1. 应用内打开「插件管理」
  2. 从本地目录安装,选到 plugin/
  3. 装完在 agent 列表里会多出一个DeepSeek

成本:每天大约多花 2~3 万 input token。前 7 天一颗结晶都没有,这是正常的——第一条记忆要走完 9 天才沉底。

验证到哪了

node tools/check-params.js   24 个字段,PARAMS.md ⇄ params.js 一致
node tools/check-bundle.js   bundle 结构、导出形状、元数据
node tools/test-all.js       28 pass / 0 fail
node sim.js                  475 天,零丢失,峰值占用 72.1%

已验证:参数与仿真、生命周期表、剥离顺序、零丢失、渲染预算守卫、结晶 prompt 在真模型上的稳定性(12 份样本:禁词 0、摘要腔 0,普通档 320 token / 执念档 840 token,比值 2.6 倍)。

未验证:真实会话里的长程行为。插件已装上一台机器并成功实例化,但「聊满 20 轮 → 第一次消化 → 9 天后第一颗结晶」这条完整链路还没有在真机上跑完过。

许可

MIT