dsh-memory-eternal 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +241 -275
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,275 +1,241 @@
1
- # 🧠 记忆核心(dsh-memory-eternal)— 给 DeepSeek Harness 装上「第二大脑」
2
-
3
- <p align="center">
4
- <img src="https://img.shields.io/badge/DeepSeek%20Harness-plugin-3B82F6" alt="DSH plugin" />
5
- <img src="https://img.shields.io/npm/v/dsh-memory-eternal" alt="npm version" />
6
- <img src="https://img.shields.io/github/stars/EternalNight996/dsh-memory-eternal?style=flat" alt="GitHub stars" />
7
- <img src="https://img.shields.io/github/license/EternalNight996/dsh-memory-eternal" alt="license" />
8
- <img src="https://img.shields.io/badge/%E6%99%BA%E8%83%BD%E5%8E%BB%E9%87%8D-CJK%E6%A3%80%E7%B4%A2-10B981" alt="self-built" />
9
- </p>
10
-
11
- > 🧠 **对话结束自动沉淀、跨会话真实不失忆;召回只取相关小块,省 token、少噪音。** 全自研、零第三方记忆框架、不改 DSH 源码、一条命令安装——**为你装一个自己说了算的、可 git 管理的本地记忆库。**
12
-
13
- <p align="center">
14
- <strong>自研·去重·CJK 检索·知识图谱·双语·本地优先</strong> — ⭐ 觉得好用就点个 Star,让更多 DSH 用户用上这份「第二大脑」
15
- </p>
16
-
17
- <details>
18
- <summary><b>⭐ 为什么值得 Star(30 秒看懂)</b></summary>
19
-
20
- | 一句话 | 为什么打动你 |
21
- | --- | --- |
22
- | 🤖 **全自动,零人工** | 每轮对话结束自动判定+压缩成知识卡,不用点保存 |
23
- | 🧬 **全自研,不抄框架** | 去重/CJK 检索/图谱/界面全部本仓库独立实现,逻辑可逐行核对 |
24
- | 📚 **本地 Markdown Vault** | 普通 `.md`,可读、可编辑、可 git 版本管理、不被锁进私有库 |
25
- | 🚫 **双层去重** | 词法 Jaccard + 语义去重,对 LLM 改写免疫,不堆重复卡 |
26
- | 🔍 **CJK 感知检索** | 中文整词+字符 bigram,短查询也能命中长文 |
27
- | 🕸 **秒级知识图谱** | 力导向/径向布局 + 图例过滤/时间维/框选/删除/合并,几千节点不卡 |
28
- | 💾 **一键备份迁移** | 记忆库 MD/JSON 导出导入,异地迁移随便走 |
29
- | ⚙️ **一条命令安装** | `dsh plugin --profile web add dsh-memory-eternal` |
30
-
31
- </details>
32
-
33
- ---
34
-
35
- <p align="center">
36
- <img src="assets/screen/dsh-memory-eternal.gif" width="880" alt="记忆核心 DSH 插件效果演示(动态)" />
37
- <br/>
38
- <em>记忆核心 · 对话自动沉淀 + 图形化知识库 + 增强知识图谱(动态演示)</em>
39
- </p>
40
-
41
- <p align="center">
42
- <img src="assets/screen/memory-settings.png" width="840" alt="设置 → 记忆:图形化知识库主界面(统计 + 检索 + 卡片/图谱 Tab + 分类)" />
43
- <br/>
44
- <em>设置 记忆:统计概览、CJK 检索、知识卡网格、按 kind 分类(「知识卡 / 知识图谱」Tab 一键切换)</em>
45
- </p>
46
-
47
- <p align="center">
48
- <img src="assets/screen/memory-popup.png" width="840" alt="侧边栏「记忆」按钮一键打开完整记忆库弹窗(含增强知识图谱)" />
49
- <br/>
50
- <em>侧边栏底部「记忆」按钮 → 一键打开<strong>完整记忆库弹窗</strong>:更开阔的查看体验 + 增强版知识图谱</em>
51
- </p>
52
-
53
- <p align="center">
54
- <img src="assets/screen/memory-sidebar.png" width="460" alt="侧边栏底部新增「记忆」入口,位于更新配置下方" />
55
- <br/>
56
- <em>侧边栏底部新增「记忆」入口(位于「设置 / 更新配置」下方),一键直达知识库</em>
57
- </p>
58
-
59
- ---
60
-
61
- ## ✨ 为什么值得装
62
-
63
- | 亮点 | 说明 |
64
- | --- | --- |
65
- | 🧬 **原创自研** | 去重 / CJK 检索 / 知识图谱 / 图形化界面均由本仓库**独立实现**;运行时**不依赖**任何第三方记忆框架,核心逻辑可在 `lib/` 逐行核对 |
66
- | 🤖 **全自动沉淀** | 每轮对话结束自动触发(监听 `agent/turn-stopping`),模型判定「是否值得保存」并压缩成 300-800 字知识卡——**无需任何手动操作** |
67
- | 📚 **本地 Markdown Vault** | 知识卡是带 frontmatter 的普通 `.md` 文件,默认落在 `~/.dsh/memory-vault`,可手动编辑、可 git 版本管理、可被任何工具读取,不锁进私有数据库 |
68
- | 🚫 **智能去重** | 双层去重:**自研词法 Jaccard bigram**(0.62 阈值)+ **语义去重**(把已有卡片索引喂给模型,由模型决定「新建 vs 追加到已有卡」,对 LLM 改写免疫) |
69
- | 🔍 **CJK 感知检索** | 中文整词 + 字符 bigram 命中,短查询「强化学习」「蒸馏」也能在长文里命中,无需全文搜索引擎 |
70
- | 🕸 **知识图谱** | 卡片间的 `[[wikilink]]`、共享标签与**相似度关联**自动连线;Canvas 图谱支持**图例过滤、时间维着色、右键菜单、Shift 框选多选、导出/删除/合并**,交互全面 |
71
- | 🧠 **自动召回** | 注入 system prompt 告知 Agent 它拥有记忆核心,并注册 `memory_recall` 工具——需要项目背景/历史决策/领域知识时自动检索 |
72
- | 🔒 **本地优先** | 所有内容留在你的本机 Vault;不设遥测、不传云端。模型请求仍走你已配置好的 provider |
73
- | ⚙️ **一键安装** | `dsh-ui-three-body` 同款插件机制,`dsh plugin --profile web add dsh-memory-eternal` 即可 |
74
-
75
- **适合**:想要让 DSH 记住项目背景与历史决策的人 / 想给对话沉淀可检索知识库的人 / Obsidian 式 Markdown Vault 爱好者 / 在意数据归属(本地文件 > 云端数据库)的人。
76
-
77
- ---
78
-
79
- ## 🚀 安装
80
-
81
- ```bash
82
- # 已发布后(npm)—— 跨平台通用(无需 cd / 无需平台路径)
83
- dsh plugin --profile web add dsh-memory-eternal
84
-
85
- # 从 GitHub
86
- dsh plugin --profile web add github:EternalNight996/dsh-memory-eternal
87
-
88
- # 本地联调(link 本地目录,改代码即时生效)
89
- dsh plugin --profile web add F:/MyApp/eternal/dsh-memory-eternal
90
- ```
91
-
92
- > 提示:
93
- > - `dsh` 为 DSH CLI(`npm i -g @deepseek-ai/dsh` 后可直接用,跨平台、无需 cd/平台路径)。
94
- > - 要**官方最新**(避免 npmmirror 镜像滞后):`npm_config_registry=https://registry.npmjs.org/ dsh plugin --profile web add dsh-memory-eternal`。
95
- > - **DSH profile 是 pnpm workspace**(本地插件用 `link:`):在 profile 目录用 `pnpm add` 装/更新,`cd ~/.dsh/profiles/web && pnpm add dsh-memory-eternal@latest`(bash/PowerShell);`npm install` 会报 `EUNSUPPORTEDPROTOCOL`。
96
-
97
- 装完**重启 dsh web**:设置 → 记忆 出现知识库页面;侧边栏底部也会出现「记忆」按钮,一键打开完整记忆库弹窗。此后每轮对话自动沉淀知识卡。
98
-
99
- ### 🧭 插件发现 / 收录标准
100
-
101
- 本插件面向 DSH 插件生态,仓库已打 **GitHub `dsh-plugin` topic** 并按社区标准结构发布,可被以下机制**自动发现**(无需手动提交 PR):
102
-
103
- | 机制 | 收录方式 | 状态 |
104
- | --- | --- | --- |
105
- | **dsh-marketplace**(ouyangyipeng) | 实时读取 **GitHub `topic:dsh-plugin`** 的社区仓库,有该 topic 即进入 `设置 → 插件 → Marketplace` | ✅(topic 已打) |
106
- | **dsh-find-plugin**(awesome-dsh-plugin) | 会话内按 `topic:dsh-plugin` + 星数实时搜索 | ✅ |
107
- | **dsh-plugin-marketplace**(YELEBAI) | 2 小时扫描 `topic:dsh-plugin`,静态验证 manifest/patch/入口/npm tarball 后写入中心 Registry;无需人工申请 | ✅(已声明 `dsh.marketplace` 元数据辅助分类/一键安装) |
108
-
109
- > dsh-plugin-marketplace 会读取 `package.json#dsh.marketplace`(`profiles:["web"]`、`requiresBuildApproval:false`、`manualSteps:false`)来给插件归类并开放一键安装。两个市场均为**自动扫描**,非发布动作;插件结构通过验证即被收录。
110
-
111
- ---
112
-
113
- ## 🧠 自动沉淀(零人工干预)
114
-
115
- 对话每轮结束 → 插件提取增量消息 → 调用当前模型压缩 → 双层去重 → 写入 Vault:
116
-
117
- ```
118
- 你的对话
119
-
120
-
121
- agent/turn-stopping ──► 提取本轮 user/assistant 消息
122
-
123
-
124
- LLM 判定(值得保存?)──否──► 丢弃
125
- │是
126
-
127
- 语义去重(喂给模型已有卡片索引)
128
- ├─ 同一主题 ──► append_to:追加「更新记录」到已有卡(不建重复卡)
129
- └─ 新主题 ────► 写新知识卡到 02-08 对应目录
130
- ```
131
-
132
- 知识卡格式(frontmatter + markdown 正文):
133
-
134
- ```markdown
135
- ---
136
- kind: knowledge
137
- title: 数据库索引原理与B+树加速机制
138
- tags: [数据库, 索引, B+树, 查询优化]
139
- created: 2026-08-21T12:01:51.636Z
140
- updated: 2026-08-21T12:01:51.636Z
141
- source: session:session-xxxx
142
- ---
143
- # 数据库索引原理与B+树加速机制
144
-
145
- ## 核心定义
146
- - 索引是数据库为加速查找而额外维护的数据结构...
147
- ```
148
-
149
- Vault 目录结构:
150
-
151
- ```
152
- ~/.dsh/memory-vault/
153
- ├── 00-System/ # 系统(未来扩展:Active-Context 等)
154
- ├── 02-Projects/ # 项目背景 / 进度
155
- ├── 03-Knowledge/ # 通用知识 / 技术方案 / 设计决策(默认)
156
- ├── 04-Content/ # 内容素材 / 资料
157
- ├── 05-Prompts/ # 提示词 / 工作流
158
- ├── 06-Business/ # 业务 / 商业
159
- ├── 07-Tools/ # 工具链 / CLI / 配置 / 环境坑
160
- └── 08-Mistakes/ # 教训:错误 / 反模式 / 踩坑 /「别这么做」
161
- ```
162
-
163
- ## 🕸 图形化知识库(设置 → 记忆 + 侧边栏「记忆」入口)
164
-
165
- - **双入口**:设置 → 记忆 页 + 侧边栏底部「记忆」按钮(一键打开完整记忆库弹窗)
166
- - **统计概览**:总卡数、近 7 天新增、标签数、知识卡数
167
- - **检索**:中文片段即时搜索(280ms 防抖)
168
- - **知识卡网格**:kind 筛选(全部/项目/知识/内容/提示词/业务/工具/教训),点击卡片阅读全文(frontmatter 一并展示)
169
- - **知识图谱(增强版)**:**多环径向 / 力导向**混合布局(按 kind 分扇区、枢纽在内圈、环间距不重叠,数量大也不乱);节点 = 知识卡(按 kind 渐变+发光着色、按连接数自动放大);连线 = `[[wikilink]]`、共享标签或**相似度关联**(曲线渐变,只保留**高影响力主干边**避免毛球);**默认只显示枢纽标签**、放大后全量显示;**几千节点不卡**;**滚轮缩放、按住左键拖动画布**、**左键凸显关联节点并淡化无关节点**、悬停高亮
170
-
171
- ### 🕸 图谱交互速览
172
-
173
- | 操作 | 效果 |
174
- | --- | --- |
175
- | 左键点击节点 | 凸显该节点及关联(淡化无关) |
176
- | **右键节点** | 弹出菜单:打开卡片 / 凸显关联 / 复制名称 / **删除** |
177
- | **Shift + 拖拽** | 方形**框选多节点** → 浮出「导出选中 / 删除选中 / **合并** / 清空」 |
178
- | 滚轮 | 以光标为中心缩放 |
179
- | 左键拖空白 | 平移画布 |
180
- | 点图例 | **按 kind 过滤**(再点取消) |
181
- | **时间维** 开关 | 节点按最后更新时间着色:3 天内绿 / 2 周内琥珀 / 1 月内橙 / 更早灰蓝 |
182
- | 搜索框 | 标题 + 类型名匹配,无结果有提示 |
183
- | **导出** | 一键导出 PNG(预览弹窗:下载 / **另存为** / 复制 / 全屏) |
184
-
185
- ### 📇 知识卡管理
186
-
187
- - 卡片列表搜索命中,标题与摘要**关键词高亮**(`<mark>`)
188
- - 3 天内更新的卡自动标「**新**」角标;排序支持 最近 / 标题 / 热点
189
- - 打开长卡**默认折叠**,可「展开全部 / 收起」
190
- - 卡片行右下角「✕」**删除记忆**(确认后删),阅读器内亦可删除
191
- - 列表**无限滚动懒加载**(滚动到底自动加载下一批)
192
- - 自定义**滚动条**配色,明暗主题都清晰可见
193
- - 阅读全文走**轻量 Markdown 渲染**(标题/加粗/列表/代码块/引用/安全链接,先转义再白名单)
194
- - 记忆库工具栏:**导入 / 导出 MD / 导出 JSON / 刷新**(导出可选**自选位置**另存为,或默认下载)
195
- - 所有操作**顶部醒目 toast** 反馈:✓ 绿 = 成功、✕ 红 = 失败,并显示导出位置 / 文件名
196
- - 导出分两类:**知识卡片**(MD/JSON)与**知识图谱**(PNG),均可选**另存为**自定位置
197
-
198
- ## 🔧 设置
199
-
200
- | 设置项 | 默认 | 说明 |
201
- | --- | --- | --- |
202
- | 启用 | 开 | 总开关 |
203
- | 自动沉淀 | 开 | 每轮对话结束自动捕获 |
204
- | 自动召回 | | 注入 system prompt + `memory_recall` 工具 |
205
- | 记忆库目录 | | 留空 = `~/.dsh/memory-vault`;可指向任意目录(如 Obsidian Vault) |
206
- | 去重阈值 | 0.62 | 词法去重 Jaccard 相似度阈值(自研默认值) |
207
- | 捕获最小长度 | 200 | 少于该字符数的对话不触发捕获 |
208
- | 日配额 | 60 | 每天最多自动写卡数,防止烧 token |
209
-
210
- ## 🛠 开发 / 构建 / 测试
211
-
212
- ```bash
213
- npm i
214
- npm test # 29 个单元测试:vault 去重/检索/图谱 + capture 管线 + API 形状
215
- npm run build # 打包 client(改 src/client 后需要;改 index.js / lib 无需构建)
216
- ```
217
-
218
- 目录结构:
219
-
220
- ```
221
- dsh-memory-eternal/
222
- ├── index.js # host 半边:设置 + turn-stopping 钩子 + 工具 + JSON API
223
- ├── lib/
224
- │ ├── vault.js # Markdown Vault 存储层(frontmatter/去重/检索/图谱,纯 Node 可单测)
225
- │ └── capture.js # 自动沉淀管线(LLM 压缩 + 语义去重)
226
- ├── src/client/index.tsx # client 半边:设置页 + 侧边栏「记忆」按钮 + 完整记忆库弹窗(统计/搜索/卡片/图谱)
227
- ├── build.mjs # esbuild 打包 client → lib/client.js
228
- ├── cordis.patch.yml # bundle 补丁层(自动挂载 host 行)
229
- └── tests/ # node:test 单测
230
- ```
231
-
232
- ## 🗺 Roadmap / 待办
233
-
234
- - [x] 对话自动沉淀(turn-stopping 钩子 + LLM 压缩 + 双层去重)
235
- - [x] CJK 感知检索 + 本地 Markdown Vault(02-08 分类 + frontmatter)
236
- - [x] `memory_recall` 自动召回工具 + system prompt 分段
237
- - [x] 图形化知识库:统计 / 检索 / 知识卡网格
238
- - [x] 侧边栏「记忆」按钮 + 完整记忆库弹窗
239
- - [x] 增强知识图谱:力导向/径向布局、滚轮缩放、左键拖拽、右键凸显关联、大规模抗压
240
- - [x] 图谱交互增强:图例过滤、时间维着色、右键菜单、Shift 框选多选(导出/删除/合并)
241
- - [x] 知识卡管理:Markdown 渲染、长卡折叠、新卡角标、搜索高亮、最近/标题/热点排序
242
- - [x] 记忆库导出/导入(MD/JSON 备份,异地可迁移)
243
- - [x] 知识卡删除 + 无限滚动懒加载 + 自定义滚动条
244
- - [x] 导出可选默认下载 / 自选位置另存为(卡片 MD/JSON 与图谱 PNG)
245
- - [ ] 每日记忆回顾 + 用量统计
246
- - [ ] 多语言模板与自定义去重规则
247
- - [ ] 卡片拖拽归类 / 批量合并更智能(按相似度预分组)
248
- - [ ] Market 收录:dsh-marketplace / dsh-plugin-marketplace(待社区审核)
249
-
250
- ## 📦 发布记录
251
-
252
- - **v0.4.3**(待发布):记忆侧**省 token / 提质量**——**沉淀预筛**:turn-stopping 先做启发式「可复用信号」判定(结构化标记/决策/代码/事实关键词/列表密度),纯闲聊或无可复用内容**直接跳过、不触发 LLM**(省掉每轮昂贵的判定调用);**召回相关性 + 精简**:`memory_recall` 现按 `minScore` 过滤弱命中(降噪声)、注入片段截断到 130 字(降体积),召回更准、更省。
253
- - **v0.4.2**(已发布):修复 GitHub/npm 顶部产品演示 GIF 无法显示——压缩至 GitHub README 10MB 渲染阈值以下(8MB)。
254
- - **v0.4.1**(已发布):**Marketplace 收录标准**落地——声明 `package.json#dsh.marketplace`(`profiles:["web"]` 等),README 收录规则表对齐 dsh-marketplace / dsh-find-plugin / dsh-plugin-marketplace 的**自动扫描**机制;产品展示头部 GIF(`assets/screen/dsh-memory-eternal.gif`)置顶。
255
- - **v0.4.0**(已发布):图谱交互全面增强——**图例过滤**、**时间维着色**、**右键菜单**、**Shift 框选多选**、**单删/批量删除**、**多卡合并**、**一键导出 PNG**(预览:下载/另存为/复制/全屏);知识卡——**Markdown 渲染**、**长卡折叠**、**新卡角标**、**搜索命中高亮**、**卡片行删除**、**无限滚动懒加载**、最近/标题/热点排序、自定义滚动条;**相似度关联建议**(similar 边);**记忆库导出/导入**(MD/JSON 备份,导出可选**自选位置**);操作**顶部醒目绿/红 toast**(反馈结果 + 导出位置/文件名);默认视图与节点调大。
256
- - **v0.3.0**:知识图谱**科学布局**升级——多环径向/力导向混合布局(按 kind 分扇区、枢纽在内圈、环间距不重叠,数量大也不乱);只保留**高影响力主干边**(避免毛球);默认只显示**枢纽标签**、放大后全量;大图关闭节点发光提升性能。
257
- - **v0.2.9**:修复 **GitHub 源安装无法启动**——提交 `lib/client.js`(此前被忽略未入库,GitHub 拉取的包缺客户端 bundle,导致 DSH 启动失败)。
258
- - **v0.2.8**:安装说明去掉 `npx` 前缀,只保留跨平台 `dsh plugin --profile web add`。
259
- - **v0.2.7**:安装说明跨平台化——主推 `dsh plugin --profile web add`(无需 cd/平台路径),注明官方 registry(避免 npmmirror 滞后)与 pnpm 备选。
260
- - **v0.2.6**:安装/更新说明补充——DSH profile 为 pnpm workspace,用 `pnpm add dsh-memory-eternal@latest`(勿用 `npm install`,会因 `link:` 报 `EUNSUPPORTEDPROTOCOL`)。
261
- - **v0.2.5**:安装方式统一为 `dsh plugin --profile web add`(README 标注 npx 备选写法)。
262
- - **v0.2.4**:知识库分类扩展——新增「工具 Tools」(07) 与「教训 Mistakes」(08) 两类(错误/反模式/踩坑/debug 教训),前端筛选、图谱着色、自动捕获提示词同步更新。
263
- - **v0.2.3**:放宽兼容性——`@deepseek-ai/dsh-tools` / `dsh-llm` peer 依赖改为 `>=0.1.0-rc.2 <0.2.0`,跨整个 `0.1.x` 系列均兼容(大多数 DSH 版本可直接安装)。
264
- - **v0.2.2**:放宽 `@deepseek-ai/dsh-tools` / `dsh-llm` peer 依赖至 `^0.1.0-rc.7`,同时兼容旧版与新版 DSH。
265
- - **v0.2.1**:更新 `@deepseek-ai/dsh-tools` / `dsh-llm` peer 依赖至 `^0.1.1-rc.2`(对齐当前 DSH 运行时)。
266
- - **v0.2.0**:新增侧边栏「记忆」入口 + 完整记忆库弹窗;增强知识图谱(力导向/径向布局、滚轮缩放、左键拖拽平移、左键凸显关联/右键打开卡片、大规模抗压:节点/连线上限 + 标签节流 + O(n) 径向布局);README 头部动态演示 GIF。
267
- - **v0.1.0**:首个可用版本。对话自动沉淀(turn-stopping 钩子 + LLM 压缩 + 双层去重)、`memory_recall` 工具、system prompt 召回段、Markdown Vault(02-08 分类 + frontmatter)、CJK 检索、自研知识图谱、设置页图形化知识库。
268
-
269
- ## 📄 License
270
-
271
- MIT
272
-
273
- ---
274
-
275
- > 让 DSH 拥有第二大脑:**对话自动沉淀,知识随手可查。** 🧠
1
+ # 🧠 记忆核心 dsh-memory-eternal 给 DeepSeek Harness 装上「第二大脑」
2
+
3
+ <p align="center">
4
+ <img src="https://img.shields.io/badge/DeepSeek%20Harness-plugin-3B82F6" alt="DSH plugin" />
5
+ <img src="https://img.shields.io/npm/v/dsh-memory-eternal" alt="npm version" />
6
+ <img src="https://img.shields.io/github/stars/EternalNight996/dsh-memory-eternal?style=flat" alt="GitHub stars" />
7
+ <img src="https://img.shields.io/github/license/EternalNight996/dsh-memory-eternal" alt="license" />
8
+ <img src="https://img.shields.io/badge/自研内核-CJK检索-10B981" alt="self-built" />
9
+ </p>
10
+
11
+ > **对话结束自动沉淀,跨会话真实不失忆;召回只取相关小块,省 token、少噪音。**
12
+ > 全自研、零第三方记忆框架、不改 DSH 源码、一条命令安装——为你装一个「自己说了算」的、可 git 管理的本地记忆库。
13
+
14
+ <p align="center"><strong>⭐ 觉得好用就点个 Star</strong>,让更多被「AI 总忘事」困扰的人用上它。<br/><sub>一条命令:<code>dsh plugin --profile web add dsh-memory-eternal</code></sub></p>
15
+
16
+ ---
17
+
18
+ <p align="center">
19
+ <img src="assets/screen/dsh-memory-eternal.gif" width="880" alt="记忆核心 · 对话自动沉淀 + 图形化知识库 + 增强知识图谱(动态演示)" />
20
+ <br/><em>对话自动沉淀 · 图形化知识库 · 交互式知识图谱(动态演示)</em>
21
+ </p>
22
+
23
+ ---
24
+
25
+ ## 🔥 先看痛点:AI 助手为什么「总让人失望」?
26
+
27
+ | # | 痛点(每个用 AGENT 的人都遇到过) | 没有记忆的后果 |
28
+ |---|---|---|
29
+ | 1 | **长对话就忘事** | 聊到第 10 轮,前面定的方案、改的口径全忘了,反复重来 |
30
+ | 2 | **跨会话失忆** | 换新会话 = 白纸一张,项目背景要重新讲一遍 |
31
+ | 3 | **长会话 token 暴涨** | 上下文越来越长,越聊越贵、越聊越慢,甚至爆窗 |
32
+ | 4 | **存了却找不到** | 就算有笔记,也搜不到、管不好,等于没存 |
33
+ | 5 | **数据被锁死** | 记忆存在私有库里,改不了、导不出、不敢用 |
34
+
35
+ > 这不是你的错觉,是**绝大多数 AI 产品共通的硬伤**。而解法,正是 Agent 记忆——**总结 → 存储 → 按需召回**。
36
+
37
+ ---
38
+
39
+ ## 🚀 装上它之后:五道痛点逐一被解决
40
+
41
+ | 痛点 | 装上记忆核心后 | 靠什么实现 |
42
+ |---|---|---|
43
+ | ① 长对话忘事 | 保留「最近原文」,旧轮次自动总结成卡 | 自动沉淀 + 语义去重 |
44
+ | 跨会话失忆 | 新会话也能召回旧决策/方案 | `memory_recall` 按需召回 |
45
+ | ③ 长会话 token | **只召回相关小块**,不每轮全量塞 | 相关性阈值 + 片段截断 + 沉淀预筛 |
46
+ | ④ 存了找不到 | 中文整词+bigram 检索 + 可视化图谱 | CJK 感知检索 + 知识图谱 |
47
+ | ⑤ 数据被锁死 | 纯 Markdown,可读可改可 git 托管 | 本地 Markdown Vault |
48
+
49
+ ```mermaid
50
+ flowchart LR
51
+ A["对话每一轮"] --> B{"turn-stopping<br/>有没有可复用信号?"}
52
+ B -- "无 → 跳过(省LLM)" --> X["❌ 不调模型"]
53
+ B -- "" --> C["LLM 压缩成知识卡"]
54
+ C --> D{"去重核对"}
55
+ D -- "同一主题" --> E["追加更新到已有卡"]
56
+ D -- "新主题" --> F["写入 02-08 分类目录"]
57
+ F & E --> G["本地 Markdown Vault"]
58
+ G --> H["memory_recall 按需召回"]
59
+ H --> I["AI 下次不再失忆"]
60
+ ```
61
+
62
+ ---
63
+
64
+ ## 🧬 核心内核设计:为什么要「全自研」
65
+
66
+ 市面上记忆方案很多,但大多**依赖第三方框架 / 动不动就起一个 MCP 服务 / 把记忆锁进私有库**。本插件把「记忆骨架」整个自己搭出来,**零第三方运行时依赖**,逻辑能逐行看懂:
67
+
68
+ | 模块 | 自研实现 | 替代什么 |
69
+ |---|---|---|
70
+ | **去重** | 词法 Jaccard bigram(0.62)+ **语义去重**(把已有卡索引喂模型,让它决定「新建 vs 追加」) | 防重复、防 LLM 改写导致的垃圾卡 |
71
+ | **检索** | CJK 感知:中文整词 + 字符 bigram 命中 | 无需全文搜索引擎,短查询也能命中长文 |
72
+ | **图谱** | 力导向/径向布局 + `[[wikilink]]`/共享标签/相似度连边 | 让「知识之间怎么关联」一眼看清 |
73
+ | **存储** | frontmatter 的普通 `.md`,落盘 `~/.dsh/memory-vault` | 不锁库、可读、可 git、可被任意工具读 |
74
+
75
+ > **与其他热门记忆项目的思路同向(总结→存储→按需召回),但定位不同。** 参考同类热门思路,本插件主打「**本地、自研、零依赖、可读可控**」:
76
+
77
+ | 热门项目 | 定位 | 本插件的差异 |
78
+ |---|---|---|
79
+ | [agentmemory](https://github.com/rohitg00/agentmemory) | 通用 Agent 记忆服务 | 本插件是 **DSH 原生插件**,不另起服务,直接进设置/侧边栏 |
80
+ | [mem0](https://github.com/mem0ai/mem0) | 记忆层(常配 MCP) | 本插件**无 MCP 依赖**,离线可跑,走本地 `memory_recall` 工具 |
81
+ | [MemGPT / Letta](https://github.com/letta-ai/letta) | 上下文内存管理 | 本插件承载「**持久记忆**」这一层;会话内实时压缩属 harness 层 |
82
+ | **[Zep](https://github.com/getzep/zep)** | 时间/图记忆 | 本插件零外部服务,图谱/检索纯本地 |
83
+
84
+ > 如果你已在用其中某一层,也完全能把本插件当「**本地持久记忆底座**」叠加使用——它只消费你已配置好的 provider,不抢模型、不改你的习惯。
85
+
86
+ ---
87
+
88
+ ## 功能总览(交互全在这里)
89
+
90
+ <details>
91
+ <summary><b>📇 知识卡:存得进、找得到、管得了</b></summary>
92
+
93
+ - **全自动沉淀**:每轮结束自动判定+压缩成 300-800 字知识卡,无需手动保存
94
+ - **双层去重**:Jaccard 词法 + 语义追加,不堆重复卡
95
+ - **`.md` 全文**:frontmatter 里带 `kind/title/tags/created/updated`,就是普通 Markdown
96
+ - **Markdown 渲染**、**长卡折叠**、**新卡「新」角标**、**搜索命中高亮**、**卡片行删除**
97
+ - **无限滚动懒加载**、自定义**滚动条**配色
98
+ - 排序:**最近 / 标题 / 热点(按连接数)**
99
+
100
+ </details>
101
+
102
+ <details>
103
+ <summary><b>🕸 知识图谱:秒级看懂「知识之间的关系」</b></summary>
104
+
105
+ - **力导向/径向混合布局**:按 kind 分扇区、枢纽在内圈、环间距不重叠,数量大也不乱;**几千节点不卡**
106
+ - 连线 = `[[wikilink]]` / 共享标签 / **相似度关联**;只保留**高影响力主干边**避免毛球
107
+ - 交互:**左键凸显关联**、**右键菜单**(打开/凸显/复制/删除)、**Shift 框选多选**(导出/删除/合并)、**图例过滤**、**时间维着色**(3天内绿/2周琥珀/1月橙/更早灰蓝)、**滚轮缩放**、**导图 PNG**(下载/另存为/复制/全屏)
108
+
109
+ </details>
110
+
111
+ <details>
112
+ <summary><b>💾 备份与控制:数据永远是你的</b></summary>
113
+
114
+ - 记忆库**导出 MD / JSON**、**导入**(自动去重)
115
+ - 导出可选**默认下载**或**自选位置**另存为
116
+ - 所有操作**顶部醒目 toast**:✓ 绿 = 成功、✕ 红 = 失败,并显示导出位置/文件名
117
+ - 可指向任意目录(如 Obsidian Vault)
118
+ </details>
119
+
120
+ <p align="center">
121
+ <img src="assets/screen/memory-settings.png" width="840" alt="设置 记忆:统计 + 检索 + 卡片/图谱 Tab" />
122
+ <br/><em>设置 → 记忆:统计概览、CJK 检索、知识卡网格、按 kind 分类</em>
123
+ </p>
124
+ <p align="center">
125
+ <img src="assets/screen/memory-popup.png" width="840" alt="侧边栏「记忆」一键打开完整记忆库弹窗" />
126
+ <br/><em>侧边栏底部「记忆」按钮 → 一键打开完整记忆库弹窗(含增强知识图谱)</em>
127
+ </p>
128
+
129
+ ---
130
+
131
+ ## 🚀 安装(一条命令)
132
+
133
+ ```bash
134
+ # 已发布后(npm)—— 跨平台通用
135
+ dsh plugin --profile web add dsh-memory-eternal
136
+
137
+ # 从 GitHub
138
+ dsh plugin --profile web add github:EternalNight996/dsh-memory-eternal
139
+
140
+ # 本地联调(改代码即时生效)
141
+ dsh plugin --profile web add F:/MyApp/eternal/dsh-memory-eternal
142
+ ```
143
+
144
+ > 提示:
145
+ > - `dsh` 为 DSH CLI(`npm i -g @deepseek-ai/dsh`)。
146
+ > - 要**官方最新**(避免 npmmirror 滞后):`npm_config_registry=https://registry.npmjs.org/ dsh plugin --profile web add dsh-memory-eternal`。
147
+ > - **profile 是 pnpm workspace**:`cd ~/.dsh/profiles/web && pnpm add dsh-memory-eternal@latest`(`npm install` 会报 `EUNSUPPORTEDPROTOCOL`)。
148
+
149
+ 装完**重启 dsh web**:设置 → 记忆 出现知识库;侧边栏底部出现「记忆」按钮。此后每轮对话自动沉淀。
150
+
151
+ ### 🧭 插件发现 / 收录标准
152
+
153
+ 仓库已打 **GitHub `dsh-plugin` topic** 并符合社区标准结构,**自动被以下机制发现**(无需手动 PR):
154
+
155
+ | 机制 | 收录方式 | 状态 |
156
+ |---|---|---|
157
+ | **dsh-marketplace**(ouyangyipeng) | 实时读 `topic:dsh-plugin` | ✅ topic 已打 |
158
+ | **dsh-find-plugin**(awesome-dsh-plugin) | 会话内按 topic+星数搜索 | ✅ |
159
+ | **dsh-plugin-marketplace**(YELEBAI) | 2h 自动扫描 + 静态验证进入 Registry | ✅ 已声明 `dsh.marketplace` 元数据 |
160
+ | **dsh-market**(2BingLing) | 提交 Issue | 已提 |
161
+ | **awesome-dsh-plugin** | 提交 PR | ✅ 已提 |
162
+
163
+ ---
164
+
165
+ ## 🔧 设置
166
+
167
+ | 设置项 | 默认 | 说明 |
168
+ |---|---|---|
169
+ | 启用 | | 总开关 |
170
+ | 自动沉淀 | 开 | 每轮对话结束自动捕获 |
171
+ | 自动召回 | 开 | 注入 system prompt + `memory_recall` 工具 |
172
+ | 记忆库目录 | 空 | 留空 = `~/.dsh/memory-vault`;可指向任意目录(如 Obsidian Vault) |
173
+ | 去重阈值 | 0.62 | 词法去重 Jaccard 相似度阈值 |
174
+ | 捕获最小长度 | 200 | 少于该字符数不触发捕获 |
175
+ | 日配额 | 60 | 每天最多自动写卡数,防止烧 token |
176
+
177
+ ---
178
+
179
+ ## 🛠 开发 / 构建 / 测试
180
+
181
+ ```bash
182
+ npm i
183
+ npm test # 单元测试:vault 去重/检索/图谱 + capture 管线 + API 形状
184
+ npm run build # 打包 client(改 src/client 后需要;改 index.js / lib 无需构建)
185
+ ```
186
+
187
+ ```
188
+ dsh-memory-eternal/
189
+ ├── index.js # host:设置 + turn-stopping 钩子 + 工具 + JSON API
190
+ ├── lib/
191
+ │ ├── vault.js # 存储层(frontmatter/去重/检索/图谱)
192
+ │ └── capture.js # 自动沉淀管线(LLM 压缩 + 语义去重 + 预筛)
193
+ ├── src/client/index.tsx # client:设置页 + 侧边栏「记忆」+ 完整记忆库弹窗
194
+ ├── build.mjs # esbuild 打包 client lib/client.js
195
+ ├── cordis.patch.yml # bundle 补丁层(自动挂载 host 行)
196
+ └── tests/ # node:test 单测
197
+ ```
198
+
199
+ ---
200
+
201
+ ## 🗺 Roadmap / 待办(记忆侧核心优化)
202
+
203
+ **已实现**:
204
+ - 自动沉淀 + 双层去重 + 日配额
205
+ - CJK 检索 + 图谱 + 召回工具
206
+ - 交互图谱(图例/时间维/框选/删除合并/导出)
207
+ - 知识卡管理(MD渲染/折叠/新角标/搜索高亮/无限滚动)
208
+ - 备份导入导出(MD/JSON)
209
+ - **沉淀预筛**(skip LLM)+ **召回相关性/截断**(v0.4.3)
210
+
211
+ **待办(核心功能优化)**:
212
+ - [ ] **上下文压缩**:把「加法记忆」升级为「召回替代 + 会话内压缩」(需 harness 配合,记忆侧提供压缩产物接口)
213
+ - [ ] **会话级 token 预算**:逼近阈值触发压缩/轮换,而非每轮 LLM
214
+ - [ ] **语义召回升级**:可选 embedding(默认零依赖 bigram + LLM 判定兜底),召回更精
215
+ - [ ] **多 Vault / Profile**:按项目/场景分库,互不干扰
216
+ - [ ] **自动归档整理**:低频大扫除,合并同类、标记陈旧(非破坏性,先预览)
217
+ - [ ] **注入体积可配置**:每卡摘要长度、召回条数、是否带正文,做成设置项
218
+ - [ ] **召回用户反馈**:对命中结果「有用/无关」打标,逐步调优相关性
219
+ - [ ] **每日记忆回顾**:一键回顾当天沉淀 + 用量统计
220
+
221
+ ---
222
+
223
+ ## 📦 发布记录
224
+
225
+ - **v0.4.3**:记忆侧**省 token/提质量**——沉淀预筛(无可复用信号直接跳过、不触发 LLM);召回按 `minScore` 过滤弱命中、注入片段截断到 130 字。
226
+ - **v0.4.2**:修复 GitHub/npm 顶部演示 GIF 无法显示(压缩至 README 10MB 阈值以下,8MB)。
227
+ - **v0.4.1**:Marketplace 收录标准落地(`dsh.marketplace` 元数据 + 自动扫描规则说明)。
228
+ - **v0.4.0**:图谱交互全面增强(图例过滤/时间维/右键菜单/框选/删除合并/导出PNG另存自选位置)+ 知识卡增强(MD渲染/长卡折叠/新角标/搜索高亮/删除/无限滚动)+ 相似度关联 + 导入导出 + 顶部绿红 toast。
229
+ - **v0.3.0**:知识图谱科学布局(多环径向/主干边/默认仅枢纽标签/大图关发光)。
230
+ - **v0.2.x**:GitHub 源安装修复、安装说明跨平台化/去 npx、分类扩展(工具/教训)、peer 依赖放宽。
231
+ - **v0.1.0**:首个可用版本(自动沉淀 + 召回工具 + Markdown Vault + CJK 检索 + 图谱 + 设置页)。
232
+
233
+ ---
234
+
235
+ ## 📄 License
236
+
237
+ MIT
238
+
239
+ ---
240
+
241
+ > **让 DSH 真正记住你:对话自动沉淀,知识随手可查。** ⭐ 觉得有用就点个 Star,Let's make AI not forget.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-memory-eternal",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "记忆核心(Memory Eternal):自研的 DeepSeek Harness 记忆插件,不移植任何既有记忆框架——对话结束后自动沉淀知识卡到本地 Markdown Vault(自研去重、自研 CJK 检索、可 git 管理),设置页提供图形化知识库(统计 / 搜索 / 知识图谱 + 侧边栏一键弹窗),Agent 通过 memory_recall 工具按需召回历史上下文。零人工干预。",
5
5
  "license": "MIT",
6
6
  "repository": {