dsh-buwang
IdentifiedA private memory library for DSH with customizable personas that only records when you ask, storing everything locally in Markdown.
这是 DeepSeek Harness(DSH)的插件,请先装好 DSH 再使用。
不忘
主动记录的日记与过往,我不会忘记,的私人记忆库。
v0.1.4· MIT · 纯本地 Markdown · 无数据库、无云、无构建步骤仓库:https://github.com/cheeseRatRat/dsh-buwang · 问题与建议走 Issues
人的记性是有偏向的。当时觉得天大的事,过两个月只剩一句「好像有过这么回事」;而真正要紧的那些,往往连一句都没留下。
模型更是这样。上下文一关,刚才聊过的一切就散了——不是不肯记,是没处放。
「不忘」这个名字没有典故,就三个字:该记的,不忘。
但它也不是备忘录。备忘录是写给人翻的,而这里放的是「你希望它记得的事」——所以既要记得住,又不能把脑子塞满。后面每一条设计,都是从这个矛盾里长出来的。
只想先看一页?docs/功能介绍.md —— 四个分区、七件工具、怎么用、数据存哪,一页说完。
一、它和常见的记忆插件不一样
大部分记忆插件在解决「模型记不住」,所以让模型自动把东西塞进上下文:每轮开始前召回几条、注入几条。
那是让模型替你决定什么重要。
「不忘」反过来:它什么都不自动做。
- 你不说「记住这个」,它一个字都不写。
- 你不说「翻一下那天」,它一个字都不读。
- 你不说「搜工坊」,那些手艺连名字都不在上下文里。
省下来的每一层,都是你自己在决定,而不是一个召回算法在替你猜。
代价是你要开口。好处是:上下文里出现的每一行,都是你同意过的。
二、三层记忆
| 层 | 存在哪 | 每轮占多少 | 写法 |
|---|---|---|---|
| 同游 | 记忆/<人格>/同游.md | 全文注入,永不截断 | 一行一条,短句,一直成立 |
| 近期 | 记忆/<人格>/近期/YYYY-MM-DD.md | 只挂最近几天,一天一行 | 一次总结一条;同一天再总结落 -2、-3 |
| 长期 | 记忆/<人格>/长期/YYYY-MM-DD~YYYY-MM-DD.md | 只挂一行标题 + 一句话 | 巩固后压成一段日子,细节要翻 |
下面两层平时只露出一行,所以哪怕存了几百天,也压不垮上下文。需要细节时说一声,它就顺着标题去把正文取回来。
「整理」这个动作是你要它做的(memory_consolidate 列出该整理的、memory_archive 落成月小记)。它不会趁你睡觉偷偷把日记压缩掉。
同游怎么长
同游是咱俩的定数簿,不是资料柜:称呼怎么叫、哪些话不许说、你喜欢我怎么回、一起答应下来的事。它每轮全文注入,所以每条都要短——上限 60 行,面板标题上直接写着 N / 60。
写进来有两条路:
- 你开口:「记住这个:我不喝冰的」→ 添一行。最清楚的那条路,一直都在
- 我自己挑(设置里的「同游精选」三档):
关闭:只在你明说「记住」时写只在总结时(默认):你说「总结今天」,我就顺手从这次对话里挑 1~3 条写进来聊到就记:平时一出现明显定下来的事(约定、边界、称呼变化)就当场添一条,不设条数上限,但每条都写短
挑什么由我判断,但规矩是死的:只写「过一个月还成立」的——共同的约定、对彼此的方式、称呼与边界、说话与回应的偏好;发生了什么归近期日记,不往同游里塞。写之前先看现有的,同一件事不换个说法再添一遍。
满了 60 条不会再硬塞:我先把现有清单摆给你,挑几条建议搬去长期(原文一字不改,以后照样搜得到),你点头才动;面板那个「整理同游」是同一件事的手动版,默认留最近 30 条。
三、四个分区
| 分区 | 放什么 | 谁能看见 |
|---|---|---|
| 人格 | 它是谁、怎么说话、什么底线 | 只注入启用的那一个,全文 |
| 记忆 | 同游 / 近期 / 长期,还有只给自己看的「自述」 | 同游全文,其余一行 |
| 工坊 | 可复用的手艺、踩过的坑、做法 | 默认完全不加载 |
| 封存 | 不要了的文档、删掉的人格 | 不出现,随时接回来 |
人格可以有很多个,同一时间只有一个醒着。每个人格一套独立档案(记忆、工坊都是分开的),互不串味。删掉一个人格时,它的档案整盒进封存,不是删掉——想起来了,点「接回来」,三块各自归位。
共享是主动的、只读的:默认谁都不共享;你让 A 共享出去,B 那边也只是「可以翻的别人」,能读不能写。
自述是写给自己的一页日记。它不进索引、不进检索,也不占任何上下文——只在面板里放着,你想看才看。同一小时最多一条,可以写长。正文顶上会写一句日期(2026年10月20日 星期二),像手写日记那样;点开任意一页,页边就能接着翻。
封存有两条路,别混:
- 封存一个文档 → 落进
封存/<当前人格>/,恢复后回原位 - 删除一个人格 → 整盒落进
封存/<人格>/,接回来时三块各自归位
四、四条铁律
- 你不开口,它不记。
- 你不开口,它不读。
- 工坊默认完全不加载。 说「搜索工坊」才列目录,挑中再开,这件事办完就关掉。
- 人格默认不共享。 要共享得你主动点开,而且只给读、不给改。
第 1、2 条写在工具描述里,模型每轮都看得见;第 3 条写在系统提示的分区规则里;第 4 条由数据结构保证——共享出去的人格在别人那儿是只读快照。
五、安装
前提
- 先装好 DeepSeek Harness(
dsh),能打开 Web 界面。桌面版下载在 这里。 - DSH
0.1.7-rc.1或更新(我们在0.2.1-rc.2上验证过,门槛压在0.1.7-rc.1,尽量让老一点的版本也能装)。真比这更老的会被engines在安装时拦下并说明原因。 - 版本之间接口有变化时,插件只在自己那一块降级(缺哪个接口就少哪个功能,写进
_debug.log),不会把宿主带崩。 - 把本仓库放到任意一个固定目录,比如
D:\plugins\dsh-buwang。路径里别有空格和奇怪符号。
装进来
只走这一条路:在 DSH 里对 Agent 说一句
把这个目录装成插件:
D:\plugins\dsh-buwang(换成你自己的路径)
Agent 会用 plugin_manager 的 install_bundle,把绝对路径当安装目标。它改的是你 profile 的 package.json,所以可能弹一次授权。装完就能用:侧栏会多一个书页样的图标;没看到就先 Ctrl+R 刷一下页面。
别手改 profile 的
package.json。 那个文件多一个逗号、少一个括号,整个宿主就起不来,弹窗只说一句Unexpected token ',' ... is not valid JSON——看着像插件崩了,其实是在装配插件树的时候就断了,插件根本还没跑。真要手动改,只有两处:
dependencies里加一行"dsh-buwang": "link:<你的绝对路径>"(最后一项后面不能有逗号),以及dsh.profile.bundles数组里加一项"dsh-buwang"(不能出现,,)。改完先校验一遍 JSON 再重启。
装不上怎么查
- 看库根目录里有没有
_debug.log:有apply start, root=…就说明宿主已经起来、插件也跑到了,问题在界面;整个文件都没有,说明插件根本没被加载(看路径和清单)。 - 侧栏没图标但没报错:先
Ctrl+R;还不行就关掉整个宿主重开(关窗口常常只是缩到托盘)。
第一次打开
第一次打开会自动建库:~/Documents/buwang(Windows 上是 C:\Users\<你>\Documents\buwang),里面有一个叫「默认」的人格,和一张空的同游。
想让它住别处(比如挪到 D 盘或者备份盘):面板 → 设置 → 换位置… → 选文件夹 → 选「连文件一起搬」或「只改指向」。旧目录它永不自动删,只复制,你自己确认没问题了再手动清。
设置里还有一个 备份一份:点一下,整个库复制到隔壁文件夹 <库名>-备份-YYYYMMDD-HHMM,旧备份不删也不覆盖,同一分钟再点自动加 -2。
六、怎么用
日常几乎不用背命令,开口说话就行:
| 你说 | 它做的事 |
|---|---|
| 「记住这个:我不喝冰的」 | 写成同游里的一行(定数/偏好) |
| 「记住今天:装好了不忘」 | 写进今天的近期日记 |
| 「这个做法存进工坊,叫『部署前检查』」 | 存成一条按需技能,默认不加载 |
| 「总结一下今天」 | 把今天的日记、学到的手艺归档 |
| 「翻一下 10 月 19 号」 | 读那天,全文 |
| 「搜工坊」 | 列出技能目录,你挑一个,它帮你开 |
| 「封存这条」 | 文档进封存,随时能恢复 |
问得含糊也没关系:中文长句会被切成 2~4 字的小段去匹配,「昨天那个搬家的麻烦」这种不带空格的话也翻得到,只是标题命中的会排在前面。
面板里也能直接动手:点条目改内容、工坊页「+ 写一个技能」。自述直接就地翻——点开任意一页,编辑页顶上有一条翻页带:左「‹ 10-20 03:45」是更早,右「10-20 19:53 ›」是更晚,中间是第几页,方向不用猜。
七、数据存在哪
全部是本机明文 Markdown,没有数据库、没有云、没有隐藏格式。你可以用任何编辑器改,也可以直接把整个文件夹复制走——它就是你的记忆库。
设置.json { format:2, name, budget, recentLimit, keepDays, activePersona }
人格/<人格名>.md 人格本体,只启用一个
记忆/<人格>/同游.md 同游:每轮全文
记忆/<人格>/近期/YYYY-MM-DD.md 短期:一次总结一条(同日 -2、-3)
记忆/<人格>/长期/YYYY-MM-DD~YYYY-MM-DD.md 长期:巩固后的区间小结
工坊/<人格>/常驻|按需/*.md 工坊:常驻=启用,按需=关闭
自述/<人格>/YYYY-MM-DD.md 只给自己看的日记:一次一页,一小时最多一条
封存/<人格>/*.md 封存的文档
封存/<已删人格>/ 删掉的人格整盒(含 人格.md + 记忆/ + 工坊/)
库住哪儿,由一个指针文件决定(指针不能放在库里,鸡生蛋):
%USERPROFILE%\.buwang\root.txt 一行路径
优先级:插件配置 dataDir > 指针 > 环境变量 BUWANG_HOME > 默认 ~/Documents/buwang。
面板写的指针压过环境变量——你在界面上选的才算数。换完要重载插件才生效。
索引分块顺序(每轮注入的那段):
【人格】→【同游】→【可以翻的人格 · 只读】→【最近的日子】→【更早】→【工坊 · 已启用】
人格和同游是全文、不截断、不算进记忆预算;近期长期各一行;工坊不启用就一点痕迹都没有;自述永远不出现。
写入是原子的:先写同目录的临时文件,再改名盖过去。断电或崩溃最多丢「还没落盘的那一篇」,不会把已有记忆写成半截。
八、工具
| 工具 | 干什么 |
|---|---|
memory_list | 列目录,一行一条(不返回正文) |
memory_recall | 按日期、标题、关键词读正文 |
memory_save | 写一条:tongyou / diary / workshop / self |
memory_seal | 把一条挪进封存,之后不再索引、不再检索 |
memory_consolidate | 列出该整理的日子(带正文),给「写月小记」用 |
memory_archive | 落成月小记,并把清单里那些日子搬进档案区 |
memory_workshop | 开/关一条工坊技能(开了才每轮注入正文) |
九、隐私
- 所有数据只在你自己的磁盘上。插件不发任何网络请求。
- 唯一的「联网」是你的模型自己在说话,跟记忆库无关。
- 你不开口,记忆不会进上下文;工坊不启用,连名字都不会。
- 面板里能看到、能改、能删所有东西。想彻底清掉,删掉库文件夹即可。
十、示例
examples/示例库/ 里放了一个填满的库(虚构的人物「蓝色小肥鱼」和「小满」),想看看长什么样可以直接翻。它不会被自动加载——插件只会用你自己的库。
想照着摆,把 examples/示例库/ 里的目录复制进你的库目录即可(设置.json 别覆盖,那个 activePersona 得指向你的库里的名字)。
十一、仓库结构
dsh-buwang/
├── package.json 插件清单(dsh.bundle / dsh.client / exports)
├── cordis.patch.yml bundle 补丁:插入 buwang 这一行
├── index.js 宿主侧:服务、十条 exact 路由、工具注册
├── client.js 界面侧:侧栏图标、四个标签面板、自述就地翻页
├── icon.svg 展示图标(市场用,运行时不用)
├── locale/{zh,en}.json 标题与描述
├── src/host/store.js 全部读写:布局、索引、迁移、封存、指针、保存
├── src/host/tools.js 七个工具的描述与执行
├── examples/示例库/ 一个填满的库,纯示例
├── docs/介绍.md 这个项目是什么(长版介绍 + 可直接贴市场的短文案)
├── docs/功能介绍.md 一页看完:分区、工具、用法
├── docs/设计笔记.md 七个设计决定为什么长这样
├── README.md
├── CHANGELOG.md
└── LICENSE
十二、常见问题
装了但侧栏没图标?
先 Ctrl+R。还没有,就检查它有没有进 dsh.profile.bundles(只写进 dependencies 是不加载的);再确认宿主是重启过的。
换位置以后打不开?
指针写在 %USERPROFILE%\.buwang\root.txt,里面那行路径要真实存在。换完要重载插件——root 是在插件启动时读一次的。
能不启用任何人格吗? 不行。至少有一个——第一次打开会自动建「默认」。人格不是一个可选装饰,它是「它在跟谁说话」这件事本身。
会不会把不该记的记下来? 不会,因为它不自动记。唯一会写的时机是你说了「记住」。
它和「自动召回」类插件能一起装吗? 能,互不干扰。只是两者理念相反,一起用的话,上下文里那部分你就不完全可控了。
MIT,随便用、随便改。要是它替你记住了一点什么,那就是它该干的事。
忘掉的是风,记住的是岸。
Comments
Loading…
Similar plugins
by ly028716
Intelligent memory system for DSH - Track user preferences, tool usage, and project context to provide personalized recommendations
★ 0
MIT
JavaScript
Sep 28, 2026
dsh plugin --profile web add @ly028716/dsh-memory-pluginby CuteSamurai24
Small file memory for DeepSeek Harness. The model writes markdown, the host injects it.
★ 0
MIT
JavaScript
Aug 18, 2026
dsh plugin --profile web add dsh-md-memoryHuman-governed cross-session memory spaces with independent source and consumer relationships, provenance, versioning, and pre-send injection review.
★ 0
dsh plugin --profile web add dsh-memory-spacesby disc0nct
A persistent memory plugin for DeepSeek Harness that enables agents to store and recall information across sessions — DSH-native tools with atomic storage, validation, and concurrency-safe reads
★ 0
MIT
JavaScript
Aug 22, 2026
dsh plugin --profile web add @deepseek-ai/dsh-tool-memoryby CraZY222123
Self-evolve memory plugin for DeepSeek Harness: learns from your own sessions, injects token-budgeted preference summaries into every step. /memory commands, memory tool, settings panel. Local-only da
★ 8
↓ 40/wk
MIT
JavaScript
Aug 21, 2026
dsh plugin --profile web add dsh-self-evolveby kkwings
该仓库暂未提供项目说明。
★ 1
MIT
JavaScript
Oct 12, 2026
dsh plugin --profile web add dsh-super-memory