前言¶
DeepSeek Harness(DSH)桌面端里,对话轮次一多,模型能直接看到的往往只有最近几屏上下文。偏好、踩过的坑、上周随口提到的细节,不会自动留在每轮 prompt 里。常见做法是手动贴笔记,或把整段历史堆进窗口——前者费手,后者占用随历史膨胀。
下面介绍社区插件 dsh-memory-nebula(维护者 ZILCHW,分类:记忆)。它在每轮对话前按当前话题从本地记忆库里检索,只把相关条目写回上下文;记忆由插件侧工具自行写入与维护,不依赖外部模型、API 或联网。侧栏提供可交互的「记忆星云」视图。版本 v0.2.6,MIT 许可证,零运行时依赖。
这是什么¶
dsh-memory-nebula 是面向 DSH 桌面端的长期记忆插件:自己决定记什么、在每轮之前按话题召回,检索为纯本地的词法方案(2-gram、IDF、倒排索引、共现学习),结果可解释——每条命中会说明匹配了哪些词、落在哪个字段。全部数据落在单个 graph.json,无独立服务。
与 embedding 方案相比,作者明确不引入模型、key 与按量计费;在「记忆以百计、查询是日常问法」的规模上,同样查询与库会得到 deterministic 的相同结果。
核心功能¶
每轮注入¶
聊到后面,模型仍可能「忘事」。插件在对话轮次前用你刚说的话去库里检索,只注入少量相关记忆(README 举例:一百多条记忆时,每轮约 5 条、约 500 字,上下文占用与库大小解耦)。翻不到相关时,只回「这一刻没有相关的」,不占多余思考空间。
检索流程(memory_search)¶
一次检索大致走七步:
- 归一化:全角转半角、统一大小写与空白。
- 粗分词:中文 2-gram,去停用词与含虚词的 2-gram;英文与数字按完整词切。
- IDF 加权:罕见词权重更高;字段层级为标题 ×6、标签 ×4、正文 ×1.5。
- 倒排索引:先收窄候选,避免全表扫描。
- 共现学习:从已有记忆的标题/标签统计共现,查询时按 0.45 权重补充(如
b站与bilibili)。 - 沿连线联想:字面命中后沿记忆边扩一跳。
- 相对门槛:比第一名低 58% 以上的结果丢弃,不凑数。
综合打分(README 原文):
score = 字面(归一化) × 1.0
+ 联想 × 0.5
+ 可及性 × 0.22
+ 新鲜度 × 0.1
记忆的衰减与钉住¶
每条记忆有 weight、act、strength、hits 等字段;长期未被想起会下沉(不删,仍可在图上看到)。45 天半衰期;常被想起的更牢;pinned 钉住的不衰减。
十个工具¶
| 工具 | 作用 |
|---|---|
memory_save |
记一条;自动去重、与相似记忆连线;closes 可收掉一条待办 |
memory_search |
检索;返回 belongsTo、links;before 可限定日期 |
memory_get |
按 id 取全文与邻居 |
memory_link |
手动连两条 |
memory_forget |
删除一条及连线 |
memory_pin |
钉住 / 取消钉住 |
memory_stats |
总量、连线、分布等 |
memory_merge |
合并重复记忆 |
memory_export |
导出 JSON |
memory_import |
导入 JSON |
自动连线仅在标题语义或标签重合时建立,并按 IDF 加权,避免大众词滥连。
侧栏星云界面¶
五种视图:小银河、星云(3D 力导向,层级可递归细分)、聚类、时间轴、列表。可点击类别聚焦、点记忆飞到中心;搜索走完整检索,列表与画布上会展示命中理由(命中的词与字段)。
安装与启用¶
需要 DSH 桌面端。官方 README 给出的安装方式如下:
dsh plugin --profile desktop add link:/path/to/dsh-memory-net
也可将插件放入 ~/.dsh/plugins/ 后用插件管理器安装。装完重启 DSH,协议、面板与工具会自动注册。
装好后记忆库为空;首次写入值得记的内容时才会创建:
~/.dsh/memory-net/graph.json
迁移数据用 memory_export / memory_import;更换存放目录可设环境变量 DSH_MEMORY_NET_DIR。
典型用法¶
- 在对话中让模型通过
memory_save记下偏好、决定、教训等待长期保留的信息。 - 每轮开始前插件会按当前话题调用检索逻辑;需要主动查库时可用
memory_search,必要时memory_get看全文。 - 重复条目用
memory_merge;重要条目memory_pin;不再需要的用memory_forget。 - 在侧栏切换视图、用搜索框验证命中词与相关簇;导出备份用
memory_export。
数据文件结构(节选,见 README):
{
"version": 1,
"nodes": [{ "id": "m_xxx", "title": "...", "body": "...", "layer": "core", "kind": "rule",
"tags": ["坑"], "weight": 0.8, "pinned": true, "status": "",
"createdAt": 0, "updatedAt": 0, "hits": 0, "act": 0, "strength": 1 }],
"edges": [{ "from": "m_a", "to": "m_b", "kind": "related", "weight": 0.6 }]
}
写入为原子操作(tmp → rename)。删除该文件即清空记忆。
适用场景与注意¶
适合:长期在 DSH 桌面端做同一项目或同一主题对话、希望偏好与教训自动召回、且希望记忆与检索完全本地、可解释、无额外 API 成本的开发者。
注意:
- 插件以当前 DSH 进程权限读写
~/.dsh/memory-net/(或DSH_MEMORY_NET_DIR);安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全与合规要求。 - DSH 生态是「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
- README 中安装路径示例为
dsh-memory-net,与仓库名dsh-memory-nebula并存,本地 clone 或 link 时请与实际目录一致。
结尾¶
dsh-memory-nebula 把长期记忆收成可检索的本地图结构,每轮只送相关几条回上下文,并用侧栏星云做浏览与可解释搜索——零依赖、不调模型、不联网。