DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Alive-Kenan /

Alive-Kenan/dsh-memory

Verified

Shared local memory pool for DeepSeek Harness conversations

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@762be727

dsh-memory

给本机所有 DeepSeek Harness 对话共用的一个持久记忆池。相关话题被提及时自动召回,侧边栏底部提供可视化面板;记忆的存储与召回都在本地完成。

分类图谱

分类筛选列表

质量反馈与抑制

特点

  • 一个本机共享池:所有会话、所有工作区共用 $DSH_HOME/storages/dsh-memory/memories.json。
  • 零 token 自动压缩摘要:用户真正输入的 prompt 和助手最终回复只在本地抽取式压缩后入库(单条 ≤240 字),不保存完整对话,也不调用模型;插件注入的 runtime context、技能目录、时间快照、工具调用中间步骤不会被误存。
  • 密钥/隐私过滤:入库前自动遮蔽私钥、API key、GitHub token、JWT、Bearer、密码等敏感片段,并把代码块、长链接替换为占位符。
  • 加密落盘:记忆池用 AES-256-GCM 加密后写入 memories.json,密钥保存在同目录 key.bin(32 字节,仅当前用户可读);旧版明文数据在首次加载时自动迁移为密文。
  • 克制的自动召回:用本地 BM25 风格关键词匹配,只有相关度足够高时才注入;最多 2 条、总长不超过 760 字符,只在该轮第一步出现一次,且同一会话不会重复注入同一条记忆。
  • 质量反馈与自动整理:列表里每条记忆都可以点 👍 / 👎。反馈会调整重要度和召回排序;连续 3 次“没用”且没有“有用”反馈的记忆会停止自动召回,再点一次 👍 即可恢复。新记忆入库时会自动合并高度相似的近重复项(同类型、同分类、Jaccard ≥ 0.78),减少重复记录。
  • 模型可主动维护:memory 工具支持 search / save / forget / feedback,适合保存稳定的偏好、环境事实和长期项目约定。
  • 自动分类:每条记忆按标签和本地关键词自动归入 偏好 / 项目 / 环境 / 事实 / 计划 / 人物 / 对话 七类,不调用模型,也不额外消耗 token;列表和图谱都可按分类筛选。
  • 侧边栏可视化:侧边栏底部「记忆」按钮打开面板,含列表、图谱两个页签。图谱以分类为星团中心、标签为外圈枢纽,展示记忆之间的关系;支持滚轮缩放、节点悬停、分类筛选和记忆详情。记录是默认行为,面板里没有“添加”按钮。
  • 纯本地:不使用嵌入 API,不联网,不上传任何内容。

安装

把仓库克隆到本机后,在仓库根目录运行:

git clone https://github.com/Alive-Kenan/dsh-memory.git
cd dsh-memory
node scripts/install.mjs desktop

安装脚本会把插件复制为 <DSH_HOME>/profiles/desktop/node_modules/dsh-memory 真实目录,并把 dsh-memory 追加到该 profile 的 dsh.profile.bundles;完成后重启 DeepSeek Harness 即可。

注意:不要用 link: 或目录联接安装。DSH 的 ESM 拦截只对 profile 内的真实路径生效,符号链接会导致启动时报 ERR_MODULE_NOT_FOUND: @deepseek-ai/dsh-llm。

使用

  • 侧边栏底部点击「记忆」打开面板。
  • 顶部分类胶囊按 偏好 / 项目 / 环境 / 事实 / 计划 / 人物 / 对话 筛选;搜索框同时匹配正文、标签和分类名。
  • 「列表」查看、搜索、删除记忆;每行右侧的 👍 / 👎 用来反馈召回质量,顶部会显示召回次数、有用率、合并重复数和抑制数。「图谱」以分类星团和标签枢纽展示关联。点击分类节点/图例筛选,点击记忆节点查看详情,滚轮或右上角 + / − / ⟲ 缩放。对话内容默认自动进入池子,不需要手动添加。
  • 也可以直接对模型说“记住……”;模型会调用 memory 工具保存。
  • 删除单条记忆:面板中点击该条右侧的 ×;清空全部:面板右下角「清空」。

数据结构

memories.json 是加密信封,不再包含可读对话:

{
  "format": "dsh-memory",
  "version": 2,
  "encrypted": true,
  "alg": "aes-256-gcm",
  "iv": "base64…",
  "tag": "base64…",
  "data": "base64…",
  "updatedAt": "2026-11-04T..."
}

解密后的 payload:

{
  "version": 2,
  "memories": [
    {
      "id": "a0d80e9b",
      "text": "用户:我更喜欢深色主题,界面要简洁克制。",
      "tags": ["偏好", "界面"],
      "kind": "dialogue",
      "category": "preference",
      "importance": 0.4,
      "compressed": true,
      "originalLength": 320,
      "hash": "…",
      "createdAt": "…",
      "updatedAt": "…",
      "source": { "sessionId": "…", "cwd": "…" },
      "hits": 1,
      "lastHitAt": "…",
      "feedbackUseful": 1,
      "feedbackUseless": 0,
      "lastFeedbackAt": "…",
      "mergedCount": 2
    }
  ]
}
  • kind: "note" 是模型保存的长期记忆;kind: "dialogue" 是本地自动压缩后的对话摘要。
  • compressed / originalLength 记录是否压缩以及压缩前长度。
  • category 是本地规则算出的分类;旧数据在加载时自动补分类。
  • hits 是自动召回次数;feedbackUseful / feedbackUseless 是质量反馈计数;mergedCount 是入库时被合并的近重复条数。
  • 上限 2500 条,超出时按重要度、时效、类型和反馈质量淘汰;排序也会使用反馈比例和 120 天半衰的时效权重。
  • 密钥:$DSH_HOME/storages/dsh-memory/key.bin。如需备份或迁移,必须同时保留 memories.json 和 key.bin;丢失密钥后旧记忆无法恢复。

开发

node --check lib/index.js
node --check lib/client.js
node scripts/install.mjs desktop

Host 半在 lib/index.js,客户端半在 lib/client.js(手写的 __ModuleLoader__ bundle,无需打包)。接口为同源 POST /dsh-memory/api/{list|add|feedback|delete|clear}。

已知边界

  • 自动召回按关键词匹配,不做语义向量检索;同义改写可能召回不到。
  • 自动记录保存压缩后的用户输入和助手最终回复摘要,跳过带工具调用的中间步骤;助手回复在产生时就会入库。
  • 加密用于静态落盘保护;key.bin 与密文同目录,能读取当前用户文件的人仍可解密。不要把 key.bin 上传到仓库或云端。
  • 摘要为本地抽取式,不保证覆盖全部细节;需要长期精确保留的内容请用 memory 工具保存。
  • 质量反馈是本地启发式:连续 3 次“没用”会抑制自动召回,但不是永久删除;仍可在列表中查看、点 👍 恢复或手动删除。近重复合并只处理同类型、同分类且相似度很高的记录,不会合并语义相近但表述不同的记忆。
—/ 5

No ratings yet

Verified DSH bundle

Commit 762be7277029

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