@a9i5k4/dsh-auto-memory 3.0.0 → 3.1.0
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 +30 -13
- package/README.zh-CN.md +30 -13
- package/docs/FRONTEND-CO-CREATION.md +191 -0
- package/docs/GM53-HOMEPAGE-PROMPT.md +323 -0
- package/docs/HANDBOOK.md +88 -52
- package/docs/HOMEPAGE-CONTENT-FOR-GM53.md +299 -0
- package/docs/PROMO-PROMPT-3.0.md +100 -0
- package/docs/USER-GUIDE.en.md +11 -11
- package/docs/USER-GUIDE.zh-CN.md +11 -11
- package/docs/WHITEPAPER.md +207 -0
- package/docs/screenshots/promo/promo-0-banner-v3.png +0 -0
- 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 +69 -10
- package/lib/board-mode.js +1 -1
- package/lib/client.js +1697 -285
- package/lib/config-io.js +156 -0
- package/lib/context-bridge.js +3 -0
- package/lib/context-host.js +23 -10
- package/lib/degrade.js +385 -0
- package/lib/dsh-home.js +143 -0
- package/lib/episodic-store.js +142 -18
- package/lib/evidence-store.js +8 -1
- package/lib/fact-store.js +484 -43
- package/lib/hub-io.js +217 -0
- package/lib/index-sync.js +13 -1
- package/lib/index.js +1730 -202
- package/lib/intent-clean-safe.js +258 -40
- package/lib/l0-extract.js +231 -16
- package/lib/m4-corpus.js +8 -2
- package/lib/m7-index-sync-host.js +8 -1
- package/lib/memory-envelope.js +6 -1
- package/lib/memory-hub.js +164 -17
- package/lib/memory-index.js +4 -2
- package/lib/note-status-apply.js +118 -0
- package/lib/note-status.js +204 -0
- package/lib/procedure-store.js +333 -31
- package/lib/procedure-switch.js +38 -0
- package/lib/python-sidecar-client.js +314 -11
- package/lib/recall-fusion.js +83 -12
- package/lib/rules-edit.js +159 -0
- package/lib/semantic-decide.js +41 -8
- package/lib/semantic-js.js +51 -6
- package/lib/shadow-host.js +3 -5
- package/lib/skill-export-host.js +153 -0
- package/lib/skill-export.js +239 -0
- package/lib/storage-manage.js +6 -0
- package/lib/temporal-parse.js +191 -159
- package/lib/tier0-catalog.js +45 -3
- package/lib/wb-contract.js +198 -2
- package/lib/wb-sidecar.js +54 -3
- 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/ART-DIRECTION-WIREFRAME.md +0 -181
- package/docs/internal/AUDIT-WB-GRAPH-FULL-20260916.md +0 -314
- 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/FEEDBACK-TO-DSHAPI-RELAY.md +0 -13
- 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.md +0 -168
- package/docs/internal/KICKOFF-P0.md +0 -254
- package/docs/internal/MASTER-PLAN-3.0.md +0 -411
- 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/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/REVIEW-WB-GRAPH-SELF.md +0 -81
- package/docs/internal/ROADMAP-20260917-WEEK.md +0 -305
- 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 -175
- 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/THREE-LAYER-CONTRACT.md +0 -210
- 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/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
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
# GM5.3 主页构建 Prompt(可直接粘贴)
|
|
2
|
+
|
|
3
|
+
> **用法**:把本文件**全文**粘给 GM5.3。它自带全部上下文,不需要再读别的文件。
|
|
4
|
+
> **产出**:一个可直接打开的静态站点(`index.html` + `assets/site.css` + `assets/site.js`)。
|
|
5
|
+
> **不要问澄清问题**——所有决策已在本 prompt 内给定。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 任务
|
|
10
|
+
|
|
11
|
+
构建 **dsh-auto-memory** 的项目主页(GitHub Pages 用)。这是一个 **DeepSeek Harness(DSH)** 的记忆插件,当前版本 **3.0.0**。
|
|
12
|
+
|
|
13
|
+
**交付形态**:纯静态站点,零构建、零依赖、零 CDN。产出三个文件:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
index.html 单页,11 个 section
|
|
17
|
+
assets/site.css 样式
|
|
18
|
+
assets/site.js 双语切换 + 滚动揭示 + 复制按钮
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**目标**:让一个已经在用 DSH 的人在 60 秒内相信三件事,然后去装:
|
|
22
|
+
|
|
23
|
+
1. 这个插件**自己会记事**,不用你提醒它「记得记一下」
|
|
24
|
+
2. 它记的东西**你能查、能改、能删**,不是黑盒
|
|
25
|
+
3. 装它**没有代价**:零运行时依赖、无账号、无云端、BSD-3、跨平台
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# 一、硬约束(违反即返工)
|
|
30
|
+
|
|
31
|
+
## 1.1 技术约束
|
|
32
|
+
|
|
33
|
+
- **零依赖**:不引 React / Vue / Tailwind / 任何 CDN / 任何 npm 包。**手写 HTML + CSS + 原生 JS**。
|
|
34
|
+
- **单页**:11 个 `<section>`,锚点导航跳转,不做多页路由。
|
|
35
|
+
- **双语**:所有面向用户的文案必须**中文原文 + `data-en` 属性**两套。
|
|
36
|
+
- ⚠️ **铁律**:`data-en` 元素内部**不得有任何子标签**。语言切换用 `textContent` 整体替换,子元素会被永久抹平。要在 `data-en` 元素里加粗,请把强调移到元素**之外**的兄弟节点。
|
|
37
|
+
- **响应式**:1440 / 1024 / 610 / 390 四个视口都不能横向溢出。
|
|
38
|
+
- **无障碍**:`<section>` 有 `aria-label`;SVG 有 `role="img"` + `aria-label`;键盘可达。
|
|
39
|
+
|
|
40
|
+
## 1.2 视觉约束
|
|
41
|
+
|
|
42
|
+
**色板**(DeepSeek 官方暗色体系,直接照用,不要自创):
|
|
43
|
+
|
|
44
|
+
```css
|
|
45
|
+
:root {
|
|
46
|
+
--ds-bg: #0a0a0a; /* 页面底色 */
|
|
47
|
+
--ds-brand: #4d6bfe; /* 品牌蓝 */
|
|
48
|
+
--ds-brand-dark:#6799fe; /* 亮蓝,用于 hover / 强调 */
|
|
49
|
+
--ds-brand-deep:#3a65c2; /* 深蓝 */
|
|
50
|
+
--ds-text: #ffffff;
|
|
51
|
+
--ds-text-2: rgba(255,255,255,.72);
|
|
52
|
+
--ds-text-3: rgba(255,255,255,.54);
|
|
53
|
+
--ds-surface-1: rgba(255,255,255,.04);
|
|
54
|
+
--ds-surface-3: rgba(255,255,255,.06);
|
|
55
|
+
--ds-border: rgba(255,255,255,.10);
|
|
56
|
+
--ds-border-2: rgba(255,255,255,.18);
|
|
57
|
+
--ds-radius-panel: 16px;
|
|
58
|
+
--ds-radius-card: 24px;
|
|
59
|
+
--ds-radius-pill: 100px;
|
|
60
|
+
--ds-blur: 12px;
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
- 深色底 + 品牌蓝点缀,**玻璃质感**用 `backdrop-filter: blur(var(--ds-blur))`
|
|
65
|
+
- 中文正文用系统字体栈,代码/标签用等宽
|
|
66
|
+
- **每节必须有视觉元素**(SVG 示意图或图形化列表),不能只有纯文字段落
|
|
67
|
+
|
|
68
|
+
## 1.3 内容约束
|
|
69
|
+
|
|
70
|
+
- **每节必须有一个「怎么核」证据行** —— 一句**可当场验证**的事实(比如「打开面板的日志页签,每条自动归档都带时间戳」)。这是这个插件的调性(唤起可审计),不能省。
|
|
71
|
+
- **不许出现**:厂商腔(赋能 / 极致体验 / 无缝 / 颠覆 / 引领)、空洞形容词、编造的数据。
|
|
72
|
+
- **统一用「她」指代插件**(不要用「本插件」「系统」)。这是作者定的人格。
|
|
73
|
+
- **诚实**:不知道的不写,没做的写「施工中」。
|
|
74
|
+
|
|
75
|
+
## 1.4 法务约束(★ 四段必须分列,不得合并)
|
|
76
|
+
|
|
77
|
+
页脚必须有四段,**不可合并成一句「本项目采用 XX 许可」**:
|
|
78
|
+
|
|
79
|
+
| 段 | 内容 |
|
|
80
|
+
|---|---|
|
|
81
|
+
| **许可** | dsh-auto-memory 以 **BSD-3-Clause** 发布 |
|
|
82
|
+
| **上游署名** | 三维场景结构参考 RhineLabUI / rhinelab-blog-theme(LBEILC / JesseLee-CN),**MIT**,Copyright (c) 2026 LBEILC。本项目**不包含**其三维模型、Blender 工程、原片素材或游戏品牌 |
|
|
83
|
+
| **角色** | 角色设定「溟月」原作者 **上善无形**,**CC BY-NC-SA 4.0**——非商业衍生并署名、以同协议共享。该许可与上述代码许可**相互独立且更严格** |
|
|
84
|
+
| **免责** | DeepSeek Harness 社区插件,与 **DeepSeek 官方无关**,与上述参考仓库作者亦无隶属关系 |
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
# 二、逐页内容(11 节)
|
|
89
|
+
|
|
90
|
+
> 每节结构:**标题/一句话** → **人话正文** → **示意** → **「怎么核」证据行**
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## §01 · 首屏 HERO
|
|
95
|
+
|
|
96
|
+
**主张**:无问自忆,且件件可查。
|
|
97
|
+
|
|
98
|
+
**正文(中文原文)**:
|
|
99
|
+
> 你不用交代她「记得记一下」。她自己留意、自己归档,在该用上的时候自己想起来——每次想起都带一条你能读、能评、能改的证据。上下文写满时,她也不把自己压缩成一段摘要:合上一本写满批注的笔记,翻开新的一页。
|
|
100
|
+
|
|
101
|
+
**必备元素**:
|
|
102
|
+
- 安装命令 `pnpm add @a9i5k4/dsh-auto-memory@latest` + **复制按钮**
|
|
103
|
+
- 五个事实芯片:`v3.0.0` · `BSD-3-Clause` · `零运行时依赖` · `Windows / macOS / Linux` · `中英双语`
|
|
104
|
+
- 一张四步闭环 SVG:**你说话 → 她留意 → 归档 → 想起来(带证据链)**,中心标注「零指令,不需要」
|
|
105
|
+
|
|
106
|
+
**怎么核**:打开面板的「概览」页签,安装向导第一步会把每个开关讲一遍。
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## §02 · 她做六件事(全站导航骨架)
|
|
111
|
+
|
|
112
|
+
**一句话**:看完这六条,你就了解这个插件了。下面都是细节。
|
|
113
|
+
|
|
114
|
+
**六张卡片**(可点跳转到 §03–§08):
|
|
115
|
+
|
|
116
|
+
| # | 标题 | 一句话 |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| ① | 她自己记 | 不用你说「记得记一下」。她留意、归档,并在该用上时自己想起来。 |
|
|
119
|
+
| ② | 每条都查得到 | 每次想起都带证据链:能读、能评、能改、能删。全在你自己盘上。 |
|
|
120
|
+
| ③ | 三层分工 | 硬规矩、项目笔记、每日流水。常驻注入 + 按需检索,各管各的。 |
|
|
121
|
+
| ④ | 她替你记日子 | 对话里的截止日期与承诺,她记进日历,到点提醒你。 |
|
|
122
|
+
| ⑤ | 能搬,也不串味 | 别的 AI 工具的记忆能搬进来;多个项目并行互不打扰。 |
|
|
123
|
+
| ⑥ | 脏东西进不来 | 乱码、卡顿、JSON 注入在写入时就被拦;凭据不进提示词;每个功能单独可关。 |
|
|
124
|
+
|
|
125
|
+
**怎么核**:每张卡片点进去都能看到该节自己的「怎么核」那一行。
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## §03 · ① 她自己记
|
|
130
|
+
|
|
131
|
+
**正文**:
|
|
132
|
+
> 你不用记得去告诉她「要记住」。每一轮结束,一个安静的子代理会读一遍刚发生的事,把值得留的按主题归档——不是往一堵墙上继续堆。等这些内容重新变得相关时,宿主会在上下文的固定边界把它们注入进去。模型不需要「想起来去查」,你的前缀缓存也不会被打散。
|
|
133
|
+
|
|
134
|
+
**要点四条**:
|
|
135
|
+
- 你没有任何「记得要做」的动作——根本没有一个会忘的保存键
|
|
136
|
+
- 按主题成组,一周后翻出来仍像笔记,不是一堆流水
|
|
137
|
+
- 固定边界注入,前缀缓存友好,不会每轮全量重算
|
|
138
|
+
- 窗口写满时她写一份交接账本,而不是把自己压缩掉
|
|
139
|
+
|
|
140
|
+
**示意**:上下文窗口右段高亮「她想起的」+ 上方标「固定边界」;下方三步链:读这一轮 → 按主题成组 → 落盘归档
|
|
141
|
+
|
|
142
|
+
**怎么核**:打开面板的**日志页签**,每条自动归档都带时间戳,并标明来自哪一轮。
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## §04 · ② 每条都查得到
|
|
147
|
+
|
|
148
|
+
**正文**:
|
|
149
|
+
> 查不到源头的记忆就是传闻。每次唤起都带完整证据链:哪几条被激活、依据是什么、分数多少。你可以在「唤起回顾」里逐条评分——评分会回流到晋升判定,所以差了会越来越安静,好用的会越来越牢。没有黑盒,也没有任何东西离开你的磁盘。
|
|
150
|
+
|
|
151
|
+
**要点四条**:
|
|
152
|
+
- 你能在一条错记忆悄悄影响后面几个月之前就抓出它
|
|
153
|
+
- 评分就是反馈回路——技能就是这样挣到晋升的
|
|
154
|
+
- 凭据不进提示词:写入前卫生检查会剥掉
|
|
155
|
+
- 一切都在你本地磁盘;没有账号,没有云端
|
|
156
|
+
|
|
157
|
+
**示意**:一次唤起 → 展开证据链(来源条目 / 命中依据 / 评分)→ 四个动作:读、评、改、**删**(删高亮)
|
|
158
|
+
|
|
159
|
+
**怎么核**:唤起回顾页签 → 任选一次唤起 → 能看到它的来源与评分;改或删立即生效。
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## §05 · ③ 三层分工
|
|
164
|
+
|
|
165
|
+
**正文**:
|
|
166
|
+
> 她记的东西分三层放,放在哪一层,决定它怎么进入模型。硬规矩每一轮都进——没有例外。项目笔记住在常驻目录里,随手可用但不吃窗口。每日日志平时不占地方,真需要的时候才被拉进来。
|
|
167
|
+
|
|
168
|
+
**三层 × 三种到达方式**:
|
|
169
|
+
|
|
170
|
+
| 层 | 内容 | 到达方式 |
|
|
171
|
+
|---|---|---|
|
|
172
|
+
| 用户级硬约束 | 「绝不要 X」「永远用中文答」——你自己定的 | **每轮无条件注入**(不做相关性判断) |
|
|
173
|
+
| 项目级笔记 | 决策、架构、约定——本来要反复解释的东西 | **常驻目录 + 命中即用**(≤400 token) |
|
|
174
|
+
| 每日日志 | 今天发生了什么,带时间戳 | **仅按需检索**(不进窗口,直到被需要) |
|
|
175
|
+
|
|
176
|
+
**要点**:你把东西放进哪一层,本身就是调度决策。你不需要手工调注入策略。
|
|
177
|
+
|
|
178
|
+
**示意**:三层堆叠 + 三条箭头指向模型,箭头粗细表示注入频率
|
|
179
|
+
|
|
180
|
+
**怎么核**:设置页显示每一层当前占多少 token;规则层有可视化编辑器;笔记层显示常驻目录体积。
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## §06 · ④ 她替你记日子
|
|
185
|
+
|
|
186
|
+
**正文**:
|
|
187
|
+
> 截止日期、约好的时间、顺口一说就忘的承诺,都是在聊别的事的时候被顺手记下的——「周五交报告」「下周给你发过去」。它们会带着解析好的日期进日历,并在**日期到之前**回来找你,不是之后。
|
|
188
|
+
|
|
189
|
+
**要点四条**:
|
|
190
|
+
- 明确日期:「10 月 4 日前」「30 号」
|
|
191
|
+
- 相对日期:「下周」「三天后」——按今天换算
|
|
192
|
+
- 时间与象限:截止时刻和重要度一并记下
|
|
193
|
+
- 你对别人许的承诺,不只是你自己的任务
|
|
194
|
+
|
|
195
|
+
**示意**:对话里一句话 → 解析成 `2026-11-01 23:59 · 重要不紧急` → 标注「日期到之前回来找你」
|
|
196
|
+
|
|
197
|
+
**怎么核**:问一句「我最近有什么安排」,她会从日历文件里读回来——那个文件你自己也能打开看。
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## §07 · ⑤ 能搬,也不串味
|
|
202
|
+
|
|
203
|
+
**正文**:
|
|
204
|
+
> 如果你已经在别的 AI 工具里干过活,那段历史不用重来。她会扫描 **WorkBuddy、CodeBuddy、Claude Code、Codex、ZCode、Kimi Code、TRAE** 留下的记忆,按来源分别导入——进哪些你挑,事后也能把一个来源整个撤掉。另一半是反过来的:并行的工作区和会话各自保留自己的召回决策与索引缓存,你跟她讲过的工作上的事,不会串到另一个小项目里去。
|
|
205
|
+
|
|
206
|
+
**要点四条**:
|
|
207
|
+
- 扫描是**只读**的,在你点确认之前不会写任何东西
|
|
208
|
+
- 按来源分列,进哪些你挑
|
|
209
|
+
- 一个来源可以整个撤掉
|
|
210
|
+
- 全局层(硬规矩)是**故意共享**的——那是你的长期约束;其余全部按工作区隔离
|
|
211
|
+
|
|
212
|
+
**示意**:左四个外部工具 → 中间「扫描 + 逐源导入」→ 右侧项目 A / 项目 B 各自隔离,中间画 ╳
|
|
213
|
+
|
|
214
|
+
**怎么核**:设置 → 外部记忆,会先列出检测到的每个来源及其路径与体积,**在你点确认之前不会写任何东西**。
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## §08 · ⑥ 脏东西进不来
|
|
219
|
+
|
|
220
|
+
**正文**:
|
|
221
|
+
> 一个会写垃圾的记忆插件还不如没有。每次写入都先过闸门:乱码、卡顿输出、JSON 形状的注入都在那里被拦下;任何像凭据的东西在进入提示词之前就被剥掉。在那之上,每个功能是独立开关——你可以让它全自动跑,也可以只关掉某一项、其余照旧。
|
|
222
|
+
|
|
223
|
+
**闸门拦三类**:乱码 / 卡顿与重复输出 / JSON 注入 → **丢弃 + 留痕**(不静默)
|
|
224
|
+
|
|
225
|
+
**要点四条**:
|
|
226
|
+
- 关掉提醒不影响召回;关掉召回不影响规矩(**开关互不牵连**)
|
|
227
|
+
- 无人值守模式整圈自动跑、不弹任何确认,挂着机也能用
|
|
228
|
+
- 任何模型开箱可用:词法档 0 GB 起步,内置 JS 语义档约 130 MB
|
|
229
|
+
- Python int8 进阶档(约 563 MB)是向导式可选安装,**永远不是前置条件**
|
|
230
|
+
|
|
231
|
+
**怎么核**:设置里每个功能各占一行、各有独立开关,点一下标签立刻翻面。
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## §09 · 亮点页入口
|
|
236
|
+
|
|
237
|
+
**一句话**:把它当成一间屋子,而不是一页纸。
|
|
238
|
+
|
|
239
|
+
**正文**:
|
|
240
|
+
> 三维档案终端把同样的内容变成一个能走进去的阵列:五列、四十份档案,方向键移动,拖拽环绕。选中的卡片会向镜头抬起,解密线随之合拢。它读的是和本页同一份数据——是同一个插件的另一种看法,不是另一个插件。
|
|
241
|
+
|
|
242
|
+
**必须诚实标注**:需要 WebGL;**当前施工中**,不支持时自动退回本页这种可读版。
|
|
243
|
+
|
|
244
|
+
**怎么核**:入口指向一个说明页,写清了还差哪三件事。
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## §10 · 安装
|
|
249
|
+
|
|
250
|
+
**STEP 01 安装**(两条命令都给):
|
|
251
|
+
```
|
|
252
|
+
pnpm add @a9i5k4/dsh-auto-memory@latest
|
|
253
|
+
npm i @a9i5k4/dsh-auto-memory@latest
|
|
254
|
+
```
|
|
255
|
+
提示:pnpm v11 的 `minimumReleaseAge` 默认 24 小时,可能拦下刚发布的版本——设为 0 或写死版本号。
|
|
256
|
+
|
|
257
|
+
**STEP 02 重启 DSH** —— 侧栏出现「记忆」入口。无账号、无云端、不上传任何东西。
|
|
258
|
+
|
|
259
|
+
**STEP 03 30 秒验证** —— 说一件带日期的事(「周五交报告」),再问「我最近有什么安排」。日期答得出来,整条链路就是通的。
|
|
260
|
+
|
|
261
|
+
**手册四链**:用户手册(中)/ User guide (EN) / Changelog / Issues
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## §11 · 已知边界(五条)
|
|
266
|
+
|
|
267
|
+
> **这一页不是自黑,是信任凭证。** 保留、不要删、不要减少。
|
|
268
|
+
|
|
269
|
+
1. 交接白板与水位感知是实验特性。**白板与账本 3.0 起默认开启**;自动接续默认关闭。
|
|
270
|
+
2. 语义档可选。内置 JS 语义档(约 130 MB)是默认值、无需配置;Python int8 进阶档(约 563 MB)走向导安装。
|
|
271
|
+
3. 面板 API 仅监听本机回环地址。外部访问返回 401 属预期行为,**不是故障**。
|
|
272
|
+
4. 三维档案终端需要 WebGL。不支持时会退回可读版——信息不丢,只是没有三维呈现。
|
|
273
|
+
5. 首屏角色的 24 fps 序列帧尚未交付;目前是内联 SVG 线稿,挂载位已按交付契约预埋。
|
|
274
|
+
|
|
275
|
+
**怎么核**:白皮书里每个数字都标注了代码出处。
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
# 三、功能底表(供取用,主页只展示上面 6 组)
|
|
280
|
+
|
|
281
|
+
**规模数字(必须准确)**:`17 个模型工具` · `49 条 HTTP 路由` · `98 个配置键`(其中 60 可写)· `12 个面板页签` · `6 处插槽` · `0 运行时依赖`
|
|
282
|
+
|
|
283
|
+
**12 个页签**:概览 / 日志 / 唤起回顾 / 记忆中枢 / 存储管理 / 笔记 / 白板 / 反思 / 接续 / 日历 / 检索 / 工作区
|
|
284
|
+
|
|
285
|
+
**39 条能力分组**(主页只在 §02 展示 6 组):
|
|
286
|
+
|
|
287
|
+
- **A 记忆沉淀(5)**:全自动记忆沉淀 · 三层本地记忆 · 做梦式定时固化(每日 09:30)· 30 天蒸馏(每日 10:00)· 每日反思
|
|
288
|
+
- **B 检索与召回(5)**:跨会话记忆检索 · 两段式省 token 检索(L0 摘要 → 按 id 展开)· 分层语义检索(词法 + 语义 RRF 融合)· 历史会话全文检索 · 外部 AI 工具记忆继承(7 种工具)
|
|
289
|
+
- **C 注入与上下文(5)**:自动记忆注入(预算可调)· Tier-0 常驻目录(400 token 预算 / 占注入 25%)· 用户级硬性约束规则层 · 精简注入节奏(每 N 轮完整快照)· 结论生命周期(superseded / retracted / restore)
|
|
290
|
+
- **D 白板与接续(6)**:项目白板 PLAN.md · 四段式交接账本 · 白板看板(5 泳道)· 白板溯源工具 · 自动接续 · 上下文水位提示
|
|
291
|
+
- **E 技能库(4)**:模型直写技能 · 晋升门槛与审批(observed→candidate→validated→active)· 自动导出 SKILL.md · 审批界面人话化
|
|
292
|
+
- **F 面板与界面(10)**:12 页签记忆面板 · 用户级硬性约束可视编辑 · 主动联想记忆 · 唤起回顾打分闭环 · 工作区地图 · 用户级日历 · 首启欢迎向导 · 安装向导与环境检测 · 双语界面 · 面板字号可调
|
|
293
|
+
- **G 工程保障(4)**:写入闸门 · 凭据不进提示词 · 一切皆开关 · 工作区隔离
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
# 四、交付要求
|
|
298
|
+
|
|
299
|
+
1. **三个文件直接可跑**:双击 `index.html` 就能看,不需要服务器、不需要构建。
|
|
300
|
+
2. **`assets/site.js` 必须实现**:
|
|
301
|
+
- 语言切换(读 `data-en`,`textContent` 整体替换;当前语言存 `localStorage`)
|
|
302
|
+
- 滚动揭示(IntersectionObserver,`threshold: 0.15`,加 `.in` 类)
|
|
303
|
+
- 复制按钮(`navigator.clipboard`,成功后按钮文字变「已复制」)
|
|
304
|
+
- ⚠️ 尊重 `prefers-reduced-motion`
|
|
305
|
+
3. **占位页**:§09 的入口指向 `lab/index.html`。也请生成这个页面,内容是**真实说明**「三维档案终端施工中,还差哪三件事」,**不要**留死链。
|
|
306
|
+
4. **不要把角色定妆稿放首屏** —— 那是给画师看的交付契约,不是给访客看的。
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
# 五、自查清单(交付前逐条过)
|
|
311
|
+
|
|
312
|
+
- [ ] 四个视口(1440/1024/610/390)都无横向滚动
|
|
313
|
+
- [ ] 所有 `data-en` 元素内部**没有**子标签
|
|
314
|
+
- [ ] 所有 `href="#xxx"` 的锚点在页面里都存在
|
|
315
|
+
- [ ] §11 的五条边界**一条不少**
|
|
316
|
+
- [ ] 法务四段**分列**,未合并
|
|
317
|
+
- [ ] 每一节都有「怎么核」证据行
|
|
318
|
+
- [ ] 无 CDN、无外链 JS/CSS、无 npm 依赖
|
|
319
|
+
- [ ] 切到英文后页面文字完整可读,无丢字
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
**开始构建。产出后请报告:三个文件的行数、四个视口的自查结果、以及任何你做了但本 prompt 没要求的设计决策。**
|
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 工具)。本插件注册 **17 个**;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/`),共 49 条 |
|
|
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
|
+
│ · 端点路由(49 个) │
|
|
82
|
+
│ · 工具(17 个,供模型调用) │
|
|
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` 注册,共 **49** 条,前缀 `/api/dsh-auto-memory/`)
|
|
166
173
|
|
|
167
174
|
| 端点 | 用途 | 关键返回字段 |
|
|
168
175
|
|---|---|---|
|
|
@@ -171,7 +178,7 @@ 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` | 存储管理 | 文件/统计 |
|
|
@@ -179,19 +186,36 @@ dsh web --no-open --port 0
|
|
|
179
186
|
| `update` / `update-check` | 更新 | 版本信息 |
|
|
180
187
|
| `calendar`、`file`、`browse-dir`、`external*`、`summarize`、`shadow-recent`、`subagent-gc`、`greet` | 其余辅助端点 | — |
|
|
181
188
|
|
|
182
|
-
>
|
|
189
|
+
> 端点名与条数以代码为准(**一条命令自核**,`49` 与 `/api/dsh-auto-memory/` 都由它推出,不是写死的):
|
|
190
|
+
>
|
|
191
|
+
> ```bash
|
|
192
|
+
> 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('/')+'/')"
|
|
193
|
+
> ```
|
|
194
|
+
>
|
|
195
|
+
> 在工程根执行,输出应为 `端点条数: 49` / `发布名前缀: /api/dsh-auto-memory/`。命令读的是**源码 + 发布转换表**,所以两条线的拼写都能对上。
|
|
183
196
|
|
|
184
197
|
### 5.2 日志
|
|
185
198
|
|
|
186
|
-
-
|
|
199
|
+
- **诊断日志**:`~/.dsh/dsh-auto-memory-diagnose.log`(Windows:`%USERPROFILE%\.dsh\dsh-auto-memory-diagnose.log`)
|
|
200
|
+
- **★它不在 `memory/` 下面**:代码是 `path.join(dshHome(), 'dsh-auto-memory-pre-diagnose.log')`(pre 树),无 `'memory'` 段
|
|
187
201
|
- 关键线索:插件加载异常、`diag(...)` 输出的降级与状态(如 `hub success evidence: +N`、`p9a correction attribution: ...`)
|
|
188
|
-
-
|
|
202
|
+
- **证据事件**:`~/.dsh/memory/evidence/events/YYYY-MM-DD.jsonl`(pre 树为 `~/.dsh/memory/evidence-pre/events/`)
|
|
189
203
|
- 单行结构(实测):顶层 `kind` / `memoryId` / `recordedAt` / `anchorId` …,**时间戳在 `event.ts`**(顶层无 `ts`/`createdAt`)
|
|
190
|
-
- **M8
|
|
204
|
+
- **M8 数据**:`~/.dsh/memory/hub/{episodes,facts,procedures}.json`(原子写;pre 树为 `memory/hub-pre/`)
|
|
205
|
+
- **降级台账**:`~/.dsh/memory/degrade-pre/latest.json` —— ★**这条没有发布名,两条线都叫 `degrade-pre`**,见下方自核
|
|
206
|
+
|
|
207
|
+
> **一条命令自核上面 4 条路径的「发布名」**(读源码 + 发布转换表,所以两条线都对得上):
|
|
208
|
+
>
|
|
209
|
+
> ```bash
|
|
210
|
+
> 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))"
|
|
211
|
+
> ```
|
|
212
|
+
>
|
|
213
|
+
> 输出应为:`诊断日志(发布名): dsh-auto-memory-diagnose.log`,以及 `hub-pre -> hub`、`evidence-pre -> evidence`、
|
|
214
|
+
> `index-pre -> index`、`semantic-pre -> semantic-pre`、**`degrade-pre -> degrade-pre`**(最后一行就是「不能整体替换」的证据)。
|
|
191
215
|
|
|
192
216
|
### 5.3 「前端操作 → 后端确认」判定方法(通用三步)
|
|
193
217
|
|
|
194
|
-
1. **操作前**取基线快照:`GET /api/dsh-auto-memory
|
|
218
|
+
1. **操作前**取基线快照:`GET /api/dsh-auto-memory/config`(或 `state`)+ 记录相关文件条目数/修改时间
|
|
195
219
|
2. **在前端执行操作**(改开关、点按钮)
|
|
196
220
|
3. **操作后再取**:对比配置值是否变化、端点返回是否变化、磁盘文件 mtime/条数是否变化
|
|
197
221
|
|
|
@@ -200,27 +224,37 @@ dsh web --no-open --port 0
|
|
|
200
224
|
**示例(改 `memoryHubEnabled`)**:
|
|
201
225
|
|
|
202
226
|
```
|
|
203
|
-
改前:GET /config → memoryHubEnabled=false;hub
|
|
227
|
+
改前:GET /config → memoryHubEnabled=false;memory/hub\*.json 无新写入
|
|
204
228
|
前端:开启「记忆中枢」开关
|
|
205
|
-
改后:GET /config → memoryHubEnabled=true;对话若干轮后 hub
|
|
229
|
+
改后:GET /config → memoryHubEnabled=true;对话若干轮后 memory/hub\*.json mtime 更新、条目增加
|
|
206
230
|
```
|
|
207
231
|
|
|
208
232
|
---
|
|
209
233
|
|
|
210
|
-
## 6. 工具(模型可调用,
|
|
234
|
+
## 6. 工具(模型可调用,17 个)
|
|
211
235
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
|
216
|
-
|
|
217
|
-
| `
|
|
218
|
-
| `
|
|
219
|
-
| `
|
|
220
|
-
| `
|
|
221
|
-
| `
|
|
222
|
-
| `
|
|
223
|
-
| `
|
|
236
|
+
> 下表给的是**发布名**;pre 树各加 `_pre` 后缀(`memory_recall` ↔ `memory_recall_pre`)。
|
|
237
|
+
> 自核(数一遍源码里的注册调用):`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(' '))"`
|
|
238
|
+
|
|
239
|
+
| 工具(发布名) | pre 树名 | 作用 |
|
|
240
|
+
|---|---|---|
|
|
241
|
+
| `memory_recall` | `memory_recall_pre` | 记忆检索(默认返回 L0,`expand` 展开原文) |
|
|
242
|
+
| `memory_read` | `memory_read_pre` | 按锚点读取记忆原文 |
|
|
243
|
+
| `memory_note` | `memory_note_pre` | 写入记忆(含 `kind` 区分日志/笔记/白板 `plan`/账本 `handoff` 等) |
|
|
244
|
+
| `memory_log` | `memory_log_pre` | 记录日志条目 |
|
|
245
|
+
| `memory_reflect` | `memory_reflect_pre` | 生成反思 |
|
|
246
|
+
| `memory_consolidate` | `memory_consolidate_pre` | 记忆巩固 |
|
|
247
|
+
| `memory_maintain` | `memory_maintain_pre` | 存储维护(30 天蒸馏) |
|
|
248
|
+
| `memory_status` | `memory_status_pre` | 状态查询 |
|
|
249
|
+
| `memory_user` | `memory_user_pre` | 用户级记忆读写 |
|
|
250
|
+
| `memory_external` | `memory_external_pre` | 外部记忆源管理(list / import) |
|
|
251
|
+
| `memory_procedure` | `memory_procedure_pre` | 流程(技能)直写:write 进审批列表 / activate 写入+晋升+激活 |
|
|
252
|
+
| `memory_expand` | `memory_expand_pre` | 白板结构化展开(需 `boardMode=graph`) |
|
|
253
|
+
| `memory_trace` | `memory_trace_pre` | 白板结构化回溯(需 `boardMode=graph`) |
|
|
254
|
+
| `calendar_add` | `calendar_add_pre` | 添加日历事项 |
|
|
255
|
+
| `calendar_list` | `calendar_list_pre` | 列出日历条目 |
|
|
256
|
+
| `calendar_done` | `calendar_done_pre` | 标记日历条目完成 |
|
|
257
|
+
| `calendar_remove` | `calendar_remove_pre` | 删除日历条目 |
|
|
224
258
|
|
|
225
259
|
---
|
|
226
260
|
|
|
@@ -228,6 +262,7 @@ dsh web --no-open --port 0
|
|
|
228
262
|
|
|
229
263
|
> **通用前置**:`dsh web --no-open` 已启动;插件已装载;已确认端口并手动打开 UI。
|
|
230
264
|
> **通用通过标准**:每一步都要有**证据**(截图 / 日志原文 / 数据快照)。禁止"看起来正常"这类无证据结论。
|
|
265
|
+
> ★**端点写法**:本节一律写发布名 `GET /api/dsh-auto-memory/xxx`;**在 pre 开发树里跑要换成 `/api/dsh-auto-memory-pre/xxx`**(别把手册里的写法当成 pre 树的写法)。工具名同理(`memory_recall` ↔ `memory_recall_pre`)。
|
|
231
266
|
|
|
232
267
|
### A. 启动与装载
|
|
233
268
|
|
|
@@ -235,14 +270,14 @@ dsh web --no-open --port 0
|
|
|
235
270
|
|---|---|---|---|
|
|
236
271
|
| A1 | — | `dsh web --no-open` | 终端打印监听地址;**没有自动弹出浏览器** |
|
|
237
272
|
| A2 | A1 | 查看诊断日志与终端输出 | 无 `SyntaxError` / `ReferenceError` / 模块加载失败 |
|
|
238
|
-
| A3 | A2 | `GET /api/dsh-auto-memory
|
|
273
|
+
| A3 | A2 | `GET /api/dsh-auto-memory/state` | 返回 200 且含状态字段 |
|
|
239
274
|
|
|
240
275
|
### B. 记忆检索主流程
|
|
241
276
|
|
|
242
277
|
| # | 步骤 | 通过标准 |
|
|
243
278
|
|---|---|---|
|
|
244
|
-
| B1 | 调用 `
|
|
245
|
-
| B2 | 用返回的 `id` 调 `expand="mem_xxx"`(或 `
|
|
279
|
+
| B1 | 调用 `memory_recall` 查一个常见主题 | 返回 L0 列表,含 `id`/`score`/`match_reason` |
|
|
280
|
+
| B2 | 用返回的 `id` 调 `expand="mem_xxx"`(或 `memory_read`) | 能取到对应原文,且**不串条** |
|
|
246
281
|
| B3 | **语义验证**:查一个词法不重合但语义相关的查询(如记忆里写"npm 发布报 ENEEDAUTH",查"发布凭证问题") | 能召回。若失败,切 `legacy` 融合再测对比;legacy 正常而 rrf 失败 = **P8 回归,停止** |
|
|
247
282
|
| B4 | **时间臂验证**:查含时间表达的查询(如"上周"),再查一条不含时间词的同类查询做对照 | 含时间词 → 对应时间段条目排序上升;不含时间词 → 排序与对照一致(**零行为变更**) |
|
|
248
283
|
| B5 | 异常:查一个明显不存在的主题 | 不报错,返回空或弱命中,不阻塞 |
|
|
@@ -258,16 +293,16 @@ dsh web --no-open --port 0
|
|
|
258
293
|
|
|
259
294
|
| # | 步骤 | 通过标准 |
|
|
260
295
|
|---|---|---|
|
|
261
|
-
| D1 | `GET /api/dsh-auto-memory
|
|
296
|
+
| D1 | `GET /api/dsh-auto-memory/memory-hub` | 200,含 `policyVersion`/`stats`/三栏数据 |
|
|
262
297
|
| D2 | 打开记忆窗格 → 记忆中枢页签 | 三栏有内容或正确空态 |
|
|
263
298
|
| D3 | 关闭 `memoryHubEnabled` → 重载 → 对话若干轮 | 无新落盘;端点反映未启用 |
|
|
264
|
-
| D4 | 重新开启 → 对话若干轮 | `hub
|
|
299
|
+
| D4 | 重新开启 → 对话若干轮 | `memory/hub\*.json` 有新条目 |
|
|
265
300
|
|
|
266
301
|
### E. 证据链
|
|
267
302
|
|
|
268
303
|
| # | 步骤 | 通过标准 |
|
|
269
304
|
|---|---|---|
|
|
270
|
-
| E1 | 对话若干轮后查看当日 `evidence
|
|
305
|
+
| E1 | 对话若干轮后查看当日 `memory/evidence\events\*.jsonl` | 新增 `seen` 事件 |
|
|
271
306
|
| E2 | 触发一次用户纠正(对话里说"不对,你记错了"之类) | 新增 `kind:"correction"` 事件(且归因到最近被 cite/read 的记忆) |
|
|
272
307
|
| E3 | 异常:events 目录缺失/损坏 | 检索不报错(fail-soft),重要性取中性 |
|
|
273
308
|
|
|
@@ -284,7 +319,7 @@ dsh web --no-open --port 0
|
|
|
284
319
|
|
|
285
320
|
| # | 步骤 | 通过标准 |
|
|
286
321
|
|---|---|---|
|
|
287
|
-
| G1 | 对话若干轮 | 工作区日志 `*.md` 有新条目;`hub
|
|
322
|
+
| G1 | 对话若干轮 | 工作区日志 `*.md` 有新条目;`memory/hub\*.json` 更新 |
|
|
288
323
|
| G2 | **重启 dsh web**(带 `--no-open`) | 数据 restore 不丢 |
|
|
289
324
|
| G3 | 异常:磁盘不可写 | 不崩溃,日志有记录 |
|
|
290
325
|
|
|
@@ -321,7 +356,7 @@ node tests/smoke/smoke-test-continue-chain-pre.mjs # 58
|
|
|
321
356
|
| 启动后 UI 空白/无插件入口 | 检查插件是否装载到 web profile;看诊断日志加载错误 |
|
|
322
357
|
| 改了设置没效果 | 查 `/config` 是否回写;确认是否需要重载 |
|
|
323
358
|
| recall 返回空 | 确认记忆目录有内容;确认 `semanticEngineMode` 与引擎可用;看日志降级记录 |
|
|
324
|
-
| 证据不落盘 | 检查 `evidence
|
|
359
|
+
| 证据不落盘 | 检查 `memory/evidence\events` 目录权限;确认相关开关 |
|
|
325
360
|
| 接续不触发 | 确认水位确实到 0.75;`autoContinueEnabled` 为 true |
|
|
326
361
|
| 检索很慢 | 当前词法检索为全量扫描(无倒排索引,属已知待办) |
|
|
327
362
|
|
|
@@ -345,10 +380,11 @@ node tests/smoke/smoke-test-continue-chain-pre.mjs # 58
|
|
|
345
380
|
| 工程根 | `D:\dsh-auto-memory` |
|
|
346
381
|
| 宿主侧入口 | `lib/index.js` |
|
|
347
382
|
| 浏览器侧入口 | `lib/client.js` |
|
|
348
|
-
| 端点前缀 | `/api/dsh-auto-memory-pre
|
|
383
|
+
| 端点前缀 | `/api/dsh-auto-memory/`(49 条;pre 树 `/api/dsh-auto-memory-pre/`) |
|
|
349
384
|
| 工具 | 10 个,`memory_*_pre` |
|
|
350
385
|
| 记忆根 | `C:\Users\JH Z\.dsh\memory` |
|
|
351
|
-
| 证据事件 | `...\evidence
|
|
352
|
-
| 诊断日志 | `...\dsh-auto-memory-
|
|
353
|
-
| M8 数据 | `...\hub
|
|
386
|
+
| 证据事件 | `...\memory\evidence\events\YYYY-MM-DD.jsonl`(时间戳在 `event.ts`) |
|
|
387
|
+
| 诊断日志 | `...\dsh-auto-memory-diagnose.log`(**与 `memory\` 同级**,不在其下) |
|
|
388
|
+
| M8 数据 | `...\memory\hub\{episodes,facts,procedures}.json` |
|
|
389
|
+
| 降级台账 | `...\memory\degrade-pre\latest.json`(★两条线同名,无发布名) |
|
|
354
390
|
| 水位/接续阈值 | 0.75 / 0.75(**须低于官方压缩 0.80**) |
|