@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.
Files changed (116) hide show
  1. package/README.md +30 -13
  2. package/README.zh-CN.md +30 -13
  3. package/docs/FRONTEND-CO-CREATION.md +191 -0
  4. package/docs/GM53-HOMEPAGE-PROMPT.md +323 -0
  5. package/docs/HANDBOOK.md +88 -52
  6. package/docs/HOMEPAGE-CONTENT-FOR-GM53.md +299 -0
  7. package/docs/PROMO-PROMPT-3.0.md +100 -0
  8. package/docs/USER-GUIDE.en.md +11 -11
  9. package/docs/USER-GUIDE.zh-CN.md +11 -11
  10. package/docs/WHITEPAPER.md +207 -0
  11. package/docs/screenshots/promo/promo-0-banner-v3.png +0 -0
  12. package/docs/screenshots/promo/promo-0-banner-v4.png +0 -0
  13. package/docs/screenshots/promo/promo-1b-auto-recall.png +0 -0
  14. package/lib/activation-host.js +69 -10
  15. package/lib/board-mode.js +1 -1
  16. package/lib/client.js +1697 -285
  17. package/lib/config-io.js +156 -0
  18. package/lib/context-bridge.js +3 -0
  19. package/lib/context-host.js +23 -10
  20. package/lib/degrade.js +385 -0
  21. package/lib/dsh-home.js +143 -0
  22. package/lib/episodic-store.js +142 -18
  23. package/lib/evidence-store.js +8 -1
  24. package/lib/fact-store.js +484 -43
  25. package/lib/hub-io.js +217 -0
  26. package/lib/index-sync.js +13 -1
  27. package/lib/index.js +1730 -202
  28. package/lib/intent-clean-safe.js +258 -40
  29. package/lib/l0-extract.js +231 -16
  30. package/lib/m4-corpus.js +8 -2
  31. package/lib/m7-index-sync-host.js +8 -1
  32. package/lib/memory-envelope.js +6 -1
  33. package/lib/memory-hub.js +164 -17
  34. package/lib/memory-index.js +4 -2
  35. package/lib/note-status-apply.js +118 -0
  36. package/lib/note-status.js +204 -0
  37. package/lib/procedure-store.js +333 -31
  38. package/lib/procedure-switch.js +38 -0
  39. package/lib/python-sidecar-client.js +314 -11
  40. package/lib/recall-fusion.js +83 -12
  41. package/lib/rules-edit.js +159 -0
  42. package/lib/semantic-decide.js +41 -8
  43. package/lib/semantic-js.js +51 -6
  44. package/lib/shadow-host.js +3 -5
  45. package/lib/skill-export-host.js +153 -0
  46. package/lib/skill-export.js +239 -0
  47. package/lib/storage-manage.js +6 -0
  48. package/lib/temporal-parse.js +191 -159
  49. package/lib/tier0-catalog.js +45 -3
  50. package/lib/wb-contract.js +198 -2
  51. package/lib/wb-sidecar.js +54 -3
  52. package/package.json +6 -2
  53. package/docs/internal/ACCEPT-35-LIVE.md +0 -143
  54. package/docs/internal/ACCEPTANCE-20260914.md +0 -90
  55. package/docs/internal/ARCH-REVIEW-BRIEF.md +0 -411
  56. package/docs/internal/ARCH-REVIEW-REQUEST.md +0 -201
  57. package/docs/internal/ARCH-REVIEW-ROUND2.md +0 -169
  58. package/docs/internal/ARCH-REVIEW-ROUND3.md +0 -206
  59. package/docs/internal/ART-DIRECTION-WIREFRAME.md +0 -181
  60. package/docs/internal/AUDIT-WB-GRAPH-FULL-20260916.md +0 -314
  61. package/docs/internal/CONCURRENCY-INVESTIGATION-20260917.md +0 -192
  62. package/docs/internal/CROSS-SESSION-SEARCH-PATH-DECISION.md +0 -72
  63. package/docs/internal/CROSS-SESSION-SEARCH-RESEARCH.md +0 -131
  64. package/docs/internal/CUA-VISION-FIX-NOTES.md +0 -78
  65. package/docs/internal/DECISIONS-20260914-SESSION.md +0 -269
  66. package/docs/internal/DESIGN-OVERHAUL-PRE-RESEARCH.md +0 -292
  67. package/docs/internal/DESIGN-P1-STATE-COMMIT-20260915.md +0 -219
  68. package/docs/internal/DIRECTION-CHECK-WB-GRAPH-20260916.md +0 -132
  69. package/docs/internal/FEEDBACK-TO-DSHAPI-RELAY.md +0 -13
  70. package/docs/internal/GH-DISCUSSION-5732-COMMENT.md +0 -74
  71. package/docs/internal/GPT-ACCEPTANCE-PROMPT-20260916.md +0 -352
  72. package/docs/internal/GPT-REVIEW-PROMPT.md +0 -216
  73. package/docs/internal/GROUP-DIGEST-SETUP.md +0 -62
  74. package/docs/internal/GROUP-LISTENER-SETUP.md +0 -49
  75. package/docs/internal/GROUP-WEBHOOK-SETUP.md +0 -93
  76. package/docs/internal/HANDOFF-TO-ZCODE.md +0 -168
  77. package/docs/internal/KICKOFF-P0.md +0 -254
  78. package/docs/internal/MASTER-PLAN-3.0.md +0 -411
  79. package/docs/internal/MEMORY-MUTATION-AND-INDEX-DESIGN.md +0 -85
  80. package/docs/internal/MERGE-CONFLICT-SCAN-20260914.md +0 -222
  81. package/docs/internal/NEXT-VERSION-TODO.md +0 -95
  82. package/docs/internal/OFFICIAL-DISCUSSION-DRAFT.md +0 -80
  83. package/docs/internal/PENDING-FIXES-20260916.md +0 -289
  84. package/docs/internal/RAG-KARPATHY-PROGRAM.md +0 -229
  85. package/docs/internal/RELEASE-PROCESS.md +0 -99
  86. package/docs/internal/REPORT-P0-NIGHTLY.md +0 -212
  87. package/docs/internal/REPORT-P5-ACCEPTANCE.md +0 -31
  88. package/docs/internal/REPORT-WB-GRAPH-NIGHTLY.md +0 -153
  89. package/docs/internal/REVIEW-WB-GRAPH-SELF.md +0 -81
  90. package/docs/internal/ROADMAP-20260917-WEEK.md +0 -305
  91. package/docs/internal/ROADMAP.md +0 -106
  92. package/docs/internal/RUN-P0-NIGHTLY.md +0 -227
  93. package/docs/internal/S10-CONSTRUCTION-HANDOFF-20260917.md +0 -175
  94. package/docs/internal/S10-GAPS-PLAIN-20260917.md +0 -125
  95. package/docs/internal/SEMANTIC-ARCHITECTURE-SPEC.md +0 -360
  96. package/docs/internal/SESSION-FILE-REPAIR-PROTOCOL.md +0 -90
  97. package/docs/internal/SUBAGENT-REPORT-ROUTING-PRE-RESEARCH.md +0 -261
  98. package/docs/internal/THREE-LAYER-CONTRACT.md +0 -210
  99. package/docs/internal/TODO-BACKLOG.md +0 -263
  100. package/docs/internal/TODO-GRAPH.html +0 -715
  101. package/docs/internal/TODO-GRAPH.html.bak-20260914-v2 +0 -493
  102. package/docs/internal/TODO-GRAPH.html.bak-20260915-alsfix +0 -710
  103. package/docs/internal/TODO-GRAPH.html.bak-20260915-p1 +0 -710
  104. package/docs/internal/TODO-GRAPH.html.bak-20260915-p6a-rev +0 -703
  105. package/docs/internal/TODO-GRAPH.html.bak-20260915-wshint +0 -710
  106. package/docs/internal/TODO-GRAPH.html.bak-20260916-batch +0 -715
  107. package/docs/internal/WB-FORMAT-CONVENTION.md +0 -112
  108. package/docs/internal/WB-GRAPH-DECISIONS-20260914.md +0 -71
  109. package/docs/internal/WB-GRAPH-INTEGRATION-PLAN.md +0 -386
  110. package/docs/internal/WB-GRAPH-RESEARCH-BRIEF.md +0 -118
  111. package/docs/internal/WB-GRAPH-RESEARCH-EXTERNAL.md +0 -228
  112. package/docs/internal/WB-GRAPH-RESEARCH-LOCAL.md +0 -190
  113. package/docs/internal/reviews/CLAIM-VERIFICATION-20260914.md +0 -56
  114. package/docs/internal/reviews/PLAN-gpt6astra-round2-20260914.md +0 -787
  115. package/docs/internal/reviews/REVIEW-gpt6astra-20260914.md +0 -112
  116. package/docs/internal/reviews/ROUND3-REVIEW-INTEGRATION-20260914.md +0 -230
@@ -1,305 +0,0 @@
1
- # 明日 → 周末作战图(2026-09-17 ~ 09-20)
2
-
3
- > **来源**:用户 2026-09-17 00:5x 口述的本周计划;01:3x 用户裁定「先把 PR 全 merge、issue 读完做好回应就关掉」。
4
- > **纪律**:本文件是这批工作的**唯一排期依据**;与旧规划冲突时以本文件为准。
5
- > **前置**:送审批已完工(回归 PASS 105/0/0);**远端 7 个 PR 已全部 merge、9 个 issue 已全部回应并关闭**(见 §6)。
6
- > **注意**:远端 merge 属**礼节性**——本机 pre 线不受其影响;上传时以本机版本强制覆盖。pre 线纪律(§4.4)不变。
7
-
8
- ---
9
-
10
- ## 0. 用户已定夺的事项(不再讨论)
11
-
12
- | # | 事项 | 裁定 |
13
- |---|---|---|
14
- | 1 | **PR #37**(自动接续 idle 门) | ❌ **不做**。用户原话:「就先不做了,反正冲突了,就按我自己做的新的做,没问题就行」⇒ 保留 pre 线现有 `sessionController.cancel()` 方案(2026-09-14 裁定),**冻结**,不再评估 PR 方案 |
15
- | 2 | 记忆窗格位置 | 挪到看板上集成,**旧位置(左下角)与新看板可共存**,设置里可调位置(**类比 literature 插件的理念**) |
16
- | 3 | 看板定位 | 看板**只是其中一项功能**,不是全部(当前看板=白板,需升级为"集成容器") |
17
-
18
- ---
19
-
20
- ## 1. UI 重构 + 看板重构(主任务)
21
-
22
- ### 1.1 背景与痛点
23
- - **左下角位置太紧张**:记忆按钮 + 浮层 + 欢迎卡 + 更新卡都在争左下角(`client.js` 里
24
- `overlay = { position:'fixed', left:'10px', bottom:'64px' }` 一类的堆叠)。
25
- - 用户思路:**把记忆窗格挪到看板上集成**,看板升级为"承载面",只把看板当其中一个功能。
26
-
27
- ### 1.2 可复用资产(已建成的)
28
- | 资产 | 位置 | 用途 |
29
- |---|---|---|
30
- | 整页看板 + 矩阵视图(双承载面) | `lib/client.js`(`KanbanView`/`KanbanBoard`)+ `lib/wb-sidecar-pre.js`(`buildKanbanMatrixPre`) | 新承载面的**现成宿主** |
31
- | `conversation.view` 槽位注册 | `client.js`:`slots.register({ name:'conversation.view', id:'auto-memory-pre-kanban', order:80 })` | 上栏承载面已通 |
32
- | `sidebar.right.pane.tab` | 侧边面板承载面 | 另一承载面 |
33
- | portal 浮层配方 | `kxPortal()` + `createPortal(node, document.body)` | 浮层定位正解(见记忆:三阶段教训) |
34
- | CSS 令牌权威清单 | 见项目笔记(label-*/bg-layer-*/border-l*/state-*) | **禁止凭印象拼令牌** |
35
-
36
- ### 1.3 literature 插件的"理念"具体指什么(**待用户确认细节**)
37
- 用户说"这类似于 Literature 插件的理念"。**已查:`~/.dsh/profiles/web/node_modules` 下
38
- 未找到 `dsh-literature`**(可能装在别处或未装本机)。
39
- ⇒ **需用户澄清**:是指 (a) **同一功能多处可挂载**(用户自选承载面),还是
40
- (b) **设置内切换"功能归属面板"**,还是 (c) 别的?
41
- > 若指 (a):实现=每个功能注册成一个"可挂载组件",设置里选挂载点(左下浮层/侧边栏/看板 Tab),
42
- > 默认值保持现状(向后兼容),改动即时回显。
43
-
44
- ### 1.4 建议的实施顺序(待用户拍板)
45
- 1. **先定架构**:功能清单 → 每个功能的"可挂载"改造点 → 位置配置键设计
46
- 2. 看板升级为容器(Tab / 分区),把记忆窗格作为其中一个功能页
47
- 3. 位置设置项 + 即时回显(用户硬规则:开关类改动必须即时回显)
48
- 4. 旧位置保留为可选项(共存,非替换)
49
- 5. 回归 + 变异演示 + 看板回写
50
-
51
- ---
52
-
53
- ## 2. 项目主页 HTML 重做(次任务)
54
-
55
- | 项 | 状态 |
56
- |---|---|
57
- | 风格/设计 | ✅ **已写好**(用户原话:「那个已经把风格等都写好了」) |
58
- | **README / 手册文案** | ✅ **本轮完工**(见 §2.2) |
59
- | 排版(主页 HTML) | ⬜ **待开工**(用户原话:「就差开始做排版」) |
60
- | 图片 / 截图 | ⏸ **用户指示等前端重构完成后再改** |
61
- | 细节定夺 | ⬜ **待用户逐项定夺** |
62
-
63
- ### 2.1 「一两周前写的主页风格 Markdown 文档」已定位 ✅
64
-
65
- 用户 01:2x 补充的指令已执行,文件系统里找到**三份**同族文档(`docs/` 根,时间戳 2026-09-06 02:1x–02:3x,即**11 天前**):
66
-
67
- | 文档 | 大小 | 作用(据其自述) |
68
- |---|---|---|
69
- | **`docs/NEXT-MAJOR-README-DRAFT.zh.md`** | 12.9 KB | ⭐ **主页骨架**——「下一大版本 README 替换草稿(中文版)」,hero copy + 段落结构;标注【保留区】(从现 README 原样迁移)与【占位】(随大版本落地替换) |
70
- | `docs/NEXT-MAJOR-PROMO.md` | 24.9 KB | **全量文案库**——品牌句/开场/每个功能的成稿/工程说明/场景物料/发布公告;「组装 README / landing / npm 简介 / QQ 公告时从这里取材」 |
71
- | `docs/PROMO-STYLE-GUIDE.md` | 5.4 KB | **文风守则**(「热叙述体」,产品拟人作「她」=可靠/克制);自称**可整套复用到其他项目主页** |
72
-
73
- > **判定**:用户说的应是 **`NEXT-MAJOR-README-DRAFT.zh.md`**(唯一同时具备「主页风格」与「Markdown」两个属性的骨架稿);
74
- > `NEXT-MAJOR-PROMO.md` 是它的**素材库**,`PROMO-STYLE-GUIDE.md` 是**文风依据**。三份互有交叉引用,排版时应**成套使用**。
75
-
76
- ⚠️ **两份文档都带硬约束**(原文):`NEXT-MAJOR-VISION.md` 声明「**本文档是愿景与 README 宣传方案的唯一权威来源。大版本完成前禁止改 README**」;
77
- `NEXT-MAJOR-PROMO.md` 亦写「**大版本完成前禁改 README**」。
78
-
79
- ✅ **2026-09-17 02:1x 该禁令已被用户解除**:用户裁定「**你觉得现在不是大版本吗?先按照大版本的标准把这个 README 修改一下**」
80
- ⇒ 承认当前即大版本,README 按大版本标准改写(**文案层**先行,图片待前端重构后另行处理)。
81
-
82
- ### 2.2 本次 README / 手册改动(2026-09-17 02:1x–02:3x 完工)
83
-
84
- **用户原话拆解**(三轮澄清后的准确理解):
85
- 1. 「按大版本标准改 README」= 正文已是大版本骨架(`【占位】/【保留区】` 标记已全部清空),**真实缺口是 3.0 后端成果零覆盖**;
86
- 2. 「README 里的那些按钮,比如说切中英文那样的」= **顶部按钮行**,不是插件 UI;
87
- 3. 「用户手册也记着用最新的办法来改」= 手册同样补 3.0 内容 + 换按钮样式;
88
- 4. 「图片什么的等前端重构后再改」= **本轮不动图片**。
89
-
90
- | 改动 | 文件 |
91
- |---|---|
92
- | **按钮行换成 for-the-badge 徽章**(语言切换 2 枚 + npm/许可证/零依赖/平台 4 枚 + 导航行) | `README.md` · `README.zh-CN.md` |
93
- | 新增「**3.0 底层重建**」段(8 项机制对照表,中英各一份) | 两个 README |
94
- | 30 秒亮点表补「**多工作区不串线**」一行 | 两个 README |
95
- | 手册顶部加同款徽章 + 返回 README 链接;版本号 `2.2.7+` → `3.0+` | `docs/USER-GUIDE.zh-CN.md` · `docs/USER-GUIDE.en.md` |
96
- | 手册新增 **§13「3.0 底层重建:对你意味着什么」**(5 小节,面向用户解释边界)+ 目录项 | 同上 |
97
-
98
- **参照物**:`D:\dsh-memory-fitting\README.md`(用户 2026-09-16 23:40 上传的「思维拟合插件」)。
99
- 徽章写法照抄其 `for-the-badge` 语言切换块 + 独立徽章行;手册顶部也照抄其「语言切换 + 返回 README」结构。
100
-
101
- **自检(已过)**:6 个徽章 URL 全部 HTTP 200;4 个文件均无 BOM;4 个文件站内锚点 0 处断裂(用 github-slugger 算法逐条核验);
102
- 链接目标(LICENSE / CHANGELOG.md / CONTRIBUTORS.html / docs/internal)全部存在;两 README 标题数对称(各 50)、两手册对称(各 36)。
103
-
104
- **未做**:图片与截图(等前端重构);`docs/promo/homepage.html` 排版(另案)。
105
-
106
- > 纪律**仍然有效**的部分:`NEXT-MAJOR-VISION.md` 作为**愿景与宣传文案的权威来源**这一条不变;
107
- > 本轮只改文案层,未动 README 里的任何图片引用(`promo-*.png` 原样保留)。
108
-
109
- **其它参考**:`docs/promo/homepage.html`(既有主页)、`docs/CONTRIBUTORS.html`(本轮新建,
110
- liquid-glass 深色主题、zh/en 切换、单文件零依赖)。
111
- **纪律**:单文件零依赖、无 BOM、GitHub 上须用 `htmlpreview.github.io` 包裹链接(`.md` 不包裹)。
112
-
113
- ---
114
-
115
- ## 3. 之前提到但未做的(结转项)可以重新排期,看是先做主页,还是先做这一方面的内容。
116
-
117
- ### 3.1 本批明确排除的(用户此前同意)
118
- | 项 | 内容 | 备注 |
119
- |---|---|---|
120
- | 群反馈 #7 | 日历太粗糙 → 换开源方案(`fullcalendar`/`tui-calendar`) | 新功能,需排期 |
121
- | 群反馈 #9 | webhook CI 安全收口(签名/限流/密钥);`.github/cloud/qq-webhook/index.zip` 仍入库 | 运维项 |
122
- | subagent 智能调度 | `shouldSpawn`/`judgeSubagent` **零命中** ⇒ 未实现 | **是功能缺失,不是验证缺口** |
123
-
124
- ### 3.2 P0-4e(已实测复现,未修)★ 与并发问题强相关
125
- 索引同步防抖:持续写入 ⇒ 索引永远不就绪(实测卡死 20 分钟)。
126
- **本次并发调查补充**:`mivCache` 单槽会放大该效应(见 `CONCURRENCY-INVESTIGATION-20260917.md` §5)。
127
-
128
- ### 3.3 并发缺陷(本次调查新发现)✅ **已修完并验证**
129
- 4 个单槽共享点:`_tierGateHits` / `mivCache` / `lastIndexDegrade` / `_lastTierQuery`。
130
- 采用**方案 A(分片化)**,2026-09-17 01:1x 完工:
131
-
132
- | 单槽 | 改为 | 主因 |
133
- |---|---|---|
134
- | `engine._tierGateHits` | `_tierGateHitsBySession.set(sessionId, …)` | A 投递后被 B 覆盖 ⇒ A 取到 B 的投影 ⇒ 身份门 session-mismatch ⇒ **A 永远不下探 Tier-1** |
135
- | `mivCache` | `mivCacheByWs`(按工作区) | 两工作区互相踢缓存 ⇒ 每次必然重算,放大 P0-4e |
136
- | `lastIndexDegrade` | `indexDegradeBySession` | 读方原只判 10 分钟窗、不判会话 ⇒ **跨会话假降级** |
137
- | `_lastTierQuery` | `_lastTierQueryBySession` | 无条件覆盖,读取侧退回 `triggerText` |
138
-
139
- - 判定口径(T0-2 五道门)**一字未改**;三处分片容器加 `size>32` 有界淘汰。
140
- - 兼容投影保留(`engine._tierGateHits` / `engine._lastIndexDegrade` / `debugView.memoryIndexVersion`),只增字段。
141
- - 新增套件 `tests/smoke/smoke-test-multiworkspace-pre.mjs` **22 断言**(S 源码守卫 7 + B 分片语义 6 + R 真实现抽取执行 6 + C 兼容 3);
142
- 变异演示**真失败 5 条**(含行为测试 R1/R2 抓住)。
143
- - 全量回归 **PASS 105 / FAIL 0 / TIMEOUT 0(160.5s)**。
144
-
145
- > ⚠️ 验收要点:R 组是**从源码抽取真实 `recordTierGateHits` 执行**的;B 组测的是套件内本地辅助函数,**属"假绿风险"**,不能单独作为守卫。
146
-
147
- ### 3.4 其他结转
148
- - **合并远程 60 提交** → 已由本轮 PR 全部 merge 覆盖(远端 `main` = `43c5492`);本机 pre 线**不受影响**,上传时强制覆盖
149
- - **送审**:任务书 `docs/internal/GPT-ACCEPTANCE-PROMPT-20260916.md` 已就绪,待用户投喂 GPT
150
- - **看板卡片**:三张已回写(P0-A 已解耦 / P0-B 已修 / P0-4d 已完工)
151
- - `docs/internal/TODO-GRAPH.html` 里可能还有其它"待开工/待调研"卡片未清点
152
- - **PR/issue 批**:已完成(见 §6)
153
-
154
- ---
155
-
156
- ## 3.5 S10「Karpathy 模块」实现缺口审计(2026-09-17 02:1x,用户点名的送审重点)
157
-
158
- **触发**:用户指出「这正好就是我准备让 GPT 审的部分,说明有些东西还是漏做了,**尤其是接续这部分**」。
159
- **方法**:以「契约声称 vs 代码真实调用链」为准逐条 grep,**有调用点才算已实现**。全部结论附行号。
160
-
161
- ### ✅ 结论先行:接续主链是通的,工程质量高于契约文档给人的印象
162
-
163
- | 环节 | 状态 | 证据 |
164
- |---|---|---|
165
- | 水位触发 → 写交接账本 | ✅ 已实现 | `index.js:2789` `writeHandoffLedger` |
166
- | 判据门(四段式硬门) | ✅ **真接线** | `index.js:2302` `checkHandoffCriteriaPre`;两咽喉 `:1939` / `:2020` 都过同一入口 |
167
- | 骨架降级只跳判据门 | ✅ 正确 | `index.js:2804` 的 `skipCriteria:true` 注释与实现一致(丢卡门绕不过) |
168
- | 保护门(丢卡/用户区/重复 id) | ✅ 已实现 | `index.js:2325` `validateMutationBoundaryPre` |
169
- | 新会话收交接材料 | ✅ 已实现 | `index.js:3118` `buildContinueCarry` → `:3144` `sc.prompt` 投递 `carryText` |
170
- | 先停旧回合(PR#37 争议点) | ✅ 已实现 | `index.js:3099` `sc.cancel({sessionId: oldSid})`,降级路径也留痕 `:3105` |
171
- | 接续序号标题 | ✅ 已实现 | `index.js:3129-3131` rename 为「接续 #N · 工作区」 |
172
- | requestId 必填坑 | ✅ 已修 | `index.js:3141-3143` 铸造 `randomUUID`(缺失会导致材料从未送达) |
173
-
174
- ### ❌ 真缺口(用户说「漏做了」,这是实证)
175
-
176
- **缺口 1(P0)· 白板**注入**通路依赖 `boardMode='graph'`,而默认是 `legacy`**
177
- - 默认值:`index.js:219` `boardMode: 'legacy'`;客户端初值 `client.js:2869` 同为 `'legacy'`。
178
- - 锚点写入被 graph 档门控:`index.js:1988`(PLAN)与 `:2032`(账本)——**非 graph 档完全不写锚点**;
179
- sidecar 同样在 `:2076` 直接 `return`。
180
- - ⇒ **默认配置下 S10.1 的「页面即语料」整条链不生效**。契约文档 `WB-FORMAT-CONVENTION.md` §2 把它写成无条件收益,与实现不符。
181
- - **严重度**:P0(送审友好度)——这是"契约声称 vs 默认行为"的直接冲突,GPT 一定会问。
182
-
183
- **缺口 2(P0)· 白板**检索**通路从未接入(与缺口 1 独立)**
184
- - 注入路径 ✅:`index.js:4701` `add('whiteboard', s.planText, s.planPath)` → Tier-0 目录(五来源之一,且有保底配额)。
185
- - 检索路径 ❌:`pushL0` 仅四个来源(`:5505` 日志 / `:5506` 反思 / `:5507` 项目笔记 / `:5508` 用户级);
186
- `semSources` 同样四个(`:5704-5707`)。**白板一处都没有**。
187
- - ⇒ **白板每轮被注入,但 `memory_recall` 搜不到它**。契约 §2 承诺的"自动进入检索语料"目前只兑现了注入那一半。
188
- - **严重度**:P0。
189
-
190
- **缺口 3(P1)· S10.2「索引自动生成」零实现**
191
- - `indexMd` / `renderIndex` / `buildIndexMd` / `index.md` **全 0 命中**;`derive` 的 13 处命中全是别的语义
192
- (`_waterDeriveCache`、`derived-fact`、`.md` 去后缀)。
193
- - ⇒ 契约 §3「index 由页面派生、与白板不得各写一份」**只有契约,无实现**。
194
-
195
- **缺口 4(P1)· S10.3「lint 四类 + 矛盾检测」零实现**
196
- - `lint` 全仓仅 11 处,且无任何 `function/export` 定义 —— 非 semantic 的 4 处是**注释里的提及**
197
- (`wb-contract-pre.js:261`、`wb-sidecar-pre.js:517` 都写着"供 lint 用",但**没有 lint 本体**)。
198
- - ⇒ 四类零 token 检查与矛盾检测(手动触发)均未实现。
199
-
200
- **缺口 5(P2)· 账本跳过用户区保护**
201
- - `index.js:2313` `if (target === 'handoff') return { ok: true }` —— **账本的共同保护门被无条件放行**。
202
- - 与同一函数 docblock 的声明直接矛盾:`:2062` 写着「共同保护门(`validateMutationBoundaryPre`)= 丢卡 / 用户区 / 重复 id,
203
- **无条件生效**,`criteriaGate=false` 与"骨架 fail-soft"都绕不过」;`:2308` 行内注释亦写「(无条件;只在"重写既有目标"时有意义)」。
204
- - 另 `:332` 的模块级注释同样声称「`validateMutationBoundaryPre` 里无条件生效」。
205
- - **判定**:三处注释声称"无条件",实现却在 `:2313` 对 `handoff` 提前放行。
206
- 影响面有限(账本走 `:2022` 的 `beforeText: ''`,本就不涉及"重写既有目标"的丢卡语义),
207
- 但**注释与实现不一致本身即缺陷**,且若将来账本改为可覆盖写,这里会成为静默漏洞。
208
-
209
- **缺口 6(P2)· 死导出**
210
- - `wb-contract-pre.js` 12 个导出、`wb-sidecar-pre.js` 16 个导出、`ledger-criteria-pre.js` 7 个、`memory-mutation-pre.js` 5 个
211
- **在 `index.js` 里零引用**(如 `computeWhiteboardCardIdPre`、`buildByCuePre`、`collectAnchorIdsPre`、`checkWriteCriteriaPre`)。
212
- - 部分可能被 client.js 或测试消费,属"疑似死代码"而非确证死代码 —— **建议 GPT 复核**。
213
-
214
- ### 修复建议(按优先级)
215
-
216
- 1. **P0**:让白板进 `memory_recall` 语料 —— 在 `pushL0` 与 `semSources` 各补一条白板来源(路径 `p.planPath` 已存在),
217
- 并给 `whiteboard` 层同样的配额保护。**这是最小、最高性价比的一改。**
218
- 2. **P0**:`boardMode` 默认值决策 —— 二选一:① 改默认 `graph`(需评估既有用户兼容);② 让锚点写入**不依赖** boardMode
219
- (锚点是格式契约,与看板渲染形态无关)。**倾向 ②**,因为锚点属写入契约、看板属渲染形态,本不该耦合。
220
- 3. **P1**:S10.2 / S10.3 二选一:补实现,或在契约文档标注「**未实现**」并降级为规划项。
221
- **送审前必须至少做到标注**,否则就是又一次"契约已定说成已实现"。
222
- 4. **P2**:修正 `:2313` 注释与实现的不一致(或补上账本保护门)。
223
-
224
- ---
225
-
226
- ## 4. 硬约束(贯穿全程)
227
-
228
- 1. **禁止无差别杀 node 进程**(DSH harness 与插件宿主都在 node 上,2026-09-14 出过事故)
229
- 2. **`dsh web` 宿主由用户自行重启**;agent 只改文件 + 说明需重启,严禁 Stop/Start-Process
230
- 3. **无 BOM**;大文件分块写;改前备份 `*.bak-YYYYMMDD-<tag>`
231
- 4. **代码留在 pre 线**,未经明确同意不 commit/push/publish
232
- 5. **单一开关不得顺带改变其他功能的行为**(解耦)
233
- 6. **开关类改动必须即时回显**(写盘成功但界面无变化 = "功能坏了")
234
- 7. **CSS 令牌必须查权威清单**,不得凭记忆拼写
235
- 8. 结论附代码/日志证据;推断显式标注
236
-
237
- ---
238
-
239
- ## 5. PR #37 说明(留痕,避免下个窗口重开)
240
-
241
- - **原裁定**:用户 2026-09-17 明确「就先不做了,反正冲突了,就按我自己做的新的做,没问题就行」。
242
- - **理由**:PR #37 的 `continuation-safety.js` 文件头明写 `no cancel of source work`,
243
- 走 idle 门;而 pre 线按用户 2026-09-14 裁定走 `sessionController.cancel()` **先停旧回合**
244
- (`lib/index.js` 注释记录用户反对 idle 门方向)。
245
- 两者方向**直接相反** ⇒ 不移植到 pre 线。
246
- - **pre 线方案状态**:**完好**。`smoke-test-autocont-host-pre.mjs` 钉死调用顺序
247
- `cancel → prompt → create`,并覆盖降级路径(无 cancel / cancel 抛错)。
248
-
249
- ### 5.1 但**远端**已礼节性 merge(2026-09-17 01:5x)⚠️
250
- 用户 01:3x 补充裁定:**「远端 merge 也无所谓,最后推 NPM 和 GitHub 时我会把统一的最新版本强制拉上去」**。
251
- ⇒ 本轮把 #37 与其余 6 个 PR 一并 merge 到远端 `main`(冲突在 worktree 内解决:`lib/index.js` 两处 import 行取并集)。
252
-
253
- **关键结论(避免下个窗口误判)**:
254
- **远端 merge 不改变 pre 线任何一行代码。** pre 线 `D:\dsh-auto-memory` 仍是 §5 原裁定方向
255
- (`cancel()` 先停旧回合),**不得**因为「#37 已经 merge 了」就把 idle 门方案搬进来。
256
- 上传时以**本机版本强制覆盖**远端,被顶掉是预期行为。
257
- > 遗留观察(非阻塞):远端 `main` 现在同时含 idle 门方案与本机将来要推的 `cancel()` 方案,
258
- > 两者在远端**并存**——但这只是中间态,最终由强制推送收敛。
259
-
260
- ---
261
-
262
- ## 6. PR / Issue 批(✅ 2026-09-17 01:3x–02:0x 完工)
263
-
264
- 用户 01:3x 裁定:「**把这些 pull request 和 issue 都回复了,然后 merge 了**……**这个 issue 读完了,做好回应。关掉就可以。**」
265
- 质量要求明确被豁免(「反正 main 里面 merge 管不到我本机的系统……所以不用管质量」)——**本轮以礼节性处理为准**。
266
-
267
- ### 6.1 7 个 PR 全部 merge 到远端 `main`
268
-
269
- | PR | 标题 | 处理 |
270
- |---|---|---|
271
- | #36 | fix(procedure): episode 候选如实标记 observation-only | ✅ 直接 merge `dc76373` |
272
- | #44 | fix(capacity): 按最终序列化结果计费,整段归档 fsync+读回验证 | ✅ 直接 merge `c12d023` |
273
- | #46 | fix(tour): 欢迎向导自动弹出全链路等宿主配置 | ✅ 直接 merge `8d63bc8` |
274
- | #49 | fix(recall): 取消排名前的记录截断(issue #45) | ✅ 直接 merge `b1f4abe` |
275
- | #53 | fix(issue51): anchor workspace overview log-date matching | ✅ 直接 merge `3d92a67` |
276
- | #50 | fix(issue48): atomicReplace EPERM 退避重试 | ⚠️ **有冲突** → worktree 内解决 `25a7c7b` |
277
- | #37 | fix(issue35): 自动接续重做为真实空闲闸 + 可证仪式 | ⚠️ **有冲突** → worktree 内解决 `43c5492` |
278
-
279
- **冲突处理方式**(两个 PR 的冲突**都只在 `lib/index.js` 的 import 行**,取并集即可):
280
- - `#50`:3 处 —— import 行补入 `memoryWriteError` + `fs-retry.js`;两处 `throw` 改用 `memoryWriteError('append'/'replace', r)`。
281
- - `#37`:2 处 —— import 行同时保留 `memory-capacity-safe.js` 与 `continuation-host.js`;`memory-writer.js` 那行保留 HEAD 具名导入并**追加** `atomicReplace`。
282
- - 解法统一用「取并集 + 保留 HEAD 已有符号」,`node --check` 通过后才 commit/push。
283
-
284
- ### 6.2 工作流(可复用)
285
-
286
- **`gh` CLI 未安装** ⇒ 全程走 GitHub REST API + `git credential fill` 取 token(`credential.helper=manager`)。
287
- **冲突不得在主仓库解**:先在 `D:\_merge-wt` 建 `git worktree --detach origin/main`,全部解决 + 语法检查 + commit 后 `git push origin HEAD:main`。
288
- (踩坑提醒:`lib/index.js` 是 **CRLF** 文件,写解析脚本必须按 `\r\n` 拼串,否则替换「3 处命中 0 处」。)
289
-
290
- ### 6.3 9 个 issue 全部「回应 + 关闭(completed)」
291
-
292
- | Issue | 标题要点 | 回应要点 |
293
- |---|---|---|
294
- | #54 | 写入侧缺保留语法过滤(自提 P0) | 采纳方案 a;补 `conflict:<type>@<line>` 行号;顺带修 `stripAnchorLines()` 收口的既有静默损坏 |
295
- | #52 | 子代理模型被旧 cfg 覆盖 | `set()` 改函数式 + 新增 `setMany()`;5 条回归用例落地 |
296
- | #51 | `DATE_RE` 未锚定 | 取最小修复(完整锚定)+ 修正误导性注释;含「与 index.js 行为一致」护栏断言 |
297
- | #48 | `atomicReplace` 缺 EPERM 退避 | 建议 4 条全落地;**并确认了报告者「自查」的 `_queue()` 大小写 key 问题** |
298
- | #45 | recall 256 截断(英文报告) | 取消查询前截断 + 保留排名后 limit;加 `[本地检索范围受限]` 提示;性能优化明确不在本 PR |
299
- | #40 | `welcomeTourEnabled=false` 无效 | 4 条建议全落地;向导真源定为宿主配置 |
300
- | #38 | 容量整理净增长 +10/轮 | 建议 1+3;`replace` 改按最终序列化结果计费 |
301
- | #35 | 自动接续绕过活跃防护 | Defect A/B/C 全修;heartbeat 路径同覆盖 |
302
- | #30 | Procedural skill 永不晋升 | 标记 observation-only + 原因码全链透出;去重改指纹;手动激活与可配阈值**明确未纳入** |
303
-
304
- **回应纪律**:每个 issue 都写明「根因是否确认 / 采纳了哪几条建议 / **哪些没采纳及原因** / 回归套件与断言数」——
305
- 对报告者的准确之处**明确致谢**(如 #45「索引存在 ≠ 可检索」、#51「注释说是同源、实际不同源」),不揽功也不含糊。
@@ -1,106 +0,0 @@
1
- # 主线路线图(2026-09-14 定稿)
2
-
3
- > 唯一"看这里"的文件:回答「千头万绪怎么理」。事项明细在 `TODO-BACKLOG.md`,本文件只讲**主线、依赖、顺序、判据**。
4
- > 用户 2026-09-14 亲述 9 项(QQ 记录)+ 群友脱敏记忆文件报的 3 条工具缺陷,已全部归位到下面四条主线。
5
- > **可视化孪生**:`TODO-GRAPH.html`(同一批事项的图,用户直接看那张;**改排期时两边必须同步**)。
6
-
7
- ## 0 一句话主脉
8
-
9
- 所有事项其实在回答**同一个问题**:**记忆从产生到使用,中间哪一步会出错?** 把这条链路摊开,就是六步:
10
-
11
- | 步骤 | 出错会怎样 | 对应事项 |
12
- |---|---|---|
13
- | ① 产生(反思/沉淀) | 产生**错误记忆** | B1 晋升标准(8 号)、A1 纠错 |
14
- | ② 存储(文件/索引) | 写坏、超容量、改一下全库重排 | A5 文件卫生(群友报 3 条)、A1 块级缓存 |
15
- | ③ 选取(检索) | 选错/漏选/被旧记忆带偏 | A3 分级精确检索、A6 语义框架(9 号)、A4 会话检索 |
16
- | ④ 注入(进上下文) | 把错的灌进去,**一路走错** | A2 注入上限 + 排除来源(4 号前半) |
17
- | ⑤ 晋升(长期化) | 不可控、不直观、串项目 | B2 skill hand-off(8 号)、B3 可读性(5 号)、B4 晋升开关(3 号) |
18
- | ⑥ 呈现(给人看) | 看不见进展、开关点不动 | C2 graph 集成(1 号目标)、C1 接续开关(1 号)、C3 模型选择(2 号) |
19
-
20
- **排序原则**:先做「哪一步最痛」+「哪一步是别人的前置」。据此得出下面四条主线的优先级。
21
-
22
- ## 1 四条主线
23
-
24
- > ⚠️ **编号口径(防混淆)**:本条线里的 `A/B/C/D + 数字`(如 A1、C2)是**主线条目号**,与 `TODO-BACKLOG.md` 历史分区名 `§A/§B/§C/§D`(那 A=阻塞在用户决策、B=下一版三点、C=冷启动、D=分发门面)**无关**。**唯一权威编号是看板号 `P0-①…/P1-⑤…/P2-⑦…`**,每条主线条目后面都标了对应的看板号,两边以看板号对齐。
25
-
26
- ### A 线|记忆的正确性(进得对、出得准、错得掉)★最痛
27
- - **A1 错误记忆的废弃与修改**:改正 = 写新记录声明 `supersedes` + 旧记录标 `supersededBy` + 检索过滤;配套**块级向量缓存**(改一条只嵌一条,不再整库重排)。← 3 号/4 号诉求 + 图片里"语义模型需要编号、随便增删会乱、每次都要重新构建"的正解
28
- - **A2 注入上限 + 来源排除**:给注入设压缩上限,并能把某条来源整个排除(坏记忆不再被反复灌进去)。← 4 号前半(含"旧记忆怎么废弃、怎么改")
29
- - **A3 检索的精确与分级**:Tier-0 目录 → L0 摘要 → 原文,逐层缩窄 + 仲裁规则。← P0-③
30
- - **A4 会话检索可用**:51 个阻塞文件(已取证,四组处方,等拍板施工)。← P0-①
31
- - **A4b 跨会话 / 跨 Agent 检索**(**本会话主线,勿再漏**):让"我记不清哪版改了什么"真正可查——覆盖 DSH 自身会话历史 + 其它 Agent 的记忆/会话(Claude Code / Codex / WorkBuddy / ZCode)。**路径已选 C(分期版 A)**:先把插件自己承诺的能力做实,再扩到外部 Agent 源。**调研与成本已实测**:DSH 191 个/320MB、Codex 17/45.8MB、WorkBuddy 89/155MB、ZCode 3/80MB(合计约 600MB);DSH 321MB 压缩 → 解压约 0.67GB → 可索引正文约 0.35GB(压缩比 2.1x、正文占 52%);解码 11MB 文本 0.7s → 全量扫描约 1 分钟 CPU。**技术结论**:FTS5/BM25 词法为主干 + 可选本地小嵌入做混合(RRF 融合)+ **轮次级(round)分块** + 增量后台索引;LongMemEval-S 实证 BM25-only R@5 86.2% → 混合 95.2% → 纯向量 96.6%。**容错纪律**:逐文件跳过 + 计数 + quarantine,**不得 fail-closed**(这正是本机检索被 51 个文件压死的教训)。落盘=`CROSS-SESSION-SEARCH-RESEARCH.md` + `CROSS-SESSION-SEARCH-PATH-DECISION.md`。**待拍板**:是否开工、先覆盖哪几个源。← P2-⑦
32
- - **A5 记忆文件卫生**:空标题碎片 / 超容量拒写 / 账本被快照段落污染(群友报 3 条;**本机只复现 0 处**,须先查证再修)。
33
- - **A6 语义框架与评估基准**:把检索/语义这条按**规范 RAG 框架**做一遍审计(视频=10 种 RAG 策略),产出"我们的策略清单 + 应加未加 + 评估基准"。← 9 号
34
-
35
- ### B 线|记忆的结构(procedural memory 重构)★多个事项的共同前置
36
- - **B1 晋升标准重做**:不只"次数沉淀",**长时攻关/突破也晋升**为长期 skill 记忆。← 8 号
37
- - **B2 skill 之间的 hand-off**:"用完这个常遇到那个" → 两个紧密联系的 skill 可互相写交接。← 8 号
38
- - **B3 技能可读性**:"我都不知道是啥技能" → 晋升后要有看得懂的说明。← 5 号
39
- - **B4 晋升开关**:项目记忆 → 全局记忆的晋升可开可关、可手动管理。← 3 号
40
- - **结论**:**3 / 5 / 8 号全部锁在 B 线之后**(用户自己的规划也是如此:"得在我重过完 procedural memory 部分以后再进行")。B 线是第二批的地基。
41
-
42
- ### C 线|界面与可见性(白板 / 看板 / graph)
43
- - **C1 白板「接续」开关互锁 + 取消强制接续**:现在"接续"开了之后"强制接续"点不动、要关只能整个白板关掉;且强制接续会让主力 agent 用贵模型(成本诉求)。← 1 号,**功能 bug,可插队先修**
44
- - **C2 graph 集成两个验收目标**:①**不启动 agent 也能单独看到项目总体进展**;②进展**同步注入 agent**,多轮压缩后仍准确掌握。← 1 号目标
45
- - **C3 设置里 sub agent 模型/思考强度选不动**:能读出、选不动、估计也用不上。← 2 号,**功能 bug,可插队先修**
46
- - **C4 手机端首次启动指引太大且关不掉**:远期随 UI 调整。← 6 号
47
- - **C5 日历换开源方案**:调研公开开源日历组件替换自研。← 7 号
48
-
49
- ### D 线|工程质量与验收
50
- - **D1 能力可达性验收**:每条对外承诺都要有"默认配置下可达"的证明。← P1-⑤
51
- - **D2 OpenViking 式补全返工**:`l0-index` 接线、Tier 分级、L0 补 `layer/status`。← P0-②
52
- - **D3 群反馈闭环**:已有(@现有问题 / 日报自动销账),只需持续喂。
53
-
54
- ## 2 推荐执行顺序
55
-
56
- **第一批(工程优先,都在"记忆正确性",一次重启内可交付)**
57
- 1. C1 + C3(两个功能 bug,不依赖任何东西,感知强、成本低)
58
- 2. A4 会话检索解锁(等拍板 → 施工 → 全量复验 → 一次重启)
59
- 3. A1 + A2(错误记忆废弃/修改 + 注入上限/排除)← **用户最痛,且 B4 依赖它**
60
-
61
- **第二批(检索质量)**
62
- 4. A3 + D2(分级精确检索 + OpenViking 补全)
63
- 5. A6 语义框架审计(用规范 RAG 策略清单审 A1/A3 的实现)
64
- 6. A5 记忆文件卫生(先查证 3 条,能复现的进本批,不能复现的记档)
65
- 7. D1 验收标准返工
66
-
67
- **第三批(结构)**
68
- 8. B1–B4 procedural memory 重构(连带解锁 3 / 5 / 8 号)
69
- 9. C2 graph 集成(把进展可视化 + 注入 agent)
70
-
71
- **最后**
72
- 10. C4 / C5 + 界面重构与美化
73
-
74
- ## 3 每条主线的完成判据(可验,不看感觉)
75
-
76
- - A1:改一条记忆后,**向量文件不是整体覆写**(只有新增块被编码),且被 supersede 的旧记忆**不再出现在检索结果里**,审计链仍可查。
77
- - A2:注入量可设上限;被排除的来源在后续注入中**0 次出现**。
78
- - A3:同一问题在"目录→L0→原文"三层各能命中,且分层仲裁有明确规则(笔记>日志、被更正项过滤、provenance 可见)。
79
- - A4:51 个文件全部可读 + 索引建立 + `[记忆检索|sessions]` 真出结果。
80
- - A5:三条各自"能复现 → 修复 → 加回归断言",不能复现也要留下"查过、证据在此"。
81
- - A6:产出一张《我们的检索策略 vs 规范框架》对照表 + 缺失项清单 + 评估基准与当前得分。
82
- - B1/B2:晋升记录里能看到"因攻关而晋升"与"skill 互链"两类真实样本。
83
- - B4:晋升开关默认关(或按用户设定),关闭后项目记忆**不再自动写入**全局记忆。
84
- - C2:不启动 agent 即可打开图看到最新进展;同一条进展在 agent 压缩后的上下文里能被读到。
85
- - D1:把现有对外承诺逐条跑一遍,缺证据的补测试或改文案。
86
-
87
- ## 4 我先需要你拍板的 3 件事
88
-
89
- 1. **A4 的施工口径**:C+B(就地修复 51 个 + 索引器加跳过保险)/ 只 B / 只 A / D / E。
90
- 2. **4 号里「压缩上限 + 排除用户提示」具体指什么**——是指注入量上限(条数/字符),还是指压缩蒸馏时的取舍规则?我按"注入上限 + 可排除来源"理解并入了 A2,但需要你一句话确认。
91
- 3. **A1 的授权边界**:AI 可以**直接改**记忆文件,还是只能给出"建议修改"由你确认?(图片里你说"下个版本看看能不能让 AI 去修改记忆"——这条决定 A1 的交互设计。)
92
-
93
- ## 5 本路线图与本会话既有结论的衔接(防脱节,2026-09-14 补)
94
-
95
- > 这份文件是**追加**在既有工作之上的,不是重来。以下既定结论全部保留、未被本表覆盖:
96
-
97
- | 既有结论 | 出处 | 在本表中的位置 |
98
- | --- | --- | --- |
99
- | 会话检索"从没真正开过"(四条硬证据)+ 51 个文件四组构成 + 禁删行(seq 必须等于行序号)+ 真白名单 15 项 | `SESSION-FILE-REPAIR-PROTOCOL.md`、`ACCEPTANCE-20260914.md` 附录 | **A4 / P0-①**(等口径) |
100
- | 跨会话 / 跨 Agent 检索:路径 C(分期版 A)+ 体量实测 + 成本模型 + LongMemEval 证据 | `CROSS-SESSION-SEARCH-RESEARCH.md`、`-PATH-DECISION.md` | **A4b / P2-⑦** |
101
- | 三层记忆的**设计意图**(上层指引"要不要用"、逐层下探、上层出来即缩窄搜索空间)+ 现状三缺(无状态 / 无层级归属 / 无递进闸门) | 用户澄清,项目笔记 | **A3 / P0-③** 的目标形态 |
102
- | 记忆增删 × 索引重排的机制(miv 全量哈希、worker 全量重嵌、块级 ID 已内容寻址却未用作缓存键)+ 方案(块级缓存 / supersede / 差量 / fail-open) | `MEMORY-MUTATION-AND-INDEX-DESIGN.md` | **A1 + A2 / P0-④ 及附** |
103
- | 白板图参照物 = **`miuzel/dsh-graph`**(不是 DSH-Plan-Graph)+ 用户已定"combine 进自己白板"+ 已有 P0→P3 预研与 15 个拍板点 | `WB-GRAPH-DECISIONS-20260914.md`、4 份 `WB-GRAPH-*` | **C2 / P1-⑥** |
104
- | 验收基线:npm 2.5.2 / REL=main=tag=55c3deb / pre `1c06c46` / 71 套件全绿 / m73 flake 已修 | `ACCEPTANCE-20260914.md` | **D1 / P1-⑤** 的起点 |
105
- | 两个界面功能 bug 来自群反馈(接续开关互锁、sub agent 模型选不动) | QQ 群记录(用户转发) | **C1 / P0-A、C3 / P0-B** |
106
- | 过渡投递管道 `TODO-GRAPH.html`(不投入打磨,白板上线后退役) | 用户口径 | C2 的前身,不另立条目 |