@a9i5k4/dsh-auto-memory 2.2.6 → 2.3.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 +20 -10
- package/README.zh-CN.md +22 -10
- package/docs/CONTINUITY-FLOW.md +222 -0
- package/docs/HANDBOOK.md +354 -0
- package/docs/INTEGRATION-ANALYSIS.md +348 -0
- package/docs/M-CM7-HANDOFF-LAYERED-RETRIEVAL.md +311 -0
- package/docs/M8-MEMORY-HUB.md +1 -1
- package/docs/PROMPT-PACK-LAYERED-RECALL.md +474 -0
- package/docs/PROMPT-SET-STRICT.md +389 -0
- package/docs/RELEASE-GO-NOGO.md +82 -0
- package/docs/ROADMAP.md +162 -0
- package/docs/STATUS-BOARD.md +147 -0
- package/docs/USER-GUIDE.en.md +382 -0
- package/docs/USER-GUIDE.zh-CN.md +382 -289
- package/docs/prompts/EXEC-ORDER.md +77 -0
- package/docs/prompts/FEEDING-SCRIPT.md +174 -0
- package/docs/prompts/FEEDING-SEQUENCE.md +61 -0
- package/docs/prompts/FIX-AGENT-M8-2b.md +119 -0
- package/docs/prompts/FIX-AGENT-P11.md +97 -0
- package/docs/prompts/FIX-AGENT-P12-FULL-REGRESSION.md +135 -0
- package/docs/prompts/FIX-AGENT-P12.md +113 -0
- package/docs/prompts/FIX-AGENT-P13-PYTHON-RANK.md +100 -0
- package/docs/prompts/FIX-AGENT-P8.md +120 -0
- package/docs/prompts/FIX-AGENT-P9.md +110 -0
- package/docs/prompts/FIX-AGENT-P9a.md +94 -0
- package/docs/prompts/FIX-AGENT-P9d.md +114 -0
- package/docs/prompts/FIX-AGENT-TEMPORAL-ARM.md +148 -0
- package/docs/prompts/LIVE-VERIFY-ZCODE.md +105 -0
- package/docs/prompts/M8-1-fact-metadata.md +45 -0
- package/docs/prompts/M8-2-ADJUDICATION.md +98 -0
- package/docs/prompts/M8-2-importance-wiring.md +42 -0
- package/docs/prompts/M8-2b-evidence-pipeline.md +52 -0
- package/docs/prompts/M8-3-enable-verify.md +49 -0
- package/docs/prompts/M8-R-REPORT.md +156 -0
- package/docs/prompts/M8-R-research.md +67 -0
- package/docs/prompts/P1-l0-index.md +30 -0
- package/docs/prompts/P10-importance-calibration.md +45 -0
- package/docs/prompts/P11-silent-catch-observability.md +43 -0
- package/docs/prompts/P2-semantic-recall.md +30 -0
- package/docs/prompts/P3-fusion.md +28 -0
- package/docs/prompts/P4-l0-response.md +28 -0
- package/docs/prompts/P5-handoff-anchor.md +28 -0
- package/docs/prompts/P6-ledger-weight.md +27 -0
- package/docs/prompts/P7-write-fix.md +26 -0
- package/docs/prompts/P8-rrf-wiring.md +47 -0
- package/docs/prompts/P9-REVIEW-DECISION.md +95 -0
- package/docs/prompts/P9-evidence-write-coverage.md +113 -0
- package/docs/prompts/README.md +105 -0
- package/docs/prompts/ZCODE-DROPIN.md +229 -0
- package/docs/prompts/_COMMON.md +88 -0
- package/lib/client.js +36 -2
- package/lib/context-host.js +77 -2
- package/lib/evidence-agg.js +81 -0
- package/lib/fact-store.js +32 -0
- package/lib/handoff-anchor.js +114 -0
- package/lib/index.js +402 -43
- package/lib/l0-extract.js +149 -0
- package/lib/l0-index.js +239 -0
- package/lib/m7-wire.js +4 -3
- package/lib/memory-importance.js +70 -0
- package/lib/python-setup.js +16 -4
- package/lib/recall-fusion.js +99 -0
- package/lib/shadow-retrieval.js +2 -2
- package/lib/storage-manage.js +17 -0
- package/lib/subagent-gc.js +8 -1
- package/lib/temporal-parse.js +159 -0
- package/package.json +1 -1
- package/python/worker_semantic_v1.py +28 -1
package/docs/HANDBOOK.md
ADDED
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
# dsh-auto-memory 接手与全量验证手册(自包含)
|
|
2
|
+
|
|
3
|
+
> **适用对象**:完全不了解本项目与插件背景的新 Agent。只凭本文件即可接手操作并完成全量验证。
|
|
4
|
+
> **版本基准**:插件 v2.2.6(BSD-3-Clause)/DSH v0.1.2-rc.1/Windows。
|
|
5
|
+
> **最后核对**:2026-09-10(以代码与 DSH CLI help 原文为准)。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 0. 阅读约定与术语表(首次出现均已解释)
|
|
10
|
+
|
|
11
|
+
| 术语 | 全称 / 含义 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| **DSH** | **DeepSeek Harness**,宿主应用。以 CLI `dsh` 启动,提供浏览器 UI(`dsh web`)与插件装载能力。本机安装在 `C:\Users\JH Z\AppData\Roaming\npm\node_modules\@deepseek-ai\dsh` |
|
|
14
|
+
| **Cordis** | DSH 使用的插件框架(`@deepseek-ai/cordis ^4.0.1`)。本插件是 Cordis 插件,通过 `cordis.patch.yml` 注入宿主 |
|
|
15
|
+
| **本插件** | `dsh-auto-memory`,包名同名,工程根目录 `D:\dsh-auto-memory` |
|
|
16
|
+
| **pre 线 / `-pre.js`** | 源码约定:新增模块一律命名为 `lib/xxx-pre.js`(纯函数、零 IO、IO 注入)。发布时由流水线剥去 `-pre` 生成同名 `lib/xxx.js`。**改源码改 `-pre.js`;`lib/xxx.js` 是产物,禁止手改** |
|
|
17
|
+
| **宿主侧 / 后端** | `lib/index.js`,运行在 Node 进程里,负责存储、检索、端点、工具、调度 |
|
|
18
|
+
| **浏览器侧 / 前端** | `lib/client.js`,注入到 DSH 浏览器 UI,负责面板与设置页 |
|
|
19
|
+
| **工具(tool)** | 供模型调用的函数(类似 MCP 工具)。本插件注册 10 个,统一以 `_pre` 结尾 |
|
|
20
|
+
| **水位(water level)** | 当前会话上下文占用比例(0–1)。用于决定何时触发接续 |
|
|
21
|
+
| **接续 / handoff** | 上下文将满时,把进度交接给一个新会话继续工作的机制 |
|
|
22
|
+
| **主动联想** | 不等用户询问,由系统主动判断"该想起什么"并注入上下文——本插件的核心差异化能力 |
|
|
23
|
+
| **L0 / L1 / L2** | 记忆的分层表示:L0 摘要(约 93 字符)/L1 概览/L2 原文 |
|
|
24
|
+
| **RRF** | Reciprocal Rank Fusion,倒数排名融合。本项目用 rank-space 形式 `1/(k + rank/divisor)`,`k=60` |
|
|
25
|
+
| **C1 / C2 / C3** | 三档检索引擎:C1 词法(BM25,零依赖)/C2 内置语义(e5-small 量化,约 129MB,JavaScript)/C3 Python 语义(bge-m3,深度用户可选) |
|
|
26
|
+
| **BM25** | 经典词法相关性算法 |
|
|
27
|
+
| **M8 / 记忆中枢** | 三层记忆存储(fact 事实/episodic 经历/procedure 技能)与编排器 memory-hub 的合称 |
|
|
28
|
+
| **evidence(证据)** | 记忆被使用情况的记录,六类:`seen`(曝光)/`read`(读到原文)/`cite`(回复引用)/`reuse`(跨会话复用)/`success`(任务成功)/`correction`(用户纠正) |
|
|
29
|
+
| **endpoint / 端点** | 后端 HTTP 接口,路径前缀统一为 `/api/dsh-auto-memory-pre/` |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 1. 项目速览(30 秒)
|
|
34
|
+
|
|
35
|
+
本插件给 DSH 加一套**长期记忆系统**:记忆以 Markdown 文件存放在用户目录下,插件负责写入、检索、在合适时机主动提醒模型,并在上下文将满时把进度交给新会话。
|
|
36
|
+
|
|
37
|
+
- 工程根:`D:\dsh-auto-memory`
|
|
38
|
+
- 源码:`lib/index.js`(宿主侧,约 8000 行)、`lib/client.js`(浏览器侧)、`lib/*-pre.js`(各纯核心模块,58 个文件)
|
|
39
|
+
- 发布产物:`lib/`(含剥名后的 `.js`)、`python/`、`docs/`、`cordis.patch.yml`
|
|
40
|
+
- 运行时依赖:**零**。`dependencies` 为空;peer 为 cordis;optional 为 transformers
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 2. 启动与停止(**强制 `--no-open`**)
|
|
45
|
+
|
|
46
|
+
> ⚠️ **硬性要求:任何启动/打开 DSH 的命令都必须带 `--no-open`,禁止自动弹出浏览器窗口打断桌面工作。**
|
|
47
|
+
> 该参数是 DSH 官方选项,help 原文:`--no-open do not open the Web UI in the default browser`。
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# 推荐:启动 Web UI 但不自动打开浏览器
|
|
51
|
+
dsh web --no-open
|
|
52
|
+
|
|
53
|
+
# 等价写法(profile 形式)
|
|
54
|
+
dsh --profile web --no-open
|
|
55
|
+
|
|
56
|
+
# 需要固定端口时(0 = 让系统分配空闲端口)
|
|
57
|
+
dsh web --no-open --port 0
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
- 启动后,**在终端输出里读取实际监听地址与端口**(不要猜)。若需浏览器验证,由你**手动**打开对应地址。
|
|
61
|
+
- 停止:结束该终端中的 dsh 进程(Ctrl+C,或结束对应的 node 进程)。
|
|
62
|
+
- 插件生效前提:本插件已安装到 web profile(通过 `dsh plugin add` 或 junction 方式指向 `D:\dsh-auto-memory`)。
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 3. 架构与职责边界
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
┌─ 浏览器侧(前端)lib/client.js ────────────────────────────┐
|
|
70
|
+
│ · 记忆窗格(侧栏面板) │
|
|
71
|
+
│ · 记忆中枢页签(技能/事实/经历 三栏) │
|
|
72
|
+
│ · 设置分组(开关与数值配置) │
|
|
73
|
+
│ · 悬浮钉(快捷入口) │
|
|
74
|
+
│ · 语义引擎环境检测面板 │
|
|
75
|
+
│ 仅负责「展示 + 收集用户操作」,通过 DSH 远程 API 调用后端 │
|
|
76
|
+
└───────────────┬───────────────────────────────────────────┘
|
|
77
|
+
│ HTTP /api/dsh-auto-memory-pre/*
|
|
78
|
+
┌───────────────▼───────────────────────────────────────────┐
|
|
79
|
+
│ 宿主侧(后端)lib/index.js + lib/*-pre.js │
|
|
80
|
+
│ · 端点路由(39 个) │
|
|
81
|
+
│ · 工具(10 个,供模型调用) │
|
|
82
|
+
│ · 存储:记忆文件、M8 三层 JSON、evidence 事件 JSONL │
|
|
83
|
+
│ · 检索:C1 词法 / C2 语义 / C3 Python 语义 │
|
|
84
|
+
│ · 决策:主动联想门控、接续调度、水位监测 │
|
|
85
|
+
└───────────────┬───────────────────────────────────────────┘
|
|
86
|
+
│ 读写
|
|
87
|
+
┌───────────────▼───────────────────────────────────────────┐
|
|
88
|
+
│ 磁盘 C:\Users\JH Z\.dsh\memory\ │
|
|
89
|
+
│ · workspaces\<工作区>\*.md 记忆日志/笔记/白板/账本 │
|
|
90
|
+
│ · hub-pre\episodes|facts|procedures.json M8 三层 │
|
|
91
|
+
│ · evidence-pre\events\YYYY-MM-DD.jsonl 证据事件(按日) │
|
|
92
|
+
│ · dsh-auto-memory-pre-diagnose.log 诊断日志 │
|
|
93
|
+
└────────────────────────────────────────────────────────────┘
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**数据流向(一次典型记忆检索)**:
|
|
97
|
+
|
|
98
|
+
1. 模型调用工具 `memory_recall_pre`(或前端点选)→ 宿主侧 `recall()`
|
|
99
|
+
2. `recall()` 构建 L0 语料(从日志/反思/笔记抽取摘要)
|
|
100
|
+
3. 词法臂(C1)打 L0、语义臂(C2)打 L0;若查询含时间表达,追加时间臂
|
|
101
|
+
4. 三臂经 `rankFusionRRFPre`(rank-space,k=60)融合排序
|
|
102
|
+
5. 默认只返回 L0 列表(含 `id`/`score`/`match_reason`);需要原文时用 `expand="mem_xxx"` 按锚点 ID 展开
|
|
103
|
+
6. 结果返回模型 / 前端渲染
|
|
104
|
+
|
|
105
|
+
**职责边界要点**:
|
|
106
|
+
|
|
107
|
+
- 前端**不持有**任何记忆数据,所有读写都经后端端点
|
|
108
|
+
- 后端**不直接操作 DOM**;UI 相关只提供数据与状态
|
|
109
|
+
- 模型侧(工具调用)与前端侧(UI)是**两条独立入口**,最终都落到同一批宿主侧函数
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 4. 前端可操作入口
|
|
114
|
+
|
|
115
|
+
> 前端 DOM 钩子(在 `lib/client.js` 中定义,可用于定位/断言):
|
|
116
|
+
> `data-dam-panel`(记忆窗格)、`data-dam-sidebar-btn`(侧栏按钮)、`data-dam-settings`(设置容器)、`data-dam-settings-group`(设置分组)、`data-dam-settings-nav`(设置导航)、`data-dam-settings-row`(配置行)、`data-dam-detect-panel`(语义引擎检测面板)、`hub`(记忆中枢页签)
|
|
117
|
+
|
|
118
|
+
### 4.1 记忆窗格(侧栏面板)
|
|
119
|
+
|
|
120
|
+
- **打开**:启动 dsh web(`--no-open`)后手动打开 UI → 侧栏记忆按钮(`data-dam-sidebar-btn`)
|
|
121
|
+
- **内容**:当前工作区记忆、日志、记忆中枢页签、语义引擎状态
|
|
122
|
+
- **可观察**:记忆条目、版本号、水位显示、语义引擎档位(C1/C2/C3)
|
|
123
|
+
|
|
124
|
+
### 4.2 记忆中枢页签(`hub`)
|
|
125
|
+
|
|
126
|
+
- **位置**:记忆窗格内的「记忆中枢」页签
|
|
127
|
+
- **内容**:技能(procedure)/事实(fact)/经历(episodic)三栏
|
|
128
|
+
- **预期**:有内容时显示条目;无内容显示正确空态;数据来自 `hub-pre\*.json`
|
|
129
|
+
|
|
130
|
+
### 4.3 设置分组(`data-dam-settings-group`)
|
|
131
|
+
|
|
132
|
+
在设置页中本插件有独立分组(文案含"记忆中枢""设置")。可修改的关键配置项(默认值取自 `lib/index.js`):
|
|
133
|
+
|
|
134
|
+
| 配置项 | 默认 | 修改后预期表现 |
|
|
135
|
+
|---|---|---|
|
|
136
|
+
| `memoryHubEnabled` | **true** | 关闭 → 记忆中枢三栏不再更新、相关端点返回未启用;开启 → episodes/facts/procedures 开始落盘 |
|
|
137
|
+
| `associativeMemoryEnabled` | false | 开启 → 会话中可能出现主动联想注入 |
|
|
138
|
+
| `shadowRetrievalEnabled` | false | 开启 → 影子检索与调试视图可用 |
|
|
139
|
+
| `activationInboxEnabled` | false | 开启 → 激活收件箱相关端点有数据 |
|
|
140
|
+
| `waterLevelThreshold` | **0.75** | 调低 → 更早提示水位;调高 → 更晚(**不要超过 0.80**,官方压缩阈值,必须留余量) |
|
|
141
|
+
| `autoContinueEnabled` | true | 关闭 → 水位达 0.75 不自动接续 |
|
|
142
|
+
| `autoContinueThreshold` | **0.75** | 同上,须与水位阈值保持同步、低于 0.80 |
|
|
143
|
+
| `handoffLedgerChars` | 800 | 快照注入的账本字符预算(与接续材料里的 8000 不同源,勿混淆) |
|
|
144
|
+
| `autoConsolidateCooldownMinutes` | 30 | 自动巩固/冷却间隔(分钟) |
|
|
145
|
+
| `semanticEngineMode` | `'auto'` | 切换 C1/C2/C3 的选择策略 |
|
|
146
|
+
| `pythonBackendEnabled` | false | 开启并配置好 Python → 可用 C3(bge-m3) |
|
|
147
|
+
| `procedurePromotionEnabled` | false | 开启 → 技能晋升可用 |
|
|
148
|
+
| `unattendedMode` / `awayMinutes` | false / 60 | 无人值守相关(**设置页 UI 尚未核实,属待办**) |
|
|
149
|
+
|
|
150
|
+
> ⚠️ 修改设置后需要**重载/重启 dsh web**才生效的场景,以实际观察为准;若改完无变化,先查 `/api/dsh-auto-memory-pre/config` 是否已回写。
|
|
151
|
+
|
|
152
|
+
### 4.4 语义引擎环境检测面板(`data-dam-detect-panel`)
|
|
153
|
+
|
|
154
|
+
- 用途:快检 / 深扫 / 热接入语义引擎环境
|
|
155
|
+
- 可观察:当前档位(C1/C2/C3)、模型是否存在、是否可热切换
|
|
156
|
+
|
|
157
|
+
### 4.5 悬浮钉
|
|
158
|
+
|
|
159
|
+
- 快捷入口(线描图标),用于快速打开记忆相关操作
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 5. 后端状态来源(如何确认前端操作已生效)
|
|
164
|
+
|
|
165
|
+
### 5.1 主要端点(`lib/index.js` 注册,共 39 个,前缀 `/api/dsh-auto-memory-pre/`)
|
|
166
|
+
|
|
167
|
+
| 端点 | 用途 | 关键返回字段 |
|
|
168
|
+
|---|---|---|
|
|
169
|
+
| `memory-hub` | M8 三层总览 | `policyVersion`、`stats`、`episodic`、`facts`、`procedures` |
|
|
170
|
+
| `config` | 读写配置 | 各配置键的当前值 |
|
|
171
|
+
| `state` | 运行状态总览 | 水位、启用状态等 |
|
|
172
|
+
| `debug` | 调试视图 | 含 `shadowRetrieval` 等 |
|
|
173
|
+
| `semantic-status` / `semantic-emit` / `semantic-download` | 语义引擎状态/发射/下载 | 档位、模型状态 |
|
|
174
|
+
| `activation-inbox-pre` | 激活收件箱 | 候选与投递记录 |
|
|
175
|
+
| `auto-continue-state` / `auto-continue-decide` / `handoff-continue` | 接续状态与决策 | 水位、是否触发、材料层 |
|
|
176
|
+
| `smart-recall` | 智能检索 | 命中列表 |
|
|
177
|
+
| `storage-manage` | 存储管理 | 文件/统计 |
|
|
178
|
+
| `workspaces` | 工作区列表 | 工作区标识 |
|
|
179
|
+
| `update` / `update-check` | 更新 | 版本信息 |
|
|
180
|
+
| `calendar`、`file`、`browse-dir`、`external*`、`summarize`、`shadow-recent`、`subagent-gc`、`greet` | 其余辅助端点 | — |
|
|
181
|
+
|
|
182
|
+
> 端点名以代码为准:`grep -oE "'/api/dsh-auto-memory-pre/[a-z0-9-]+'" lib/index.js | sort -u`
|
|
183
|
+
|
|
184
|
+
### 5.2 日志
|
|
185
|
+
|
|
186
|
+
- **诊断日志**:`C:\Users\JH Z\.dsh\memory\dsh-auto-memory-pre-diagnose.log`
|
|
187
|
+
- 关键线索:插件加载异常、`diag(...)` 输出的降级与状态(如 `hub success evidence: +N`、`p9a correction attribution: ...`)
|
|
188
|
+
- **证据事件**:`C:\Users\JH Z\.dsh\memory\evidence-pre\events\YYYY-MM-DD.jsonl`
|
|
189
|
+
- 单行结构(实测):顶层 `kind` / `memoryId` / `recordedAt` / `anchorId` …,**时间戳在 `event.ts`**(顶层无 `ts`/`createdAt`)
|
|
190
|
+
- **M8 数据**:`C:\Users\JH Z\.dsh\memory\hub-pre\{episodes,facts,procedures}.json`(原子写)
|
|
191
|
+
|
|
192
|
+
### 5.3 「前端操作 → 后端确认」判定方法(通用三步)
|
|
193
|
+
|
|
194
|
+
1. **操作前**取基线快照:`GET /api/dsh-auto-memory-pre/config`(或 `state`)+ 记录相关文件条目数/修改时间
|
|
195
|
+
2. **在前端执行操作**(改开关、点按钮)
|
|
196
|
+
3. **操作后再取**:对比配置值是否变化、端点返回是否变化、磁盘文件 mtime/条数是否变化
|
|
197
|
+
|
|
198
|
+
**判定成立的条件**:三者至少两项一致变化。只有 UI 变了而后端/磁盘没变 = 未真正生效(可能未保存或未重启)。
|
|
199
|
+
|
|
200
|
+
**示例(改 `memoryHubEnabled`)**:
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
改前:GET /config → memoryHubEnabled=false;hub-pre\*.json 无新写入
|
|
204
|
+
前端:开启「记忆中枢」开关
|
|
205
|
+
改后:GET /config → memoryHubEnabled=true;对话若干轮后 hub-pre\*.json mtime 更新、条目增加
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 6. 工具(模型可调用,10 个)
|
|
211
|
+
|
|
212
|
+
| 工具 | 作用 |
|
|
213
|
+
|---|---|
|
|
214
|
+
| `memory_recall_pre` | 记忆检索(默认返回 L0,`expand` 展开原文) |
|
|
215
|
+
| `memory_read_pre` | 按锚点读取记忆原文 |
|
|
216
|
+
| `memory_note_pre` | 写入记忆(含 `kind` 区分日志/笔记/白板 `plan`/账本 `handoff` 等) |
|
|
217
|
+
| `memory_log_pre` | 记录日志条目 |
|
|
218
|
+
| `memory_reflect_pre` | 生成反思 |
|
|
219
|
+
| `memory_consolidate_pre` | 记忆巩固 |
|
|
220
|
+
| `memory_maintain_pre` | 存储维护 |
|
|
221
|
+
| `memory_status_pre` | 状态查询 |
|
|
222
|
+
| `memory_user_pre` | 用户级记忆读写 |
|
|
223
|
+
| `memory_external_pre` | 外部记忆源管理 |
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 7. 全量验证清单
|
|
228
|
+
|
|
229
|
+
> **通用前置**:`dsh web --no-open` 已启动;插件已装载;已确认端口并手动打开 UI。
|
|
230
|
+
> **通用通过标准**:每一步都要有**证据**(截图 / 日志原文 / 数据快照)。禁止"看起来正常"这类无证据结论。
|
|
231
|
+
|
|
232
|
+
### A. 启动与装载
|
|
233
|
+
|
|
234
|
+
| # | 前置 | 步骤 | 通过标准 |
|
|
235
|
+
|---|---|---|---|
|
|
236
|
+
| A1 | — | `dsh web --no-open` | 终端打印监听地址;**没有自动弹出浏览器** |
|
|
237
|
+
| A2 | A1 | 查看诊断日志与终端输出 | 无 `SyntaxError` / `ReferenceError` / 模块加载失败 |
|
|
238
|
+
| A3 | A2 | `GET /api/dsh-auto-memory-pre/state` | 返回 200 且含状态字段 |
|
|
239
|
+
|
|
240
|
+
### B. 记忆检索主流程
|
|
241
|
+
|
|
242
|
+
| # | 步骤 | 通过标准 |
|
|
243
|
+
|---|---|---|
|
|
244
|
+
| B1 | 调用 `memory_recall_pre` 查一个常见主题 | 返回 L0 列表,含 `id`/`score`/`match_reason` |
|
|
245
|
+
| B2 | 用返回的 `id` 调 `expand="mem_xxx"`(或 `memory_read_pre`) | 能取到对应原文,且**不串条** |
|
|
246
|
+
| B3 | **语义验证**:查一个词法不重合但语义相关的查询(如记忆里写"npm 发布报 ENEEDAUTH",查"发布凭证问题") | 能召回。若失败,切 `legacy` 融合再测对比;legacy 正常而 rrf 失败 = **P8 回归,停止** |
|
|
247
|
+
| B4 | **时间臂验证**:查含时间表达的查询(如"上周"),再查一条不含时间词的同类查询做对照 | 含时间词 → 对应时间段条目排序上升;不含时间词 → 排序与对照一致(**零行为变更**) |
|
|
248
|
+
| B5 | 异常:查一个明显不存在的主题 | 不报错,返回空或弱命中,不阻塞 |
|
|
249
|
+
|
|
250
|
+
### C. 主动联想
|
|
251
|
+
|
|
252
|
+
| # | 步骤 | 通过标准 |
|
|
253
|
+
|---|---|---|
|
|
254
|
+
| C1 | 确认 `associativeMemoryEnabled=true` 并重载 | 配置端点回写为 true |
|
|
255
|
+
| C2 | 新开会话,聊一段与已有记忆主题相关的话(不主动查询) | 记忆被主动注入;诊断日志有对应记录 |
|
|
256
|
+
|
|
257
|
+
### D. M8 记忆中枢
|
|
258
|
+
|
|
259
|
+
| # | 步骤 | 通过标准 |
|
|
260
|
+
|---|---|---|
|
|
261
|
+
| D1 | `GET /api/dsh-auto-memory-pre/memory-hub` | 200,含 `policyVersion`/`stats`/三栏数据 |
|
|
262
|
+
| D2 | 打开记忆窗格 → 记忆中枢页签 | 三栏有内容或正确空态 |
|
|
263
|
+
| D3 | 关闭 `memoryHubEnabled` → 重载 → 对话若干轮 | 无新落盘;端点反映未启用 |
|
|
264
|
+
| D4 | 重新开启 → 对话若干轮 | `hub-pre\*.json` 有新条目 |
|
|
265
|
+
|
|
266
|
+
### E. 证据链
|
|
267
|
+
|
|
268
|
+
| # | 步骤 | 通过标准 |
|
|
269
|
+
|---|---|---|
|
|
270
|
+
| E1 | 对话若干轮后查看当日 `evidence-pre\events\*.jsonl` | 新增 `seen` 事件 |
|
|
271
|
+
| E2 | 触发一次用户纠正(对话里说"不对,你记错了"之类) | 新增 `kind:"correction"` 事件(且归因到最近被 cite/read 的记忆) |
|
|
272
|
+
| E3 | 异常:events 目录缺失/损坏 | 检索不报错(fail-soft),重要性取中性 |
|
|
273
|
+
|
|
274
|
+
### F. 接续(handoff)
|
|
275
|
+
|
|
276
|
+
| # | 步骤 | 通过标准 |
|
|
277
|
+
|---|---|---|
|
|
278
|
+
| F1 | 确认 `waterLevelThreshold` / `autoContinueThreshold` = 0.75 | 配置端点一致 |
|
|
279
|
+
| F2 | 让上下文增长到 75%(或手动一键接续) | 触发接续;新会话收到**分层**材料 |
|
|
280
|
+
| F3 | 检查新会话首条注入文案 | **不再要求"先 read 转写"**;按锚点按需取用 |
|
|
281
|
+
| F4 | 接续后继续对话 | 能连续推进,进度未丢失 |
|
|
282
|
+
|
|
283
|
+
### G. 写入与持久化
|
|
284
|
+
|
|
285
|
+
| # | 步骤 | 通过标准 |
|
|
286
|
+
|---|---|---|
|
|
287
|
+
| G1 | 对话若干轮 | 工作区日志 `*.md` 有新条目;`hub-pre\*.json` 更新 |
|
|
288
|
+
| G2 | **重启 dsh web**(带 `--no-open`) | 数据 restore 不丢 |
|
|
289
|
+
| G3 | 异常:磁盘不可写 | 不崩溃,日志有记录 |
|
|
290
|
+
|
|
291
|
+
### H. 语义引擎档位
|
|
292
|
+
|
|
293
|
+
| # | 步骤 | 通过标准 |
|
|
294
|
+
|---|---|---|
|
|
295
|
+
| H1 | 打开检测面板(`data-dam-detect-panel`) | 显示当前档位与模型状态 |
|
|
296
|
+
| H2 | 切换 `semanticEngineMode` / 启用 Python 后端 | 状态端点反映档位变化;检索仍可用(失败则回退 C1) |
|
|
297
|
+
|
|
298
|
+
### I. 回归基线(静态,每次改动后必跑)
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
cd /d/D/dsh-auto-memory || cd D:/dsh-auto-memory
|
|
302
|
+
node tests/smoke/smoke-test-m4-pre.mjs # m4
|
|
303
|
+
node tests/smoke/smoke-test-p8-rrf-wiring-pre.mjs # 14
|
|
304
|
+
node tests/smoke/smoke-test-p4-l0-response-pre.mjs # 34
|
|
305
|
+
node tests/smoke/smoke-test-evidence-agg-pre.mjs # 14
|
|
306
|
+
node tests/smoke/smoke-test-memory-importance-pre.mjs # 18
|
|
307
|
+
node tests/smoke/smoke-test-p9a-correction-attribution-pre.mjs # 26
|
|
308
|
+
node tests/smoke/smoke-test-p9d-recent-evidence-ts-pre.mjs # 13
|
|
309
|
+
node tests/smoke/smoke-test-handoff-pre.mjs # 51
|
|
310
|
+
node tests/smoke/smoke-test-continue-chain-pre.mjs # 58
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
**任一数字下降 → 停止,回报**。
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## 8. 常见故障与处置
|
|
318
|
+
|
|
319
|
+
| 现象 | 排查 |
|
|
320
|
+
|---|---|
|
|
321
|
+
| 启动后 UI 空白/无插件入口 | 检查插件是否装载到 web profile;看诊断日志加载错误 |
|
|
322
|
+
| 改了设置没效果 | 查 `/config` 是否回写;确认是否需要重载 |
|
|
323
|
+
| recall 返回空 | 确认记忆目录有内容;确认 `semanticEngineMode` 与引擎可用;看日志降级记录 |
|
|
324
|
+
| 证据不落盘 | 检查 `evidence-pre\events` 目录权限;确认相关开关 |
|
|
325
|
+
| 接续不触发 | 确认水位确实到 0.75;`autoContinueEnabled` 为 true |
|
|
326
|
+
| 检索很慢 | 当前词法检索为全量扫描(无倒排索引,属已知待办) |
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## 9. 边界与禁止事项
|
|
331
|
+
|
|
332
|
+
- 改源码只改 `lib/*-pre.js`;**禁止手改 `lib/*.js` 同名产物**(由流水线重建)
|
|
333
|
+
- **禁止引入运行时依赖**(项目承诺零依赖)
|
|
334
|
+
- 禁止删除既有测试断言;禁止整文件重写
|
|
335
|
+
- 涉及用户隐私:日志与诊断输出**不得包含用户原文**
|
|
336
|
+
- 若作为验收方:**只验证不改码**,发现问题记录回报
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## 10. 速查表
|
|
341
|
+
|
|
342
|
+
| 项 | 值 |
|
|
343
|
+
|---|---|
|
|
344
|
+
| 启动命令 | `dsh web --no-open`(**必须带**) |
|
|
345
|
+
| 工程根 | `D:\dsh-auto-memory` |
|
|
346
|
+
| 宿主侧入口 | `lib/index.js` |
|
|
347
|
+
| 浏览器侧入口 | `lib/client.js` |
|
|
348
|
+
| 端点前缀 | `/api/dsh-auto-memory-pre/`(39 个) |
|
|
349
|
+
| 工具 | 10 个,`memory_*_pre` |
|
|
350
|
+
| 记忆根 | `C:\Users\JH Z\.dsh\memory` |
|
|
351
|
+
| 证据事件 | `...\evidence-pre\events\YYYY-MM-DD.jsonl`(时间戳在 `event.ts`) |
|
|
352
|
+
| 诊断日志 | `...\dsh-auto-memory-pre-diagnose.log` |
|
|
353
|
+
| M8 数据 | `...\hub-pre\{episodes,facts,procedures}.json` |
|
|
354
|
+
| 水位/接续阈值 | 0.75 / 0.75(**须低于官方压缩 0.80**) |
|