可塑性记忆
给 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。
情绪推导
回话之前先读懂对方那句是什么意图,再决定用什么语气回。没有独立请求:判据和记忆直接进系统提示词,模型在本来就要发的那一次请求里顺带过一遍。
设置页的「情绪推理」按钮
记忆卡片右上角只有四个字:[情绪推理]。点开是一个独立小窗,里面三样东西:
- 开关(开启 / 关闭) —— 关掉之后彻底不推理:系统提示词里那段判据整段不再注入(
section.text是函数,每轮重新读配置,下一轮对话就生效,不用重启)。按钮下方会当场回一句「已关闭,下一轮对话开始生效」。 - 检测依赖 —— 逐项打勾:Node 运行时、内置 fetch、内置 AbortController、第三方依赖、会话模型、推理方式、情绪语境(这次能捞到几条相关记忆)。
- 底部一行写明当前跟的是哪个 provider / model。
零配置:跟着宿主走。 插件自己去读 DSH 当前的模型设置,不需要填端点、密钥或模型名:
- 读哪里:profile 目录下
*.yml里的agent-default-model(当前 provider / model)——只用来在面板上显示"跟着哪个模型"。内联判定不需要端点、不需要密钥、不需要 baseURL - 跟随:宿主换模型,面板 5 秒内跟上;判定本来就是当前会话模型做的,天然跟着换
- 不碰的:不读
baseURL、不读密钥、不发任何网络请求。官模、中转、自建端点一视同仁 - 关掉开关之后,情绪段整段不进提示词(下一轮生效)
判定是怎么走的
没有独立请求。 判据 + 记忆一起写进系统提示词,主模型在本来就要发的那一次请求里顺带过一遍。
- 判据:意图五选一(说明 / 安抚澄清 / 划边界 / 求助 / 试探)、情绪、回法——三行说明书,进提示词
- 记忆:捞"和这个人有关"的条目(雷点、称呼、习惯),
EMO_KEYS命中、TECH_MEM滤掉技术噪声。不设条数上限——记了多少喂多少 - 边界:先在心里判再开口,判断过程不写给对方看;有歧义按最不越界的那种回
- 零成本:没有额外请求、没有额外延迟、没有投票和缓存这一套
开着的时候每轮多约 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
No comments yet. Be the first to write one.