@a9i5k4/dsh-auto-memory 2.2.2 → 2.2.4

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 (113) hide show
  1. package/docs/A3-RISK-ASSESSMENT-20260830.md +61 -0
  2. package/docs/COT-WATCH-RFC.md +88 -0
  3. package/docs/DUAL-TIER-RATIFICATION-PROMPT.md +71 -0
  4. package/docs/HANDOFF-HARNESS.md +78 -0
  5. package/docs/HANDOFF-M8-M9-M10.md +203 -0
  6. package/docs/HY4-TOUR-LOGO-HANDOFF-2.md +60 -0
  7. package/docs/HY4-TOUR-LOGO-HANDOFF.md +100 -0
  8. package/docs/ISSUE-REPLY-UNATTENDED.md +31 -0
  9. package/docs/K3-LANDING-HANDOFF.md +76 -0
  10. package/docs/LANDING-OUTLINE.md +85 -0
  11. package/docs/M-CM-PLAN.md +166 -0
  12. package/docs/M-CM-STATE.md +64 -0
  13. package/docs/M3B-CONTRACT.md +461 -0
  14. package/docs/M4-CONTRACT.md +1207 -0
  15. package/docs/M5-CONTRACT.md +383 -0
  16. package/docs/M6-CONTRACT.md +342 -0
  17. package/docs/M7-ACTIVATION-ALGO-REFERENCES.md +104 -0
  18. package/docs/M7-ACTIVATION-CALIBRATION.md +144 -0
  19. package/docs/M7-ACTIVATION-FEATURE-AGENT-PROMPT.md +79 -0
  20. package/docs/M7-ACTIVATION-FEATURE-CALIBRATION.md +58 -0
  21. package/docs/M7-ACTIVATION-FEATURE-DESIGN.md +124 -0
  22. package/docs/M7-ACTIVATION-V2-CONTROLLED-SHADOW.md +127 -0
  23. package/docs/M7-ACTIVATION-V2-HANDOFF.md +132 -0
  24. package/docs/M7-ACTIVATION-V2-HOLDEDOUT-EVAL.md +94 -0
  25. package/docs/M7-ACTIVATION-V2-HOLDEDOUT-SHADOW.md +60 -0
  26. package/docs/M7-ACTIVATION-V2-LIVE-SHADOW-PLAN.md +85 -0
  27. package/docs/M7-ACTIVATION-V2-PAPER.md +303 -0
  28. package/docs/M7-AGENT-HANDOFF-PROMPT.md +63 -0
  29. package/docs/M7-ALGORITHM-DECISION.md +174 -0
  30. package/docs/M7-AUTONOMOUS-STATE.md +252 -0
  31. package/docs/M7-BENCHMARK-PLAN.md +78 -0
  32. package/docs/M7-CLOSED-LOOP-WIRING.md +110 -0
  33. package/docs/M7-EMBEDDING-BENCHMARK.md +164 -0
  34. package/docs/M7-INTERFACE-DIGEST.md +144 -0
  35. package/docs/M7-LABEL-REVIEW-REPORT.md +107 -0
  36. package/docs/M7-LEXICAL-TUNING.md +58 -0
  37. package/docs/M7-LIVE-SHADOW-SCRIPT.md +30 -0
  38. package/docs/M7-PYTHON-IMPLEMENTATION-REPORT.md +92 -0
  39. package/docs/M7-RESEARCH-PAPER.md +442 -0
  40. package/docs/M7-TASKSET-DISPATCH.md +213 -0
  41. package/docs/M8-MEMORY-HUB.md +105 -0
  42. package/docs/MEMORY-SYSTEMS-SURVEY-2026-09.md +166 -0
  43. package/docs/NEXT-MAJOR-PROMO.md +363 -0
  44. package/docs/NEXT-MAJOR-README-DRAFT.zh.md +205 -0
  45. package/docs/NEXT-MAJOR-VISION.md +112 -0
  46. package/docs/PREVIEW-NEXT-STEPS.md +229 -0
  47. package/docs/PROJECT-FREEZE-AND-ROADMAP.md +200 -0
  48. package/docs/PROMO-STYLE-GUIDE.md +84 -0
  49. package/docs/PYTHON-SIDECAR-CONTRACT.md +539 -0
  50. package/docs/R2-POLICY-PLUMBING-BLUEPRINT.md +99 -0
  51. package/docs/RELEASE-READINESS-PLAN.md +91 -0
  52. package/docs/RELEASE-SEMANTIC-OPTION.md +181 -0
  53. package/docs/S1-SCIENTIFIC-RIGOR.md +269 -0
  54. package/docs/S2-DEEP-ABSORPTION.md +259 -0
  55. package/docs/S3-TARGET-ARCHITECTURE.md +172 -0
  56. package/docs/USER-GUIDE.zh-CN.md +283 -0
  57. package/docs/banner.jpg +0 -0
  58. package/docs/implementation-handoff-context.zh-CN.md +429 -0
  59. package/docs/landing/index.html +1745 -0
  60. package/docs/paper-figures/fig1_model_quality.png +0 -0
  61. package/docs/paper-figures/fig2_chunk_reversal.png +0 -0
  62. package/docs/paper-figures/fig3_latency.png +0 -0
  63. package/docs/paper-figures/fig4_hybrid.png +0 -0
  64. package/docs/paper-figures/fig5_rerank_tradeoff.png +0 -0
  65. package/docs/paper-figures/fig6_cluster_sweep.png +0 -0
  66. package/docs/paper-figures/fig7_resource.png +0 -0
  67. package/docs/paper-figures-v2/fig1_echo_trap.png +0 -0
  68. package/docs/paper-figures-v2/fig2_pr_paths.png +0 -0
  69. package/docs/paper-figures-v2/fig3_coefficients.png +0 -0
  70. package/docs/paper-figures-v2/fig4_calibration.png +0 -0
  71. package/docs/paper-figures-v2/fig5_order_ablation.png +0 -0
  72. package/docs/paper-figures-v2/fig6_containment.png +0 -0
  73. package/docs/proactive-associative-memory-architecture.html +659 -0
  74. package/docs/proactive-associative-memory-meta-code.html +1058 -0
  75. package/docs/proactive-associative-memory-research-report.zh-CN.md +685 -0
  76. package/docs/proactive-associative-memory-system-map.html +1580 -0
  77. package/docs/promo/first-run-guide.html +397 -0
  78. package/docs/promo/homepage.html +384 -0
  79. package/docs/screenshots/calendar-en.png +0 -0
  80. package/docs/screenshots/calendar-zh.png +0 -0
  81. package/docs/screenshots/connect-en.png +0 -0
  82. package/docs/screenshots/connect-zh.png +0 -0
  83. package/docs/screenshots/main-connect-en.png +0 -0
  84. package/docs/screenshots/main-connect-zh.png +0 -0
  85. package/docs/screenshots/overview-en.png +0 -0
  86. package/docs/screenshots/overview-zh.png +0 -0
  87. package/docs/screenshots/panel-hub.png +0 -0
  88. package/docs/screenshots/panel-overview.png +0 -0
  89. package/docs/screenshots/panel-refine.png +0 -0
  90. package/docs/screenshots/promo/promo-0-banner-v2.png +0 -0
  91. package/docs/screenshots/promo/promo-1-hero.png +0 -0
  92. package/docs/screenshots/promo/promo-2-tour.png +0 -0
  93. package/docs/screenshots/promo/promo-3-recall.png +0 -0
  94. package/docs/screenshots/promo/promo-4-unattended.png +0 -0
  95. package/docs/screenshots/promo/promo-5-external.png +0 -0
  96. package/docs/screenshots/promo/promo-6-greeting.png +0 -0
  97. package/docs/screenshots/reflections-en.png +0 -0
  98. package/docs/screenshots/search-zh.png +0 -0
  99. package/docs/screenshots/settings-2-zh.png +0 -0
  100. package/docs/screenshots/settings-debug-zh.png +0 -0
  101. package/docs/screenshots/settings-en.png +0 -0
  102. package/docs/screenshots/settings-zh.png +0 -0
  103. package/docs/screenshots/tour-core.png +0 -0
  104. package/docs/screenshots/tour-external.png +0 -0
  105. package/docs/screenshots/tour-toggles.png +0 -0
  106. package/docs/screenshots/tour-welcome.png +0 -0
  107. package/docs/screenshots/workspace-map-zh.png +0 -0
  108. package/docs/social-preview.png +0 -0
  109. package/lib/client.js +277 -118
  110. package/lib/index.js +329 -60
  111. package/lib/subagent-gc.js +239 -0
  112. package/lib/water-window.js +88 -0
  113. package/package.json +2 -1
@@ -0,0 +1,429 @@
1
+ # dsh-auto-memory 主动联想记忆实施交接上下文
2
+
3
+ > 用途:将本文完整注入一个新的 DSH 编码会话,作为正式实现的起点。
4
+ >
5
+ > 工作区:D:\dsh-auto-memory
6
+ >
7
+ > DSH 原生实现只读参考:C:\Users\JH Z\AppData\Roaming\npm\node_modules\@deepseek-ai\dsh
8
+ >
9
+ > **2026-08-22 权威说明**:目标架构和实施进度以 `docs/proactive-associative-memory-system-map.html` 为准。本文第 8-13 节与第 14 节早期执行指令保留为历史记录;当前执行范围见 `docs/M4-CONTRACT.md`、第 14 节更新指令与 `docs/PREVIEW-NEXT-STEPS.md`。
10
+
11
+ ## 1. 你的任务
12
+
13
+ 在现有 dsh-auto-memory 插件上,分阶段实现“Host 侧主动联想记忆中间件”。
14
+
15
+ 目标不是让模型主动调用 memory_search,而是:
16
+
17
+ ~~~text
18
+ Host 观察用户消息、工具调用/结果、可见输出和生命周期事件
19
+ → 按 session 隔离形成滑动上下文
20
+ → 主动检索可能相关的记忆
21
+ → 经过排序、去重、预算、风险和版本校验
22
+ → 生成 MemoryPacket
23
+ → 在下一次 agent/pre-step 请求边界注入
24
+ → 根据工具结果和用户纠正更新证据
25
+ → 必要时把重复成功 Episode 固化为 Procedure candidate
26
+ ~~~
27
+
28
+ 不要一次实现全部架构。M0-R/T0/M1/M2/P-A/M3a/M3b/M4/M5/M6 已完成并 live;M7 完整契约与研究报告已冻结,当前交给外部 Agent 实施,具体以 M7-AGENT-HANDOFF-PROMPT.md 为准。
29
+
30
+ ## 2. 开始前必须阅读
31
+
32
+ 按顺序阅读:
33
+
34
+ 1. docs/M7-PYTHON-IMPLEMENTATION-REPORT.md
35
+ - M7 算法选型、开源来源、许可证、benchmark 与阶段计划。
36
+ 2. docs/PYTHON-SIDECAR-CONTRACT.md
37
+ - M7 wire、index_sync、生命周期、安全和验收门。
38
+ 3. docs/M7-AGENT-HANDOFF-PROMPT.md
39
+ - 外部 Agent 执行入口。
40
+ 4. docs/proactive-associative-memory-system-map.html
41
+ - 当前权威系统架构图。浏览器直接打开;点击模块可查看概览、实现、依据、Meta 代码和验收条件。
42
+ 5. M5/M6 live modules:context-bridge/evidence/context-host/activation-inbox/state/host。
43
+ - 读取真实 wire 与 delivery/seen 语义。
44
+ 6. lib/index.js 与 M0-M6 smoke tests。
45
+ - 当前 Web UI。
46
+ 5. smoke-test.mjs、smoke-test-reflect.mjs、smoke-test-external.mjs
47
+ - 现有测试和历史契约,注意部分断言可能已经陈旧,修改前先验证。
48
+ 6. package.json、cordis.patch.yml
49
+ - 插件入口和包结构。
50
+
51
+ 阅读后再检查 git status。工作区可能已有用户改动和研究文件;不得回退或覆盖无关改动。
52
+
53
+ ## 3. 当前已经完成的内容
54
+
55
+ M0-M6 已 live verified;M7 Python 尚未实现,以下交接文档和研究报告是外部 Agent 的实施依据。
56
+
57
+ - 正式研究报告:docs/proactive-associative-memory-research-report.zh-CN.md
58
+ - 交互式整体系统地图:docs/proactive-associative-memory-system-map.html
59
+ - 早期长版架构页面:docs/proactive-associative-memory-architecture.html
60
+ - 关键引用已审计:
61
+ - FLARE 正确编号为 arXiv:2305.06983。
62
+ - CoALA=2309.02427
63
+ - Generative Agents=2304.03442
64
+ - MemoryBank=2305.10250
65
+ - MemGPT=2310.08560
66
+ - A-MEM=2502.12110
67
+ - MemOS=2507.03724
68
+ - HippoRAG=2405.14831
69
+ - IRCoT=2212.10509
70
+ - DRAGIN=2403.10081
71
+ - Self-RAG=2310.11511
72
+ - Reflexion=2303.11366
73
+ - Voyager=2305.16291
74
+ - LongMemEval=2410.10813
75
+ - LoCoMo=2402.17753
76
+ - Proteus=2608.16844,仅作为“渐进式记忆激活”的概念启发,不得声称复现其具体算法。
77
+
78
+ 系统地图已经加入:
79
+
80
+ - 稳定 memoryId/anchorId
81
+ - MemoryFileIndex
82
+ - read 返回内容 coverage
83
+ - Access Evidence Graph:seen/read/cite/reuse/success/correction
84
+ - Procedure:sourceMemoryIds/sourceEpisodes + 跨 session 成功晋升门
85
+ - hesitation 滞回状态
86
+ - Python activation_request
87
+ - 渐进激活:index → hint → excerpt → checklist → resource → full
88
+ - JS Host 权威 Safety Gate
89
+
90
+ ## 4. 原生 DSH 已确认事实
91
+
92
+ 这些是从本机 DSH 0.1.0-rc.7 构建产物核对出的实现事实:
93
+
94
+ ### 4.1 请求链
95
+
96
+ ~~~text
97
+ claim
98
+ → systemPrompt.assemble
99
+ → runtime-context projection
100
+ → agent/pre-step waterfall
101
+ → step/start
102
+ → user/message append
103
+ → buildRequest
104
+ → LLM dispatch
105
+ ~~~
106
+
107
+ 已发出的模型请求不能被后续事件原地改写。主动记忆只能影响下一 step 或下一 turn。
108
+
109
+ ### 4.2 Session 与 Inbox
110
+
111
+ - Session 是 append-only、连续 seq、lossless JSON 的可重放事实源。
112
+ - Agent Inbox 是 durable projection,维护 next-turn 和 next-step。
113
+ - inject:写入 next-step,但不唤醒 Agent。
114
+ - steer:写入 next-step,并唤醒 Agent。
115
+ - Inbox 的 splice、claim、replace、remove 都有持久事件语义,不是临时内存。
116
+
117
+ ### 4.3 dsh-agent-instructions 可借鉴骨架
118
+
119
+ ~~~text
120
+ structured tools/result
121
+ → per-agent serial projection
122
+ → version/digest reconcile
123
+ → pending inbox
124
+ → pre-step await + compose
125
+ → next request
126
+ ~~~
127
+
128
+ 可借鉴:
129
+
130
+ - WeakMap<agent, Promise> 串行 projection。
131
+ - desired 已在 claimed 或 visible surface 时删除 pending。
132
+ - 相同 pending 复用,旧 pending replace,多余 pending remove。
133
+ - version + digest + visible/pending 状态共同去重。
134
+ - UTF-8 byte budget 与模型 token budget 分开。
135
+
136
+ ### 4.4 systemPrompt 与 Minimal
137
+
138
+ - systemPrompt section/context provider 是同步求值,不能在 section.text 内 await 异步检索。
139
+ - Minimal preset:complete: true、includeRuntimeContext: false,默认只含持久 bash 和 str_replace_editor,也不挂载 dsh-agent-instructions。
140
+ - complete persona 只限制 system-prompt sections,不等于禁止独立 user/message。
141
+ - 若未来覆盖 Minimal,需要 dsh-auto-memory 自己提供 pre-step user/message 路径;不能假设 Minimal 已有该能力。
142
+
143
+ ### 4.5 tools/result
144
+
145
+ - tools/result 是 frozen、emit-only、可重放的最终观察点。
146
+ - Host 应抽取最小标量快照,不能保留或序列化整个 DSH 内部对象。
147
+ - read 工具参数/返回结构需要 adapter,不要硬编码所有工具都拥有同一字段。
148
+
149
+ ## 5. 最终架构不变量
150
+
151
+ 所有实现必须持续满足:
152
+
153
+ 1. 跨 session 泄漏为零。
154
+ 2. 已发出的请求不原地改写,主动记忆只在下一请求边界生效。
155
+ 3. memoryId/anchorId 是稳定身份;行号仅是当前版本 UI/debug locator。
156
+ 4. sourceVersion + recordDigest 用于确认内容身份和新鲜度。
157
+ 5. open/read 不等于 citation;coverage=0 不形成记忆访问证据。
158
+ 6. Procedure 必须来自跨 session 的 reuse/success Episode,而不是 read 次数。
159
+ 7. activation_request 只是 Python 建议;最终由 JS Host 校验版本、scope、风险、冷却和 Procedure 状态。
160
+ 8. 过期或 contextVersion/indexVersion 不匹配的结果必须丢弃,不标记 delivered。
161
+ 9. 记忆是参考资料,不覆盖 system、developer 或当前用户指令。
162
+ 10. 未验证 Procedure 不自动执行;SSH、发布、部署、删除、支付等副作用默认需要用户确认。
163
+ 11. 检索中间态不写主 Session;只有实际注入的 packet 才进入可解释历史或审计。
164
+ 12. Python、embedding、图检索不可用时,基础插件与 JS 关键词回退仍可工作。
165
+
166
+ ## 6. 目标数据契约
167
+
168
+ 这些契约目前主要存在于系统地图的 Meta 代码中。里程碑 0 可以先在 JS 中建立最小版本,但不要过度设计。
169
+
170
+ ~~~ts
171
+ interface EventEnvelope {
172
+ schemaVersion: 1
173
+ sessionId: string
174
+ agentId: string
175
+ eventSeq: number
176
+ turn?: number
177
+ step?: number
178
+ sourceKind: 'user' | 'tool' | 'agent' | 'lifecycle'
179
+ callId?: string
180
+ rootCallId?: string
181
+ payloadDigest: string
182
+ }
183
+
184
+ interface SessionRuntime {
185
+ sessionId: string
186
+ contextVersion: number
187
+ eventCursor: number
188
+ pendingPacket?: MemoryPacket
189
+ cooldownUntilStep?: number
190
+ lastInjectionAt?: number
191
+ }
192
+
193
+ interface MemoryLocator {
194
+ memoryId: string
195
+ anchorId: string
196
+ sourceFile: string
197
+ sourceVersion: number
198
+ lineStart: number
199
+ lineEnd: number
200
+ byteStart: number
201
+ byteEnd: number
202
+ recordDigest: string
203
+ }
204
+
205
+ type AccessKind = 'seen' | 'read' | 'cite' | 'reuse' | 'success' | 'correction'
206
+
207
+ interface AccessEvidence {
208
+ kind: AccessKind
209
+ memoryId: string
210
+ anchorId?: string
211
+ sessionId: string
212
+ callId?: string
213
+ sourceFile?: string
214
+ coverage?: number
215
+ contextVersion: number
216
+ sourceVersion: number
217
+ recordDigest: string
218
+ timestamp: number
219
+ }
220
+
221
+ type ActivationLevel = 'index' | 'hint' | 'excerpt' | 'checklist' | 'resource' | 'full'
222
+ ~~~
223
+
224
+ 当前阶段不需要一次把所有接口正式导出,也不要引入 TypeScript 构建链;可以继续使用现有 ESM JavaScript,并用清晰的 JSDoc typedef 或内聚的小类表达。
225
+
226
+ ## 7. 最终完整路线,但本轮不要全部实施
227
+
228
+ ~~~text
229
+ M0 基线开关与数据契约
230
+ M1 SessionRuntime / per-agent isolation
231
+ M2 ContextObserver / 结构化事件
232
+ M3 Markdown Anchor + MemoryFileIndex
233
+ M4 Shadow Retrieval
234
+ M5 Access Evidence Graph
235
+ M6 InjectionBroker + pre-step Soft Injection
236
+ M7 Python sidecar / embedding / graph
237
+ M8 Semantic/Profile candidates
238
+ M9 Procedure promotion
239
+ M10 Provider reasoning adapter
240
+ M11 Streaming abort/resume experiment
241
+ ~~~
242
+
243
+ ## 8. 本次新会话只实施的范围
244
+
245
+ ### 里程碑 0:基线、配置与内部契约
246
+
247
+ 目标:为后续功能建立可关闭、可测试、不会改变现有行为的骨架。
248
+
249
+ 必须完成:
250
+
251
+ 1. 扩展 DEFAULT_CONFIG,新增默认关闭的实验配置:
252
+
253
+ ~~~json
254
+ {
255
+ "associativeMemoryEnabled": false,
256
+ "shadowRetrievalEnabled": false,
257
+ "softInjectionEnabled": false,
258
+ "pythonBackendEnabled": false,
259
+ "reasoningObserverEnabled": false,
260
+ "procedurePromotionEnabled": false,
261
+ "streamingInterruptionEnabled": false,
262
+ "maxPacketItems": 2,
263
+ "maxPacketChars": 800,
264
+ "packetTtlSteps": 2,
265
+ "injectionCooldownSteps": 3
266
+ }
267
+ ~~~
268
+
269
+ 注意:配置全部关闭时,现有插件行为必须逐字节兼容当前逻辑。
270
+
271
+ 2. 在 lib/index.js 内新增最小、内聚的运行时结构:
272
+
273
+ ~~~text
274
+ SessionRuntimeStore
275
+ Map 或 WeakMap 管理 per-agent/session 状态
276
+ get(agent)
277
+ dispose(agent)
278
+ disposeAll()
279
+ ~~~
280
+
281
+ 3. 定义内部的 EventEnvelope、SessionRuntime、ContextSegment、MemoryPacket 最小契约。
282
+ 4. 加入只记录、不检索、不注入的调试状态字段,供后续 smoke test 检查。
283
+ 5. 将所有新状态初始化和清理挂入 Cordis 生命周期;插件 dispose 时清空。
284
+ 6. 不添加 Python、不添加 embedding、不修改 Markdown 格式、不注入新消息。
285
+
286
+ ### 里程碑 1:会话隔离
287
+
288
+ 目标:消除当前进程级状态在并发会话下串线的风险。
289
+
290
+ 重点检查并逐步替换这些进程级状态:
291
+
292
+ - engine.state 中与当前 workspace/agent 强耦合的动态状态
293
+ - engine._lastAgent
294
+ - engine._consolidating
295
+ - engine._pendingConsolidations
296
+ - engine._lastTurnByAgent
297
+ - 自动沉淀和刷新路径中的 agent fallback
298
+
299
+ 本阶段不要求一次重写整个 MemoryEngine。优先做最小安全改造:
300
+
301
+ 1. SessionRuntimeStore 以 Agent 或 sessionId 为键。
302
+ 2. agent/session-start 时建立 runtime。
303
+ 3. agent/pre-step 和工具执行时通过当前 agent 精确取 runtime。
304
+ 4. agent/turn-stopping payload 不保证有 agent,不能继续依赖全局 _lastAgent 推断当前会话。
305
+ - 需要核对 DSH 可用的 agent/session 生命周期和当前插件监听上下文。
306
+ - 若该 hook 无法可靠获得 agent,设计显式的 per-agent turn tracking 或换用拥有 agent 的邻近事件。
307
+ - 不允许在并发会话下猜测最近 Agent。
308
+ 5. 自动沉淀队列按 session 隔离。
309
+ 6. agent dispose / session dispose / plugin dispose 时清理 runtime 和异步任务。
310
+ 7. 添加至少两个并发顶层 agent/session 的隔离测试。
311
+
312
+ ## 9. 本次明确禁止实现的内容
313
+
314
+ 在里程碑 0/1 验收前,不要实现:
315
+
316
+ - Python worker 或虚拟环境初始化
317
+ - embedding / vector database
318
+ - MemoryFileIndex 和 Markdown anchor 写入
319
+ - read coverage 解析
320
+ - Access Evidence Graph
321
+ - Procedure 自动抽取或 skill 文件生成
322
+ - reasoning trace 观察器
323
+ - 自动 pre-step MemoryPacket 注入
324
+ - 流式中断、steer 或 abort/resume
325
+ - UI 大改
326
+ - npm 发布、GitHub 推送、tag 或版本发布
327
+
328
+ 这些属于后续阶段,先保证会话隔离和关闭时零行为变化。
329
+
330
+ ## 10. 测试和验收
331
+
332
+ 至少需要:
333
+
334
+ 1. 当前功能回归:
335
+ - 现有 memory 工具仍可注册和执行。
336
+ - renderMemory 行为不变。
337
+ - 自动沉淀在单会话下保持当前结果。
338
+ - 路由和 GUI state/config 返回仍兼容。
339
+ 2. 新配置:
340
+ - 缺省全部实验开关为 false。
341
+ - 配置保存/加载只接受 DEFAULT_CONFIG 白名单。
342
+ - 关闭时不产生新的 model-visible 文本。
343
+ 3. SessionRuntime:
344
+ - A/B 两个 session 使用不同 runtime。
345
+ - A 的 cwd、contextVersion、pending 状态不出现在 B。
346
+ - 清理 A 不影响 B。
347
+ 4. 自动沉淀:
348
+ - A/B turn 去重独立。
349
+ - A 的沉淀任务不会读取 B 的 Agent 或 workspace。
350
+ 5. 编码:
351
+ - 所有改动保持 UTF-8 无 BOM。
352
+ - 完成后检查修改文件头不是 EF BB BF。
353
+
354
+ 建议先运行:
355
+
356
+ ~~~powershell
357
+ node --check lib/index.js
358
+ node --check lib/client.js
359
+ node smoke-test.mjs
360
+ node smoke-test-reflect.mjs
361
+ node smoke-test-external.mjs
362
+ ~~~
363
+
364
+ 如果旧 smoke test 因历史数量断言过时,先说明并只修正与当前真实注册契约一致的断言,不要为了让测试绿而倒退当前功能。
365
+
366
+ ## 11. 实施方式要求
367
+
368
+ 1. 先检查 git status 和现有改动,不回退任何用户文件。
369
+ 2. 先读代码,再决定最小修改面;不要重写整个 2,000+ 行文件。
370
+ 3. 优先抽出小型内部 helper/class,但不要过度抽象。
371
+ 4. 每完成一个子步骤立即运行相关测试。
372
+ 5. 新功能默认关闭,先验证关闭路径。
373
+ 6. 修改后检查无 BOM。
374
+ 7. 不启动替代 dsh web 服务。
375
+ 8. 如需要在现有 Web GUI 验证:修改 apps/web shell 以外的插件代码后,按当前 DSH 运行规则重建/重载并刷新 http://127.0.0.1:3080;不要承诺 HMR,除非确认同一 checkout 的 pnpm run dev:web watcher 正在运行。
376
+ 9. 未经用户明确要求,不发布 npm、不推 GitHub、不创建 tag。
377
+
378
+ ## 12. 子代理纪律
379
+
380
+ 可以使用子代理,但必须受控:
381
+
382
+ - 研究/审查默认最多并行 2 个一级子代理。
383
+ - 每个子代理提示必须明确:禁止创建 subagent、subagent_fork、workflow 或 Ralph。
384
+ - 必须等待同一批返回并提炼后,才决定是否继续下一批。
385
+ - 不允许递归套娃。
386
+
387
+ 本次 M0/M1 实现范围较集中,优先由主 Agent 直接完成;若委派,只委派“原生生命周期核对”或“并发隔离测试审查”中的一个独立任务。
388
+
389
+ ## 13. 完成后汇报格式
390
+
391
+ 最终回复必须说明:
392
+
393
+ - 改了哪些文件
394
+ - M0/M1 分别实现了什么
395
+ - 哪些风险仍未解决
396
+ - 跑了哪些测试及结果
397
+ - 是否验证无 BOM
398
+ - 是否更改了 model-visible 行为
399
+ - 下一里程碑建议
400
+
401
+ ## 14. 当前新会话的第一条执行指令(2026-08-23 更新)
402
+
403
+ 请按以下顺序开始:
404
+
405
+ 1. 首先读取 `docs/proactive-associative-memory-system-map.html`、`docs/M7-PYTHON-IMPLEMENTATION-REPORT.md`、`docs/PYTHON-SIDECAR-CONTRACT.md` 和 `docs/M7-AGENT-HANDOFF-PROMPT.md`;目标架构和进度以 system-map 为准。
406
+ 2. 再读取 `docs/M5-CONTRACT.md`、`docs/M6-CONTRACT.md`、M5/M6 live JS modules 和 smoke tests,运行 `git status --short --branch`;保留全部无关或未跟踪文件。
407
+ 3. 只读核对 `lib/index.js`、context-bridge/evidence/context-host、activation-inbox/state/host 及 M3/M4 provenance;M7 不重写 M5/M6 wire 或 delivery semantics。
408
+ 4. M0-R/T0/M1/M2/P-A/M3a/M3b/M4/M5/M6 已完成并 live;M7-0 完整契约已冻结,当前交给外部 Agent 按 M7-0→M7-8 实施,默认关闭。
409
+ 5. 预览版所有对外注册与持久化标识必须使用 `_pre`/`-pre`,禁止 `_dev` 或无后缀标识与稳定版碰撞。
410
+ 6. M2/M5/M6 的 event、scope、provenance、contextVersion、ActivationRequest 与 delivery/seen 是兼容基线;M7 不修改现有 JS validator 或 M6 投递路径。
411
+ 7. M7 必须通过 index_sync 获取完整授权语料;Python 不读 DSH 文件、不创建 evidence、不写 prompt/Packet;失败回退 lexical_pre_v2。
412
+ 8. 测试和编码检查通过后,必须回写系统地图 progressLedger 和相关模块证据;不发布、不 push、不 tag。
413
+
414
+ ## 15. M0/M1 后维护状态
415
+
416
+ - 已完成缓存稳定性维护:稳定记忆纪律保留在 `systemPrompt.section()`,动态工作区记忆使用原生 `systemPrompt.context()` runtime-context projection。
417
+ - 动态快照由 DSH 原生 projection 按完整文本比较;相同快照不重复创建 user-context,变化快照替换之前的 projection。
418
+ - f00ad23 已落地 M1:SessionRuntimeStore、AsyncLocalStorage、per-runtime 自动沉淀状态与并发隔离测试。
419
+ - v0.1.29 合并后 M0 的 7 个实验开关与 4 个 packet 预算参数曾从 DEFAULT_CONFIG 丢失;该问题已由 M0-R 在 M2 前恢复并通过回归。
420
+ - 当前预览身份使用 `dsh:auto-memory-pre`、`dsh:auto-memory-pre-rules` 和 Agent 可见 `memory_*_pre` 工具;所有对外注册、API/config/cache/log/localStorage 等持久化命名空间必须保持 `_pre`/`-pre`,不得重新引入 `_dev` 或稳定版无后缀冲突标识。
421
+ - 当前维护改动没有启用主动检索、Python、embedding、MemoryPacket、流式中断或自动阈值注入;这些仍属于后续里程碑。
422
+
423
+ ## 16. 架构权威与进度纪律
424
+
425
+ - `proactive-associative-memory-system-map.html` 是目标架构、模块契约、架构不变量和实施进度的唯一权威。
426
+ - 研究报告负责理论依据、相关工作、风险与总路线;architecture/meta-code HTML 是辅助视图,不得覆盖系统地图的后增契约。
427
+ - 当前实现事实由 `lib/index.js`、本机 DSH 类型和测试证据确认。工程审查补充必须明确标注,不能冒充论文原文。
428
+ - Python sidecar 的完整 M7 架构、JSONL 协议、JS Host 权威边界和压缩恢复顺序固定在 `docs/PYTHON-SIDECAR-CONTRACT.md`;M7 必须等待 M3b/M4/M5/M6,当前不得启动 Python worker。
429
+ - 每个里程碑完成后必须在同一轮更新系统地图的 progressLedger、相关模块实现证据、验收结果和日期;聊天或记忆中的完成声明不能替代 HTML 进度。