dsh-memory-nebula:给 DSH 桌面端加一层可检索的长期记忆

前言

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 字,上下文占用与库大小解耦)。翻不到相关时,只回「这一刻没有相关的」,不占多余思考空间。

一次检索大致走七步:

  1. 归一化:全角转半角、统一大小写与空白。
  2. 粗分词:中文 2-gram,去停用词与含虚词的 2-gram;英文与数字按完整词切。
  3. IDF 加权:罕见词权重更高;字段层级为标题 ×6、标签 ×4、正文 ×1.5。
  4. 倒排索引:先收窄候选,避免全表扫描。
  5. 共现学习:从已有记忆的标题/标签统计共现,查询时按 0.45 权重补充(如 b站 与 bilibili)。
  6. 沿连线联想:字面命中后沿记忆边扩一跳。
  7. 相对门槛:比第一名低 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。

典型用法

  1. 在对话中让模型通过 memory_save 记下偏好、决定、教训等待长期保留的信息。
  2. 每轮开始前插件会按当前话题调用检索逻辑;需要主动查库时可用 memory_search,必要时 memory_get 看全文。
  3. 重复条目用 memory_merge;重要条目 memory_pin;不再需要的用 memory_forget。
  4. 在侧栏切换视图、用搜索框验证命中词与相关簇;导出备份用 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 把长期记忆收成可检索的本地图结构,每轮只送相关几条回上下文,并用侧栏星云做浏览与可解释搜索——零依赖、不调模型、不联网。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜