@a9i5k4/dsh-auto-memory 3.0.0 → 3.0.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.
Files changed (90) hide show
  1. package/README.md +19 -7
  2. package/README.zh-CN.md +19 -7
  3. package/docs/FRONTEND-CO-CREATION.md +191 -0
  4. package/docs/GM53-HOMEPAGE-PROMPT.md +323 -0
  5. package/docs/HOMEPAGE-CONTENT-FOR-GM53.md +299 -0
  6. package/docs/PROMO-PROMPT-3.0.md +100 -0
  7. package/docs/USER-GUIDE.en.md +2 -2
  8. package/docs/USER-GUIDE.zh-CN.md +2 -2
  9. package/docs/WHITEPAPER.md +207 -0
  10. package/docs/internal/ARCHITECTURE-FOR-ZCODE-20260920.md +397 -0
  11. package/docs/internal/ART-DIRECTION-DEEPSEEK-20260920.md +351 -0
  12. package/docs/internal/ART-DIRECTION-WIREFRAME.md +191 -181
  13. package/docs/internal/ART-DIRECTION-WIREFRAME.md.bak-superseded +181 -0
  14. package/docs/internal/BATTLE-PLAN-20260917.md +871 -0
  15. package/docs/internal/FEATURE-INVENTORY.md +531 -0
  16. package/docs/internal/G-SERIES-EXECUTION-20260917.md +248 -0
  17. package/docs/internal/G3-DESIGN-20260918.md +82 -0
  18. package/docs/internal/G3-DISK-FORMAT-GAP-20260919.md +92 -0
  19. package/docs/internal/HANDOFF-TO-ZCODE-20260920.md +309 -0
  20. package/docs/internal/HERMES-DATA-VERIFICATION-20260919.md +120 -0
  21. package/docs/internal/HERMES-LEGACY-STATUS-20260919.md +74 -0
  22. package/docs/internal/ISSUE-55-58-VERIFICATION-20260918.md +175 -0
  23. package/docs/internal/ISSUE10-FIX-EXECUTION-20260919.md +389 -0
  24. package/docs/internal/ISSUE10-PLAN-20260919.md +254 -0
  25. package/docs/internal/ISSUE10B-FORENSICS-20260919.md +468 -0
  26. package/docs/internal/ISSUE9-PURGE-AND-R1-PLAIN-20260919.md +150 -0
  27. package/docs/internal/ISSUE9-RESIDUAL-FORENSICS-20260919.md +114 -0
  28. package/docs/internal/LESSON-TO-CANDIDATE-STATUS-20260919.md +79 -0
  29. package/docs/internal/MEMORY-GOVERNANCE-20260917.md +309 -0
  30. package/docs/internal/PRE-FRONTEND-CHECKLIST-20260919.md +705 -0
  31. package/docs/internal/PRE-FRONTEND-CHECKLIST-20260919.md.bak-s10 +649 -0
  32. package/docs/internal/PROCEDURAL-MEMORY-AND-APPROVAL-DESIGN-20260918.md +225 -0
  33. package/docs/internal/PROGRESS-20260917.md +93 -0
  34. package/docs/internal/PROMPT-GAP-AUDIT-20260920.md +128 -0
  35. package/docs/internal/R1-DEGRADE-AUDIT-20260918.md +163 -0
  36. package/docs/internal/R1-READABILITY-FORENSICS-20260919.md +127 -0
  37. package/docs/internal/R2-EVIDENCE-DEEP-AUDIT-20260918.md +140 -0
  38. package/docs/internal/R3-DEGRADE-LEDGER-DESIGN-20260918.md +138 -0
  39. package/docs/internal/R4-RECALL-QUOTA-PLAN-20260918.md +218 -0
  40. package/docs/internal/RESUME-20260918.md +171 -0
  41. package/docs/internal/RESUME-20260919.md +104 -0
  42. package/docs/internal/RHINELAB-TO-DEEPSEEK-FEASIBILITY.md +198 -0
  43. package/docs/internal/ROADMAP-20260917-WEEK.md +134 -0
  44. package/docs/internal/S10-CONSTRUCTION-HANDOFF-20260917.md +13 -3
  45. package/docs/internal/S10-GAP-INVENTORY-20260917.md +239 -0
  46. package/docs/internal/T6-EXECUTION-20260920.md +130 -0
  47. package/docs/internal/TELEMETRY-EFFECT-REPORT-DESIGN-20260918.md +146 -0
  48. package/docs/internal/THESIS-GAP-ANALYSIS-20260918.md +89 -0
  49. package/docs/internal/THESIS-OUTLINE-20260918.md +147 -0
  50. package/docs/internal/THREE-LAYER-CONTRACT.md +10 -1
  51. package/docs/internal/UPSTREAM-ISSUE-PR-TRIAGE-20260919.md +297 -0
  52. package/docs/internal/UPSTREAM-ISSUES-3RD-AUDIT-20260920.md +104 -0
  53. package/docs/screenshots/promo/promo-0-banner-v3.png +0 -0
  54. package/lib/activation-host.js +63 -9
  55. package/lib/board-mode.js +1 -1
  56. package/lib/client.js +892 -27
  57. package/lib/config-io.js +156 -0
  58. package/lib/context-bridge.js +3 -0
  59. package/lib/context-host.js +16 -9
  60. package/lib/degrade.js +385 -0
  61. package/lib/dsh-home.js +143 -0
  62. package/lib/episodic-store.js +52 -2
  63. package/lib/evidence-store.js +8 -1
  64. package/lib/fact-store.js +21 -2
  65. package/lib/index-sync.js +13 -1
  66. package/lib/index.js +1507 -158
  67. package/lib/intent-clean-safe.js +258 -40
  68. package/lib/l0-extract.js +231 -16
  69. package/lib/m4-corpus.js +8 -2
  70. package/lib/m7-index-sync-host.js +8 -1
  71. package/lib/memory-envelope.js +6 -1
  72. package/lib/memory-hub.js +127 -12
  73. package/lib/memory-index.js +4 -2
  74. package/lib/note-status-apply.js +118 -0
  75. package/lib/note-status.js +196 -0
  76. package/lib/procedure-store.js +84 -3
  77. package/lib/python-sidecar-client.js +29 -3
  78. package/lib/recall-fusion.js +83 -12
  79. package/lib/rules-edit.js +159 -0
  80. package/lib/semantic-decide.js +41 -8
  81. package/lib/semantic-js.js +51 -6
  82. package/lib/shadow-host.js +3 -5
  83. package/lib/skill-export-host.js +153 -0
  84. package/lib/skill-export.js +239 -0
  85. package/lib/storage-manage.js +6 -0
  86. package/lib/temporal-parse.js +191 -159
  87. package/lib/tier0-catalog.js +45 -3
  88. package/lib/wb-contract.js +198 -2
  89. package/lib/wb-sidecar.js +54 -3
  90. package/package.json +1 -1
@@ -2,6 +2,8 @@
2
2
 
3
3
  > **给谁看**:压缩后的下一个窗口(我),以及用户本人。
4
4
  > **状态**:**未开工**。用户已拍板「四个缺口全量改」,但决定**先推送一次文档更新,明天再改代码**。
5
+ > **2026-09-17 回读校正**:本文 18 处行号写于 3.0 发版**之前**,已有漂移(±5 行不等),且**缺口 1 的前提被 3.0 默认值翻转改写了**。
6
+ > 以 `S10-GAP-INVENTORY-20260917.md`(同日实测复核版)为准;本文保留作为原始施工语境。
5
7
  > **上游依据**:`ROADMAP-20260917-WEEK.md` §3.5(技术版,带行号)· `S10-GAPS-PLAIN-20260917.md`(大白话版)。
6
8
 
7
9
  ---
@@ -22,9 +24,17 @@
22
24
 
23
25
  ### 缺口 1(P0)· 锚点写入被 `boardMode` 门控,默认不生效
24
26
 
25
- - 默认值 `boardMode: 'legacy'` —— `lib/index.js:219`
26
- - 锚点写入被门控:`:1988`(PLAN)、`:2032`(账本);sidecar 直接早退 `:2076`
27
- - **⇒ 默认配置下 S10.1「页面即语料」整条链不启动**
27
+ > ### ⚠️ 前提已修正(2026-09-17 回读核实,v3.0.0 发版时翻转)
28
+ > 本节原写「默认值 `boardMode:'legacy'`⇒整条链默认不启动」。**该症状已在 v3.0.0 消失**:
29
+ > - `lib/index.js:221` 现为 `boardMode: 'graph'`(3.0 默认值翻转,随发版一起出去)
30
+ > - `lib/index.js:312` 现为 `handoffEnabled: true`
31
+ > ⇒ **默认配置下锚点写入、sidecar、tag 地图、expand/trace 工具全部已激活。**
32
+ > **但「格式契约耦合渲染开关」这个根缺陷仍在**:只要用户手动切回 legacy,锚点写入立刻停摆。
33
+ > 所以结论从「P0 默认不生效」下调为 **P1 耦合缺陷**(仍要做,但不再是发版阻断项)。
34
+
35
+ - ~~默认值 `boardMode: 'legacy'` —— `lib/index.js:219`~~(已被 3.0 默认翻转覆盖)
36
+ - 锚点写入仍被门控:当前行号 `:1993`(PLAN)、`:2037`(账本);sidecar 早退 `:2081`
37
+ - ⇒ **仅 legacy 档下 S10.1「页面即语料」整条链不启动**(graph 档正常)
28
38
 
29
39
  **改法(用户已认可方向)**:**把锚点写入与 `boardMode` 解耦**。
30
40
  理由:锚点是**记录格式**,看板是**显示样式**,本不该耦合。**不要改默认值**(会牵动老用户)。
@@ -0,0 +1,239 @@
1
+ # S10 缺口总账 · 实测复核版(2026-09-17)
2
+
3
+ > **为什么有这份文件**:`S10-CONSTRUCTION-HANDOFF-20260917.md` 的行号写于 **3.0 发版之前**,
4
+ > 且**缺口 1 的前提被 3.0 的默认值翻转改写了**(原文说"默认 legacy ⇒ 整条链不启动",已不成立)。
5
+ > 本轮逐条 grep 重核,**以本文为准**;原 handoff 保留作施工语境。
6
+ >
7
+ > **复核方法**:只认「有调用点/有实现」才算已实现。全部结论附当前行号(`D:\dsh-auto-memory`,2026-09-17 复核)。
8
+
9
+ ---
10
+
11
+ ## 0. 一句话结论
12
+
13
+ **六个缺口里,1 个已被 3.0 发版顺带改掉症状(但根缺陷仍在),5 个仍在。**
14
+ 其中**白板线的"接线"问题是这批的核心**——不是没写代码,是**线没接完**:写线通了、注入线通了、检索线断了一半。
15
+
16
+ ---
17
+
18
+ ## 1. 逐缺口复核
19
+
20
+ | # | 缺口 | 原判 | **实测结论** | 现在的严重度 |
21
+ |---|---|---|---|---|
22
+ | 1 | 锚点写入被 `boardMode` 门控 | P0 默认不生效 | ⚠️ **症状已消失,根缺陷仍在** | P1 |
23
+ | 2 | 白板进注入不进检索 | P0 | ❌ **确认仍在,未动** | **P0(最高性价比)** |
24
+ | 3 | 索引派生(S10.2) | P1 零实现 | ⚠️ **半对**:派生真在跑,缺契约行格式与两字段 | P1 |
25
+ | 4 | lint(S10.3) | P1 零实现 | ❌ **确认零实现** | P1 |
26
+ | 5 | 账本跳过用户区保护 | P2 | ❌ **确认仍在** | P2 |
27
+ | 6 | 死导出 | P2 | ⚠️ **范围收窄**:多数有测试消费者,真死只有 2 个 | P2 |
28
+
29
+ ### 缺口 1 · 已降级(前提被 3.0 改写)
30
+
31
+ | 项 | 原文档 | **实测(现在)** |
32
+ |---|---|---|
33
+ | `boardMode` 默认 | `'legacy'`(`index.js:219`) | **`'graph'`(`index.js:221`)** |
34
+ | `handoffEnabled` 默认 | `false` | **`true`(`index.js:312`)** |
35
+ | 锚点写入(PLAN) | `:1988` 被门控 | `:1993` 仍被门控(graph 档才写) |
36
+ | 锚点写入(账本) | `:2032` 被门控 | `:2037` 仍被门控 |
37
+ | sidecar 早退 | `:2076` | `:2081` |
38
+
39
+ **⇒ 默认配置下全链已激活**(锚点/ sidecar / tag 地图 / expand+trace 工具都活)。
40
+ **但"格式契约耦合渲染开关"没修**:用户手动切回 legacy ⇒ 锚点立刻停摆。
41
+ 建议仍做解耦,但**不再是发版阻断项**,也不用赶。
42
+
43
+ ### 缺口 2 · 白板进"注入"不进"检索"(❌ 确认仍在)
44
+
45
+ - 注入 ✅ `index.js:4706` `add('whiteboard', s.planText, s.planPath)` → Tier-0 目录(五来源之一)
46
+ - 检索词法臂 ❌ `pushL0` 仅四来源:`:5510` 日志 / `:5511` 反思 / `:5512` 项目笔记 / `:5513` 用户级
47
+ - 检索语义臂 ❌ `semSources` 仅四来源:`:5709-5712` 同上四类
48
+ - **两处都没有白板。** `p.planPath` 变量存在(`:1828` / `:1890` 定义,`:4706` 在用)。
49
+
50
+ **⇒ 白板每轮被注入,但 `memory_recall` 搜不到它。** 这是全批最小改动、最高收益的一项。
51
+
52
+ > ⚠️ 改的时候要一并判两件事(原 handoff §缺口 2 已指出,复核确认成立):
53
+ > 1. `tier0-catalog-pre.js:353` 的 `floorLayers: ['whiteboard','user']` 是 **Tier-0 注入侧**的保底配额;
54
+ > **L0 检索侧没有同类保护** ⇒ 补进 `pushL0` 后,白板可能又被 `project` 层挤掉。
55
+ > 2. `handoffEnabled=false` 时白板不读不写(`:3586` / `:4160` 等处已解耦)——补检索来源时要同样判这个门,
56
+ > 否则会去读一个"按设计不该读"的文件。
57
+
58
+ ### 缺口 3 · 索引派生:不是没做,是没输出成契约那一行
59
+
60
+ **家底(复核确认,别重复造)**:`rebuildSidecarIndexPre`(`wb-sidecar-pre.js`,`index.js:2125` 有调用)**真在派生**。
61
+ 实测本机 `~/.dsh/memory/workspaces/--D--dsh-auto-memory--/handoff/index.json`:
62
+
63
+ ```
64
+ entries: 150 | by_tag: 100 个 key | by_cue: 0 个 key | versions: 53 个 key
65
+ entry 字段: id, kind, source, section, tags, cues, preview, mtime, criteria, title, cue, chars, ts
66
+ ```
67
+
68
+ **缺的三样(实测确认)**:
69
+ 1. entry **无 `status` 字段**(契约行要有 `status=current`)
70
+ 2. entry **无 `layer` 字段**(契约行要有 `layer=whiteboard`)
71
+ 3. 没拼成契约那一行的字面格式(`WB-FORMAT-CONVENTION.md` §1)
72
+
73
+ > 🔎 **附带发现(不是缺口,是线索)**:`by_cue` 实测 **0 个 key 而 `cue` 字段每条都有** ⇒
74
+ > 倒排没能从条目里聚出来。这是**待查疑点**,正好与用户要报的白板 bug 可能相关,先不下结论。
75
+
76
+ ### 缺口 4 · lint 零实现(❌ 确认)
77
+
78
+ 全仓 grep `lintWhiteboard|lintPlan|wbLint`:**命中全在文档里**——
79
+ `docs/internal/PLAN-gpt6astra-round2-20260914.md:284`(设计)、`:559`(拟新增)、
80
+ `docs/internal/S10-CONSTRUCTION-HANDOFF-20260917.md:73`(形态约定)。
81
+ **代码侧 0 个函数定义、0 个 export。**
82
+
83
+ 另 `wb-contract-pre.js:261`、`wb-sidecar-pre.js:517` 的注释写着"供 lint 用",但**没有 lint 本体**。
84
+
85
+ ### 缺口 5 · 账本跳过保护门(❌ 确认,行号已漂)
86
+
87
+ 当前实现(`index.js`):
88
+ ```
89
+ 2317: if (target !== 'plan' && target !== 'handoff') return { ok: true }
90
+ 2318: if (target === 'handoff') return { ok: true } ← 账本被无条件放行
91
+ 2319: if (!beforeText.trim()) return { ok: true }
92
+ ```
93
+ 而同函数 docblock(`~:2298` 起)与 `:332` 的模块级注释都声称"**无条件生效**"。
94
+ **注释与实现不一致**——影响面有限(账本走 `:2027` 的 `beforeText: ''`),但若将来账本改可覆盖写,
95
+ 这里就是静默漏洞。
96
+
97
+ ### 缺口 6 · 死导出:范围收窄
98
+
99
+ 全仓(lib+tests+tools)引用计数实测:
100
+
101
+ | 符号 | 命中 | 判定 |
102
+ |---|---|---|
103
+ | `WB_STATUSES_PRE_V1` | **1**(仅自身定义) | 🔴 真死 |
104
+ | `describeWbReasonPre` | **1**(仅自身定义) | 🔴 真死 |
105
+ | `buildByCuePre` | 2 | 🟡 仅 wb-sidecar 内部 |
106
+ | `WB_CONTRACT_VERSION` | 4 | ✅ 有用 |
107
+ | `collectAnchorIdsPre` | 5 | ✅ index + sidecar + 测试 |
108
+ | `computeWhiteboardCardIdPre` | 7 | ✅ 有测试消费者 |
109
+ | `checkWriteCriteriaPre` | 4 | ✅ 有测试消费者 |
110
+
111
+ **⇒ 原判"12+16+7+5 个死导出"过宽。** 真正无消费者的是 **2 个常量/函数**(上表红标),
112
+ 其余多为"仅测试消费"——那不算死,是**没有生产调用点**,可另判。
113
+
114
+ ---
115
+
116
+ ## 2. 白板线「接线」全景(用户点名的重点)
117
+
118
+ 白板线共 **13 处 `boardMode === 'graph'` 闸门**(实测计数)。逐处判"该不该解耦":
119
+
120
+ ### 写线
121
+ | 位置 | 作用 | 该解耦吗 |
122
+ |---|---|---|
123
+ | `:1988` | PLAN 基线写入 | — **无条件,已正确**(注释 `:1985` 记录了教训) |
124
+ | `:1993` | PLAN 锚点加工 | **该解耦**(格式契约,与渲染无关) |
125
+ | `:2037` | 账本锚点加工 | **该解耦**(同上) |
126
+ | `:2081` | sidecar 条目写入 | ❌ 不该——sidecar 就是 graph 特性 |
127
+ | `:2115` | sidecar 事件追加 | ❌ 不该 |
128
+
129
+ ### 注入线
130
+ | 位置 | 作用 | 该解耦吗 |
131
+ |---|---|---|
132
+ | `:4706` | 白板 → Tier-0 目录 | — **无条件,已正确** |
133
+ | `:3675` | 白板 tag 地图注入 | ❌ 不该(`:3673` 注:legacy 必须与旧行为**逐字节相同**,否则击穿前缀缓存) |
134
+ | `:3685` | 第 3 层唤醒句 | ❌ 不该(同上理由) |
135
+
136
+ ### 检索线
137
+ | 位置 | 作用 | 该解耦吗 |
138
+ |---|---|---|
139
+ | `:5510-5513` | `pushL0` 词法臂 | ❌ **不是解耦问题,是缺来源** ⇒ 缺口 2 |
140
+ | `:5709-5712` | `semSources` 语义臂 | ❌ 同上 ⇒ 缺口 2 |
141
+ | `:2376` | `searchHandoffCorpus` 结构化臂 | ❌ 不该(读 sidecar,graph 专属) |
142
+
143
+ ### 工具线 / GUI 线
144
+ | 位置 | 作用 | 该解耦吗 |
145
+ |---|---|---|
146
+ | `:9146` | `memory_expand_pre` 注册 | ❌ 不该 |
147
+ | `:9150` | `memory_trace_pre` 注册 | ❌ 不该 |
148
+ | `:2207` | 看板数据 `kanbanDataPre` | ❌ 不该(这就是看板本体) |
149
+ | `:2235` | 看板 enabled 门 | ❌ 不该 |
150
+ | `:3823` | `handoffPanelData` 结构化视图 | ❌ 不该 |
151
+ | `:3863` | state 报告里的 boardMode 回显 | ❌ 不该 |
152
+
153
+ **⇒ 接线结论(⚠️ 已修正,见下方补注):13 处 boardMode 闸门里,真正该动的只有 2 处(`:1993` + `:2037` 锚点写入)。
154
+ 其余 11 处本质属"graph 特性",解耦反而会破坏 legacy 逐字节兼容纪律。**
155
+
156
+ 真正的问题不在闸门,在**缺口 2 的两处缺来源**。
157
+
158
+ > ### ⚠️ 补注(2026-09-17 终端用户报障后修正):本节结论**划窄了范围**
159
+ >
160
+ > 本节只枚举了 **`boardMode === 'graph'` 这一族闸门**,**漏掉了并行的 `handoffEnabled` 族闸门**。
161
+ > 实测:`kanbanBoardData`(`:2234`)与 `handoffPanelData`(`:3729`)**先被 `handoffEnabled` 拦,再看 boardMode**。
162
+ > ⇒ 「只该动 2 处」对 boardMode 这一族成立,**对全局不成立**。
163
+ >
164
+ > **正确的划界判据**:不看"是不是 boardMode 门",而看 —— **这个门控的是「渲染」还是「写入/取材」**。
165
+ > - 控**渲染**的(看板、面板、GUI 视图)**一律不该**被产物开关(`handoffEnabled`)拦住;
166
+ > - 控**写入/取材**的(锚点写盘、账本读入)才归 `handoffEnabled` 管。
167
+ >
168
+ > 现已确认需追加解耦:`:2234`(看板数据)、`:3729`(白板面板数据)。
169
+ > 详见 `ROADMAP-20260917-WEEK.md` §3.6.1。
170
+
171
+ ---
172
+
173
+ ## 3. 保护门 / 纪律层
174
+
175
+ ### `GUIDANCE` 对白板零覆盖(实测确认,逐字扫过)
176
+
177
+ `lib/index.js:143` 的 `GUIDANCE`(模型每轮读到的记忆纪律,≈845 字符)**逐字检查结果**:
178
+
179
+ ```
180
+ 白板 no | PLAN no | kind=plan no | 账本 no | handoff no
181
+ memory_expand_pre no | memory_trace_pre no
182
+ ```
183
+
184
+ (它提到了「接续」——但那是在描述 GUI 面板页签,不是白板维护纪律。)
185
+
186
+ **⇒ 模型被明确要求"做记忆",但从未被要求"维护白板"。这是白板腐烂的真因,不是模型偷懒。**
187
+
188
+ 修法(原 handoff §三 已设计,复核确认方向成立):**扩写 `GUIDANCE`,零新增管线**。三条必须守:
189
+ 1. 写成**条件触发**("本轮产生与白板既有结论冲突的信息、或完成了白板上的目标时"),不是每轮都做;
190
+ 2. 必须写明「**只报告、不自动删**」(契约 §6 尾注:任何自动修正都会把白板变成状态机);
191
+ 3. 白板关闭时**不得有副作用**(`handoffEnabled=false` 时跳过)。
192
+
193
+ ### 保护门现状(复核)
194
+ - `checkHandoffCriteriaPre` / `checkPlanCriteriaPre`:`:2307-2308` 真接线,两咽喉 `:2025`(账本)、`writePlanSnapshot` 内均过同一入口 ✅
195
+ - `validateMutationBoundaryPre`:`:2325+` 实现存在,但账本在 `:2318` 提前放行(= 缺口 5)
196
+
197
+ ---
198
+
199
+ ## 4. 与本轮用户报告的 bug 的关系(待用户补充)
200
+
201
+ 用户 2026-09-17 表示「**这个白板目前有一些 bug,稍后汇报**」。基于本轮实测,先列**观察点**(皆非结论):
202
+
203
+ | # | 观察点 | 证据 |
204
+ |---|---|---|
205
+ | O1 | `by_cue` 倒排为空,而每条 entry 都有 `cue` 字段 | index.json 实测:`by_cue` 0 key / `cue` 字段 150 条都有 |
206
+ | O2 | `index.json` 单文件 186KB / 150 条,每次写入**整体重写** | `_writeSidecarIndexPre`(`:2100`)每次 `JSON.stringify(fresh)` 全量落盘 |
207
+ | O3 | 白板检索不到(用户可能感知为"记忆不灵") | 缺口 2 |
208
+ | O4 | 切回 legacy 档后锚点消失(用户可能感知为"白板坏了") | 缺口 1 根缺陷 |
209
+ | O5 | 契约文档说"自动进检索语料",实际只兑现注入那一半 | 缺口 2 + 文档过度声称 |
210
+
211
+ **等用户报具体现象后再定位,不在此提前下判断。**
212
+
213
+ ---
214
+
215
+ ## 5. 建议动手顺序(复核后重排)
216
+
217
+ | 步 | 内容 | 难度 | 变化 |
218
+ |---|---|---|---|
219
+ | 1 | **缺口 2** 白板进检索(`pushL0` + `semSources` 各补一条 + L0 侧配额保护) | ★ 很低 | 不变,仍第一 |
220
+ | 2 | **缺口 4⑤ + 白板纪律**(扩写 `GUIDANCE`) | ★ 低 | ⬆️ **提前**(原在最后;理由:它是白板腐烂真因,且不依赖 3/4) |
221
+ | 3 | **缺口 3** 索引派生两渲染(补 `status`/`layer` 字段 + 契约行) | ★ 低 | 不变 |
222
+ | 4 | **缺口 4①②④** lint 只读纯函数 | ★★ 中低 | ③ 判据待用户定 |
223
+ | 5 | **缺口 1** 锚点解耦(只动 `:1993` / `:2037` 两处) | ★★ 低 | ⬇️ **降级**(症状已被 3.0 覆盖) |
224
+ | 6 | **缺口 5/6** 注释与实现对齐 + 2 个真死导出 | ★ 低 | 不变 |
225
+
226
+ > **顺序变更理由**:原顺序把「白板纪律」放最后,是因为它要引用前面做出来的 index/lint。
227
+ > 复核后确认**纪律本身不依赖 3/4**(它只要求模型"条件触发地维护白板"),
228
+ > 而它是唯一能**阻止白板继续腐烂**的一项 ⇒ 提前。
229
+
230
+ ---
231
+
232
+ ## 6. 实施纪律(沿用,不重复展开)
233
+
234
+ 1. 改前备份 `*.bak-YYYYMMDD-<tag>`;无 BOM;大文件分块写
235
+ 2. 改后 `node --check`(`lib/index.js` 是 **CRLF** 大文件,`edit` 的 `replace_all` 要核命中数)
236
+ 3. 全量回归基线:**PASS 106 / FAIL 0 / TIMEOUT 0**(`node tools/run-smoke.mjs`,3.0 发版后实测 182.8s)
237
+ 4. 每个缺口配**可失败断言** + **变异演示真红**
238
+ 5. 代码留 **pre 线**,未获明确同意不 commit/push
239
+ 6. host 代码改完**只告知用户自行重启**,严禁 Stop/Start-Process
@@ -0,0 +1,130 @@
1
+ # T6 执行记录 — 代码能力 ↔ 模型 prompt 全量对齐 + DeepSeek Flow 可行性研究
2
+
3
+ > 日期:2026-09-20 · 触发:用户拍板「**全量补上,不然现在没有大模型的加持,这些代码都是死代码,什么都用不了**」
4
+ > 基线:改前全量回归 **PASS 134 / FAIL 0 / TIMEOUT 0**;改后 **PASS 134 / FAIL 0 / TIMEOUT 0(139.5s)**
5
+
6
+ ---
7
+
8
+ ## 一、DeepSeek Flow 可行性研究结论(用户指定站点)
9
+
10
+ **站点**:https://deepseekflow.kanghelyu.org/ · **仓库**:https://github.com/kanghelyu/dsh-deepseek-flow · **许可**:MIT(§License 确认)· **版本**:npm 0.4.2 / 站点标 v0.3.17
11
+
12
+ ### 它是什么(实测抓取)
13
+
14
+ | 维度 | 实测内容 |
15
+ |---|---|
16
+ | 定位 | **可视化工作流编辑器** —— 官网原文「DeepSeek Flow 是编辑器,而不是工作流运行器」 |
17
+ | 事实来源 | 一份 `WORKFLOW.md` + 每步一个 `STEP.md`,Markdown 为唯一 source of truth |
18
+ | 画布 | 节点/连线/分支/依赖,可缩放拖拽;画布与 Markdown **双向同步** |
19
+ | 逻辑门 | **8 类**:IF/ELSE · AND · OR · NOT · NAND · NOR · XOR · XNOR(`data.gateType`) |
20
+ | 谓词 | 仅 `truthy` / `falsy` / `nonEmpty` —— **严禁自然语言条件**,语义判断须上游 Agent 步骤输出 JSON 布尔 |
21
+ | 拓扑事务 | 本地校验 → Session 审查 → 二次校验 → **原子保存**(新 revision,过期拒绝) |
22
+ | 隔离 | **per-session**:每个 Harness session 各持自己的工作流 |
23
+ | 模型工具 | `flow_create` / `flow_read` / `flow_put` / `flow_finalize_canvas` 等,附 `skills/deepseek-flow/SKILL.md` |
24
+ | 技术栈 | ESM + `zod` + `@deepseek-ai/dsh-typert-protocol`;client 注入 4 个 DSH client 包;`platform: web` |
25
+ | 主题 | 跟随 Harness 明暗 + 界面语言(中/EN 完整覆盖) |
26
+ | 测试 | 官方称 **75** 条自动化测试 |
27
+
28
+ ### 结论:**形态不同,不能直接替换看板;但三条架构可移植**
29
+
30
+ | # | 可移植点 | 为什么对我们有价值 | 风险 |
31
+ |---|---|---|---|
32
+ | **F-1** | **Markdown 为唯一事实源 + 画布双向同步** | 我们的白板/账本本来就是 Markdown;看板是**只读投影**,模型改文件、面板跟着变,与它的范式一致 | 低 —— 我们已是这个架构 |
33
+ | **F-2** | **待审草稿 → Session 审查 → 原子保存** | 正好解决用户痛点:模型改白板**不静默落盘**,先成草稿,再由 Session 审,带 revision 防并发覆盖 | 中 —— 需引入 revision 概念 |
34
+ | **F-3** | **`SKILL.md` 随插件分发、注册后自动加载** | 与 T4 的 `memory_procedure_pre` + skill 导出层方向一致,可参考其 frontmatter 与工具命名规范 | 低 |
35
+ | **F-4** | **8 类确定性逻辑门** | ⚠️ **不适用** —— 我们的看板是**状态展示**不是**流程编排**;硬套会引入无意义的布尔语义 | —— |
36
+
37
+ ### 判定(一句话)
38
+
39
+ **不能换掉看板,但可以吸收「草稿→审查→原子保存」这一条改造看板的写侧。** 用户说「自由发挥空间还挺多的」成立:看板目前是纯只读投影,写侧完全靠模型直接改文件;Flow 的拓扑事务模型正好是补这块的现成参照。**是否要做,待用户拍板**(属前端重构范畴,触及 §8 决策点)。
40
+
41
+ ---
42
+
43
+ ## 二、T6 主体:全量补齐模型侧缺口(已落地)
44
+
45
+ ### 改了什么(7 处,全部在 pre 线)
46
+
47
+ | # | 位置 | 内容 | 性质 |
48
+ |---|---|---|---|
49
+ | 1 | `lib/index.js` `applyNoteStatusPre` | 签名与 JSDoc 加 `retract` / `reason` | 新能力 |
50
+ | 2 | `lib/index.js` `applyNoteStatusPre` 循环体 | **新增 `plan.retract` 处理循环**(调 `applyStatusToRecordPre(text, id, 'retracted', {reason})`) | 🔴 A1 通道打通 |
51
+ | 3 | `lib/index.js` `memory_note_pre` 调用侧 | 透传 `retract` + `retractReason`;门扩为三门 | 接线 |
52
+ | 4 | `lib/index.js` `memory_note_pre` 参数表 | 新增 `retract` / `retractReason` 两个参数,**含与 supersedes 的分工说明** | 模型可见 |
53
+ | 5 | `lib/index.js` `memory_note_pre` 主描述 | 补「结论失效时的两个通道(不要混用)」+ 看板 tag 说明 | 模型可见 |
54
+ | 6 | `lib/index.js` `renderMemoryStatic` | **新增「看板分列(5 条泳道 + tag 命名约定)」整条注入** | 🔴 A5/A6 打通 |
55
+ | 7 | `lib/index.js` + `lib/client.js` 铭文 | 第④条改为「结论失效/被取代」(含 retract 分工);**新增第⑤条「看板落列」** | 收尾提醒 |
56
+
57
+ ### 关键设计决策
58
+
59
+ **`retracted` 与 `superseded` 严格分工**(写进工具描述,模型据此选):
60
+
61
+ - `supersedes` = 被**更新的结论取代**(有后继,可追 `mem_id`)
62
+ - `retract` = **当时就做错了、直接撤回**(无后继,"错误本身"就是教训)
63
+ - `restore` = 撤销通道(标错了改回 `current`)
64
+
65
+ 依据:用户 2026-09-18 裁定「**retracted 不是垃圾,是教训,不过滤只备注**」。此前 `note-status-pre.js` 三态齐备、`renderStatusLinePre` 也支持渲染 retracted、L0 侧还有 `L0_RETRACTED_MARK_PRE_V1='⚠已撤回'` 的呈现后缀,**但工具层只有 supersedes 一个通道且硬编码映射到 superseded** ⇒ 教训通路模型根本写不了。
66
+
67
+ **为什么铭文上限从 800 放宽到 1200**:新增的 retract 分工与看板 tag 属**必需内容**(模型不知道则对应功能永不触发)。实测约 950 字符 ≈ 475 token = `injectBudgetChars`(8000) 的 12%;且本段走 `systemPrompt.context()`(**不击穿前缀缓存**),内容不变时 `project()` 去重不加发。1200 是**防继续膨胀的护栏**,不是精确预算。
68
+
69
+ ---
70
+
71
+ ## 三、验收(全部实跑,非纸面)
72
+
73
+ | 项 | 结果 |
74
+ |---|---|
75
+ | `node --check`(index.js / client.js) | ✅ 通过 |
76
+ | G4 套件 | ✅ **10 / 10**(新增 G4-6c / G4-6d 两条接线守卫) |
77
+ | G3 套件 | ✅ **29 / 29**(门锁同步并加严) |
78
+ | note-status 套件 | ✅ **74 / 74** |
79
+ | **变异验证** | ✅ **4 / 4 全部真红**(`artifacts/_mutate-t6.mjs`) |
80
+ | 字节一致还原 | ✅ SHA256 `DF32BABA…A8835` |
81
+ | **全量回归** | ✅ **PASS 134 / FAIL 0 / TIMEOUT 0(139.5s)** |
82
+
83
+ ### 变异验证明细(这是本轮最有价值的部分)
84
+
85
+ | 靶点 | 结果 |
86
+ |---|---|
87
+ | 删掉 `plan.retract` 处理循环 | ✅ 真红 |
88
+ | 删掉调用侧 `args.retract` 透传 | ✅ 真红 |
89
+ | 删掉工具参数 `retract` 定义 | ✅ 真红 |
90
+ | 删掉静态纪律整条看板 tag 语句 | ✅ 真红 |
91
+
92
+ **★ 过程中抓到一个真实缺陷**:G4-6 首版**只断言铭文文本含 `retract` 字样**,第一次变异(删掉 `plan.retract` 循环)时套件**仍然全绿** —— 典型「**断言太弱、路径未覆盖**」。据此**新增 G4-6c**(断言 retract 通道三处齐备:参数/描述/处理循环/调用侧透传)与 **G4-6d**(断言看板 tag 真在 `renderMemoryStatic` 函数体内,而非文件别处的同名注释)。
93
+
94
+ **★ 另一个教训**:变异4 首版**靶点选错**(只删段中一句,tag 名仍在续行 ⇒ 假绿)。判定为**靶点无效**而非守卫失效,改为正则整段删除后真红。⇒ **变异假绿要先怀疑靶点,再怀疑守卫。**
95
+
96
+ ---
97
+
98
+ ## 四、顺带修的两处硬锁(属合法扩展,锁同步加严)
99
+
100
+ | 套件 | 原锁 | 处置 |
101
+ |---|---|---|
102
+ | `smoke-test-note-status-pre.mjs` #7-5 | `!IDX.includes('note-status-pre.js')` —— 用**弱子串**检测"是否已接线" | **误报**:我注释里写了文件名即触发。真实接线走 `note-status-apply-pre.js`。改注释措辞消除,**锁语义未动** |
103
+ | `smoke-test-g3-note-status-wire-pre.mjs` #2-2 | `/if \(sup\.length \|\| res\.length\)/` 字面锁两门 | 门扩为三门是**合法扩展**;锁同步为三门,并**加严**:逐个断言 `sup`/`ret`/`res` 都在门里 |
104
+
105
+ ---
106
+
107
+ ## 五、B 类剩余缺口(**尚未补**,待拍板)
108
+
109
+ 以下 11 条已在前轮 `PROMPT-GAP-AUDIT-20260920.md` 列出,本轮**只补了 B1/B2 相关的铭文部分**,其余仍在:
110
+
111
+ | # | 缺什么 | 影响 |
112
+ |---|---|---|
113
+ | B1 | 白板/账本**两套四段措辞**(`:5726` vs `:570`/`:3658`)| 模型可能当同一件事 |
114
+ | B3 | procedure 缺 `successCriteria` **结构上永不晋升**(T4 硬事实,未在描述里点明) | 模型可能写空判据 |
115
+ | B4 | R1 四条可读性判据仅在文档 | 模型不知何为"可读" |
116
+ | B5-B11 | 各工具参数/时机的描述不全(`date` 补写过去 / 容量整理行为 / `expand` 组合语义 / `days` 阈值 / `status`+`reflect` 时机 / `external` 只记指针 / 自动沉淀 vs 手动 consolidate 边界) | 模型用错或不用 |
117
+
118
+ **A 类剩余**(模型零入口,需新增工具):
119
+
120
+ - **A2** `fact-store-pre.js` 9 个能力(含 `isExpired` 过期、`resolveConflict` 冲突、`revokeBySource`)—— **零 `defineTool`**
121
+ - **A3** episodic 写入 —— 仅宿主自动(`index.js:7411`)
122
+ - **A4** fact 5 个枚举(epistemic_status / scope / source_kind / source_class / trend)无语义说明
123
+
124
+ ---
125
+
126
+ ## 六、需用户动作
127
+
128
+ 1. **重启 DSH 宿主** —— 本轮改了 `lib/index.js` + `lib/client.js`,不重启不生效(**宿主只能用户手动重启,AI 不得执行**)
129
+ 2. **拍板是否继续补 B 类剩余 + A2/A3/A4**
130
+ 3. **拍板 DeepSeek Flow 的 F-2(草稿→审查→原子保存)是否纳入前端重构**
@@ -0,0 +1,146 @@
1
+ # 用户端「效果统计与回传」设计(2026-09-18 立项稿)
2
+
3
+ > 状态:**设计定稿,实现后置**(排在「Surface 前端重构之后、S 层之前」)
4
+ > 用户原话:「我希望把这个统计功能扩展一下,也给用户们装上,让用户收集一下这个插件的效果,
5
+ > 比如有效性。用户可以选择是否通过 GitHub 或者通过 QQ 群发给我」
6
+
7
+ ---
8
+
9
+ ## 0. 一句话
10
+
11
+ **把已有的观测面(degrade 台账 + 配额探针 + tier0Meta)派生成一份「效果报告」,
12
+ 用户在本地看一眼、自己决定要不要发回来。插件永远不主动联网。**
13
+
14
+ ---
15
+
16
+ ## 1. 三条硬红线(不可协商)
17
+
18
+ | # | 红线 | 理由 |
19
+ |---|---|---|
20
+ | **R1** | **插件自身绝不发起网络请求** | 这是**记忆插件**,数据面本身就是隐私面。回传只能是"用户手动搬运",不能是"插件悄悄上报" |
21
+ | **R2** | **报告只含聚合量,绝不含内容** | 禁止出现:记忆正文、文件路径、查询词、会话 ID、模型名、分钟级时间戳。只允许:计数 / 比例 / **分桶** / 布尔 / schema 版本 |
22
+ | **R3** | **发送永远是显式动作** | 本地生成报告 = 随时可做(纯派生,无副作用);**发出去** = 用户点按钮/复制粘贴,且事先能看到全文 |
23
+
24
+ > **为什么这么严**:本仓已发布 npm 3.0.0,有真实用户与年下载量。
25
+ > 普通插件的遥测泄漏是"行为数据",记忆插件的遥测泄漏是**用户自己写下的东西**。量级不同。
26
+
27
+ ---
28
+
29
+ ## 2. 与既有观测面的关系(守 S10.4)
30
+
31
+ **不新建状态源** —— 报告是**纯函数派生**,数据全部来自已经存在的东西:
32
+
33
+ | 数据 | 来源 | 现状 |
34
+ |---|---|---|
35
+ | 降级频次/种类 | `degrade-pre/latest.json` 的 degrade 段 | ✅ R1–R3 已有 |
36
+ | 配额判定四档、各层丢弃率 | 同文件的 `quota` 段 | ✅ R4 第 2 批已有 |
37
+ | 注入侧 items/candidates/dropped/perLayer/tokens | `tier0Meta` | ✅ 已有 |
38
+ | 配置开关 | 配置快照,**只取布尔/枚举,不取值** | ✅ 已有 |
39
+ | 召回层分布、compaction 原因分布 | — | ⚠️ **需新增少量计数器** |
40
+
41
+ ### 2.1 唯一的新增状态(有界计数器)
42
+
43
+ 为回答「有效性」必须有的、目前**没有**的计数:
44
+
45
+ ```
46
+ recall: calls / withHits / emptyRate / layerMix{结论层,流水层,其他}
47
+ injection: tokensPerTurn(均值) / droppedPerTurn(均值) / perLayerDropRate
48
+ compaction: count / reasons{成功,no-removable,still-over-capacity} / recoveredChars
49
+ scale: daysInstalled / sessions / entries / logLines ← 全部**分桶**
50
+ ```
51
+
52
+ 全部落进**同一个有界计数器对象**(复用 `lib/degrade-pre.js`,与 `quota` 并列),
53
+ 仍不新建文件、不新建配置键。**`layerMix` 是重点**:它直接回答
54
+ 「R4-B 的分层展示有没有让结论层真的浮出来」。
55
+
56
+ ---
57
+
58
+ ## 3. 报告形态
59
+
60
+ ```jsonc
61
+ {
62
+ "reportSchemaVersion": "am_effect_report_v1", // 必需:作者要能解析异构报告
63
+ "generatedAt": "2026-09-18", // ★ 只到天
64
+ "plugin": { "version": "3.1.0", "dshVersion": "x.y.z" }, // 版本必需,否则无法归因
65
+
66
+ "scale": { // ★ 全部分桶,绝不给精确值(防指纹)
67
+ "daysInstalled": "30-90",
68
+ "sessions": "50-200",
69
+ "entries": "100-500",
70
+ "logLines": "500-2000"
71
+ },
72
+
73
+ "features": { // 只有布尔/枚举,没有具体数值
74
+ "boardMode": "graph",
75
+ "handoffEnabled": true,
76
+ "semanticEngine": "js",
77
+ "pythonBackendEnabled": false
78
+ },
79
+
80
+ "effectiveness": {
81
+ "recall": { "calls": 412, "withHits": 380, "emptyRate": 0.078,
82
+ "layerMix": { "project": 0.31, "log": 0.52, "whiteboard": 0.09, "other": 0.08 } },
83
+ "injection": { "tokensPerTurnAvg": 812, "droppedPerTurnAvg": 3.4,
84
+ "perLayerDropRate": { "log": 0.61, "reflection": 0.12 } },
85
+ "compaction": { "count": 7, "reasons": { "ok": 6, "no-removable": 1 }, "recoveredChars": 18240 }
86
+ },
87
+
88
+ "health": {
89
+ "degradeCounts": { "semantic-arm": 2, "tier0-catalog": 0 },
90
+ "quotaVerdict": "balanced",
91
+ "degradedArms": ["c3(python)→c2(js)"]
92
+ },
93
+
94
+ "userReport": { // ★★ 主观部分 —— 这才是「有效性」的核心
95
+ "rating": null, // 1–5,默认空,用户填
96
+ "helpedMost": "", // 自由文本,默认空
97
+ "broke": "" // 遇到的问题,默认空
98
+ }
99
+ }
100
+ ```
101
+
102
+ **关键设计**:`userReport` **默认全空**。有效性由**用户说**,不由插件猜 ——
103
+ 插件只提供客观事实(计数、分布、健康度),主观评价留给填写。
104
+ 这也顺带避免了"用行为指标冒充有效性"的构念效度问题。
105
+
106
+ ---
107
+
108
+ ## 4. 两条回传通道
109
+
110
+ ### 4.1 GitHub
111
+ - 面板按钮「生成报告」→ 展示全文 → 「复制并打开 Issue」
112
+ - 打开预填 URL:
113
+ `https://github.com/Aik358/dsh-auto-memory/issues/new?title=<enc>&body=<enc>`
114
+ - **本机凭据只有 `pull: true` 权限**,所以这条路**只能由用户点** —— 与设计天然一致。
115
+
116
+ ### 4.2 QQ 群
117
+ - 同一份文本,前面附一段可删的说明模板,用户复制后自行粘贴。
118
+
119
+ ### 4.3 附带:AI 侧工具
120
+ 提供 `memory_telemetry_report`(无参)——用户对 AI 说「生成效果报告」即可产出,
121
+ 比翻面板更顺手;输出与面板完全同源(同一派生函数),**不做第二套渲染**(沿用 M1 的纪律)。
122
+
123
+ ---
124
+
125
+ ## 5. 为什么建议「设计现在写、实现最后做」
126
+
127
+ 1. **UI 要长在 `lib/client.js` 上,而你正要重构 Surface 前端** —— 今晚做按钮,重构后大概率返工。
128
+ 2. **隐私面需要冷静设计** —— 凌晨赶工最容易漏字段;这条红线漏一次就无法挽回。
129
+ 3. **依赖今晚的收尾** —— 要统计的「层分布」「compaction 原因分布」正是 R4/G3 正在改的地方,
130
+ 等它们定稿,计数器不用改两遍。
131
+ 4. **设计文档现在写成本≈0**,且能把今天的讨论结论固定下来不丢。
132
+
133
+ → **落位:Surface 前端重构之后、S 层之前**(正好是用户说的「万事俱备」那一刻)。
134
+
135
+ ---
136
+
137
+ ## 6. ⚠️ 若这批数据将来用于毕业论文,须额外注意
138
+
139
+ 用户论文方向与本系统强相关(`docs/internal/THESIS-OUTLINE-20260918.md`)。
140
+ **真实用户效果数据对论文极有价值**(正好补上"无对外 baseline / 无真实用户数据"的缺口),
141
+ 但因此**同意文本的措辞就变成研究伦理问题**,不是产品文案问题:
142
+
143
+ - 报告页需明确写:数据用于什么、谁会看到、是否匿名、能否撤回
144
+ - 分桶设计本身是良好的去标识化,但 `userReport` 的自由文本**可能含个人信息**
145
+ → 该字段必须由用户**逐字确认**后再发,且提示"请勿填写隐私内容"
146
+ - 若要做正式研究,需要走伦理审查(见论文缺口分析的"伦理许可"项)
@@ -0,0 +1,89 @@
1
+ # 毕业论文方向缺口分析 · dsh-auto-memory / dsh-anchored-monitor
2
+
3
+ > 日期:2026-09-18 | 视角:语言科学与数据分析(主修)+ 人工智能与数据分析(第二专业)
4
+ > 结论摘要:代码与工程严谨度已经够用;缺口集中在**研究问题学术化、外部对照、消融、时间维度、测量工具信度**五处。
5
+
6
+ ## 一、可当论文资产直接用的部分(已具备)
7
+
8
+ | 资产 | 现状证据 | 论文中的角色 |
9
+ | --- | --- | --- |
10
+ | 可运行系统 | lib/ 120 文件,`lib/index.js` 10389 行;npm `@a9i5k4/dsh-auto-memory` v3.0.0 已发布 | Method / System 章节;部署真实性 |
11
+ | 真实用户外部效度 | 年下载 10,900;GitHub `Aik358/dsh-auto-memory` | 区别于"玩具原型"的说服力 |
12
+ | 统计纪律雏形 | M7:69 条人工金标 held-out、pairId 聚类 bootstrap B=2000、预注册式冻结计划、零重调参 | 统计章节的骨架 |
13
+ | 参照系统语料 | `.research/` cognee / Memori / supermemory;`.research-mirix/MIRIX-main` | Related Work 与 baseline 来源 |
14
+ | 锚定线理论雏形 | `E:\dsh_dynamic_adjust\project_feasibility_report.md`(620 行):三波段 spec 0-0.19 / mixed 0.2-0.49 / react 0.5-1.0、相变、路径承诺、措辞实验 | **最适合当论文主轴**:这是唯一有可证伪理论味的部分 |
15
+ | 纵向日志基础设施 | 锚定监控 JSONL 事件流、每日工作日志、会话转写 | 时间维度实验的数据来源 |
16
+
17
+ ## 二、缺口清单(按评审最可能扣分的顺序)
18
+
19
+ ### 缺口 1 · 研究问题仍是工程目标,不是可证伪假设
20
+ "记忆不断线""跨窗口续命"是产品目标。论文需要 RQ / H0 / H1 + 自变量·因变量·控制变量表 + 什么结果会推翻假设。
21
+
22
+ ### 缺口 2 · 没有对外可比的 baseline
23
+ 现有指标全部是自比(3.0 vs 2.5.3)。缺:与 ≥2 个公开系统(Mem0 / cognee / MIRIX / 无记忆裸模型)在同一任务集上的对照,并报告效应量而非仅 p 值。
24
+
25
+ ### 缺口 3 · 没有消融实验
26
+ 分层(Tier-0/1/2)、唤回、沉淀、白板、账本是一整套,无法归因到组件。优势是开关已全部在配置里,可直接跑 one-at-a-time 或 2^k 设计。
27
+
28
+ ### 缺口 4 · 没有时间维度 / 纵向曲线
29
+ 单轮或单会话测量测不到记忆系统的核心价值。缺:跨会话、跨天、上下文窗口填充过程中的纵向曲线(≥2 周、≥N 会话)。JSONL 已在写,但从未被当成数据集分析。
30
+
31
+ ### 缺口 5 · 测量工具本身没有被验证(语言科学的主场)
32
+ we / let's / let me 目前是正则词频计数——没有标注一致性、没有信度报告、没有反例验证、没有词表敏感性分析。
33
+ 缺:人工标注子集 + Krippendorff α 或 Cohen κ + 词表扰动实验。
34
+ **这一条是把"波段"从经验阈值升级为经构念效度检验的测量工具的关键**,也正是语言科学训练最能发挥的地方。
35
+
36
+ ### 缺口 6 · 统计推断不完整
37
+ 已有 bootstrap CI,但缺:多重比较校正(Holm/BH)、效应量(Cliff's δ / Cohen's d)、正式预注册登记、失败案例定性分析。
38
+
39
+ ### 缺口 7 · 伦理与合规
40
+ - 若含人类被试(问卷 / 可用性测试)→ 需要伦理审查(IRB/HREC)批件;
41
+ - 若只用自用日志 → 必须写明数据来源、脱敏方式、LLM 使用声明;
42
+ - 第三方仓库许可必须逐个核对(cognee / MIRIX / Memori / supermemory 的 license 决定能否作为 baseline 分发)。
43
+
44
+ ### 缺口 8 · 学术写作要件
45
+ Related Work 目前是散装仓库而非系统综述;缺论文骨架(Intro / Related Work / Method / Experiments / Results / Discussion / Limitations / Ethics Statement)与可复现 artifact 包(代码 + 数据 + 一键复现脚本)。
46
+
47
+ ## 三、三个候选研究问题(按两个专业的契合度排序)
48
+
49
+ ### RQ-A(推荐主轴)· 思维链语域指纹的构念效度与预测力
50
+ - H1:人称/施事标记(we 型 vs let me 型)构成稳定语域,而非随机波动。
51
+ - H2:语域可预测任务结果,且时间上先于结果(需时序检验,排除"高分导致 we"的反向解释)。
52
+ - 方法:会话语料 → 人工标注 → 词频与句法特征 → 变点检测 / 分段 → 预测建模(交叉验证)。
53
+ - 契合:语言科学(语域、语用、人称指称、指称链)+ 数据分析(变点检测、混合效应模型、交叉验证)。
54
+
55
+ ### RQ-B · 记忆注入措辞的言语行为效应
56
+ - 假设:指令类措辞(命令式)与断言/建议类措辞(参考式)对模型行为改变率存在显著差异。
57
+ - 设计:自变量 = 措辞类型(3 水平:命令 / 建议 / 中性陈述);因变量 = 行为改变率、命中率、返工次数、token 成本;拉丁方平衡顺序;混合效应模型。
58
+ - 已有基础:2026-09-08 记录的 A/B 分级实验设计(弱提示 vs 明确指令式)。
59
+ - 契合:语用学(Searle 言语行为理论)+ 实验设计统计。
60
+
61
+ ### RQ-C(最保守,创新性最低)· 分层记忆注入的成本-收益曲线
62
+ - 假设:注入预算是边际收益递减的,存在最优点。
63
+ - 方法:扫描注入预算参数,画 quality–token 曲线。
64
+
65
+ ## 四、时间线(对齐已有课程节点)
66
+
67
+ | 时间 | 动作 |
68
+ | --- | --- |
69
+ | 10 月上旬 | 定 RQ 与导师;写 1 页预注册(假设、判据、止损线) |
70
+ | 10–11 月 | 数据采集启动:锚定监控与自用日志持续累积;适配 2 个公开 baseline |
71
+ | 12–1 月 | 消融 + baseline 跑完;人工标注子集完成,出信度报告 |
72
+ | 2 月 | 分析、作图、写作主体 |
73
+ | 3 月 | 修订、artifact 打包、提交 |
74
+
75
+ ## 五、验收口径("够了"的定义)
76
+
77
+ 1. 有一个可证伪假设,且写明什么结果会推翻它;
78
+ 2. ≥2 个外部 baseline 的同任务集对照;
79
+ 3. 一张消融表(逐组件增益);
80
+ 4. 一份标注信度报告(α 或 κ);
81
+ 5. 有效应量与置信区间,不只 p 值;
82
+ 6. 一键复现的 artifact(代码 + 数据 + 脚本)。
83
+
84
+ ## 六、最小下一步(本周可执行)
85
+
86
+ 1. 把 `project_feasibility_report.md` 1.5 节的措辞实验扩写成 RQ-B 的正式假设与变量表;
87
+ 2. 从现有会话 JSONL 中抽 200 条 reasoning 块,人工标注 we / let me 与"是否计划式",算一次 κ;
88
+ 3. 核 cognee / MIRIX / Memori / supermemory 的 license,确定哪个能当 baseline。
89
+