@a9i5k4/dsh-auto-memory 3.0.1 → 3.1.1
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.md +13 -8
- package/README.zh-CN.md +13 -8
- package/docs/HANDBOOK.md +92 -52
- package/docs/USER-GUIDE.en.md +9 -9
- package/docs/USER-GUIDE.zh-CN.md +9 -9
- package/docs/screenshots/promo/promo-0-banner-v4.png +0 -0
- package/docs/screenshots/promo/promo-1b-auto-recall.png +0 -0
- package/lib/activation-host.js +6 -1
- package/lib/client.js +1376 -255
- package/lib/config-io.js +59 -6
- package/lib/context-host.js +17 -2
- package/lib/episodic-store.js +90 -16
- package/lib/evidence-store.js +27 -1
- package/lib/fact-store.js +463 -41
- package/lib/hub-io.js +217 -0
- package/lib/index.js +904 -87
- package/lib/intent-clean-safe.js +1 -1
- package/lib/jsonl-tail-cursor.js +75 -0
- package/lib/m7-index-sync-host.js +4 -6
- package/lib/memory-hub.js +62 -7
- package/lib/migrate-pack.js +351 -0
- package/lib/note-status.js +9 -1
- package/lib/procedure-store.js +252 -31
- package/lib/procedure-switch.js +38 -0
- package/lib/python-setup.js +109 -27
- package/lib/python-sidecar-client.js +285 -8
- package/lib/recall-stats.js +242 -0
- package/lib/rules-layer.js +106 -15
- package/lib/semantic-js.js +25 -7
- package/lib/shadow-host.js +41 -2
- package/package.json +6 -2
- package/docs/internal/ACCEPT-35-LIVE.md +0 -143
- package/docs/internal/ACCEPTANCE-20260914.md +0 -90
- package/docs/internal/ARCH-REVIEW-BRIEF.md +0 -411
- package/docs/internal/ARCH-REVIEW-REQUEST.md +0 -201
- package/docs/internal/ARCH-REVIEW-ROUND2.md +0 -169
- package/docs/internal/ARCH-REVIEW-ROUND3.md +0 -206
- package/docs/internal/ARCHITECTURE-FOR-ZCODE-20260920.md +0 -397
- package/docs/internal/ART-DIRECTION-DEEPSEEK-20260920.md +0 -351
- package/docs/internal/ART-DIRECTION-WIREFRAME.md +0 -191
- package/docs/internal/ART-DIRECTION-WIREFRAME.md.bak-superseded +0 -181
- package/docs/internal/AUDIT-WB-GRAPH-FULL-20260916.md +0 -314
- package/docs/internal/BATTLE-PLAN-20260917.md +0 -871
- package/docs/internal/CONCURRENCY-INVESTIGATION-20260917.md +0 -192
- package/docs/internal/CROSS-SESSION-SEARCH-PATH-DECISION.md +0 -72
- package/docs/internal/CROSS-SESSION-SEARCH-RESEARCH.md +0 -131
- package/docs/internal/CUA-VISION-FIX-NOTES.md +0 -78
- package/docs/internal/DECISIONS-20260914-SESSION.md +0 -269
- package/docs/internal/DESIGN-OVERHAUL-PRE-RESEARCH.md +0 -292
- package/docs/internal/DESIGN-P1-STATE-COMMIT-20260915.md +0 -219
- package/docs/internal/DIRECTION-CHECK-WB-GRAPH-20260916.md +0 -132
- package/docs/internal/FEATURE-INVENTORY.md +0 -531
- package/docs/internal/FEEDBACK-TO-DSHAPI-RELAY.md +0 -13
- package/docs/internal/G-SERIES-EXECUTION-20260917.md +0 -248
- package/docs/internal/G3-DESIGN-20260918.md +0 -82
- package/docs/internal/G3-DISK-FORMAT-GAP-20260919.md +0 -92
- package/docs/internal/GH-DISCUSSION-5732-COMMENT.md +0 -74
- package/docs/internal/GPT-ACCEPTANCE-PROMPT-20260916.md +0 -352
- package/docs/internal/GPT-REVIEW-PROMPT.md +0 -216
- package/docs/internal/GROUP-DIGEST-SETUP.md +0 -62
- package/docs/internal/GROUP-LISTENER-SETUP.md +0 -49
- package/docs/internal/GROUP-WEBHOOK-SETUP.md +0 -93
- package/docs/internal/HANDOFF-TO-ZCODE-20260920.md +0 -309
- package/docs/internal/HANDOFF-TO-ZCODE.md +0 -168
- package/docs/internal/HERMES-DATA-VERIFICATION-20260919.md +0 -120
- package/docs/internal/HERMES-LEGACY-STATUS-20260919.md +0 -74
- package/docs/internal/ISSUE-55-58-VERIFICATION-20260918.md +0 -175
- package/docs/internal/ISSUE10-FIX-EXECUTION-20260919.md +0 -389
- package/docs/internal/ISSUE10-PLAN-20260919.md +0 -254
- package/docs/internal/ISSUE10B-FORENSICS-20260919.md +0 -468
- package/docs/internal/ISSUE9-PURGE-AND-R1-PLAIN-20260919.md +0 -150
- package/docs/internal/ISSUE9-RESIDUAL-FORENSICS-20260919.md +0 -114
- package/docs/internal/KICKOFF-P0.md +0 -254
- package/docs/internal/LESSON-TO-CANDIDATE-STATUS-20260919.md +0 -79
- package/docs/internal/MASTER-PLAN-3.0.md +0 -411
- package/docs/internal/MEMORY-GOVERNANCE-20260917.md +0 -309
- package/docs/internal/MEMORY-MUTATION-AND-INDEX-DESIGN.md +0 -85
- package/docs/internal/MERGE-CONFLICT-SCAN-20260914.md +0 -222
- package/docs/internal/NEXT-VERSION-TODO.md +0 -95
- package/docs/internal/OFFICIAL-DISCUSSION-DRAFT.md +0 -80
- package/docs/internal/PENDING-FIXES-20260916.md +0 -289
- package/docs/internal/PRE-FRONTEND-CHECKLIST-20260919.md +0 -705
- package/docs/internal/PRE-FRONTEND-CHECKLIST-20260919.md.bak-s10 +0 -649
- package/docs/internal/PROCEDURAL-MEMORY-AND-APPROVAL-DESIGN-20260918.md +0 -225
- package/docs/internal/PROGRESS-20260917.md +0 -93
- package/docs/internal/PROMPT-GAP-AUDIT-20260920.md +0 -128
- package/docs/internal/R1-DEGRADE-AUDIT-20260918.md +0 -163
- package/docs/internal/R1-READABILITY-FORENSICS-20260919.md +0 -127
- package/docs/internal/R2-EVIDENCE-DEEP-AUDIT-20260918.md +0 -140
- package/docs/internal/R3-DEGRADE-LEDGER-DESIGN-20260918.md +0 -138
- package/docs/internal/R4-RECALL-QUOTA-PLAN-20260918.md +0 -218
- package/docs/internal/RAG-KARPATHY-PROGRAM.md +0 -229
- package/docs/internal/RELEASE-PROCESS.md +0 -99
- package/docs/internal/REPORT-P0-NIGHTLY.md +0 -212
- package/docs/internal/REPORT-P5-ACCEPTANCE.md +0 -31
- package/docs/internal/REPORT-WB-GRAPH-NIGHTLY.md +0 -153
- package/docs/internal/RESUME-20260918.md +0 -171
- package/docs/internal/RESUME-20260919.md +0 -104
- package/docs/internal/REVIEW-WB-GRAPH-SELF.md +0 -81
- package/docs/internal/RHINELAB-TO-DEEPSEEK-FEASIBILITY.md +0 -198
- package/docs/internal/ROADMAP-20260917-WEEK.md +0 -439
- package/docs/internal/ROADMAP.md +0 -106
- package/docs/internal/RUN-P0-NIGHTLY.md +0 -227
- package/docs/internal/S10-CONSTRUCTION-HANDOFF-20260917.md +0 -185
- package/docs/internal/S10-GAP-INVENTORY-20260917.md +0 -239
- package/docs/internal/S10-GAPS-PLAIN-20260917.md +0 -125
- package/docs/internal/SEMANTIC-ARCHITECTURE-SPEC.md +0 -360
- package/docs/internal/SESSION-FILE-REPAIR-PROTOCOL.md +0 -90
- package/docs/internal/SUBAGENT-REPORT-ROUTING-PRE-RESEARCH.md +0 -261
- package/docs/internal/T6-EXECUTION-20260920.md +0 -130
- package/docs/internal/TELEMETRY-EFFECT-REPORT-DESIGN-20260918.md +0 -146
- package/docs/internal/THESIS-GAP-ANALYSIS-20260918.md +0 -89
- package/docs/internal/THESIS-OUTLINE-20260918.md +0 -147
- package/docs/internal/THREE-LAYER-CONTRACT.md +0 -219
- package/docs/internal/TODO-BACKLOG.md +0 -263
- package/docs/internal/TODO-GRAPH.html +0 -715
- package/docs/internal/TODO-GRAPH.html.bak-20260914-v2 +0 -493
- package/docs/internal/TODO-GRAPH.html.bak-20260915-alsfix +0 -710
- package/docs/internal/TODO-GRAPH.html.bak-20260915-p1 +0 -710
- package/docs/internal/TODO-GRAPH.html.bak-20260915-p6a-rev +0 -703
- package/docs/internal/TODO-GRAPH.html.bak-20260915-wshint +0 -710
- package/docs/internal/TODO-GRAPH.html.bak-20260916-batch +0 -715
- package/docs/internal/UPSTREAM-ISSUE-PR-TRIAGE-20260919.md +0 -297
- package/docs/internal/UPSTREAM-ISSUES-3RD-AUDIT-20260920.md +0 -104
- package/docs/internal/WB-FORMAT-CONVENTION.md +0 -112
- package/docs/internal/WB-GRAPH-DECISIONS-20260914.md +0 -71
- package/docs/internal/WB-GRAPH-INTEGRATION-PLAN.md +0 -386
- package/docs/internal/WB-GRAPH-RESEARCH-BRIEF.md +0 -118
- package/docs/internal/WB-GRAPH-RESEARCH-EXTERNAL.md +0 -228
- package/docs/internal/WB-GRAPH-RESEARCH-LOCAL.md +0 -190
- package/docs/internal/reviews/CLAIM-VERIFICATION-20260914.md +0 -56
- package/docs/internal/reviews/PLAN-gpt6astra-round2-20260914.md +0 -787
- package/docs/internal/reviews/REVIEW-gpt6astra-20260914.md +0 -112
- package/docs/internal/reviews/ROUND3-REVIEW-INTEGRATION-20260914.md +0 -230
package/README.md
CHANGED
|
@@ -10,18 +10,19 @@
|
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
13
|
-
<a href="docs/screenshots/promo/promo-0-banner-
|
|
13
|
+
<a href="docs/screenshots/promo/promo-0-banner-v4.png"><img width="820" alt="dsh-auto-memory hero: she remembers, unbidden" src="docs/screenshots/promo/promo-0-banner-v4.png"></a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="docs/screenshots/promo/promo-0-banner-
|
|
17
|
+
<a href="docs/screenshots/promo/promo-0-banner-v4.png"><img width="130" alt="hero" src="docs/screenshots/promo/promo-0-banner-v4.png"></a>
|
|
18
|
+
<a href="docs/screenshots/promo/promo-1b-auto-recall.png"><img width="130" alt="auto recall" src="docs/screenshots/promo/promo-1b-auto-recall.png"></a>
|
|
18
19
|
<a href="docs/screenshots/promo/promo-2-tour.png"><img width="130" alt="welcome tour" src="docs/screenshots/promo/promo-2-tour.png"></a>
|
|
19
20
|
<a href="docs/screenshots/promo/promo-3-recall.png"><img width="130" alt="recall & crystallization" src="docs/screenshots/promo/promo-3-recall.png"></a>
|
|
20
21
|
<a href="docs/screenshots/promo/promo-4-unattended.png"><img width="130" alt="unattended mode" src="docs/screenshots/promo/promo-4-unattended.png"></a>
|
|
21
22
|
<a href="docs/screenshots/promo/promo-5-external.png"><img width="130" alt="external memory inheritance" src="docs/screenshots/promo/promo-5-external.png"></a>
|
|
22
23
|
<a href="docs/screenshots/promo/promo-6-greeting.png"><img width="130" alt="scheduled greetings" src="docs/screenshots/promo/promo-6-greeting.png"></a>
|
|
23
24
|
</p>
|
|
24
|
-
<p align="center"><sub>Promo gallery ·
|
|
25
|
+
<p align="center"><sub>Promo gallery · seven frames · click any thumbnail to view full size</sub></p>
|
|
25
26
|
|
|
26
27
|
<details>
|
|
27
28
|
<summary><b>Promo gallery, frame by frame</b> (expand and flip through)</summary>
|
|
@@ -30,23 +31,27 @@
|
|
|
30
31
|
|
|
31
32
|
<p align="center"><img width="720" alt="hero" src="docs/screenshots/promo/promo-1-hero.png"></p>
|
|
32
33
|
|
|
33
|
-
#### Frame 2 ·
|
|
34
|
+
#### Frame 2 · Auto Recall — A semantic model matches it and injects it before you ask
|
|
35
|
+
|
|
36
|
+
<p align="center"><img width="720" alt="auto recall" src="docs/screenshots/promo/promo-1b-auto-recall.png"></p>
|
|
37
|
+
|
|
38
|
+
#### Frame 3 · Welcome Tour — Every feature, explained and toggled on the spot
|
|
34
39
|
|
|
35
40
|
<p align="center"><img width="720" alt="welcome tour" src="docs/screenshots/promo/promo-2-tour.png"></p>
|
|
36
41
|
|
|
37
|
-
#### Frame
|
|
42
|
+
#### Frame 4 · Recall & Crystallization — Conversation condenses into skills, traceably
|
|
38
43
|
|
|
39
44
|
<p align="center"><img width="720" alt="recall" src="docs/screenshots/promo/promo-3-recall.png"></p>
|
|
40
45
|
|
|
41
|
-
#### Frame
|
|
46
|
+
#### Frame 5 · Unattended Mode — Runs all night, zero small talk, zero interruptions
|
|
42
47
|
|
|
43
48
|
<p align="center"><img width="720" alt="unattended" src="docs/screenshots/promo/promo-4-unattended.png"></p>
|
|
44
49
|
|
|
45
|
-
#### Frame
|
|
50
|
+
#### Frame 6 · External Memory Inheritance — Your other AIs feed her memory too
|
|
46
51
|
|
|
47
52
|
<p align="center"><img width="720" alt="external" src="docs/screenshots/promo/promo-5-external.png"></p>
|
|
48
53
|
|
|
49
|
-
#### Frame
|
|
54
|
+
#### Frame 7 · Scheduled Greetings — Every day remembered
|
|
50
55
|
|
|
51
56
|
<p align="center"><img width="720" alt="greeting" src="docs/screenshots/promo/promo-6-greeting.png"></p>
|
|
52
57
|
|
package/README.zh-CN.md
CHANGED
|
@@ -10,18 +10,19 @@
|
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
13
|
-
<a href="docs/screenshots/promo/promo-0-banner-
|
|
13
|
+
<a href="docs/screenshots/promo/promo-0-banner-v4.png"><img width="820" alt="dsh-auto-memory 主视觉:无问自忆,且件件可查" src="docs/screenshots/promo/promo-0-banner-v4.png"></a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="docs/screenshots/promo/promo-0-banner-
|
|
17
|
+
<a href="docs/screenshots/promo/promo-0-banner-v4.png"><img width="130" alt="主视觉" src="docs/screenshots/promo/promo-0-banner-v4.png"></a>
|
|
18
|
+
<a href="docs/screenshots/promo/promo-1b-auto-recall.png"><img width="130" alt="自动唤起" src="docs/screenshots/promo/promo-1b-auto-recall.png"></a>
|
|
18
19
|
<a href="docs/screenshots/promo/promo-2-tour.png"><img width="130" alt="欢迎向导" src="docs/screenshots/promo/promo-2-tour.png"></a>
|
|
19
20
|
<a href="docs/screenshots/promo/promo-3-recall.png"><img width="130" alt="唤起与固化" src="docs/screenshots/promo/promo-3-recall.png"></a>
|
|
20
21
|
<a href="docs/screenshots/promo/promo-4-unattended.png"><img width="130" alt="无人值守" src="docs/screenshots/promo/promo-4-unattended.png"></a>
|
|
21
22
|
<a href="docs/screenshots/promo/promo-5-external.png"><img width="130" alt="外部记忆继承" src="docs/screenshots/promo/promo-5-external.png"></a>
|
|
22
23
|
<a href="docs/screenshots/promo/promo-6-greeting.png"><img width="130" alt="定时问候" src="docs/screenshots/promo/promo-6-greeting.png"></a>
|
|
23
24
|
</p>
|
|
24
|
-
<p align="center"><sub
|
|
25
|
+
<p align="center"><sub>宣传图七幕 · 点击任意一张查看大图</sub></p>
|
|
25
26
|
|
|
26
27
|
<details>
|
|
27
28
|
<summary><b>宣传图分幕浏览</b>(点击展开,逐幕翻看)</summary>
|
|
@@ -30,23 +31,27 @@
|
|
|
30
31
|
|
|
31
32
|
<p align="center"><img width="720" alt="主视觉" src="docs/screenshots/promo/promo-1-hero.png"></p>
|
|
32
33
|
|
|
33
|
-
#### 第二幕 ·
|
|
34
|
+
#### 第二幕 · 自动唤起 —— 语义模型自动匹配,不等你问就已注入
|
|
35
|
+
|
|
36
|
+
<p align="center"><img width="720" alt="自动唤起" src="docs/screenshots/promo/promo-1b-auto-recall.png"></p>
|
|
37
|
+
|
|
38
|
+
#### 第三幕 · 欢迎向导 —— 每个功能,当场看懂、当场开关
|
|
34
39
|
|
|
35
40
|
<p align="center"><img width="720" alt="欢迎向导" src="docs/screenshots/promo/promo-2-tour.png"></p>
|
|
36
41
|
|
|
37
|
-
####
|
|
42
|
+
#### 第四幕 · 唤起与固化 —— 对话凝成技能,每一步有迹可循
|
|
38
43
|
|
|
39
44
|
<p align="center"><img width="720" alt="唤起与固化" src="docs/screenshots/promo/promo-3-recall.png"></p>
|
|
40
45
|
|
|
41
|
-
####
|
|
46
|
+
#### 第五幕 · 无人值守模式 —— 整夜安静跑,零寒暄,零打扰
|
|
42
47
|
|
|
43
48
|
<p align="center"><img width="720" alt="无人值守" src="docs/screenshots/promo/promo-4-unattended.png"></p>
|
|
44
49
|
|
|
45
|
-
####
|
|
50
|
+
#### 第六幕 · 外部记忆继承 —— 你的其他 AI,也在喂她记忆
|
|
46
51
|
|
|
47
52
|
<p align="center"><img width="720" alt="外部记忆继承" src="docs/screenshots/promo/promo-5-external.png"></p>
|
|
48
53
|
|
|
49
|
-
####
|
|
54
|
+
#### 第七幕 · 定时暖心问候 —— 让每一天都被记得
|
|
50
55
|
|
|
51
56
|
<p align="center"><img width="720" alt="定时问候" src="docs/screenshots/promo/promo-6-greeting.png"></p>
|
|
52
57
|
|
package/docs/HANDBOOK.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# dsh-auto-memory 接手与全量验证手册(自包含)
|
|
2
2
|
|
|
3
3
|
> **适用对象**:完全不了解本项目与插件背景的新 Agent。只凭本文件即可接手操作并完成全量验证。
|
|
4
|
-
> **版本基准**:插件
|
|
5
|
-
> **最后核对**:2026-09-
|
|
4
|
+
> **版本基准**:插件 v3.0.1(BSD-3-Clause,版本号以 `package.json` 为准)/DSH v0.1.2-rc.1/Windows。
|
|
5
|
+
> **最后核对**:2026-09-22(以代码与 DSH CLI help 原文为准;本手册的路径类事实统一按「发布名」口径重取,见 §0 命名口径)。
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -10,13 +10,14 @@
|
|
|
10
10
|
|
|
11
11
|
| 术语 | 全称 / 含义 |
|
|
12
12
|
|---|---|
|
|
13
|
-
| **DSH** | **DeepSeek Harness**,宿主应用。以 CLI `dsh` 启动,提供浏览器 UI(`dsh web
|
|
13
|
+
| **DSH** | **DeepSeek Harness**,宿主应用。以 CLI `dsh` 启动,提供浏览器 UI(`dsh web`)与插件装载能力。Windows 默认装在 `%APPDATA%\npm\node_modules\@deepseek-ai\dsh`(**不要写死某个用户名**) |
|
|
14
14
|
| **Cordis** | DSH 使用的插件框架(`@deepseek-ai/cordis ^4.0.1`)。本插件是 Cordis 插件,通过 `cordis.patch.yml` 注入宿主 |
|
|
15
15
|
| **本插件** | `dsh-auto-memory`,包名同名,工程根目录 `D:\dsh-auto-memory` |
|
|
16
|
-
| **pre 线 / `-pre.js`** | 源码约定:新增模块一律命名为 `lib/xxx-pre.js`(纯函数、零 IO、IO
|
|
16
|
+
| **pre 线 / `-pre.js`** | 源码约定:新增模块一律命名为 `lib/xxx-pre.js`(纯函数、零 IO、IO 注入)。发布时由 `tools/release.mjs` 的**转换表**剥去 `-pre` 生成同名 `lib/xxx.js`。**改源码改 `-pre.js`;`lib/xxx.js` 是产物,禁止手改** |
|
|
17
|
+
| **命名口径(发布名 vs pre 名)** | 同一份身份在两条线上拼写不同,**本手册正文一律给「发布名」——即用户实际装到的那个**;pre 开发树各加 `-pre`。成对关系:端点前缀 `/api/dsh-auto-memory/` ↔ `/api/dsh-auto-memory-pre/`;诊断日志 `dsh-auto-memory-diagnose.log` ↔ `dsh-auto-memory-pre-diagnose.log`;配置 `dsh-auto-memory.json` ↔ `dsh-auto-memory-pre.json`;目录 `memory/hub/` ↔ `memory/hub-pre/`、`memory/evidence/` ↔ `memory/evidence-pre/`、`memory/index/` ↔ `memory/index-pre/`、`memory/semantic/` ↔ `memory/semantic-pre/`。**★例外:`memory/degrade-pre/` 转换表里没有对应规则 ⇒ 发布物里仍叫 `degrade-pre`,不要改成 `degrade`**。依据:`tools/release.mjs` 转换表 + 已发布产物 `D:\dsh_debug\_publish_dsh-auto-memory\lib\index.js` |
|
|
17
18
|
| **宿主侧 / 后端** | `lib/index.js`,运行在 Node 进程里,负责存储、检索、端点、工具、调度 |
|
|
18
19
|
| **浏览器侧 / 前端** | `lib/client.js`,注入到 DSH 浏览器 UI,负责面板与设置页 |
|
|
19
|
-
| **工具(tool)** | 供模型调用的函数(类似 MCP 工具)。本插件注册
|
|
20
|
+
| **工具(tool)** | 供模型调用的函数(类似 MCP 工具)。本插件注册 **18 个**;pre 树名字以 `_pre` 结尾,发布名去掉 `_pre`(如 `memory_recall`) |
|
|
20
21
|
| **水位(water level)** | 当前会话上下文占用比例(0–1)。用于决定何时触发接续 |
|
|
21
22
|
| **接续 / handoff** | 上下文将满时,把进度交接给一个新会话继续工作的机制 |
|
|
22
23
|
| **主动联想** | 不等用户询问,由系统主动判断"该想起什么"并注入上下文——本插件的核心差异化能力 |
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
| **BM25** | 经典词法相关性算法 |
|
|
27
28
|
| **M8 / 记忆中枢** | 三层记忆存储(fact 事实/episodic 经历/procedure 技能)与编排器 memory-hub 的合称 |
|
|
28
29
|
| **evidence(证据)** | 记忆被使用情况的记录,六类:`seen`(曝光)/`read`(读到原文)/`cite`(回复引用)/`reuse`(跨会话复用)/`success`(任务成功)/`correction`(用户纠正) |
|
|
29
|
-
| **endpoint / 端点** | 后端 HTTP 接口,路径前缀统一为 `/api/dsh-auto-memory-pre
|
|
30
|
+
| **endpoint / 端点** | 后端 HTTP 接口,路径前缀统一为 `/api/dsh-auto-memory/`(pre 树为 `/api/dsh-auto-memory-pre/`),共 53 条 |
|
|
30
31
|
|
|
31
32
|
---
|
|
32
33
|
|
|
@@ -35,7 +36,7 @@
|
|
|
35
36
|
本插件给 DSH 加一套**长期记忆系统**:记忆以 Markdown 文件存放在用户目录下,插件负责写入、检索、在合适时机主动提醒模型,并在上下文将满时把进度交给新会话。
|
|
36
37
|
|
|
37
38
|
- 工程根:`D:\dsh-auto-memory`
|
|
38
|
-
- 源码:`lib/index.js`(宿主侧,约
|
|
39
|
+
- 源码:`lib/index.js`(宿主侧,约 11,600 行)、`lib/client.js`(浏览器侧)、`lib/*-pre.js`(各纯核心模块,62 个文件)
|
|
39
40
|
- 发布产物:`lib/`(含剥名后的 `.js`)、`python/`、`docs/`、`cordis.patch.yml`
|
|
40
41
|
- 运行时依赖:**零**。`dependencies` 为空;peer 为 cordis;optional 为 transformers
|
|
41
42
|
|
|
@@ -74,28 +75,34 @@ dsh web --no-open --port 0
|
|
|
74
75
|
│ · 语义引擎环境检测面板 │
|
|
75
76
|
│ 仅负责「展示 + 收集用户操作」,通过 DSH 远程 API 调用后端 │
|
|
76
77
|
└───────────────┬───────────────────────────────────────────┘
|
|
77
|
-
│ HTTP /api/dsh-auto-memory-pre
|
|
78
|
+
│ HTTP /api/dsh-auto-memory/*(pre 树为 /api/dsh-auto-memory-pre/*)
|
|
78
79
|
┌───────────────▼───────────────────────────────────────────┐
|
|
79
80
|
│ 宿主侧(后端)lib/index.js + lib/*-pre.js │
|
|
80
|
-
│ · 端点路由(
|
|
81
|
-
│ · 工具(
|
|
81
|
+
│ · 端点路由(53 个) │
|
|
82
|
+
│ · 工具(18 个,供模型调用) │
|
|
82
83
|
│ · 存储:记忆文件、M8 三层 JSON、evidence 事件 JSONL │
|
|
83
84
|
│ · 检索:C1 词法 / C2 语义 / C3 Python 语义 │
|
|
84
85
|
│ · 决策:主动联想门控、接续调度、水位监测 │
|
|
85
86
|
└───────────────┬───────────────────────────────────────────┘
|
|
86
87
|
│ 读写
|
|
87
88
|
┌───────────────▼───────────────────────────────────────────┐
|
|
88
|
-
│ 磁盘
|
|
89
|
-
│ · workspaces\<工作区>\*.md
|
|
90
|
-
│ · hub
|
|
91
|
-
│ · evidence
|
|
92
|
-
│ ·
|
|
89
|
+
│ 磁盘 ~/.dsh/(Windows:%USERPROFILE%\.dsh\) │
|
|
90
|
+
│ · memory\workspaces\<工作区>\*.md 日志/笔记/白板/账本 │
|
|
91
|
+
│ · memory\hub\episodes|facts|procedures.json M8 三层 │
|
|
92
|
+
│ · memory\evidence\events\YYYY-MM-DD.jsonl 证据事件(按日) │
|
|
93
|
+
│ · (诊断日志**不在本目录**,见 §5.2) │
|
|
93
94
|
└────────────────────────────────────────────────────────────┘
|
|
94
95
|
```
|
|
95
96
|
|
|
97
|
+
> ⚠️ **诊断日志的位置**:`~/.dsh/dsh-auto-memory-diagnose.log` —— 它与 `memory/` **同级**,不在 `memory/` 里面
|
|
98
|
+
> (代码依据:`lib/index.js` 里是 `path.join(dshHome(), 'dsh-auto-memory-pre-diagnose.log')`,没有 `'memory'` 这一段)。
|
|
99
|
+
> 打包日志时先确认文件存在再交:`ls -l ~/.dsh/*diagnose*.log`
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
|
|
96
103
|
**数据流向(一次典型记忆检索)**:
|
|
97
104
|
|
|
98
|
-
1. 模型调用工具 `memory_recall_pre
|
|
105
|
+
1. 模型调用工具 `memory_recall`(pre 树 `memory_recall_pre`;或前端点选)→ 宿主侧 `recall()`
|
|
99
106
|
2. `recall()` 构建 L0 语料(从日志/反思/笔记抽取摘要)
|
|
100
107
|
3. 词法臂(C1)打 L0、语义臂(C2)打 L0;若查询含时间表达,追加时间臂
|
|
101
108
|
4. 三臂经 `rankFusionRRFPre`(rank-space,k=60)融合排序
|
|
@@ -125,7 +132,7 @@ dsh web --no-open --port 0
|
|
|
125
132
|
|
|
126
133
|
- **位置**:记忆窗格内的「记忆中枢」页签
|
|
127
134
|
- **内容**:技能(procedure)/事实(fact)/经历(episodic)三栏
|
|
128
|
-
- **预期**:有内容时显示条目;无内容显示正确空态;数据来自 `hub-pre\*.json
|
|
135
|
+
- **预期**:有内容时显示条目;无内容显示正确空态;数据来自 `memory\hub\*.json`(pre 树为 `memory\hub-pre\*.json`)
|
|
129
136
|
|
|
130
137
|
### 4.3 设置分组(`data-dam-settings-group`)
|
|
131
138
|
|
|
@@ -147,7 +154,7 @@ dsh web --no-open --port 0
|
|
|
147
154
|
| `procedurePromotionEnabled` | false | 开启 → 技能晋升可用 |
|
|
148
155
|
| `unattendedMode` / `awayMinutes` | false / 60 | 无人值守相关(**设置页 UI 尚未核实,属待办**) |
|
|
149
156
|
|
|
150
|
-
> ⚠️ 修改设置后需要**重载/重启 dsh web**才生效的场景,以实际观察为准;若改完无变化,先查 `/api/dsh-auto-memory-pre/config
|
|
157
|
+
> ⚠️ 修改设置后需要**重载/重启 dsh web**才生效的场景,以实际观察为准;若改完无变化,先查 `/api/dsh-auto-memory/config`(pre 树 `/api/dsh-auto-memory-pre/config`)是否已回写。
|
|
151
158
|
|
|
152
159
|
### 4.4 语义引擎环境检测面板(`data-dam-detect-panel`)
|
|
153
160
|
|
|
@@ -162,7 +169,7 @@ dsh web --no-open --port 0
|
|
|
162
169
|
|
|
163
170
|
## 5. 后端状态来源(如何确认前端操作已生效)
|
|
164
171
|
|
|
165
|
-
### 5.1 主要端点(`lib/index.js` 注册,共
|
|
172
|
+
### 5.1 主要端点(`lib/index.js` 注册,共 **53** 条,前缀 `/api/dsh-auto-memory/`)
|
|
166
173
|
|
|
167
174
|
| 端点 | 用途 | 关键返回字段 |
|
|
168
175
|
|---|---|---|
|
|
@@ -171,27 +178,47 @@ dsh web --no-open --port 0
|
|
|
171
178
|
| `state` | 运行状态总览 | 水位、启用状态等 |
|
|
172
179
|
| `debug` | 调试视图 | 含 `shadowRetrieval` 等 |
|
|
173
180
|
| `semantic-status` / `semantic-emit` / `semantic-download` | 语义引擎状态/发射/下载 | 档位、模型状态 |
|
|
174
|
-
| `activation-inbox
|
|
181
|
+
| `activation-inbox` | 激活收件箱 | 候选与投递记录 |
|
|
175
182
|
| `auto-continue-state` / `auto-continue-decide` / `handoff-continue` | 接续状态与决策 | 水位、是否触发、材料层 |
|
|
176
183
|
| `smart-recall` | 智能检索 | 命中列表 |
|
|
177
184
|
| `storage-manage` | 存储管理 | 文件/统计 |
|
|
178
185
|
| `workspaces` | 工作区列表 | 工作区标识 |
|
|
179
186
|
| `update` / `update-check` | 更新 | 版本信息 |
|
|
187
|
+
| `migrate-export` | **迁移搬包:导出本工作区**(POST,`outPath` 可选) | `path` / `stats` / `checksum` |
|
|
188
|
+
| `migrate-inspect` | **迁移搬包:预演差异**(POST,`packPath`;**只读,不写任何文件**) | `plan`(`pathChanged` / `additions` / `overwrites` / `rewrite`) |
|
|
189
|
+
| `migrate-import` | **迁移搬包:确认导入**(POST,`packPath` / `onConflict`) | `written` / `backup` / `summaryAction` |
|
|
180
190
|
| `calendar`、`file`、`browse-dir`、`external*`、`summarize`、`shadow-recent`、`subagent-gc`、`greet` | 其余辅助端点 | — |
|
|
181
191
|
|
|
182
|
-
>
|
|
192
|
+
> 端点名与条数以代码为准(**一条命令自核**,`50` 与 `/api/dsh-auto-memory/` 都由它推出,不是写死的):
|
|
193
|
+
>
|
|
194
|
+
> ```bash
|
|
195
|
+
> node -e "const f=require('fs');const s=f.readFileSync('lib/index.js','utf8'),r=f.readFileSync('tools/release.mjs','utf8');const P=[...r.matchAll(/\['([^']+)',\s*'([^']+)'\]/g)].map(m=>[m[1],m[2]]);const c=x=>P.reduce((a,[b,d])=>a.split(b).join(d),x);const e=[...new Set([...s.matchAll(/'(\/api\/dsh-auto-memory[^']*)'/g)].map(m=>m[1]))];console.log('端点条数:',e.length);console.log('发布名前缀:',c(e[0]).split('/').slice(0,3).join('/')+'/')"
|
|
196
|
+
> ```
|
|
197
|
+
>
|
|
198
|
+
> 在工程根执行,输出应为 `端点条数: 53` / `发布名前缀: /api/dsh-auto-memory/`。命令读的是**源码 + 发布转换表**,所以两条线的拼写都能对上。
|
|
183
199
|
|
|
184
200
|
### 5.2 日志
|
|
185
201
|
|
|
186
|
-
-
|
|
202
|
+
- **诊断日志**:`~/.dsh/dsh-auto-memory-diagnose.log`(Windows:`%USERPROFILE%\.dsh\dsh-auto-memory-diagnose.log`)
|
|
203
|
+
- **★它不在 `memory/` 下面**:代码是 `path.join(dshHome(), 'dsh-auto-memory-pre-diagnose.log')`(pre 树),无 `'memory'` 段
|
|
187
204
|
- 关键线索:插件加载异常、`diag(...)` 输出的降级与状态(如 `hub success evidence: +N`、`p9a correction attribution: ...`)
|
|
188
|
-
-
|
|
205
|
+
- **证据事件**:`~/.dsh/memory/evidence/events/YYYY-MM-DD.jsonl`(pre 树为 `~/.dsh/memory/evidence-pre/events/`)
|
|
189
206
|
- 单行结构(实测):顶层 `kind` / `memoryId` / `recordedAt` / `anchorId` …,**时间戳在 `event.ts`**(顶层无 `ts`/`createdAt`)
|
|
190
|
-
- **M8
|
|
207
|
+
- **M8 数据**:`~/.dsh/memory/hub/{episodes,facts,procedures}.json`(原子写;pre 树为 `memory/hub-pre/`)
|
|
208
|
+
- **降级台账**:`~/.dsh/memory/degrade-pre/latest.json` —— ★**这条没有发布名,两条线都叫 `degrade-pre`**,见下方自核
|
|
209
|
+
|
|
210
|
+
> **一条命令自核上面 4 条路径的「发布名」**(读源码 + 发布转换表,所以两条线都对得上):
|
|
211
|
+
>
|
|
212
|
+
> ```bash
|
|
213
|
+
> node -e "const f=require('fs');const s=f.readFileSync('lib/index.js','utf8'),r=f.readFileSync('tools/release.mjs','utf8');const P=[...r.matchAll(/\['([^']+)',\s*'([^']+)'\]/g)].map(m=>[m[1],m[2]]);const c=x=>P.reduce((a,[b,d])=>a.split(b).join(d),x);const d=s.match(/'dsh-auto-memory[^']*diagnose\.log'/)[0].slice(1,-1);console.log('诊断日志(发布名):',c(d));for(const k of ['hub-pre','evidence-pre','index-pre','semantic-pre','degrade-pre'])console.log(' ',k,'->',c(k))"
|
|
214
|
+
> ```
|
|
215
|
+
>
|
|
216
|
+
> 输出应为:`诊断日志(发布名): dsh-auto-memory-diagnose.log`,以及 `hub-pre -> hub`、`evidence-pre -> evidence`、
|
|
217
|
+
> `index-pre -> index`、`semantic-pre -> semantic-pre`、**`degrade-pre -> degrade-pre`**(最后一行就是「不能整体替换」的证据)。
|
|
191
218
|
|
|
192
219
|
### 5.3 「前端操作 → 后端确认」判定方法(通用三步)
|
|
193
220
|
|
|
194
|
-
1. **操作前**取基线快照:`GET /api/dsh-auto-memory
|
|
221
|
+
1. **操作前**取基线快照:`GET /api/dsh-auto-memory/config`(或 `state`)+ 记录相关文件条目数/修改时间
|
|
195
222
|
2. **在前端执行操作**(改开关、点按钮)
|
|
196
223
|
3. **操作后再取**:对比配置值是否变化、端点返回是否变化、磁盘文件 mtime/条数是否变化
|
|
197
224
|
|
|
@@ -200,27 +227,38 @@ dsh web --no-open --port 0
|
|
|
200
227
|
**示例(改 `memoryHubEnabled`)**:
|
|
201
228
|
|
|
202
229
|
```
|
|
203
|
-
改前:GET /config → memoryHubEnabled=false;hub
|
|
230
|
+
改前:GET /config → memoryHubEnabled=false;memory/hub\*.json 无新写入
|
|
204
231
|
前端:开启「记忆中枢」开关
|
|
205
|
-
改后:GET /config → memoryHubEnabled=true;对话若干轮后 hub
|
|
232
|
+
改后:GET /config → memoryHubEnabled=true;对话若干轮后 memory/hub\*.json mtime 更新、条目增加
|
|
206
233
|
```
|
|
207
234
|
|
|
208
235
|
---
|
|
209
236
|
|
|
210
|
-
## 6. 工具(模型可调用,
|
|
237
|
+
## 6. 工具(模型可调用,18 个)
|
|
211
238
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
|
216
|
-
|
|
217
|
-
| `
|
|
218
|
-
| `
|
|
219
|
-
| `
|
|
220
|
-
| `
|
|
221
|
-
| `
|
|
222
|
-
| `
|
|
223
|
-
| `
|
|
239
|
+
> 下表给的是**发布名**;pre 树各加 `_pre` 后缀(`memory_recall` ↔ `memory_recall_pre`)。
|
|
240
|
+
> 自核(数一遍源码里的注册调用):`node -e "const s=require('fs').readFileSync('lib/index.js','utf8');const n=[...s.matchAll(/defineTool\('([a-z_]+)'/g)].map(m=>m[1]);console.log(n.length,'个:',n.sort().join(' '))"`
|
|
241
|
+
|
|
242
|
+
| 工具(发布名) | pre 树名 | 作用 |
|
|
243
|
+
|---|---|---|
|
|
244
|
+
| `memory_recall` | `memory_recall_pre` | 记忆检索(默认返回 L0,`expand` 展开原文) |
|
|
245
|
+
| `memory_read` | `memory_read_pre` | 按锚点读取记忆原文 |
|
|
246
|
+
| `memory_note` | `memory_note_pre` | 写入记忆(含 `kind` 区分日志/笔记/白板 `plan`/账本 `handoff` 等) |
|
|
247
|
+
| `memory_log` | `memory_log_pre` | 记录日志条目 |
|
|
248
|
+
| `memory_reflect` | `memory_reflect_pre` | 生成反思 |
|
|
249
|
+
| `memory_consolidate` | `memory_consolidate_pre` | 记忆巩固 |
|
|
250
|
+
| `memory_maintain` | `memory_maintain_pre` | 存储维护(30 天蒸馏) |
|
|
251
|
+
| `memory_status` | `memory_status_pre` | 状态查询 |
|
|
252
|
+
| `memory_user` | `memory_user_pre` | 用户级记忆读写 |
|
|
253
|
+
| `memory_external` | `memory_external_pre` | 外部记忆源管理(list / import) |
|
|
254
|
+
| `memory_procedure` | `memory_procedure_pre` | 流程(技能)直写:write 进审批列表 / activate 写入+晋升+激活 |
|
|
255
|
+
| `memory_rules` | `memory_rules_pre` | 用户级硬约束的条目级增删改:list / add / update / remove(删改须带 `expect` 内容锚定) |
|
|
256
|
+
| `memory_expand` | `memory_expand_pre` | 白板结构化展开(需 `boardMode=graph`) |
|
|
257
|
+
| `memory_trace` | `memory_trace_pre` | 白板结构化回溯(需 `boardMode=graph`) |
|
|
258
|
+
| `calendar_add` | `calendar_add_pre` | 添加日历事项 |
|
|
259
|
+
| `calendar_list` | `calendar_list_pre` | 列出日历条目 |
|
|
260
|
+
| `calendar_done` | `calendar_done_pre` | 标记日历条目完成 |
|
|
261
|
+
| `calendar_remove` | `calendar_remove_pre` | 删除日历条目 |
|
|
224
262
|
|
|
225
263
|
---
|
|
226
264
|
|
|
@@ -228,6 +266,7 @@ dsh web --no-open --port 0
|
|
|
228
266
|
|
|
229
267
|
> **通用前置**:`dsh web --no-open` 已启动;插件已装载;已确认端口并手动打开 UI。
|
|
230
268
|
> **通用通过标准**:每一步都要有**证据**(截图 / 日志原文 / 数据快照)。禁止"看起来正常"这类无证据结论。
|
|
269
|
+
> ★**端点写法**:本节一律写发布名 `GET /api/dsh-auto-memory/xxx`;**在 pre 开发树里跑要换成 `/api/dsh-auto-memory-pre/xxx`**(别把手册里的写法当成 pre 树的写法)。工具名同理(`memory_recall` ↔ `memory_recall_pre`)。
|
|
231
270
|
|
|
232
271
|
### A. 启动与装载
|
|
233
272
|
|
|
@@ -235,14 +274,14 @@ dsh web --no-open --port 0
|
|
|
235
274
|
|---|---|---|---|
|
|
236
275
|
| A1 | — | `dsh web --no-open` | 终端打印监听地址;**没有自动弹出浏览器** |
|
|
237
276
|
| A2 | A1 | 查看诊断日志与终端输出 | 无 `SyntaxError` / `ReferenceError` / 模块加载失败 |
|
|
238
|
-
| A3 | A2 | `GET /api/dsh-auto-memory
|
|
277
|
+
| A3 | A2 | `GET /api/dsh-auto-memory/state` | 返回 200 且含状态字段 |
|
|
239
278
|
|
|
240
279
|
### B. 记忆检索主流程
|
|
241
280
|
|
|
242
281
|
| # | 步骤 | 通过标准 |
|
|
243
282
|
|---|---|---|
|
|
244
|
-
| B1 | 调用 `
|
|
245
|
-
| B2 | 用返回的 `id` 调 `expand="mem_xxx"`(或 `
|
|
283
|
+
| B1 | 调用 `memory_recall` 查一个常见主题 | 返回 L0 列表,含 `id`/`score`/`match_reason` |
|
|
284
|
+
| B2 | 用返回的 `id` 调 `expand="mem_xxx"`(或 `memory_read`) | 能取到对应原文,且**不串条** |
|
|
246
285
|
| B3 | **语义验证**:查一个词法不重合但语义相关的查询(如记忆里写"npm 发布报 ENEEDAUTH",查"发布凭证问题") | 能召回。若失败,切 `legacy` 融合再测对比;legacy 正常而 rrf 失败 = **P8 回归,停止** |
|
|
247
286
|
| B4 | **时间臂验证**:查含时间表达的查询(如"上周"),再查一条不含时间词的同类查询做对照 | 含时间词 → 对应时间段条目排序上升;不含时间词 → 排序与对照一致(**零行为变更**) |
|
|
248
287
|
| B5 | 异常:查一个明显不存在的主题 | 不报错,返回空或弱命中,不阻塞 |
|
|
@@ -258,16 +297,16 @@ dsh web --no-open --port 0
|
|
|
258
297
|
|
|
259
298
|
| # | 步骤 | 通过标准 |
|
|
260
299
|
|---|---|---|
|
|
261
|
-
| D1 | `GET /api/dsh-auto-memory
|
|
300
|
+
| D1 | `GET /api/dsh-auto-memory/memory-hub` | 200,含 `policyVersion`/`stats`/三栏数据 |
|
|
262
301
|
| D2 | 打开记忆窗格 → 记忆中枢页签 | 三栏有内容或正确空态 |
|
|
263
302
|
| D3 | 关闭 `memoryHubEnabled` → 重载 → 对话若干轮 | 无新落盘;端点反映未启用 |
|
|
264
|
-
| D4 | 重新开启 → 对话若干轮 | `hub
|
|
303
|
+
| D4 | 重新开启 → 对话若干轮 | `memory/hub\*.json` 有新条目 |
|
|
265
304
|
|
|
266
305
|
### E. 证据链
|
|
267
306
|
|
|
268
307
|
| # | 步骤 | 通过标准 |
|
|
269
308
|
|---|---|---|
|
|
270
|
-
| E1 | 对话若干轮后查看当日 `evidence
|
|
309
|
+
| E1 | 对话若干轮后查看当日 `memory/evidence\events\*.jsonl` | 新增 `seen` 事件 |
|
|
271
310
|
| E2 | 触发一次用户纠正(对话里说"不对,你记错了"之类) | 新增 `kind:"correction"` 事件(且归因到最近被 cite/read 的记忆) |
|
|
272
311
|
| E3 | 异常:events 目录缺失/损坏 | 检索不报错(fail-soft),重要性取中性 |
|
|
273
312
|
|
|
@@ -284,7 +323,7 @@ dsh web --no-open --port 0
|
|
|
284
323
|
|
|
285
324
|
| # | 步骤 | 通过标准 |
|
|
286
325
|
|---|---|---|
|
|
287
|
-
| G1 | 对话若干轮 | 工作区日志 `*.md` 有新条目;`hub
|
|
326
|
+
| G1 | 对话若干轮 | 工作区日志 `*.md` 有新条目;`memory/hub\*.json` 更新 |
|
|
288
327
|
| G2 | **重启 dsh web**(带 `--no-open`) | 数据 restore 不丢 |
|
|
289
328
|
| G3 | 异常:磁盘不可写 | 不崩溃,日志有记录 |
|
|
290
329
|
|
|
@@ -321,7 +360,7 @@ node tests/smoke/smoke-test-continue-chain-pre.mjs # 58
|
|
|
321
360
|
| 启动后 UI 空白/无插件入口 | 检查插件是否装载到 web profile;看诊断日志加载错误 |
|
|
322
361
|
| 改了设置没效果 | 查 `/config` 是否回写;确认是否需要重载 |
|
|
323
362
|
| recall 返回空 | 确认记忆目录有内容;确认 `semanticEngineMode` 与引擎可用;看日志降级记录 |
|
|
324
|
-
| 证据不落盘 | 检查 `evidence
|
|
363
|
+
| 证据不落盘 | 检查 `memory/evidence\events` 目录权限;确认相关开关 |
|
|
325
364
|
| 接续不触发 | 确认水位确实到 0.75;`autoContinueEnabled` 为 true |
|
|
326
365
|
| 检索很慢 | 当前词法检索为全量扫描(无倒排索引,属已知待办) |
|
|
327
366
|
|
|
@@ -345,10 +384,11 @@ node tests/smoke/smoke-test-continue-chain-pre.mjs # 58
|
|
|
345
384
|
| 工程根 | `D:\dsh-auto-memory` |
|
|
346
385
|
| 宿主侧入口 | `lib/index.js` |
|
|
347
386
|
| 浏览器侧入口 | `lib/client.js` |
|
|
348
|
-
| 端点前缀 | `/api/dsh-auto-memory-pre
|
|
387
|
+
| 端点前缀 | `/api/dsh-auto-memory/`(53 条;pre 树 `/api/dsh-auto-memory-pre/`) |
|
|
349
388
|
| 工具 | 10 个,`memory_*_pre` |
|
|
350
389
|
| 记忆根 | `C:\Users\JH Z\.dsh\memory` |
|
|
351
|
-
| 证据事件 | `...\evidence
|
|
352
|
-
| 诊断日志 | `...\dsh-auto-memory-
|
|
353
|
-
| M8 数据 | `...\hub
|
|
390
|
+
| 证据事件 | `...\memory\evidence\events\YYYY-MM-DD.jsonl`(时间戳在 `event.ts`) |
|
|
391
|
+
| 诊断日志 | `...\dsh-auto-memory-diagnose.log`(**与 `memory\` 同级**,不在其下) |
|
|
392
|
+
| M8 数据 | `...\memory\hub\{episodes,facts,procedures}.json` |
|
|
393
|
+
| 降级台账 | `...\memory\degrade-pre\latest.json`(★两条线同名,无发布名) |
|
|
354
394
|
| 水位/接续阈值 | 0.75 / 0.75(**须低于官方压缩 0.80**) |
|
package/docs/USER-GUIDE.en.md
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
- The version number in the panel title and in Settings → "Check for updates" both show the **installed** version.
|
|
51
51
|
- A **floating pin** (line-drawn quick-access icon) also lives in the sidebar for one-click access to memory actions from anywhere.
|
|
52
52
|
- Since DSH 0.1.2-rc.1 the Web UI sits behind a token gate (new token every restart; the `?token=…` URL in the startup log is your address). This plugin's HTTP endpoints are loopback-only and unaffected by the gate.
|
|
53
|
-
- All data stays on your machine: `~/.dsh/memory/` (memory files), `~/.dsh/dsh-auto-memory
|
|
53
|
+
- All data stays on your machine: `~/.dsh/memory/` (memory files), `~/.dsh/dsh-auto-memory.json` (config). **Note**: inside this repo's pre dev tree the same file carries a `-pre` suffix; the build you install from npm uses the suffix-less name. Same applies to every path below.
|
|
54
54
|
|
|
55
55
|
## 2. First launch
|
|
56
56
|
|
|
@@ -194,7 +194,7 @@ The static injection face: the `<memory_system>` block composed into every turn.
|
|
|
194
194
|
| Item | Notes |
|
|
195
195
|
|---|---|
|
|
196
196
|
| Version / check for updates | Compares with the npm registry; registry installs get one-click updates. Local dev links show the update command `cd ~/.dsh/profiles/web && pnpm up @a9i5k4/dsh-auto-memory@latest` |
|
|
197
|
-
| Diagnostics log | `~/.dsh/dsh-auto-memory-
|
|
197
|
+
| Diagnostics log | `~/.dsh/dsh-auto-memory-diagnose.log` (subagent circuit-breaking, consolidation skips, GC, recall degradation — all in here; **it sits next to `memory/`, not inside it**) |
|
|
198
198
|
| Community | QQ group feedback — faster than GitHub issues (link in README) |
|
|
199
199
|
|
|
200
200
|
---
|
|
@@ -250,7 +250,7 @@ Every decision lands in the **Recall review** tab for A/P/S/H/E grading. Every i
|
|
|
250
250
|
|
|
251
251
|
## 7. Evidence chain & memory importance
|
|
252
252
|
|
|
253
|
-
Every memory keeps an auditable usage dossier — six event types, filed daily under `~/.dsh/memory/evidence
|
|
253
|
+
Every memory keeps an auditable usage dossier — six event types, filed daily under `~/.dsh/memory/evidence/events/YYYY-MM-DD.jsonl` (this repo's pre dev tree uses `evidence-pre/`):
|
|
254
254
|
|
|
255
255
|
| Event | Meaning |
|
|
256
256
|
|---|---|
|
|
@@ -366,7 +366,7 @@ All three write tools (log/note/user) pass the **write gate**: GBK mojibake, stu
|
|
|
366
366
|
| pnpm blocks a same-day update | pnpm v11 `minimumReleaseAge` blocks <24h packages: set `minimumReleaseAge: 0` or pin the version |
|
|
367
367
|
| Web UI asks for a token | DSH 0.1.2-rc.1 security gate; the token is in the `dsh web` startup-log URL and rotates each restart |
|
|
368
368
|
| Sidebar Memory button vanished | Likely a conflict with another sidebar-injecting plugin; disable the suspect in plugin management |
|
|
369
|
-
| Feedback / grab logs | `~/.dsh/dsh-auto-memory-
|
|
369
|
+
| Feedback / grab logs | `~/.dsh/dsh-auto-memory-diagnose.log` (run `ls -l ~/.dsh/*diagnose*.log` first to confirm it is non-empty); QQ group in README |
|
|
370
370
|
|
|
371
371
|
---
|
|
372
372
|
|
|
@@ -374,16 +374,16 @@ All three write tools (log/note/user) pass the **write gate**: GBK mojibake, stu
|
|
|
374
374
|
|
|
375
375
|
| Content | Path |
|
|
376
376
|
|---|---|
|
|
377
|
-
| Plugin config | `~/.dsh/dsh-auto-memory
|
|
377
|
+
| Plugin config | `~/.dsh/dsh-auto-memory.json` (this repo's pre dev tree uses `dsh-auto-memory-pre.json`) |
|
|
378
378
|
| User-level memory | `~/.dsh/memory/MEMORY.md` |
|
|
379
379
|
| Workspace memory | `~/.dsh/memory/workspaces/<workspace>/` (MEMORY.md, daily logs, handoff/, reflections/, summaries/) |
|
|
380
380
|
| Whiteboard & ledgers | `~/.dsh/memory/workspaces/<workspace>/handoff/` (PLAN.md + handoff-*.md) |
|
|
381
|
-
| Memory Hub layers | `~/.dsh/memory/hub
|
|
382
|
-
| Evidence events | `~/.dsh/memory/evidence
|
|
383
|
-
| Semantic-engine data | `~/.dsh/memory/semantic
|
|
381
|
+
| Memory Hub layers | `~/.dsh/memory/hub/` (episodes / facts / procedures .json, atomic writes; this repo's pre dev tree uses `hub-pre/`) |
|
|
382
|
+
| Evidence events | `~/.dsh/memory/evidence/events/YYYY-MM-DD.jsonl` (six types, per day; pre dev tree uses `evidence-pre/`) |
|
|
383
|
+
| Semantic-engine data | `~/.dsh/memory/semantic/` (embedding-config.json, decision shadow logs, vector cache; pre dev tree uses `semantic-pre/`) |
|
|
384
384
|
| Models / venv | `~/.dsh/models/js-semantic/` (C2 model) · `~/.dsh/python-engine/` (C3 venv + model; plugin upgrades never touch these) |
|
|
385
385
|
| Subagent trace backups | `~/.dsh/subagent-gc-backup/` (move back into `~/.dsh/sessions/` to roll back) |
|
|
386
|
-
| Diagnostics log | `~/.dsh/dsh-auto-memory-
|
|
386
|
+
| Diagnostics log | `~/.dsh/dsh-auto-memory-diagnose.log` (next to `memory/`, **not** inside it) |
|
|
387
387
|
|
|
388
388
|
---
|
|
389
389
|
|
package/docs/USER-GUIDE.zh-CN.md
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
- 面板标题里的版本号与 设置 →「检查更新」显示的都是**当前安装的版本**。
|
|
51
51
|
- 侧栏还有一颗**悬浮钉**(线描快捷入口),可从任何页面快速唤出记忆操作。
|
|
52
52
|
- DSH 0.1.2-rc.1 起 Web UI 有 token 认证闸门(每次重启换新 token,启动日志里 `?token=…` 即访问地址);本插件的 HTTP 端点仅本机回环可访问,不受闸门影响。
|
|
53
|
-
- 数据全在本机:`~/.dsh/memory/`(记忆文件)、`~/.dsh/dsh-auto-memory
|
|
53
|
+
- 数据全在本机:`~/.dsh/memory/`(记忆文件)、`~/.dsh/dsh-auto-memory.json`(配置)。**注意**:本仓库的 pre 开发树里同一个文件名带 `-pre` 后缀;你从 npm 装到的版本是**不带**后缀的那个,下面所有路径同理。
|
|
54
54
|
|
|
55
55
|
## 2. 第一次启动
|
|
56
56
|
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
| 项 | 说明 |
|
|
195
195
|
|---|---|
|
|
196
196
|
| 插件版本 / 检查更新 | 与 npm registry 比对;registry 安装可一键更新。本地开发链接会显示更新命令 `cd ~/.dsh/profiles/web && pnpm up @a9i5k4/dsh-auto-memory@latest` |
|
|
197
|
-
| 诊断日志 | `~/.dsh/dsh-auto-memory-
|
|
197
|
+
| 诊断日志 | `~/.dsh/dsh-auto-memory-diagnose.log`(子代理熔断、巩固跳过、回收、唤起降级等事件全在内;**与 `memory/` 同级,不在 `memory/` 里面**) |
|
|
198
198
|
| 交流群 | QQ 群反馈,响应比 issue 快(链接见 README) |
|
|
199
199
|
|
|
200
200
|
---
|
|
@@ -250,7 +250,7 @@
|
|
|
250
250
|
|
|
251
251
|
## 7. 证据链与记忆重要性
|
|
252
252
|
|
|
253
|
-
每条记忆都有可审计的使用档案,六类事件按日落盘 `~/.dsh/memory/evidence
|
|
253
|
+
每条记忆都有可审计的使用档案,六类事件按日落盘 `~/.dsh/memory/evidence/events/YYYY-MM-DD.jsonl`(本仓库 pre 开发树为 `evidence-pre/`):
|
|
254
254
|
|
|
255
255
|
| 事件 | 含义 |
|
|
256
256
|
|---|---|
|
|
@@ -366,7 +366,7 @@ AI 在对话中可直接调用(共 14 个,你不需要记):
|
|
|
366
366
|
| pnpm 安装当天新版被拦 | pnpm v11 `minimumReleaseAge` 拦 24h 内新版:`minimumReleaseAge: 0` 或 pin 版本 |
|
|
367
367
|
| Web UI 打开要 token | DSH 0.1.2-rc.1 起的安全闸门,token 在 `dsh web` 启动日志的 URL 里,重启即换 |
|
|
368
368
|
| 侧栏插件按钮消失 | 可能与其他注入侧栏的插件冲突,到插件管理停用嫌疑插件 |
|
|
369
|
-
| 想反馈 / 拿日志 | `~/.dsh/dsh-auto-memory-
|
|
369
|
+
| 想反馈 / 拿日志 | `~/.dsh/dsh-auto-memory-diagnose.log`(打包前先 `ls -l ~/.dsh/*diagnose*.log` 确认非空);QQ 群见 README |
|
|
370
370
|
|
|
371
371
|
---
|
|
372
372
|
|
|
@@ -374,16 +374,16 @@ AI 在对话中可直接调用(共 14 个,你不需要记):
|
|
|
374
374
|
|
|
375
375
|
| 内容 | 路径 |
|
|
376
376
|
|---|---|
|
|
377
|
-
| 插件配置 | `~/.dsh/dsh-auto-memory
|
|
377
|
+
| 插件配置 | `~/.dsh/dsh-auto-memory.json`(本仓库 pre 开发树为 `dsh-auto-memory-pre.json`) |
|
|
378
378
|
| 用户级记忆 | `~/.dsh/memory/MEMORY.md` |
|
|
379
379
|
| 工作区记忆 | `~/.dsh/memory/workspaces/<工作区>/`(MEMORY.md、每日日志、handoff/、reflections/、summaries/) |
|
|
380
380
|
| 白板与账本 | `~/.dsh/memory/workspaces/<工作区>/handoff/`(PLAN.md + handoff-*.md) |
|
|
381
|
-
| 记忆中枢三层 | `~/.dsh/memory/hub
|
|
382
|
-
| 证据事件 | `~/.dsh/memory/evidence
|
|
383
|
-
| 语义引擎数据 | `~/.dsh/memory/semantic
|
|
381
|
+
| 记忆中枢三层 | `~/.dsh/memory/hub/`(episodes / facts / procedures .json,原子写;本仓库 pre 开发树为 `hub-pre/`) |
|
|
382
|
+
| 证据事件 | `~/.dsh/memory/evidence/events/YYYY-MM-DD.jsonl`(六类,按日;本仓库 pre 开发树为 `evidence-pre/`) |
|
|
383
|
+
| 语义引擎数据 | `~/.dsh/memory/semantic/`(发射配置 embedding-config.json、决策影子日志、向量缓存;本仓库 pre 开发树为 `semantic-pre/`) |
|
|
384
384
|
| 语义模型/venv | `~/.dsh/models/js-semantic/`(C2 模型)· `~/.dsh/python-engine/`(C3 venv+模型,升级插件不受影响) |
|
|
385
385
|
| 子代理痕迹备份 | `~/.dsh/subagent-gc-backup/`(移回 `~/.dsh/sessions/` 即回滚) |
|
|
386
|
-
| 诊断日志 | `~/.dsh/dsh-auto-memory-
|
|
386
|
+
| 诊断日志 | `~/.dsh/dsh-auto-memory-diagnose.log`(与 `memory/` 同级,不在 `memory/` 里面) |
|
|
387
387
|
|
|
388
388
|
---
|
|
389
389
|
|
|
Binary file
|
|
Binary file
|
package/lib/activation-host.js
CHANGED
|
@@ -21,6 +21,7 @@ import { createAccessEvidencePre } from './context-bridge.js'
|
|
|
21
21
|
import path from 'node:path'
|
|
22
22
|
import { resolveDshHomeForEnginePre } from './dsh-home.js'
|
|
23
23
|
import { buildSourceCatalog, loadCorpusSnapshot, CorpusRegistry, canonicalize } from './m4-corpus.js'
|
|
24
|
+
import { resolveProcedureInjectEnabledPre } from './procedure-switch.js'
|
|
24
25
|
|
|
25
26
|
/** §11 capability 快照版本。 */
|
|
26
27
|
export const CAPABILITY_SNAPSHOT_V1 = 'capability_v1'
|
|
@@ -327,7 +328,11 @@ export function createActivationHost(opts = {}) {
|
|
|
327
328
|
const hub = engine._memoryHub
|
|
328
329
|
if (!hub || !hub.stores || !hub.stores.procedures) return null
|
|
329
330
|
if (engine.config.memoryHubEnabled !== true) return null
|
|
330
|
-
|
|
331
|
+
// B-2:旧键 procedurePromotionEnabled 是**语义错配的兼容别名**(键名写的是「技能固化与晋升」,
|
|
332
|
+
// 实际控制的是「主动唤起」这条臂是否开启),统一交给接口契约模块 lib/procedure-switch.js
|
|
333
|
+
// 解析:新键 procedureInjectEnabled 优先,缺省回退旧键,两键都缺省按开启处理;
|
|
334
|
+
// 显式关闭过总闸的仍然在此短路。此处只替换开关解析口径,不新增任何前置条件。
|
|
335
|
+
if (!resolveProcedureInjectEnabledPre(engine.config)) return null
|
|
331
336
|
const actives = hub.stores.procedures.activeProcedures()
|
|
332
337
|
if (!actives.length) return null
|
|
333
338
|
const candIds = new Set()
|