dsh-memory-nebula 1.1.1 → 1.1.2

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.
package/README.en.md CHANGED
@@ -49,7 +49,7 @@ Export the whole graph (text included) as one self-contained HTML for offline re
49
49
  ## Quick start
50
50
 
51
51
  From the plugin market (recommended): add the index
52
- `https://cdn.jsdelivr.net/npm/dsh-memory-nebula@1.1.1/market/index.json` under
52
+ `https://unpkg.com/dsh-memory-nebula@1.1.2/market/index.json` under
53
53
  Plugins → Discover, search for “Memory Nebula”, and install. Run the doctor in step 2.5 afterwards.
54
54
 
55
55
  Or install from this checkout:
@@ -57,7 +57,7 @@ Or install from this checkout:
57
57
  ```powershell
58
58
  # 1) link the plugin (either way)
59
59
  New-Item -ItemType Junction -Path "<profile>\node_modules\dsh-memory-nebula" -Target "<plugin>"
60
- npm install <path>\dsh-memory-nebula-1.1.1.tgz --prefix <profile>
60
+ npm install <path>\dsh-memory-nebula-1.1.2.tgz --prefix <profile>
61
61
 
62
62
  # 2) profile package.json: add the dependency AND the bundle
63
63
  # dependencies: "dsh-memory-nebula": "file:../../plugins/dsh-memory-nebula"
@@ -148,4 +148,4 @@ test/ node:test unit suite (84 assertions)
148
148
 
149
149
  ## Version
150
150
 
151
- `1.1.1`, MIT. Front-end changes apply on refresh; everything under `lib/host/` is hot-reloaded, while `http.js` / `index.js` / `live.js` need a DSH restart (or the standalone engine).
151
+ `1.1.2`, MIT. Front-end changes apply on refresh; everything under `lib/host/` is hot-reloaded, while `http.js` / `index.js` / `live.js` need a DSH restart (or the standalone engine).
package/README.md CHANGED
@@ -73,7 +73,7 @@
73
73
  已经装好的机器上(`profiles/desktop`),只要打开「记忆星图」页面就有一张图;页面每 12 秒比一次 `sig`,别的会话写了新记忆会自动长出新星点。库里还没有记忆时,页面会给三条接入路径,也可以先点「看示例」;`…/memory-nebula/?demo=1` 可直达示例星系,逛完退出不会动真实库。
74
74
 
75
75
  从插件市场装(推荐):在 DSH 的「插件 → 发现」里添加索引
76
- `https://cdn.jsdelivr.net/npm/dsh-memory-nebula@1.1.1/market/index.json`,搜索「记忆星图」安装。
76
+ `https://unpkg.com/dsh-memory-nebula@1.1.2/market/index.json`,搜索「记忆星图」安装。
77
77
  装完按下面的 2.5 跑一次 doctor。
78
78
 
79
79
  也可以从仓库装到 DSH:
@@ -81,7 +81,7 @@
81
81
  ```powershell
82
82
  # 1) 装进 profile(二选一)
83
83
  New-Item -ItemType Junction -Path "<profile>\node_modules\dsh-memory-nebula" -Target "<plugin>"
84
- npm install <path>\dsh-memory-nebula-1.1.1.tgz --prefix <profile>
84
+ npm install <path>\dsh-memory-nebula-1.1.2.tgz --prefix <profile>
85
85
 
86
86
  # 2) profile 的 package.json 里加依赖与 bundles(只加 dependencies 不会重组)
87
87
  # dependencies: "dsh-memory-nebula": "file:../../plugins/dsh-memory-nebula"
@@ -181,6 +181,6 @@ sidecar.ps1 Windows 独立引擎开关
181
181
 
182
182
  ## 版本与许可
183
183
 
184
- - 当前版本 `1.1.1`,MIT。
184
+ - 当前版本 `1.1.2`,MIT。
185
185
  - 打包内容:`lib/`、`scripts/`、`docs/`、`cordis.patch.yml`、`README.md` / `README.en.md`、`CHANGELOG.md`、`LICENSE`、`sidecar.ps1`(`test/` 与 `dev/` 不进包)。
186
186
  - 前端改动刷新页面即生效;`lib/host/` 下所有引擎文件(含 `adapters/`、`bridge.js`、`ledger.js`)由 LiveEngine 热载,`http.js` / `index.js` / `live.js` 改动要重启 DSH 或走独立引擎。
@@ -1,6 +1,6 @@
1
1
  # 兼容矩阵
2
2
 
3
- 最后更新:2026-11-10(1.1.1 增加市场索引;运行前提未变)
3
+ 最后更新:2026-11-10(1.1.2 市场索引改由 unpkg 托管;运行前提未变)
4
4
 
5
5
  这张表只写**真的跑过**的东西。「预期可用」是依据运行前提做的判断,不是实测;
6
6
  没有出现的组合就是没有验证,不应当作支持承诺。
@@ -22,7 +22,7 @@
22
22
  | 适配器 | meow / notes / sqlite / ingest | 单测 + `sources`/`ingest` 冒烟 |
23
23
  | 独立引擎 | `lib/standalone.mjs`,127.0.0.1:7890/7891 | 0.5–0.9 的 `smoke` 与 `--diagnose` |
24
24
  | 安装体检 | 真实 desktop profile + 运行中实例 | 1.1.0:9 项全过(含 endpoint ping) |
25
- | 市场索引 | `@deepseek-ai/dsh-plugin-market-index` format 1 校验 | 1.1.1:`parseMarketIndex` 通过,图标与安装参数可解析 |
25
+ | 市场索引 | `@deepseek-ai/dsh-plugin-market-index` format 1 校验 | 1.1.2:unpkg 索引 200,`parseMarketIndex` 通过,图标/详情/图片可解析 |
26
26
 
27
27
  ## 预期可用,但未实测
28
28
 
@@ -19,7 +19,7 @@
19
19
  在「插件 → 发现」里添加索引:
20
20
 
21
21
  ```text
22
- https://cdn.jsdelivr.net/npm/dsh-memory-nebula@1.1.1/market/index.json
22
+ https://unpkg.com/dsh-memory-nebula@1.1.2/market/index.json
23
23
  ```
24
24
 
25
25
  搜索「记忆星图」安装。索引与详情页都在 npm 包里,由 jsDelivr 提供;不需要第二个站点。
@@ -29,16 +29,16 @@ https://cdn.jsdelivr.net/npm/dsh-memory-nebula@1.1.1/market/index.json
29
29
 
30
30
  ```powershell
31
31
  # Windows PowerShell
32
- Get-FileHash .\dsh-memory-nebula-1.1.1.tgz -Algorithm SHA256
32
+ Get-FileHash .\dsh-memory-nebula-1.1.2.tgz -Algorithm SHA256
33
33
  # 对照同目录的 .sha256 文件;不一致就停,不要装
34
34
 
35
- npm install .\dsh-memory-nebula-1.1.1.tgz --prefix <profile>
35
+ npm install .\dsh-memory-nebula-1.1.2.tgz --prefix <profile>
36
36
  ```
37
37
 
38
38
  ```bash
39
39
  # macOS / Linux
40
- sha256sum -c dsh-memory-nebula-1.1.1.tgz.sha256
41
- npm install ./dsh-memory-nebula-1.1.1.tgz --prefix <profile>
40
+ sha256sum -c dsh-memory-nebula-1.1.2.tgz.sha256
41
+ npm install ./dsh-memory-nebula-1.1.2.tgz --prefix <profile>
42
42
  ```
43
43
 
44
44
  然后确认 `<profile>/package.json` 里两处都在:
@@ -129,7 +129,7 @@ Remove-Item -Recurse -Force "$env:USERPROFILE\.dsh\memory-nebula"
129
129
  npm run verify # 单测 + release-check;prepack 也会跑
130
130
  node scripts/smoke.mjs http://127.0.0.1:7891/api/memory-nebula
131
131
  npm pack # 生成 tgz
132
- sha256sum dsh-memory-nebula-1.1.1.tgz > dsh-memory-nebula-1.1.1.tgz.sha256
132
+ sha256sum dsh-memory-nebula-1.1.2.tgz > dsh-memory-nebula-1.1.2.tgz.sha256
133
133
  npm publish # 需要维护者账号;本仓库不自动发布
134
134
  ```
135
135
 
package/docs/http-api.md CHANGED
@@ -17,7 +17,7 @@
17
17
  ```json
18
18
  {
19
19
  "ok": true,
20
- "version": "1.1.1",
20
+ "version": "1.1.2",
21
21
  "build": 1794143336695,
22
22
  "startedAt": 1794143336695,
23
23
  "mode": "host",
@@ -47,7 +47,7 @@
47
47
  ```text
48
48
  memory-nebula diagnostics
49
49
  # 不含记忆正文;可以整段贴给支持
50
- version: 1.1.1
50
+ version: 1.1.2
51
51
  build: 1794276294467
52
52
  started: 2026-11-10T02:20:37.399Z
53
53
  mode: standalone
package/docs/market.en.md CHANGED
@@ -1,109 +1,109 @@
1
- # Memory Nebula
2
-
3
- Turn memories scattered across workspaces into a star map you can walk, query and carry away.
4
-
5
- Memories in DSH often live across dozens of workspaces and thousands of sessions. Search returns a list, but not **why** those memories relate; switch projects and the thread disappears. Memory Nebula reads the same stores (meow-memory / OpenViking) and builds a graph: nodes are memories, edges are shared keywords, entities, projects, session co-activation and manual curation. It never copies or rewrites your stores. Everything is computed locally.
6
-
7
- ![Memory Nebula: a thousand memories and their links](assets/preview.png)
8
-
9
- ## Three ways to look
10
-
11
- - **Nebula**: every memory in one cloud, clustered by workspace and coloured by level and link strength. Good for “what does my memory look like as a whole?”
12
- - **Galaxy**: grouped by workspace; open a cluster to enter that project. Good for “what have I thought about here?”
13
- - **Time**: memories arranged as a river by creation/update time, with a scrubber. Good for “how did this grow?”
14
-
15
- All three share the same filters: workspace, level, edge type, minimum strength and importance. Switching views keeps the selection.
16
-
17
- ## From one memory to another
18
-
19
- Select a node and the right panel shows what it connects to and why: same project, shared keywords, same entity, repeatedly co-mentioned in sessions, or a link you made yourself. Every neighbour carries a weight and a reason, not an evidence-free “similarity 0.87”.
20
-
21
- Shift-click a second node to find an **evidence chain**: every hop, its reason and the chain strength. If there is no path, it says so instead of inventing one.
22
-
23
- ![A selected memory: body, neighbours and the reason for each edge](assets/demo.jpg)
24
-
25
- ## Search and spread
26
-
27
- Search covers titles, bodies and keywords. Results mark direct hits versus nodes reached by spreading, and cross-workspace hits are called out so nothing hides behind the current filter.
28
-
29
- “Spread from here” is not a second search box: it starts at this memory and walks existing links up to two hops, answering “what else is attached to this?”
30
-
31
- ## Hygiene, including the ugly parts
32
-
33
- Six read-only checks:
34
-
35
- - near-duplicate memories;
36
- - oversized memories;
37
- - stale memories that have not changed in a long time;
38
- - memories stored but never read;
39
- - many edges but no strong relation (keyword noise);
40
- - completely isolated memories.
41
-
42
- Diagnosis only. It never merges, deletes or rewires anything; that stays your call.
43
-
44
- ## Demo galaxy and first-visit guide
45
-
46
- An empty store no longer means a black screen: open the **demo galaxy**, 64 fictional memories that are read-only and never touch your stores. First time in a real store, a three-step guide helps you search a word, open one memory and see its evidence, then Shift-click two nodes to see how they connect. Skip it anytime; press `?` to replay.
47
-
48
- ![First time? Three steps is enough](assets/onboard.jpg)
49
-
50
- ## Share a slice, not the whole store
51
-
52
- Export the whole map, the current workspace, or “two hops around this memory” as a **single-file HTML**:
53
-
54
- - double-click to open, no DSH and no network;
55
- - search, neighbours and evidence chains run locally;
56
- - read-only, cannot touch your stores;
57
- - optionally hide the Diary workspace before export; `scope`/`hide` affect the export only;
58
- - the file is a point-in-time copy **including the text** — check the scope before sending it.
59
-
60
- ![An exported offline snapshot: only the selected slice](assets/snapshot.jpg)
61
-
62
- ## Ten thousand memories, still opens
63
-
64
- Same-machine benchmark with 10,000 memories and 78,593 links:
65
-
66
- - graph build 1.2 s;
67
- - first paint about 0.6 s;
68
- - recall 4.9 ms;
69
- - single-file snapshot 122 ms / 21 MB;
70
- - heap 145 MB.
71
-
72
- Above 3,000 memories it stays in the 2D nebula and asks you to filter before switching to 3D: software rendering would choke, and the map does not pretend otherwise.
73
-
74
- ![A 10,000-memory 2D nebula](assets/bench-10k.jpg)
75
-
76
- ## Install
77
-
78
- Add this index in the DSH plugin market:
79
-
80
- ```text
81
- https://cdn.jsdelivr.net/npm/dsh-memory-nebula@1.1.1/market/index.json
82
- ```
83
-
84
- Then search for “Memory Nebula” and install. Or install the npm package directly:
85
-
86
- ```bash
87
- npm install dsh-memory-nebula@1.1.1
88
- ```
89
-
90
- Run the read-only doctor after installing:
91
-
92
- ```bash
93
- npx memory-nebula-doctor --profile <your DSH profile directory>
94
- ```
95
-
96
- It checks the Node version, package files, profile dependency, bundle declaration, memory sources and an optional `/ping` endpoint. Nothing is uploaded.
97
-
98
- ## Boundaries
99
-
100
- - single-user, local tool: no accounts, do not expose it to the public internet;
101
- - the stores are read-only: the map never edits memories for you;
102
- - 3D needs WebGL2;
103
- - snapshots contain the text inside the selected scope; treat them as plain-text backups;
104
- - server-side diagnostics and logs are mostly Chinese; the UI is bilingual.
105
-
106
- ## More
107
-
108
- - architecture, data model, HTTP API, compatibility and distribution docs ship in `docs/`
109
- - License: MIT
1
+ # Memory Nebula
2
+
3
+ Turn memories scattered across workspaces into a star map you can walk, query and carry away.
4
+
5
+ Memories in DSH often live across dozens of workspaces and thousands of sessions. Search returns a list, but not **why** those memories relate; switch projects and the thread disappears. Memory Nebula reads the same stores (meow-memory / OpenViking) and builds a graph: nodes are memories, edges are shared keywords, entities, projects, session co-activation and manual curation. It never copies or rewrites your stores. Everything is computed locally.
6
+
7
+ ![Memory Nebula: a thousand memories and their links](assets/preview.png)
8
+
9
+ ## Three ways to look
10
+
11
+ - **Nebula**: every memory in one cloud, clustered by workspace and coloured by level and link strength. Good for “what does my memory look like as a whole?”
12
+ - **Galaxy**: grouped by workspace; open a cluster to enter that project. Good for “what have I thought about here?”
13
+ - **Time**: memories arranged as a river by creation/update time, with a scrubber. Good for “how did this grow?”
14
+
15
+ All three share the same filters: workspace, level, edge type, minimum strength and importance. Switching views keeps the selection.
16
+
17
+ ## From one memory to another
18
+
19
+ Select a node and the right panel shows what it connects to and why: same project, shared keywords, same entity, repeatedly co-mentioned in sessions, or a link you made yourself. Every neighbour carries a weight and a reason, not an evidence-free “similarity 0.87”.
20
+
21
+ Shift-click a second node to find an **evidence chain**: every hop, its reason and the chain strength. If there is no path, it says so instead of inventing one.
22
+
23
+ ![A selected memory: body, neighbours and the reason for each edge](assets/demo.jpg)
24
+
25
+ ## Search and spread
26
+
27
+ Search covers titles, bodies and keywords. Results mark direct hits versus nodes reached by spreading, and cross-workspace hits are called out so nothing hides behind the current filter.
28
+
29
+ “Spread from here” is not a second search box: it starts at this memory and walks existing links up to two hops, answering “what else is attached to this?”
30
+
31
+ ## Hygiene, including the ugly parts
32
+
33
+ Six read-only checks:
34
+
35
+ - near-duplicate memories;
36
+ - oversized memories;
37
+ - stale memories that have not changed in a long time;
38
+ - memories stored but never read;
39
+ - many edges but no strong relation (keyword noise);
40
+ - completely isolated memories.
41
+
42
+ Diagnosis only. It never merges, deletes or rewires anything; that stays your call.
43
+
44
+ ## Demo galaxy and first-visit guide
45
+
46
+ An empty store no longer means a black screen: open the **demo galaxy**, 64 fictional memories that are read-only and never touch your stores. First time in a real store, a three-step guide helps you search a word, open one memory and see its evidence, then Shift-click two nodes to see how they connect. Skip it anytime; press `?` to replay.
47
+
48
+ ![First time? Three steps is enough](assets/onboard.jpg)
49
+
50
+ ## Share a slice, not the whole store
51
+
52
+ Export the whole map, the current workspace, or “two hops around this memory” as a **single-file HTML**:
53
+
54
+ - double-click to open, no DSH and no network;
55
+ - search, neighbours and evidence chains run locally;
56
+ - read-only, cannot touch your stores;
57
+ - optionally hide the Diary workspace before export; `scope`/`hide` affect the export only;
58
+ - the file is a point-in-time copy **including the text** — check the scope before sending it.
59
+
60
+ ![An exported offline snapshot: only the selected slice](assets/snapshot.jpg)
61
+
62
+ ## Ten thousand memories, still opens
63
+
64
+ Same-machine benchmark with 10,000 memories and 78,593 links:
65
+
66
+ - graph build 1.2 s;
67
+ - first paint about 0.6 s;
68
+ - recall 4.9 ms;
69
+ - single-file snapshot 122 ms / 21 MB;
70
+ - heap 145 MB.
71
+
72
+ Above 3,000 memories it stays in the 2D nebula and asks you to filter before switching to 3D: software rendering would choke, and the map does not pretend otherwise.
73
+
74
+ ![A 10,000-memory 2D nebula](assets/bench-10k.jpg)
75
+
76
+ ## Install
77
+
78
+ Add this index in the DSH plugin market:
79
+
80
+ ```text
81
+ https://unpkg.com/dsh-memory-nebula@1.1.2/market/index.json
82
+ ```
83
+
84
+ Then search for “Memory Nebula” and install. Or install the npm package directly:
85
+
86
+ ```bash
87
+ npm install dsh-memory-nebula@1.1.2
88
+ ```
89
+
90
+ Run the read-only doctor after installing:
91
+
92
+ ```bash
93
+ npx memory-nebula-doctor --profile <your DSH profile directory>
94
+ ```
95
+
96
+ It checks the Node version, package files, profile dependency, bundle declaration, memory sources and an optional `/ping` endpoint. Nothing is uploaded.
97
+
98
+ ## Boundaries
99
+
100
+ - single-user, local tool: no accounts, do not expose it to the public internet;
101
+ - the stores are read-only: the map never edits memories for you;
102
+ - 3D needs WebGL2;
103
+ - snapshots contain the text inside the selected scope; treat them as plain-text backups;
104
+ - server-side diagnostics and logs are mostly Chinese; the UI is bilingual.
105
+
106
+ ## More
107
+
108
+ - architecture, data model, HTTP API, compatibility and distribution docs ship in `docs/`
109
+ - License: MIT
package/docs/market.zh.md CHANGED
@@ -1,109 +1,109 @@
1
- # 记忆星图
2
-
3
- 把散落在工作区里的记忆,连成一张能走、能查、能带走的星图。
4
-
5
- DSH 里的记忆常常躺在几十个工作区、几千条会话里。搜索能给出一串结果,但看不到它们**为什么**相关;换一个项目,之前那条线索又断了。记忆星图读同一批记忆库(meow-memory / OpenViking),把它们建成一张图:节点是记忆,边是关键词、实体、项目、会话共现和人工策展。它不复制、不改写你的库,所有计算都在本机完成。
6
-
7
- ![记忆星图:一千多条记忆与它们的连接](assets/preview.png)
8
-
9
- ## 三种看法
10
-
11
- - **星云**:全部记忆铺成星云,按工作区聚成星团,按层级与连接强度着色。适合看「我的记忆整体长什么样」。
12
- - **星系**:按工作区分组,点开一团就进入那个项目。适合回答「这个项目里我都想过什么」。
13
- - **时间**:按创建/更新时间排成一条河,拖动时间轴回放。适合看「这件事是怎么一步步长出来的」。
14
-
15
- 三种视图共用同一套筛选:工作区、层级、连接类型、最小强度、最低重要度。切视图不丢选中。
16
-
17
- ## 从一条记忆走到另一条
18
-
19
- 选中节点,右侧会告诉你它和谁相连、为什么相连:同项目、共享关键词、同一实体、被同一批会话反复一起提到,或者你亲手连的。每条邻居都带权重和理由,不是「相似度 0.87」这种没有证据的数字。
20
-
21
- Shift 点第二个节点,会找两点之间的**证据链**:每一跳是哪条边、什么理由、链强度多少。找不到就明说找不到,不编一条路。
22
-
23
- ![选中一条记忆:正文、邻居、每条边的理由](assets/demo.jpg)
24
-
25
- ## 搜索与扩散
26
-
27
- 搜索是全文的:标题、正文、关键词都算。结果里会标出是直接命中,还是从别的节点扩散过来的;跨工作区命中会单独标出来,避免「明明有却搜不到」。
28
-
29
- 「以它为种子扩散」不是搜索的替代品:它从这条记忆出发,沿已有连接看两跳内的邻居,告诉你「还有哪些东西和它连着」。
30
-
31
- ## 体检:不只看漂亮的那面
32
-
33
- 星图会做六类只读体检:
34
-
35
- - 近似重复的记忆;
36
- - 过长的记忆;
37
- - 很久没更新、可能过时的记忆;
38
- - 存了但从没被读过的记忆;
39
- - 边很多但没有一条强关系(关键词撞出来的);
40
- - 完全孤立的记忆。
41
-
42
- 只诊断,不自动改库。要不要合并、删掉、补连接,由你决定。
43
-
44
- ## 示例星系与首访引导
45
-
46
- 第一次打开时,如果库还是空的,不会只给你一片黑:可以进「示例星系」逛一圈。示例是 64 条**虚构**记忆,只读,不写盘,退出后回到你自己的库。第一次进真实库还有三步引导:搜一个词、点开一条看证据、Shift 点两条看它们怎么连。跳过随时可以按 `?` 重看。
47
-
48
- ![第一次来?三步就够](assets/onboard.jpg)
49
-
50
- ## 分享一片,而不是整座库
51
-
52
- 可以把整张图、当前工作区、或「以某条记忆为中心 2 跳」导出成一个**单文件 HTML**:
53
-
54
- - 双击就能看,不需要 DSH、不需要网络;
55
- - 搜索、邻居、证据链都在本地算;
56
- - 只读,不能改你的库;
57
- - 导出前可以勾选「隐去日记工作区」;`scope`/`hide` 只影响导出,不动原库;
58
- - 分享出去的是时间点副本,正文会一起带走——发给别人前先确认范围。
59
-
60
- ![导出的离线快照:文件里只有被选中的那一片](assets/snapshot.jpg)
61
-
62
- ## 一万条也敢开
63
-
64
- 10,000 条记忆、78,593 条连接的同机基准:
65
-
66
- - 建图 1.2 秒;
67
- - 首屏约 0.6 秒;
68
- - 检索 4.9 毫秒;
69
- - 单文件快照 122 毫秒 / 21MB;
70
- - 堆内存 145MB。
71
-
72
- 超过 3,000 条时默认留在二维星云,并提示先筛选再切三维:软件渲染下三维会卡,星图不假装自己扛得住。
73
-
74
- ![一万条记忆的二维星云](assets/bench-10k.jpg)
75
-
76
- ## 安装
77
-
78
- 在 DSH 的插件市场里添加索引:
79
-
80
- ```text
81
- https://cdn.jsdelivr.net/npm/dsh-memory-nebula@1.1.1/market/index.json
82
- ```
83
-
84
- 然后搜索「记忆星图」安装。也可以直接装 npm 包:
85
-
86
- ```bash
87
- npm install dsh-memory-nebula@1.1.1
88
- ```
89
-
90
- 装完先体检:
91
-
92
- ```bash
93
- npx memory-nebula-doctor --profile <你的 DSH profile 目录>
94
- ```
95
-
96
- 它会检查 Node 版本、包文件、profile 依赖、bundle 声明、记忆源和可选的 `/ping` 端点。只读,不上传任何东西。
97
-
98
- ## 边界
99
-
100
- - 本机单用户工具,没有账号系统,不要把它暴露到公网;
101
- - 记忆库是只读的:星图不会替你改记忆;
102
- - 三维视图需要 WebGL2;
103
- - 单文件快照包含被选中范围内的正文,按明文备份对待;
104
- - 服务端诊断与日志仍以中文为主,界面中英双语。
105
-
106
- ## 更多
107
-
108
- - 架构、数据模型、HTTP 接口、兼容矩阵与分发说明都随包发布,见 `docs/`
109
- - 许可:MIT
1
+ # 记忆星图
2
+
3
+ 把散落在工作区里的记忆,连成一张能走、能查、能带走的星图。
4
+
5
+ DSH 里的记忆常常躺在几十个工作区、几千条会话里。搜索能给出一串结果,但看不到它们**为什么**相关;换一个项目,之前那条线索又断了。记忆星图读同一批记忆库(meow-memory / OpenViking),把它们建成一张图:节点是记忆,边是关键词、实体、项目、会话共现和人工策展。它不复制、不改写你的库,所有计算都在本机完成。
6
+
7
+ ![记忆星图:一千多条记忆与它们的连接](assets/preview.png)
8
+
9
+ ## 三种看法
10
+
11
+ - **星云**:全部记忆铺成星云,按工作区聚成星团,按层级与连接强度着色。适合看「我的记忆整体长什么样」。
12
+ - **星系**:按工作区分组,点开一团就进入那个项目。适合回答「这个项目里我都想过什么」。
13
+ - **时间**:按创建/更新时间排成一条河,拖动时间轴回放。适合看「这件事是怎么一步步长出来的」。
14
+
15
+ 三种视图共用同一套筛选:工作区、层级、连接类型、最小强度、最低重要度。切视图不丢选中。
16
+
17
+ ## 从一条记忆走到另一条
18
+
19
+ 选中节点,右侧会告诉你它和谁相连、为什么相连:同项目、共享关键词、同一实体、被同一批会话反复一起提到,或者你亲手连的。每条邻居都带权重和理由,不是「相似度 0.87」这种没有证据的数字。
20
+
21
+ Shift 点第二个节点,会找两点之间的**证据链**:每一跳是哪条边、什么理由、链强度多少。找不到就明说找不到,不编一条路。
22
+
23
+ ![选中一条记忆:正文、邻居、每条边的理由](assets/demo.jpg)
24
+
25
+ ## 搜索与扩散
26
+
27
+ 搜索是全文的:标题、正文、关键词都算。结果里会标出是直接命中,还是从别的节点扩散过来的;跨工作区命中会单独标出来,避免「明明有却搜不到」。
28
+
29
+ 「以它为种子扩散」不是搜索的替代品:它从这条记忆出发,沿已有连接看两跳内的邻居,告诉你「还有哪些东西和它连着」。
30
+
31
+ ## 体检:不只看漂亮的那面
32
+
33
+ 星图会做六类只读体检:
34
+
35
+ - 近似重复的记忆;
36
+ - 过长的记忆;
37
+ - 很久没更新、可能过时的记忆;
38
+ - 存了但从没被读过的记忆;
39
+ - 边很多但没有一条强关系(关键词撞出来的);
40
+ - 完全孤立的记忆。
41
+
42
+ 只诊断,不自动改库。要不要合并、删掉、补连接,由你决定。
43
+
44
+ ## 示例星系与首访引导
45
+
46
+ 第一次打开时,如果库还是空的,不会只给你一片黑:可以进「示例星系」逛一圈。示例是 64 条**虚构**记忆,只读,不写盘,退出后回到你自己的库。第一次进真实库还有三步引导:搜一个词、点开一条看证据、Shift 点两条看它们怎么连。跳过随时可以按 `?` 重看。
47
+
48
+ ![第一次来?三步就够](assets/onboard.jpg)
49
+
50
+ ## 分享一片,而不是整座库
51
+
52
+ 可以把整张图、当前工作区、或「以某条记忆为中心 2 跳」导出成一个**单文件 HTML**:
53
+
54
+ - 双击就能看,不需要 DSH、不需要网络;
55
+ - 搜索、邻居、证据链都在本地算;
56
+ - 只读,不能改你的库;
57
+ - 导出前可以勾选「隐去日记工作区」;`scope`/`hide` 只影响导出,不动原库;
58
+ - 分享出去的是时间点副本,正文会一起带走——发给别人前先确认范围。
59
+
60
+ ![导出的离线快照:文件里只有被选中的那一片](assets/snapshot.jpg)
61
+
62
+ ## 一万条也敢开
63
+
64
+ 10,000 条记忆、78,593 条连接的同机基准:
65
+
66
+ - 建图 1.2 秒;
67
+ - 首屏约 0.6 秒;
68
+ - 检索 4.9 毫秒;
69
+ - 单文件快照 122 毫秒 / 21MB;
70
+ - 堆内存 145MB。
71
+
72
+ 超过 3,000 条时默认留在二维星云,并提示先筛选再切三维:软件渲染下三维会卡,星图不假装自己扛得住。
73
+
74
+ ![一万条记忆的二维星云](assets/bench-10k.jpg)
75
+
76
+ ## 安装
77
+
78
+ 在 DSH 的插件市场里添加索引:
79
+
80
+ ```text
81
+ https://unpkg.com/dsh-memory-nebula@1.1.2/market/index.json
82
+ ```
83
+
84
+ 然后搜索「记忆星图」安装。也可以直接装 npm 包:
85
+
86
+ ```bash
87
+ npm install dsh-memory-nebula@1.1.2
88
+ ```
89
+
90
+ 装完先体检:
91
+
92
+ ```bash
93
+ npx memory-nebula-doctor --profile <你的 DSH profile 目录>
94
+ ```
95
+
96
+ 它会检查 Node 版本、包文件、profile 依赖、bundle 声明、记忆源和可选的 `/ping` 端点。只读,不上传任何东西。
97
+
98
+ ## 边界
99
+
100
+ - 本机单用户工具,没有账号系统,不要把它暴露到公网;
101
+ - 记忆库是只读的:星图不会替你改记忆;
102
+ - 三维视图需要 WebGL2;
103
+ - 单文件快照包含被选中范围内的正文,按明文备份对待;
104
+ - 服务端诊断与日志仍以中文为主,界面中英双语。
105
+
106
+ ## 更多
107
+
108
+ - 架构、数据模型、HTTP 接口、兼容矩阵与分发说明都随包发布,见 `docs/`
109
+ - 许可:MIT
@@ -68,7 +68,7 @@ memory-nebula --help # 装成 bin 之后
68
68
 
69
69
  ## 发布信息
70
70
 
71
- - 版本 `1.1.1`,`license: MIT`,无运行时依赖。
71
+ - 版本 `1.1.2`,`license: MIT`,无运行时依赖。
72
72
  - `files`:`lib/`、`cordis.patch.yml`、`README.md`、`README.en.md`、`docs/`、`CHANGELOG.md`、
73
73
  `LICENSE`、`scripts/`、`sidecar.ps1`。
74
74
  - 装完先体检:`node scripts/doctor.mjs --profile <profile> [--root DIR] [--base URL] [--json]`;
package/docs/release.md CHANGED
@@ -59,8 +59,8 @@ npm pack --dry-run
59
59
  npm pack # 生成 dsh-memory-nebula-<version>.tgz
60
60
  ```
61
61
 
62
- 1.1.1 实测:**72 个文件**,包 2.3 MB、解开 2.9 MB(`docs/assets/` 的预览图与基准脚本占大头)。
63
- 干净目录安装后 `--version` = 1.1.1,导出 `apply,inject,name,version`;
62
+ 1.1.2 实测:**72 个文件**,包 2.3 MB、解开 2.9 MB(`docs/assets/` 的预览图与基准脚本占大头)。
63
+ 干净目录安装后 `--version` = 1.1.2,导出 `apply,inject,name,version`;
64
64
  安装包起 7896 实测 `/share?scope=ws:DSHLive2D&hide=level:lesson` → 200、601,177 字节。
65
65
  清单里应含 `sidecar.ps1`、`scripts/`、`test/` 不含(单测只在仓库里跑)、`dev/` 与截图不含。
66
66
 
@@ -71,7 +71,7 @@ npm pack # 生成 dsh-memory-nebula-<version>.tgz
71
71
  New-Item -ItemType Junction -Path "<profile>\node_modules\dsh-memory-nebula" -Target "<plugin>"
72
72
 
73
73
  # 方式 B:tarball
74
- npm install <path>\dsh-memory-nebula-1.1.1.tgz --prefix <profile>
74
+ npm install <path>\dsh-memory-nebula-1.1.2.tgz --prefix <profile>
75
75
  ```
76
76
 
77
77
  然后确认 profile `package.json` 里:
package/docs/verified.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  > 下面的数字都是**当时实测**的值,记录的是「这个结论被什么证据支撑过」,不是当前规模——记忆每天在长,规模类数字请以 `node scripts/smoke.mjs` 和界面顶栏为准。
4
4
 
5
+ ## 1.1.2(2026-11-10)换个门牌
6
+
7
+ - **CDN 选择**:本机 `curl` 与 Node fetch 访问 jsDelivr 均为 `ECONNRESET`;unpkg 的 Node fetch 200。
8
+ - **远程索引**:`https://unpkg.com/dsh-memory-nebula@1.1.2/market/index.json` 经
9
+ `parseMarketIndex` 解析通过,1 个插件、版本 1.1.2;`marketInstallTarget` 返回
10
+ `dsh-memory-nebula@1.1.2`。
11
+ - **详情资产**:icon.svg(image/svg+xml)、locale/zh.json、docs/market.zh.md、
12
+ docs/assets/demo.jpg 均 200。
13
+ - **本包**:87/87 单测;release-check 1.1.2 全绿;干净安装 `--version` = 1.1.2。
14
+ - **发布**:npm `latest` = 1.1.2;registry 安装 `dsh-memory-nebula@1.1.2` 后 doctor 通过。
15
+ - **市场端**:DSH 索引配置后可在发现页搜索「记忆星图」并安装;若宿主网络无法访问 unpkg,
16
+ 改用本机 `file://` 索引或 npm 直装,不影响包本身。
17
+
5
18
  ## 1.1.1(2026-11-10)上架
6
19
 
7
20
  - **市场索引校验**:`market/index.json` 经 `@deepseek-ai/dsh-plugin-market-index` 的
package/lib/web/app.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /* 记忆星图 —— 界面逻辑
2
2
  数据:/api/memory-nebula/*(同源)。渲染交给 render.js。 */
3
3
  ;(function () {
4
- const APP_VERSION = '1.1.1' // 和 package.json 同步(release-check 会核对)
4
+ const APP_VERSION = '1.1.2' // 和 package.json 同步(release-check 会核对)
5
5
  'use strict'
6
6
  /** 中文即源文:英文模式查 i18n.js 的表,查不到就原样返回中文。 */
7
7
  const T = (zh, vars) => (window.NebulaI18n ? window.NebulaI18n.t(zh, vars) : zh)