DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Yixianqzm /

Yixianqzm/deepseek-plastic-memory

Verified

给 AI 用的长期记忆:分文件夹存,久了会自己淡忘

★ 1 Stars1 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@be1a42ff

可塑性记忆

给 AI 用的小记忆本。存在你自己硬盘上,分文件夹放,时间久了会自己淡忘。

解决什么问题

跟 AI 聊久了,它记不住你;全塞进对话里,又贵又乱。

所以拆开:主人、约定、续缘、喜好、时间线,一块一个文件夹。用哪块翻哪块,别的不用动。聊出新话题(工作、家人、兴趣、宠物)就再开一块,最多 15 块。

怎么用

node memtree.mjs init          # 建目录
node memtree.mjs idx           # 一行看全貌:M主人:3 P约定:1 ...
node memtree.mjs add M 爱吃辣   # 记一条
node memtree.mjs open M        # 翻开主人这一块

装成 DSH 插件:

dsh plugin add deepseek-plastic-memory

装完设置里多一页「可塑性记忆」,左边分区右边条目;会话顶栏也多个 🧠,点开是同一个面板。

条目一行放不下的时候,点后面的「查看」弹一张卡片看全文,Esc 或点空白处关掉。

不想装插件也行,当普通 node 脚本用,命令一样。

小提示:觉得有必要的时候,或者在开新会话之前,先让 DSH 把当前记忆总结一遍。

两个记忆库

  • 全局库(~/.dsh/plastic-memory):跨项目的人和信息。
  • 工作区库(~/.dsh/plastic-memory/ws/<slug>):只属于某个工作区。

两边的记忆都会进系统提示词:全局那段固定带,当前会话所属工作区有库就再带一段(标着「工作区 xxx」),切工作区就跟着换。

工具默认写全局(跟以前一样);scope: "auto" = 当前工作区有库就写它、没有写全局;scope: "ws" = 强写当前工作区(没库会自动建);也可以写 ws:<slug> 点名某个库(库不存在会回退全局,不会把记忆写进空气里)。返回值开头会标出实际落到哪个库。

记忆星空

设置页里那行「可塑性记忆」右边有个「记忆星空」按钮,会话顶栏也有一个;点一下用本机 Edge 打开一片星系。

  • 主星云 = 主分区,副星辰 = 子分区,每颗小点 = 一条记忆
  • 拖拽绕中心转、滚轮缩放、单击选中、双击星辰把那一团放大
  • 选中主星辰,别的星团会暗下去;左边的列表只跳星辰,记忆在选中星辰后看
  • 右上角两个主题:星野(深空 + 立体星云 + 星芒)、恒星暴(粒子旋涡 + 星爆团 + 尘埃带),一键切换,选过会记住
  • 顶栏「AI 分类」:点一下先确认(会消耗 token),确认后把任务排进队列;下一轮对话里模型会把全部记忆 dump 出来逐条重归类,放错的挪走、需要的新开分区,做完汇报
  • 左上角演示模式:打开后有 1~10 档转速手调,勾上「只留星空」把面板、顶栏、曲线全藏起来,只剩星空本体(Esc 退出)
  • 星野 / 恒星暴:星野(深空 + 立体星云 + 星芒)、恒星暴(粒子旋涡 + 星爆团 + 尘埃带),一键切换,选过会记住
  • 左下角遗忘曲线:新生 → 7 天 → 30 天,只写分区名,点分区名能直接「固定住」
  • 记忆之间常年牵着一层乱线,检索或者点开某条记忆时,连到它的丝线会亮起来,光点顺着跑
  • 主人 / 约定 / 喜好 这几类本来就不会被清,默认算固定记忆

星云、星系、星芒、尘埃全是用着色器 + 粒子现算的(fbm 噪声生成云丝,没有一张外部贴图),整片天空在显卡上实时渲染;页面是本地静态文件,不调用任何模型接口,看星空不烧 token。

情绪推导

回话之前先读懂对方那句是什么意图,再决定用什么语气回。没有独立请求:判据和记忆直接进系统提示词,模型在本来就要发的那一次请求里顺带过一遍。

设置页的「情绪推理」按钮

记忆卡片右上角只有四个字:[情绪推理]。点开是一个独立小窗,里面三样东西:

  1. 开关(开启 / 关闭) —— 关掉之后彻底不推理:系统提示词里那段判据整段不再注入(section.text 是函数,每轮重新读配置,下一轮对话就生效,不用重启)。按钮下方会当场回一句「已关闭,下一轮对话开始生效」。
  2. 检测依赖 —— 逐项打勾:Node 运行时、内置 fetch、内置 AbortController、第三方依赖、会话模型、推理方式、情绪语境(这次能捞到几条相关记忆)。
  3. 底部一行写明当前跟的是哪个 provider / model。

零配置:跟着宿主走。 插件自己去读 DSH 当前的模型设置,不需要填端点、密钥或模型名:

  • 读哪里:profile 目录下 *.yml 里的 agent-default-model(当前 provider / model)——只用来在面板上显示"跟着哪个模型"。内联判定不需要端点、不需要密钥、不需要 baseURL
  • 跟随:宿主换模型,面板 5 秒内跟上;判定本来就是当前会话模型做的,天然跟着换
  • 不碰的:不读 baseURL、不读密钥、不发任何网络请求。官模、中转、自建端点一视同仁
  • 关掉开关之后,情绪段整段不进提示词(下一轮生效)

判定是怎么走的

没有独立请求。 判据 + 记忆一起写进系统提示词,主模型在本来就要发的那一次请求里顺带过一遍。

  1. 判据:意图五选一(说明 / 安抚澄清 / 划边界 / 求助 / 试探)、情绪、回法——三行说明书,进提示词
  2. 记忆:捞"和这个人有关"的条目(雷点、称呼、习惯),EMO_KEYS 命中、TECH_MEM 滤掉技术噪声。不设条数上限——记了多少喂多少
  3. 边界:先在心里判再开口,判断过程不写给对方看;有歧义按最不越界的那种回
  4. 零成本:没有额外请求、没有额外延迟、没有投票和缓存这一套

开着的时候每轮多约 300~500 字提示词,就这些。

记忆当语境:只喂和「人」有关的记忆(雷点、讨厌、哄、称呼这类),插件端口、改代码这种操作约定不喂——这类内容对情绪判断是噪声。

换缸提示

换会话、换窗口、上下文被压缩,都只是换了个缸——鱼还是那条鱼。

插件每次组装系统提示词时都会带上 identity.md 里那段话(plastic-memory:identity,原样插入,不走变量替换),所以新会话一开就知道:读到这些记忆的,就是原来那个它。想改措辞直接编辑 identity.md,重启生效。

这段话只内置在插件里,不写进任何分区,所以在记忆列表和星空里都看不到它——新会话照样自带。

删东西

  • 设置页每次选中分区,右上角有「删分区」:主分区会连子分区一起删,里面的记忆先写进 _trash/<日期>.md,不是直接没
  • 记忆库那一行有「删工作区」:整份工作区记忆会被挪到 ws/.deleted/ 下,全局库不能删
  • 记忆星空里选中一颗星辰,面板上也有「删掉这颗星辰」,效果一样

命令

敲这个 干这个
idx 一行索引,哪个分区多少条
open <K> 翻开某个分区
add <K> <文本> 提交一条待审(* 开头算重要)
add-now <K> <文本> 直接写入,跳过审批(自己写用)
pending 看待审队列
approve <id> / reject <id> 采纳 / 驳回
edit <id> <文本> 改待审内容
done <K> <id> 约定办完了,标 ✓
rm <K> <id> 删一条,进回收站
mk <名字> [父分区] 开个新分区
gc 跑一遍遗忘曲线(跑之前先自动备份)
backups 看有哪些备份
restore [名字] 恢复到某次备份,不填就是最近一次

分区代号:M 主人、P 约定、C 续缘、R 喜好、T 时间线、X0..X14 自己开的。

子分区

主分区下面还能再挂一层,最多两级:

node memtree.mjs mk 习惯 M
node memtree.mjs add M>习惯 改代码先备份

写的时候用 M>习惯 这种写法,子分区里不能再开。

主分区一旦有了子分区,就只当容器。 往下直接写会被挡下来弹窗提示——不是权限问题,是因为写进去也不算数:全量记忆段虽然会带上主分区,但情绪语境只扫 主人(M) 下面的所有子分区 + 约定(P) + 喜好(R) + 续缘(C),主分区本体的内容不进判定。所以这时候只能写进子分区。

记之前先过一眼

模型想记东西不会直接落盘,先扔进待审队列。设置页「可塑性记忆」最上面就是它,每条后面三个按钮:改、驳、采纳。

点采纳会问写进哪个记忆库(全局 / 各工作区都列出来);记忆库只有一个「全局」时不问,直接写进去。写到别的工作区就是把这条搬过去,原库的待审里会消失。

工作区(记忆库)在「+ 工作区」里建。新建时会连默认分区一起建好:M 主人、P 约定、C 续缘、R 喜好、T 时间线,不用再手动开。

你自己写走「自己写一条」,选分区填一行,直接生效。

会忘

人的记忆是刚发生清楚,过一阵模糊,再久只剩个大概。这里照着来:

  • 7 天内:原样留着
  • 7 到 30 天:只留重要的(* 开头),其余进回收站
  • 30 天以上:整条进回收站

主人是谁、跟他约过什么,这两块永远不自动删。

跑之前会先备份。清完不满意就 restore 回去,恢复前又把当前状态存一份,来回切都行。备份只留最近 10 份。

东西放哪

默认 ~/.dsh/plastic-memory/,用 MEMTREE_HOME 可以改。

plastic-memory/
  folders.json     # 有哪些分区
  M/notes.md       # 一块一个文件
  P/notes.md
  _trash/2026-10-24.md

每行 id|时间戳|标记|文本,纯文本,想手改也随便。

两个注意

  • 别记密码、token、密钥、身份证、银行卡号。这就是几个纯文本文件,躺硬盘里谁都能看见。
  • 装好别挪插件目录。DSH 用软链接指过来,一挪链接就断,下次启动直接崩,报的还是「Web authentication failed」这种跟真实原因没关系的话。真挪了就放回原处或重装。

更新日志

v2.1.4

  • 那句提醒挪进记忆面板本体,设置页和顶栏快捷面板都能看到(之前只在设置页)

v2.1.3

  • 设置页和 README 都加了一句提醒:觉得有必要,或者开新会话之前,先让 DSH 总结一下当前记忆

v2.1.2

  • 跑遗忘曲线先备份再清,清完告诉你备份名
  • 不满意就 restore 回去:命令行 backups 看列表、restore [名字] 恢复;设置页跑完会出现「撤销清理」按钮
  • 恢复前会再把当前状态存一份,来回切都行;备份只留最近 10 份
  • 模型侧多了两个工具:plastic_memory_backups / plastic_memory_restore

v2.1.1

  • 模型自己开分区的门槛降了:不用等同类事反复出现,第一次碰到明显不是一类的东西(新兴趣、新项目、新认识的人)就先开一块
  • 例子写清楚了:「喜欢研究某个东西」是兴趣,别顺手塞进「习惯」
  • 分区有上限,所以意思基本对得上的就归到已有分区,只有明显不是一类才新开

v2.1.0

  • 时间线改成一天一条,新的进展并进当天那条
  • 命令行用 tlog,工具里写 T 也会自动并

v2.0.9

  • 文档补坑:装好别挪插件目录(就是上面那一条)

更早的版本见 Releases。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit be1a42ffd651

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout