From 12bf11b12da3d35bd043cb42bf65856b1c209a7f Mon Sep 17 00:00:00 2001 From: modusensus Date: Fri, 13 Nov 2026 15:40:45 +0800 Subject: [PATCH 1/5] =?UTF-8?q?docs(readme):=20=E7=95=8C=E9=9D=A2=E6=88=AA?= =?UTF-8?q?=E5=9B=BE=E7=A7=BB=E5=85=A5=20docs/PANEL.md=EF=BC=8CREADME=20?= =?UTF-8?q?=E9=A6=96=E5=B1=8F=E4=B8=8D=E5=86=8D=E6=8C=82=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 面板每改一次就要重截一遍,README 首屏跟着一起过期。截图搬到 docs/PANEL.md 单独维护,README 只留一处入口与说明;图片路径随之从 images/ 移到 docs/images/。 --- README.md | 30 +------------- docs/PANEL.md | 38 ++++++++++++++++++ .../images}/screenshot-entities-en.png | Bin .../images}/screenshot-entities.png | Bin .../screenshot-features-all-settings.png | Bin .../images}/screenshot-features-first-run.png | Bin .../images}/screenshot-help-en.png | Bin {images => docs/images}/screenshot-help.png | Bin .../images}/screenshot-memories-en.png | Bin .../images}/screenshot-memories.png | Bin .../images}/screenshot-settings-en.png | Bin .../images}/screenshot-settings.png | Bin .../images}/screenshot-status-en.png | Bin {images => docs/images}/screenshot-status.png | Bin 14 files changed, 40 insertions(+), 28 deletions(-) create mode 100644 docs/PANEL.md rename {images => docs/images}/screenshot-entities-en.png (100%) rename {images => docs/images}/screenshot-entities.png (100%) rename {images => docs/images}/screenshot-features-all-settings.png (100%) rename {images => docs/images}/screenshot-features-first-run.png (100%) rename {images => docs/images}/screenshot-help-en.png (100%) rename {images => docs/images}/screenshot-help.png (100%) rename {images => docs/images}/screenshot-memories-en.png (100%) rename {images => docs/images}/screenshot-memories.png (100%) rename {images => docs/images}/screenshot-settings-en.png (100%) rename {images => docs/images}/screenshot-settings.png (100%) rename {images => docs/images}/screenshot-status-en.png (100%) rename {images => docs/images}/screenshot-status.png (100%) diff --git a/README.md b/README.md index 30898f75..c323dda4 100644 --- a/README.md +++ b/README.md @@ -80,20 +80,7 @@ dsh plugin --profile web remove @modusensus/dsh-mneme ## 面板 -

- 记忆库浏览
- 记录、浏览与筛选你的记忆。 -

- -

- 实体与关系图谱
- 从记忆里提炼实体,构建带属性的关系图谱。 -

- -

- 状态与审计
- 向量索引、LLM 消耗、自动巩固记录,一眼看完。 -

+一块面板装在设置页里:记录、浏览、筛选、搜索、改、删,外加实体关系图谱与状态审计。界面截图单独放在 [docs/PANEL.md](docs/PANEL.md) —— 面板一改,只有那一页需要跟着更新。 ## 接到别处 @@ -206,20 +193,7 @@ How does it compare with Zep / Mem0 / Letta / Hindsight? An 11-row table — sto ## The panel -

- Memory browse
- Record, browse and filter your memories. -

- -

- Entities & relations
- Entities are distilled from your memories into a relation graph with attributes. -

- -

- Status & audit
- Vector index, LLM spend and consolidation activity at a glance. -

+One panel in the settings page: record, browse, filter, search, edit, delete — plus an entity graph and an audit view. Screenshots live in [docs/PANEL.md](docs/PANEL.md): when the panel changes, only that page needs updating. ## Elsewhere diff --git a/docs/PANEL.md b/docs/PANEL.md new file mode 100644 index 00000000..2bd7fdb6 --- /dev/null +++ b/docs/PANEL.md @@ -0,0 +1,38 @@ +# 界面截图 / Screenshots + +> 这些是面板截图,**可能落后于最新版本**。面板每改一次,这里的图就该重截一次;README 首屏不放截图,就是为了不让整页跟着 UI 一起过期。 +> These are panel screenshots and **may lag behind the latest UI**. README keeps them out of the first screen so the page doesn't rot with every panel change. + +## 中文 + +

+ 记忆库浏览
+ 记录、浏览与筛选你的记忆。 +

+ +

+ 实体与关系图谱
+ 从记忆里提炼实体,构建带属性的关系图谱。 +

+ +

+ 状态与审计
+ 向量索引、LLM 消耗、自动巩固记录,一眼看完。 +

+ +## English + +

+ Memory browse
+ Record, browse and filter your memories. +

+ +

+ Entities & relations
+ Entities are distilled from your memories into a relation graph with attributes. +

+ +

+ Status & audit
+ Vector index, LLM spend and consolidation activity at a glance. +

\ No newline at end of file diff --git a/images/screenshot-entities-en.png b/docs/images/screenshot-entities-en.png similarity index 100% rename from images/screenshot-entities-en.png rename to docs/images/screenshot-entities-en.png diff --git a/images/screenshot-entities.png b/docs/images/screenshot-entities.png similarity index 100% rename from images/screenshot-entities.png rename to docs/images/screenshot-entities.png diff --git a/images/screenshot-features-all-settings.png b/docs/images/screenshot-features-all-settings.png similarity index 100% rename from images/screenshot-features-all-settings.png rename to docs/images/screenshot-features-all-settings.png diff --git a/images/screenshot-features-first-run.png b/docs/images/screenshot-features-first-run.png similarity index 100% rename from images/screenshot-features-first-run.png rename to docs/images/screenshot-features-first-run.png diff --git a/images/screenshot-help-en.png b/docs/images/screenshot-help-en.png similarity index 100% rename from images/screenshot-help-en.png rename to docs/images/screenshot-help-en.png diff --git a/images/screenshot-help.png b/docs/images/screenshot-help.png similarity index 100% rename from images/screenshot-help.png rename to docs/images/screenshot-help.png diff --git a/images/screenshot-memories-en.png b/docs/images/screenshot-memories-en.png similarity index 100% rename from images/screenshot-memories-en.png rename to docs/images/screenshot-memories-en.png diff --git a/images/screenshot-memories.png b/docs/images/screenshot-memories.png similarity index 100% rename from images/screenshot-memories.png rename to docs/images/screenshot-memories.png diff --git a/images/screenshot-settings-en.png b/docs/images/screenshot-settings-en.png similarity index 100% rename from images/screenshot-settings-en.png rename to docs/images/screenshot-settings-en.png diff --git a/images/screenshot-settings.png b/docs/images/screenshot-settings.png similarity index 100% rename from images/screenshot-settings.png rename to docs/images/screenshot-settings.png diff --git a/images/screenshot-status-en.png b/docs/images/screenshot-status-en.png similarity index 100% rename from images/screenshot-status-en.png rename to docs/images/screenshot-status-en.png diff --git a/images/screenshot-status.png b/docs/images/screenshot-status.png similarity index 100% rename from images/screenshot-status.png rename to docs/images/screenshot-status.png From d18118c5b17868be4cc8a1d60edea692af246b76 Mon Sep 17 00:00:00 2001 From: modusensus Date: Fri, 13 Nov 2026 15:49:35 +0800 Subject: [PATCH 2/5] =?UTF-8?q?docs:=20=E5=8A=A0=E8=AE=B0=E5=BF=86?= =?UTF-8?q?=E9=97=AD=E7=8E=AF=E7=A4=BA=E6=84=8F=E5=9B=BE=EF=BC=8C=E6=B5=85?= =?UTF-8?q?=E8=89=B2=E4=B8=8E=E6=B7=B1=E8=89=B2=E5=90=84=E4=B8=80=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 ++++ docs/memory-loop-dark.svg | 101 ++++++++++++++++++++++++++++++++++++++ docs/memory-loop.svg | 101 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 211 insertions(+) create mode 100644 docs/memory-loop-dark.svg create mode 100644 docs/memory-loop.svg diff --git a/README.md b/README.md index c323dda4..44e63d76 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,13 @@ **dsh-mneme** 给 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 一份跨会话的记忆:对话结束,值得留下的部分自动蒸馏进本机;下次开口,相关的几条自己浮上来。记忆不是锁在向量库里的一堆浮点数——它落在本机的一份 SQLite,旁边配一份 Markdown 镜像,你随时能打开、能改,改了不会被机器盖掉。 + + + 记忆闭环:写入经质量闸成为原子记忆,存进本机 SQLite 与 Markdown 镜像;空闲时巩固;召回时四路并行、融合成一条排序后注入;出口是会话上下文、面板与其他插件 + + +

写进来 → 本机存着 → 空闲时整理 → 四路取回 → 送进会话。

+ ## 安装 ```bash @@ -143,6 +150,8 @@ Every new chat, the AI meets you for the first time. You explain the project aga **dsh-mneme** gives [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) memory that outlives a conversation: when a chat ends, what is worth keeping is distilled into your machine, and the relevant pieces surface on their own next time. The memories are not a pile of floats locked in a vector store — they live in a local SQLite file with a Markdown mirror beside it: open it, read it, edit it, and your edits are not overwritten. +The whole loop in one picture (labels in Chinese): [docs/memory-loop.svg](docs/memory-loop.svg) — [dark version](docs/memory-loop-dark.svg). + ## Install ```bash diff --git a/docs/memory-loop-dark.svg b/docs/memory-loop-dark.svg new file mode 100644 index 00000000..4940e73b --- /dev/null +++ b/docs/memory-loop-dark.svg @@ -0,0 +1,101 @@ + + + + + + + + + +全部在这台机器上 · no server +Mneme · 记忆闭环 +写进来,空闲时整理,下次开口自己浮上来。 + + +写入入口 + +模型工具调用 + +MCP 客户端 + +独立 daemon + + +质量闸 +拦噪声与重复 +敏感信息 +写保护 Token + + +原子记忆 +一条一事实 +带类型与权重 +记下发生时间 + + + +空闲巩固 +autoDream +合并·压缩·归档 +Sleep +分层压缩·模式发现 +关系补全 +只在空闲时跑,可关 + +取代而非覆盖:旧条留在链上,判错能回退 + +记忆库(本机) + +正本 SQLite +向量行 + 索引,单一真相源 + +镜像 Markdown +可读 · 可改 · 能 diff · 可导出 + +手改优先 + + + + + +关键词搜索 + + + + +向量检索 + + + + +BM25 + + + + +实体图谱 + + +融合 +四路并成一条排序 +blend · rrf · minmax + + +注入配额 +pin 排块头不占额,其余按相关度取前几条 + + + + +会话上下文 +下次开口,相关的自己浮上来 + + +面板 +浏览 · 筛选 · 改 · 删 + + +其他插件 +对外 API · MCP · 独立 daemon +写进来的每一条都落在你自己的磁盘上;整理在空闲时做,取用在你开口时做。 + \ No newline at end of file diff --git a/docs/memory-loop.svg b/docs/memory-loop.svg new file mode 100644 index 00000000..c0c7d47a --- /dev/null +++ b/docs/memory-loop.svg @@ -0,0 +1,101 @@ + + + + + + + + + +全部在这台机器上 · no server +Mneme · 记忆闭环 +写进来,空闲时整理,下次开口自己浮上来。 + + +写入入口 + +模型工具调用 + +MCP 客户端 + +独立 daemon + + +质量闸 +拦噪声与重复 +敏感信息 +写保护 Token + + +原子记忆 +一条一事实 +带类型与权重 +记下发生时间 + + + +空闲巩固 +autoDream +合并·压缩·归档 +Sleep +分层压缩·模式发现 +关系补全 +只在空闲时跑,可关 + +取代而非覆盖:旧条留在链上,判错能回退 + +记忆库(本机) + +正本 SQLite +向量行 + 索引,单一真相源 + +镜像 Markdown +可读 · 可改 · 能 diff · 可导出 + +手改优先 + + + + + +关键词搜索 + + + + +向量检索 + + + + +BM25 + + + + +实体图谱 + + +融合 +四路并成一条排序 +blend · rrf · minmax + + +注入配额 +pin 排块头不占额,其余按相关度取前几条 + + + + +会话上下文 +下次开口,相关的自己浮上来 + + +面板 +浏览 · 筛选 · 改 · 删 + + +其他插件 +对外 API · MCP · 独立 daemon +写进来的每一条都落在你自己的磁盘上;整理在空闲时做,取用在你开口时做。 + \ No newline at end of file From b4778254de0a169cfef43aa2d0b6b049b1b77091 Mon Sep 17 00:00:00 2001 From: modusensus Date: Fri, 13 Nov 2026 15:55:55 +0800 Subject: [PATCH 3/5] =?UTF-8?q?docs:=20=E5=9B=BE=E4=B8=AD=E4=B8=AD?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E5=88=86=E5=BC=80=E5=8F=96=E5=AD=97=EF=BC=8C?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E4=B8=8D=E5=86=8D=E5=9B=9E=E9=80=80=E5=AE=8B?= =?UTF-8?q?=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/memory-loop-dark.svg | 4 ++-- docs/memory-loop.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/memory-loop-dark.svg b/docs/memory-loop-dark.svg index 4940e73b..13253806 100644 --- a/docs/memory-loop-dark.svg +++ b/docs/memory-loop-dark.svg @@ -46,10 +46,10 @@ 记忆库(本机) -正本 SQLite +正本SQLite 向量行 + 索引,单一真相源 -镜像 Markdown +镜像Markdown 可读 · 可改 · 能 diff · 可导出 手改优先 diff --git a/docs/memory-loop.svg b/docs/memory-loop.svg index c0c7d47a..1317580c 100644 --- a/docs/memory-loop.svg +++ b/docs/memory-loop.svg @@ -46,10 +46,10 @@ 记忆库(本机) -正本 SQLite +正本SQLite 向量行 + 索引,单一真相源 -镜像 Markdown +镜像Markdown 可读 · 可改 · 能 diff · 可导出 手改优先 From 8766294c5c563be4efdea1cff3d89b66b303526c Mon Sep 17 00:00:00 2001 From: modusensus Date: Fri, 13 Nov 2026 15:55:55 +0800 Subject: [PATCH 4/5] =?UTF-8?q?docs:=20npm=20=E9=A1=B5=E6=8C=82=E4=B8=8A?= =?UTF-8?q?=E8=AE=B0=E5=BF=86=E9=97=AD=E7=8E=AF=E5=9B=BE=EF=BC=88=E7=BB=9D?= =?UTF-8?q?=E5=AF=B9=20URL=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dsh-mneme/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dsh-mneme/README.md b/dsh-mneme/README.md index 1d3cc86b..c19a2db1 100644 --- a/dsh-mneme/README.md +++ b/dsh-mneme/README.md @@ -34,6 +34,8 @@ $ cat ~/.dsh/memory/preferences.md |--------|--------|--------| | 对话中模型主动记录(`memory_save`,可带敏感度与事件时间);会话结束自动提炼(`autoSummarize`) | SQLite 主库 + 人类可编辑 Markdown 镜像;实体 / 属性 / 时间轴三层结构化;记忆带 agent / workspace / 敏感度 / 发生时间标注 | 新会话自动注入相关记忆(按当前作用域加权,strictScope 开启后显式收窄的归属硬隔离);autoDream 后台去重 / 合并 / 归档,冲突冻结待人工裁决 | +

记忆闭环:写入 → 本机 SQLite 与 Markdown 镜像 → 空闲巩固 → 四路召回融合注入 → 会话 / 面板 / 其他插件

+ ```bash # 30 秒上手 dsh plugin --profile web add @modusensus/dsh-mneme From 49fc0f66137c1cf5435131186d8a5f42229efc4b Mon Sep 17 00:00:00 2001 From: modusensus Date: Fri, 13 Nov 2026 16:12:44 +0800 Subject: [PATCH 5/5] =?UTF-8?q?docs:=20=E5=8F=AA=E7=95=99=E4=B8=80?= =?UTF-8?q?=E4=BB=BD=E8=AE=B0=E5=BF=86=E9=97=AD=E7=8E=AF=E5=9B=BE=EF=BC=88?= =?UTF-8?q?=E6=B5=85=E8=89=B2=E7=89=88=EF=BC=89=EF=BC=8C=E5=88=A0=E6=8E=89?= =?UTF-8?q?=E6=B7=B1=E8=89=B2=E5=89=AF=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同一张图存两份没必要:深色版几何完全相同、只是配色不同,维护要改两处。 README 改成单张 直接引 docs/memory-loop.svg,英文段同步去掉 dark 链接。 --- README.md | 7 +-- docs/memory-loop-dark.svg | 101 -------------------------------------- 2 files changed, 2 insertions(+), 106 deletions(-) delete mode 100644 docs/memory-loop-dark.svg diff --git a/README.md b/README.md index 44e63d76..2979b790 100644 --- a/README.md +++ b/README.md @@ -30,10 +30,7 @@ **dsh-mneme** 给 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 一份跨会话的记忆:对话结束,值得留下的部分自动蒸馏进本机;下次开口,相关的几条自己浮上来。记忆不是锁在向量库里的一堆浮点数——它落在本机的一份 SQLite,旁边配一份 Markdown 镜像,你随时能打开、能改,改了不会被机器盖掉。 - - - 记忆闭环:写入经质量闸成为原子记忆,存进本机 SQLite 与 Markdown 镜像;空闲时巩固;召回时四路并行、融合成一条排序后注入;出口是会话上下文、面板与其他插件 - +

记忆闭环:写入经质量闸成为原子记忆,存进本机 SQLite 与 Markdown 镜像;空闲时巩固;召回时四路并行、融合成一条排序后注入;出口是会话上下文、面板与其他插件

写进来 → 本机存着 → 空闲时整理 → 四路取回 → 送进会话。

@@ -150,7 +147,7 @@ Every new chat, the AI meets you for the first time. You explain the project aga **dsh-mneme** gives [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) memory that outlives a conversation: when a chat ends, what is worth keeping is distilled into your machine, and the relevant pieces surface on their own next time. The memories are not a pile of floats locked in a vector store — they live in a local SQLite file with a Markdown mirror beside it: open it, read it, edit it, and your edits are not overwritten. -The whole loop in one picture (labels in Chinese): [docs/memory-loop.svg](docs/memory-loop.svg) — [dark version](docs/memory-loop-dark.svg). +The whole loop in one picture (labels in Chinese): [docs/memory-loop.svg](docs/memory-loop.svg). ## Install diff --git a/docs/memory-loop-dark.svg b/docs/memory-loop-dark.svg deleted file mode 100644 index 13253806..00000000 --- a/docs/memory-loop-dark.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - -全部在这台机器上 · no server -Mneme · 记忆闭环 -写进来,空闲时整理,下次开口自己浮上来。 - - -写入入口 - -模型工具调用 - -MCP 客户端 - -独立 daemon - - -质量闸 -拦噪声与重复 -敏感信息 -写保护 Token - - -原子记忆 -一条一事实 -带类型与权重 -记下发生时间 - - - -空闲巩固 -autoDream -合并·压缩·归档 -Sleep -分层压缩·模式发现 -关系补全 -只在空闲时跑,可关 - -取代而非覆盖:旧条留在链上,判错能回退 - -记忆库(本机) - -正本SQLite -向量行 + 索引,单一真相源 - -镜像Markdown -可读 · 可改 · 能 diff · 可导出 - -手改优先 - - - - - -关键词搜索 - - - - -向量检索 - - - - -BM25 - - - - -实体图谱 - - -融合 -四路并成一条排序 -blend · rrf · minmax - - -注入配额 -pin 排块头不占额,其余按相关度取前几条 - - - - -会话上下文 -下次开口,相关的自己浮上来 - - -面板 -浏览 · 筛选 · 改 · 删 - - -其他插件 -对外 API · MCP · 独立 daemon -写进来的每一条都落在你自己的磁盘上;整理在空闲时做,取用在你开口时做。 - \ No newline at end of file