@a9i5k4/dsh-auto-memory 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -13
- package/README.zh-CN.md +30 -13
- package/docs/FRONTEND-CO-CREATION.md +191 -0
- package/docs/GM53-HOMEPAGE-PROMPT.md +323 -0
- package/docs/HANDBOOK.md +88 -52
- package/docs/HOMEPAGE-CONTENT-FOR-GM53.md +299 -0
- package/docs/PROMO-PROMPT-3.0.md +100 -0
- package/docs/USER-GUIDE.en.md +11 -11
- package/docs/USER-GUIDE.zh-CN.md +11 -11
- package/docs/WHITEPAPER.md +207 -0
- package/docs/screenshots/promo/promo-0-banner-v3.png +0 -0
- package/docs/screenshots/promo/promo-0-banner-v4.png +0 -0
- package/docs/screenshots/promo/promo-1b-auto-recall.png +0 -0
- package/lib/activation-host.js +69 -10
- package/lib/board-mode.js +1 -1
- package/lib/client.js +1697 -285
- package/lib/config-io.js +156 -0
- package/lib/context-bridge.js +3 -0
- package/lib/context-host.js +23 -10
- package/lib/degrade.js +385 -0
- package/lib/dsh-home.js +143 -0
- package/lib/episodic-store.js +142 -18
- package/lib/evidence-store.js +8 -1
- package/lib/fact-store.js +484 -43
- package/lib/hub-io.js +217 -0
- package/lib/index-sync.js +13 -1
- package/lib/index.js +1730 -202
- package/lib/intent-clean-safe.js +258 -40
- package/lib/l0-extract.js +231 -16
- package/lib/m4-corpus.js +8 -2
- package/lib/m7-index-sync-host.js +8 -1
- package/lib/memory-envelope.js +6 -1
- package/lib/memory-hub.js +164 -17
- package/lib/memory-index.js +4 -2
- package/lib/note-status-apply.js +118 -0
- package/lib/note-status.js +204 -0
- package/lib/procedure-store.js +333 -31
- package/lib/procedure-switch.js +38 -0
- package/lib/python-sidecar-client.js +314 -11
- package/lib/recall-fusion.js +83 -12
- package/lib/rules-edit.js +159 -0
- package/lib/semantic-decide.js +41 -8
- package/lib/semantic-js.js +51 -6
- package/lib/shadow-host.js +3 -5
- package/lib/skill-export-host.js +153 -0
- package/lib/skill-export.js +239 -0
- package/lib/storage-manage.js +6 -0
- package/lib/temporal-parse.js +191 -159
- package/lib/tier0-catalog.js +45 -3
- package/lib/wb-contract.js +198 -2
- package/lib/wb-sidecar.js +54 -3
- package/package.json +6 -2
- package/docs/internal/ACCEPT-35-LIVE.md +0 -143
- package/docs/internal/ACCEPTANCE-20260914.md +0 -90
- package/docs/internal/ARCH-REVIEW-BRIEF.md +0 -411
- package/docs/internal/ARCH-REVIEW-REQUEST.md +0 -201
- package/docs/internal/ARCH-REVIEW-ROUND2.md +0 -169
- package/docs/internal/ARCH-REVIEW-ROUND3.md +0 -206
- package/docs/internal/ART-DIRECTION-WIREFRAME.md +0 -181
- package/docs/internal/AUDIT-WB-GRAPH-FULL-20260916.md +0 -314
- package/docs/internal/CONCURRENCY-INVESTIGATION-20260917.md +0 -192
- package/docs/internal/CROSS-SESSION-SEARCH-PATH-DECISION.md +0 -72
- package/docs/internal/CROSS-SESSION-SEARCH-RESEARCH.md +0 -131
- package/docs/internal/CUA-VISION-FIX-NOTES.md +0 -78
- package/docs/internal/DECISIONS-20260914-SESSION.md +0 -269
- package/docs/internal/DESIGN-OVERHAUL-PRE-RESEARCH.md +0 -292
- package/docs/internal/DESIGN-P1-STATE-COMMIT-20260915.md +0 -219
- package/docs/internal/DIRECTION-CHECK-WB-GRAPH-20260916.md +0 -132
- package/docs/internal/FEEDBACK-TO-DSHAPI-RELAY.md +0 -13
- package/docs/internal/GH-DISCUSSION-5732-COMMENT.md +0 -74
- package/docs/internal/GPT-ACCEPTANCE-PROMPT-20260916.md +0 -352
- package/docs/internal/GPT-REVIEW-PROMPT.md +0 -216
- package/docs/internal/GROUP-DIGEST-SETUP.md +0 -62
- package/docs/internal/GROUP-LISTENER-SETUP.md +0 -49
- package/docs/internal/GROUP-WEBHOOK-SETUP.md +0 -93
- package/docs/internal/HANDOFF-TO-ZCODE.md +0 -168
- package/docs/internal/KICKOFF-P0.md +0 -254
- package/docs/internal/MASTER-PLAN-3.0.md +0 -411
- package/docs/internal/MEMORY-MUTATION-AND-INDEX-DESIGN.md +0 -85
- package/docs/internal/MERGE-CONFLICT-SCAN-20260914.md +0 -222
- package/docs/internal/NEXT-VERSION-TODO.md +0 -95
- package/docs/internal/OFFICIAL-DISCUSSION-DRAFT.md +0 -80
- package/docs/internal/PENDING-FIXES-20260916.md +0 -289
- package/docs/internal/RAG-KARPATHY-PROGRAM.md +0 -229
- package/docs/internal/RELEASE-PROCESS.md +0 -99
- package/docs/internal/REPORT-P0-NIGHTLY.md +0 -212
- package/docs/internal/REPORT-P5-ACCEPTANCE.md +0 -31
- package/docs/internal/REPORT-WB-GRAPH-NIGHTLY.md +0 -153
- package/docs/internal/REVIEW-WB-GRAPH-SELF.md +0 -81
- package/docs/internal/ROADMAP-20260917-WEEK.md +0 -305
- package/docs/internal/ROADMAP.md +0 -106
- package/docs/internal/RUN-P0-NIGHTLY.md +0 -227
- package/docs/internal/S10-CONSTRUCTION-HANDOFF-20260917.md +0 -175
- package/docs/internal/S10-GAPS-PLAIN-20260917.md +0 -125
- package/docs/internal/SEMANTIC-ARCHITECTURE-SPEC.md +0 -360
- package/docs/internal/SESSION-FILE-REPAIR-PROTOCOL.md +0 -90
- package/docs/internal/SUBAGENT-REPORT-ROUTING-PRE-RESEARCH.md +0 -261
- package/docs/internal/THREE-LAYER-CONTRACT.md +0 -210
- package/docs/internal/TODO-BACKLOG.md +0 -263
- package/docs/internal/TODO-GRAPH.html +0 -715
- package/docs/internal/TODO-GRAPH.html.bak-20260914-v2 +0 -493
- package/docs/internal/TODO-GRAPH.html.bak-20260915-alsfix +0 -710
- package/docs/internal/TODO-GRAPH.html.bak-20260915-p1 +0 -710
- package/docs/internal/TODO-GRAPH.html.bak-20260915-p6a-rev +0 -703
- package/docs/internal/TODO-GRAPH.html.bak-20260915-wshint +0 -710
- package/docs/internal/TODO-GRAPH.html.bak-20260916-batch +0 -715
- package/docs/internal/WB-FORMAT-CONVENTION.md +0 -112
- package/docs/internal/WB-GRAPH-DECISIONS-20260914.md +0 -71
- package/docs/internal/WB-GRAPH-INTEGRATION-PLAN.md +0 -386
- package/docs/internal/WB-GRAPH-RESEARCH-BRIEF.md +0 -118
- package/docs/internal/WB-GRAPH-RESEARCH-EXTERNAL.md +0 -228
- package/docs/internal/WB-GRAPH-RESEARCH-LOCAL.md +0 -190
- package/docs/internal/reviews/CLAIM-VERIFICATION-20260914.md +0 -56
- package/docs/internal/reviews/PLAN-gpt6astra-round2-20260914.md +0 -787
- package/docs/internal/reviews/REVIEW-gpt6astra-20260914.md +0 -112
- package/docs/internal/reviews/ROUND3-REVIEW-INTEGRATION-20260914.md +0 -230
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
# 规划层裁决记录 · 2026-09-14 夜(思维拟合会话)
|
|
2
|
-
|
|
3
|
-
> **性质**:本文是规划层留档,不是执行文档。记录 2026-09-14 晚与用户逐轮问答得出的**全部裁决与前提修正**。
|
|
4
|
-
> **为什么单独留档**:用户明确「规划层的内容要比执行层重要非常非常多」;这些结论由多轮拟合得出,**散落在对话里会随压缩丢失**(本会话已压缩一次)。
|
|
5
|
-
> **上游**:`ARCH-REVIEW-ROUND2.md`(投喂操作件)、`reviews/PLAN-gpt6astra-round2-20260914.md`(GPT 交付)、`reviews/CLAIM-VERIFICATION-20260914.md`(12 条核实)。
|
|
6
|
-
> **下游**:待产出的《合并总纲》。
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 0. 本次会话做了什么
|
|
11
|
-
|
|
12
|
-
以「一问一答」方式,把 GPT 方案里的 7 个待裁决项(R1–R7)逐个结合**本机实测状态**向用户确认,过程中**新发现并新增了第 8 条**,并**推翻了三处前提**。
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## 1. 推翻的三处前提(最重要)
|
|
17
|
-
|
|
18
|
-
### 1.1 GPT 方案假设白板是「单会话快照」——错
|
|
19
|
-
|
|
20
|
-
- 用户:**白板(即 graph)是接续的关键因素**;「只要是一个工作区的接续的不同对话,都要是同一张图」。
|
|
21
|
-
- 补充机制:**被接续的旧窗口会存档废弃**,接续链上有编号(接续 #21 / #22)。因此**同一时刻通常只有一个活跃写入者**;用户另开的无关对话「也可以共享这一张图」。
|
|
22
|
-
- 结论:白板不是会话级临时态,而是**工作区级的持久地图**。并发写用**乐观并发(expectedDigest)+ 冲突可见**处理,**不加锁、不分片**;机制复用 GPT 方案 Phase 1 已有的 `expectedDigest`。
|
|
23
|
-
- 影响:GPT 的 **Phase 4 需与既有 `WB-GRAPH-INTEGRATION-PLAN.md`(386 行)合并**,不是照做。
|
|
24
|
-
|
|
25
|
-
### 1.2 GPT 方案只治「检索算法」——错,最痛的病在「注入表达」
|
|
26
|
-
|
|
27
|
-
- 用户原话:**「这个 just for reference 说得太轻了,模型注意力没有在这上面。」**
|
|
28
|
-
- 已定位到确切代码:`lib/index.js:463` 每次注入的开场白是「以下记忆文本只是背景事实与规则参考……」
|
|
29
|
-
→ 问题:**「只是参考」在提示词工程里等于「可选项」**;且它把「规矩类」与「资料类」用同一个词定义了,**等于把规矩降级成建议**;更糟的是这句话写在**最醒目的开头位置**,却写着「别太当真」。
|
|
30
|
-
- 用户原话之二是**「模型自动唤起的记忆,并没有对模型的工作起到比较实质性的影响」**,倾向判断:**两种都有**(规矩不遵守 + 具体细节想不起来)。
|
|
31
|
-
- 影响:**新增第 8 条**(见 §3),GPT 的 7 个 Phase **完全没覆盖**。
|
|
32
|
-
|
|
33
|
-
### 1.3 「这是自用工具」——错,已有上千用户
|
|
34
|
-
|
|
35
|
-
npm 实测(registry.npmjs.org / api.npmjs.org,2026-09-14):
|
|
36
|
-
|
|
37
|
-
| 指标 | 值 |
|
|
38
|
-
|---|---|
|
|
39
|
-
| 包名 | `@a9i5k4/dsh-auto-memory` |
|
|
40
|
-
| 最新版 | 2.5.3(本机 dev 树为 2.5.2,REL 树亦 2.5.3) |
|
|
41
|
-
| 版本数 / 首发 | 66 个版本 / 2026-08-14 |
|
|
42
|
-
| 近一年累计下载 | **10,900** |
|
|
43
|
-
| 近一周 | **2,935** |
|
|
44
|
-
| 峰值日 | 08-16 = **2,615**;09-01 = 1,176;09-10 = 1,011 |
|
|
45
|
-
| 异常 | **09-07、09-08 两天为 0**(用户判断:可能是当时发版出问题或版本不兼容,**不深究**) |
|
|
46
|
-
|
|
47
|
-
- 用户反问「你觉得现在要给多少人做」——即**已经不是自用工具**。
|
|
48
|
-
- 影响:**兼容档必须真做**(弱机器降级要有实测上限);「新旧并存 + 开关回退」从「稳妥」升级为「必须」;错误提示、切档进度条属于必需品而非体验优化。
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## 2. R1–R7 裁决结论(结合本机实测)
|
|
53
|
-
|
|
54
|
-
### R1 排序展示 —— **双显示**(用户裁定)
|
|
55
|
-
|
|
56
|
-
- 用户:「两个都显示是非常好的。而且一般不会真的有人去点开上下文注入去看吧。这是给机器看的,又不是给人看的。」
|
|
57
|
-
- **实测澄清**:`memory_recall_pre` 返回的数字是**稠密余弦相似度**(`lib/index.js:4429`,过滤线 `minScore: 0.5`,按它降序);排序侧的 RRF 分与原始分**已在数据结构里**(`recall-fusion-pre.js:35` 明确「原始分数逐条保留供审计」)。
|
|
58
|
-
- 因此「双显示」接近**零成本**(数据已在手上,只是 UI 未显示)。
|
|
59
|
-
- **关键区分**:UI 上的分数是**给人调试**用的;模型看到的是**注入文本**。两条展示链路不应混。
|
|
60
|
-
- UI 上显示顺序:**相似度在前,融合排序分在后**。
|
|
61
|
-
- 与 S5.4 的关系:因为**没有拿融合分冒充相似度**(两个都摆出来),冲突不存在。
|
|
62
|
-
|
|
63
|
-
### R2 margin / 决策阈值 —— **维持现有架构**(工程判断)
|
|
64
|
-
|
|
65
|
-
- 代码里已经做对了:`recall-fusion-pre.js:10-12` 明确「**融合分数只用于排序;是否注入的决策必须使用绝对分数(稠密余弦)与校准阈值比较**」。
|
|
66
|
-
- 实测记录(`lib/index.js:7254`):「bge-m3 校准的 0.03 对 e5 的压缩分布过严(live 实测 margin 0-0.0284 全被拦)」→ **两档的 margin 尺度不同,不能互相套用**。
|
|
67
|
-
- 裁决:新策略**消费带版本的融合间隔必须重新校准**(采纳 GPT 的 R2 推荐);旧 `margin` 定义与阈值**冻结**,新特征先跑 shadow。
|
|
68
|
-
|
|
69
|
-
### R3 注入预算边界 —— **分开算**(用户裁定)
|
|
70
|
-
|
|
71
|
-
- 用户:「以目前的情况来说,分开算应该是非常好的。反正可以让用户在设置里随便改。」
|
|
72
|
-
- **实测修正**:本机 `injectBudgetChars` 实际为 **4800**,而 GPT 方案的成本模型假设是 **2000**——**方案建立在一个用户并未使用的数字上**。
|
|
73
|
-
- 裁决:**记忆条目一个额度,其他动态内容(白板 / 账本 / 日历 / 外部记忆)另一个总额度**。
|
|
74
|
-
- **但新增一条覆盖规则**:**规则类不参与任何预算裁剪**(见 §3)。
|
|
75
|
-
- 附带:设置页「大修、提升 UI 质感与可操作度」记为**独立排期项**,不塞进 Phase 0–6。
|
|
76
|
-
|
|
77
|
-
### R4 共用契约 —— 按 GPT 推荐(无异议)
|
|
78
|
-
|
|
79
|
-
两档共用流程、字段与判据,允许适配器、数量与预算不同;避免把「同路径」解释为「相同的模型调用」。
|
|
80
|
-
|
|
81
|
-
### R5 白板 lint —— **要做,且归属变更**(用户裁定)
|
|
82
|
-
|
|
83
|
-
- 用户:「这个白板后面我要 combine 进 dsh graph 这个开源项目……这个用户是肯定要看的,而且这个肯定是需要改的。甚至有些不明白的时候,AI 可以主动去向用户提问。」
|
|
84
|
-
- 裁决:lint **要做**,且**不只是报告**——有问题要能改;AI 不明白时可**主动向用户提问**。
|
|
85
|
-
- **归属**:并入 WB-GRAPH 重构,**不单独作为 Phase 4 的一部分**。
|
|
86
|
-
|
|
87
|
-
### R6 白板人机分区 —— **需要用户手写区**(用户裁定,推翻了「全 AI 维护」的初答)
|
|
88
|
-
|
|
89
|
-
- 用户先说「全是 AI 写的,由 AI 来维护」,随后**自我修正**:「确实需要有用户手写区来保护用户,或许有时候确实需要手动去改。然后 AI 应该也会有和用户共同编辑。」
|
|
90
|
-
- **实测现状(关键)**:`WB-FORMAT-CONVENTION.md` §5 **早已定义人机分区**(每张卡片分 `<!-- model -->` / 用户区,永不互相覆盖),但**实际 PLAN.md 里一个锚点、一个分区标记都没有**——规范已批准、**代码从未实现**。
|
|
91
|
-
- **这解释了今天早些时候那个事故**:没有锚点、没有分区 ⇒ **整篇覆盖是唯一可行的写入方式** ⇒ 系统自动快照一写,白板全貌就没了。
|
|
92
|
-
- 裁决:分区要真做,并入 WB-GRAPH 重构 P1/P2。
|
|
93
|
-
|
|
94
|
-
### R7 数值与计量 —— 按 GPT 推荐(无异议)
|
|
95
|
-
|
|
96
|
-
定义源记录已批准数值,行为测试独立验证;字符估计只标「估计」,真实 tokenizer 计量另报。
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## 3. 新增第 8 条(GPT 方案完全没有)
|
|
101
|
-
|
|
102
|
-
### 8.1 病症
|
|
103
|
-
|
|
104
|
-
用户原话(本次会话最有价值的信号):
|
|
105
|
-
|
|
106
|
-
> **「just for reference 说得太轻了,模型注意力没有在这上面。」**
|
|
107
|
-
> **「模型自动唤起的记忆,并没有对模型的工作起到比较实质性的影响。」**
|
|
108
|
-
|
|
109
|
-
### 8.2 两条独立病因
|
|
110
|
-
|
|
111
|
-
| | 病因 | 证据 |
|
|
112
|
-
|---|---|---|
|
|
113
|
-
| **A. 措辞** | 注入开场白把「规矩」与「资料」统一降格为「参考」;且写在最醒目位置却写着「别太当真」 | `lib/index.js:463` |
|
|
114
|
-
| **B. 节奏** | `snapshotMinGapRounds = 5` ⇒ **规矩在第 2–5 轮不在场**;模型不是不听话,是**没收到** | `lib/index.js:326`、`7455` |
|
|
115
|
-
|
|
116
|
-
### 8.3 裁决:规则/参考分层
|
|
117
|
-
|
|
118
|
-
| 层级 | 存放 | 注入节奏 | 预算 | 谁写 |
|
|
119
|
-
|---|---|---|---|---|
|
|
120
|
-
| **用户级规则** | 用户级记忆(现有 `~/.dsh/memory/MEMORY.md`) | **每个工作区、每轮都注入**(相当于用户画像) | **不参与预算裁剪** | AI 写入,用户可改 |
|
|
121
|
-
| **工作区级规则** | 工作区自己的规则文件 | **每轮都注入** | **不参与预算裁剪** | AI 写入,用户可改 |
|
|
122
|
-
| **参考类** | 现有 `MEMORY.md` / 日志 / 反思 | 三层漏斗(目录常驻 → 摘要 → 原文) | 受 R3 的额度约束 | 现有机制不变 |
|
|
123
|
-
|
|
124
|
-
- 用户裁定:**两层都要**(工作区级 + 用户级)。换工作区 = 换工作区级规则;用户级跨工作区恒定。
|
|
125
|
-
- 用户补充的**膨胀对策**:「让规则写得稍微克制一点,以每个工作区为锚点」。
|
|
126
|
-
- **成本可行性**:规则几乎不变 ⇒ 位于注入前缀 ⇒ **命中 DeepSeek 前缀缓存(约原价 1/10)** ⇒ **每轮注入的边际成本极小**。用户判断「注入这点东西用不了多少缓存预算」**成立**。
|
|
127
|
-
- **分类时机(用户裁定,重要)**:**不做成独立 LLM 调用**。`memory_log` 本来就在**本轮内由模型直接写**(「这个是直接写的,就在本轮当中确定什么是规则、什么是参考」),顺手打标 = **零额外成本**。将来 procedural memory 同理。
|
|
128
|
-
- **反驳与保留(我的建议,待用户确认)**:AI 分类的风险是**漏判**——真规则被判成「偏好」就会掉进参考类,**而这正是要修的病**。建议**前缀双保险**:出现 `【用户硬性规则】`/「严禁」/「必须」/「绝不」等字样时,**无论 AI 怎么判一律强制进规则类**。规则集小,多塞代价低;漏一条的代价是反复纠正。
|
|
129
|
-
|
|
130
|
-
### 8.4 附带的 UI 缺口(用户提出)
|
|
131
|
-
|
|
132
|
-
- 用户:「这个约束性的东西**必须得让用户看到**,并且让用户能进行精修。比如在记忆窗格的可视化里面,能够让用户看到目前模型有什么约束。」
|
|
133
|
-
- **实测**:记忆窗格现有 **12 个标签页**(概览 / 日志 / 精炼 / 记忆中枢 / 存储 / 笔记 / 白板 / 反思 / 连接 / 日历 / 工作区……),**没有任何一页显示「当前模型受什么约束」**。
|
|
134
|
-
- 裁决:新增「约束」视图,归入**UI 提质排期**。
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## 4. 引擎隔离与切换(用户裁定)
|
|
139
|
-
|
|
140
|
-
- 用户:「本来它们就是分隔的,只要在切换的时候强制前排(全量重建)就可以了。直接给用户显示一个进度条。」
|
|
141
|
-
- **实测两档用的是两个不同模型**:C2 = `Xenova/multilingual-e5-small` q8(端侧);C3 = `Xenova/bge-m3` int8(Python sidecar,555MB)。**向量空间不通用**。
|
|
142
|
-
- 代码已有意识(`PROVIDER_ID_INT8 = 'bge-m3-onnx-int8-pre-v1'`),**但没做成硬约束**。
|
|
143
|
-
- **新增能失败断言 T2-9(引擎隔离)**:用 e5 建的索引,切到 bge-m3 后**必须整体失效并重建**;若出现两套向量参与同一次排序,**判失败**。成本为零(仅加身份校验)。
|
|
144
|
-
- **用户强调的耦合约束**:切档进度条**必须并进现有「引导 / 向导」体系**(Python BGE 下载、venv 建环境已有可视化指导),**不得另起一套**。
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## 5. 精排(H2)——方案被实测数据推翻,需重写
|
|
149
|
-
|
|
150
|
-
### 5.1 方案假设 vs 实测
|
|
151
|
-
|
|
152
|
-
| | GPT 方案假设 | 本机实测(`artifacts/m7-rerank-pre/results.json`) |
|
|
153
|
-
|---|---|---|
|
|
154
|
-
| 额外等待 | **≤750 ms** | **bge-reranker-v2-m3:P95 37.4 秒;qwen3-reranker-0.6b:P95 8.8 秒** |
|
|
155
|
-
| 模型资产 | U5「缺,阻塞」 | **已下载**(bge-reranker-v2-m3 2.1GB / qwen3-reranker-0.6b 1.1GB,各带 tokenizer) |
|
|
156
|
-
| 精度收益 | 未量化 | **recall@1:0.739 → 0.898(bge)/ 0.800(qwen)** |
|
|
157
|
-
|
|
158
|
-
### 5.2 硬件实测(我最初查错了,此处更正)
|
|
159
|
-
|
|
160
|
-
- **有可用显卡**:`NVIDIA GeForce RTX 4070 Ti SUPER`,**16GB 显存**,驱动 616.64。
|
|
161
|
-
- (我最初只列了前 3 个显示适配器就误判「无 GPU」,**此处更正并留痕**。另有 AMD Radeon 集显 + 3 个虚拟适配器。)
|
|
162
|
-
- 当前 Python 环境:`torch 2.13.0+cpu`(**CPU 版**)、`transformers 5.15.1`、`onnxruntime 1.23.2`、16 核 CPU、31GB 内存。
|
|
163
|
-
|
|
164
|
-
### 5.3 用户裁定:改为「多级选项」
|
|
165
|
-
|
|
166
|
-
用户原话:「这恐怕是一个**可以多级选项**的问题。发烧友、追求高质量的人或者研究人员,可以打开显卡加速进行精排……普通用户的话,用粗排就可以……(或者只在主动翻记忆的时候跑。亦或者拉长自动注入的时间。反正目前自动注入的时间窗口间隔是 1 分钟,也是可以改的。)」
|
|
167
|
-
|
|
168
|
-
| 档 | 谁用 | 跑在哪 | 触发时机 |
|
|
169
|
-
|---|---|---|---|
|
|
170
|
-
| **关** | 默认 | — | 不精排,纯粗筛 |
|
|
171
|
-
| **快档** | 普通用户 | int8 量化 / ONNX / CPU | 主动翻记忆时 |
|
|
172
|
-
| **发烧档** | 作者 / 研究者 | 完整模型 + RTX 4070 Ti SUPER | 主动翻记忆 + 可选自动注入 |
|
|
173
|
-
|
|
174
|
-
**并且新增方案里没有的机制**:精排改为 **1 分钟异步窗口** —— 本轮先用现有排序,精排在后台跑完,**结果留给下一次注入**。「准确率」与「不卡等待」不必二选一。
|
|
175
|
-
|
|
176
|
-
### 5.4 两个开发中遇到的实测坑(保留)
|
|
177
|
-
|
|
178
|
-
- **精排模型量化后更小更快**:用户提到 `multilingual` 100 多 MB、`bge` 500 多 MB(= `models-xenova-bge-m3-int8`,实测 555MB),比完整版快很多。
|
|
179
|
-
- **已有 int8 vs fp32 对照脚本**:`python/bench/l2_bench_int8_vs_fp32.py`(尚未读到结果,待补)。
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## 6. 用户级判断:成本模型的正确算法
|
|
184
|
-
|
|
185
|
-
用户反问:「你觉得这个成本模型的成本要怎么算?反正付钱的又不是我给这几千人一起付,是他们自己付自己的钱。」
|
|
186
|
-
|
|
187
|
-
**结论:我原先的推理有隐含错误**——把「上千用户 × 每轮注入」当成**一张账单**来吓自己。真实情况:
|
|
188
|
-
|
|
189
|
-
| 项目 | 谁付钱 | 对作者的成本 |
|
|
190
|
-
|---|---|---|
|
|
191
|
-
| 记忆注入 token | 用户自己的 API key | **0** |
|
|
192
|
-
| 精排算力 | 用户自己的机器(本地推理) | **0** |
|
|
193
|
-
| 嵌入建索引 | 用户自己的机器(一次性 + 增量) | **0** |
|
|
194
|
-
|
|
195
|
-
- 「上千用户」对**成本模型的影响为 0**;真正的影响是**代码质量**(bug 被放大)与**兼容档必须真做**。
|
|
196
|
-
- 推论:**该省的地方是「别浪费」(不重复注入同样内容),不该省的地方是准确性**;而前缀缓存让「规则每轮注入」的边际成本极小。
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## 7. 白板 / graph 的战略裁决(用户裁定:(乙))
|
|
201
|
-
|
|
202
|
-
用户裁定:**「(乙) 两者合并:把 GPT 的『写入门 + 引擎隔离 + 状态过滤』这套通用原则,注入到你 WB-GRAPH 方案的 P1/P2 里。」**
|
|
203
|
-
并补充:**「我认为这个 dsh graph 正是我想要的 Karpathy 模块。」**
|
|
204
|
-
|
|
205
|
-
查证结果(仓内既有资产):
|
|
206
|
-
|
|
207
|
-
| 文档 | 规模 | 状态 |
|
|
208
|
-
|---|---|---|
|
|
209
|
-
| `WB-GRAPH-INTEGRATION-PLAN.md` | 386 行 | 2026-09-13 完成,含判据 Schema、sidecar 设计、两工具方案 |
|
|
210
|
-
| `WB-GRAPH-DECISIONS-20260914.md` | 54 行 | 一页纸拍板点(A1–A8 / B1–B7),**大部分仍标 🎯 未拍板** |
|
|
211
|
-
|
|
212
|
-
**GPT 的 Phase 4 与既有 WB-GRAPH 方案的差异**:
|
|
213
|
-
|
|
214
|
-
| | GPT Phase 4 | WB-GRAPH 方案 |
|
|
215
|
-
|---|---|---|
|
|
216
|
-
| 目标 | 白板进语料 + 写入门 + lint | 白板 → **看板化**(combine dsh-graph) |
|
|
217
|
-
| 判据 | 卡片集合比对 | 完整判据表(H1–Hn) |
|
|
218
|
-
| 存储 | 直接改 Markdown | **Markdown = 人读真相源,sidecar JSON = 机读派生件** |
|
|
219
|
-
| 检索 | 进 L0 语料 | **新增两工具**(expand / trace),工具数 14 → 16 |
|
|
220
|
-
| 人机 | 用户区保护(一整块) | **每卡片分区**(模型区 / 用户备注区) |
|
|
221
|
-
|
|
222
|
-
**合并后的分工(我的建议,待确认)**:
|
|
223
|
-
- GPT Phase 4 中**真正新增**的只有 **lint** 一项 → **挂到 WB-GRAPH 的 P1 上**;
|
|
224
|
-
- 「写入门的前后比对」与 WB-GRAPH 的 **B1 同源** → 合并实现;
|
|
225
|
-
- 「用户区保护」与 **B4 选项 (c)** 同源 → 按 WB-GRAPH 的每卡片分区做;
|
|
226
|
-
- GPT 的 **引擎隔离(T2-9)与状态过滤(C8)** 属 Phase 0/2,**不随白板走**。
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
## 8. 评测题集(U3)
|
|
231
|
-
|
|
232
|
-
- 用户:题集是**很早期初创算法时做的**,后面需要**结合已有记忆(现在记忆量已丰富)继续优化算法,或再整一套丰富的测试题和标准答案**。
|
|
233
|
-
- 待查:`python/bench/results/m7-2-results.json`(799KB)与 `m7-2-l2-results.json`(468KB)的内容形态。
|
|
234
|
-
- **建议方向(待确认)**:新题集应当**从真实记忆语料出发**(用户已有大量真实记忆),而不是凭空造题——这样才测得出「真实使用中的召回质量」。
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## 9. 开工节奏与风险(用户裁定)
|
|
239
|
-
|
|
240
|
-
- 用户裁定:**要新旧并存 + 开关切换,随时能退回**。
|
|
241
|
-
- 用户裁定第一步:**先出《合并总纲》**。
|
|
242
|
-
- 用户追问:现在可以开工了吗?还是先找 GPT 再咨询 / 总纲出来再让 GPT 审一遍?
|
|
243
|
-
|
|
244
|
-
**我的建议(写作本文时给出)**:
|
|
245
|
-
|
|
246
|
-
> **总纲 → 我方先做「矛盾扫描」→ GPT 审 → 开工**
|
|
247
|
-
|
|
248
|
-
理由:GPT 审之前,两份方案(它的 7 Phase 与 WB-GRAPH)之间的**表面对齐**应由我方先做;否则它会花大量篇幅指出「你这跟我的 Phase 4 不一样」——那是**已知信息**。让它审「调和是否正确」,比让它审「自己的方案」有效得多:**它能发现自己没考虑的整合问题,发现不了自己没想到的东西**——后者今天这场对话已经做了。
|
|
249
|
-
|
|
250
|
-
**开工前必须先补的三件**:
|
|
251
|
-
1. 《合并总纲》(含 GPT 7 Phase + 第 8 条 + WB-GRAPH 的合并与排序);
|
|
252
|
-
2. 矛盾扫描结果(两份方案冲突清单 + 调和方案);
|
|
253
|
-
3. **不做**:在总纲出来前动 `lib/index.js` 的注入链。
|
|
254
|
-
|
|
255
|
-
**唯一的例外(可以立刻做、且建议做)**:
|
|
256
|
-
- **C8 缺陷修复**——`superseded` / `retracted` 条目**现在真的会进入注入文本**(本会话已用 `tools/_redproof/red-proof-phase0-t01.mjs` 跑出 4/4 报红)。这是一个**正在发生的真实危害**,且修复范围极小、可独立回滚。
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
## 10. 本次会话产出的文件
|
|
261
|
-
|
|
262
|
-
| 文件 | 内容 |
|
|
263
|
-
|---|---|
|
|
264
|
-
| `docs/internal/reviews/REVIEW-gpt6astra-20260914.md` | 第一轮评审原文(补录,此前并未真正落盘) |
|
|
265
|
-
| `docs/internal/reviews/CLAIM-VERIFICATION-20260914.md` | 12 条主张逐条核实(12/12 成立) |
|
|
266
|
-
| `docs/internal/ARCH-REVIEW-ROUND2.md` | 第二轮投喂操作件 |
|
|
267
|
-
| `docs/internal/reviews/PLAN-gpt6astra-round2-20260914.md` | GPT 第二轮交付:RAG+Karpathy 实施方案 v1(37071 字) |
|
|
268
|
-
| `tools/_redproof/red-proof-phase0-t01.mjs` | T0-1 断言的「能红」证明(4/4 报红) |
|
|
269
|
-
| **本文** | 规划层裁决记录 |
|
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
# 大排期预研:界面 × 文档 × 首页
|
|
2
|
-
|
|
3
|
-
> 生成时间:2026-09-10 · 对应版本 v2.4.0(pre 线)
|
|
4
|
-
> 上游:`docs/UI-REFACTOR-PRE-RESEARCH.md`(设置页重构预调研,其「第 0 步·止血」已落地:路径表一致性锁 + 写配置单一出口)
|
|
5
|
-
> 本文性质:**预研 + 排期草案,未开工**。文末 §8 有 6 个待你拍板的点。
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 0. 你定的验收标准(原文口径)
|
|
10
|
-
|
|
11
|
-
> 「找得到但太杂,现在美学设计比较一般,而且很乱。这属于强技术、弱外观、弱使用。」
|
|
12
|
-
> 「目标用户是 npm 公开用户,目前 1 万多下载,很多用户反映需要有说明书,没法直接上手。」
|
|
13
|
-
> 「改动规模比较大,但应该单独放出一个排期来做,**其他的后端不能动**。要把三件事一起做完:①前端和设计页面的大改 ②README 里的用户说明书/项目文档的大改 ③项目首页 HTML 的大改。」
|
|
14
|
-
|
|
15
|
-
拆成五条可验收的判据(§6 展开):**能上手 / 看得懂 / 不重复 / 后端零改动 / 每步可发版**。
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 1. 边界:什么叫「后端不能动」
|
|
20
|
-
|
|
21
|
-
### 1.1 冻结清单(本次排期一律不碰)
|
|
22
|
-
|
|
23
|
-
| 冻结项 | 具体范围 | 为什么 |
|
|
24
|
-
| --- | --- | --- |
|
|
25
|
-
| 记忆引擎 | `lib/index.js` 的记忆/检索/注入/水位/接续全部逻辑;`lib/*-pre.js` 除 `client.js` 外的全部模块 | 后端行为不变,才能保证"改外观不会改行为" |
|
|
26
|
-
| HTTP 契约 | 46 条路由的路径、方法、请求/响应结构 | 界面已收敛到路径表(第 0 步),改契约会连锁 |
|
|
27
|
-
| 配置语义 | `DEFAULT_CONFIG` 85 键的名称、类型、默认值、联动规则 | 用户已落盘的配置必须继续有效 |
|
|
28
|
-
| prompt 层 | `DEFAULT_PROMPT_LAYERS`、注入文案、缓存友好性 | 影响 token 与官方缓存命中 |
|
|
29
|
-
| Python 引擎 | `python/`、worker 协议、安装向导的后端步骤 | 与外观无关 |
|
|
30
|
-
| 工具面 | 14 个 `memory_*` 工具的名字与参数 | 已发布契约 |
|
|
31
|
-
| 测试 | `tests/smoke/69` 个套件的既有断言 | 只能新增,不能放宽 |
|
|
32
|
-
|
|
33
|
-
### 1.2 可动清单
|
|
34
|
-
|
|
35
|
-
`lib/client.js`(界面半边)、`README.md` / `README.zh-CN.md`、`docs/USER-GUIDE.{en,zh-CN}.md`、`docs/landing/index.html`、`package.json` 的**打包元数据**(`files` / `homepage` / `description` / `keywords` / `engines` / `scripts`)、新增 `docs/internal/**`、`docs/screenshots/**`(重拍)、新增测试。
|
|
36
|
-
|
|
37
|
-
**`package.json` 的例外说明**:只动对外元数据字段,**不动** `main` / `exports` / `dsh` 的 bundle 与 client 注入契约(除非要新增一个注入包,见 §4.2——那是打包层,不是引擎层)。
|
|
38
|
-
|
|
39
|
-
### 1.3 可行性已证:看起来要动后端的事,其实都不用
|
|
40
|
-
|
|
41
|
-
| 想做的事 | 直觉上要改后端? | 实际做法(全在客户端/打包层) |
|
|
42
|
-
| --- | --- | --- |
|
|
43
|
-
| 设置项分组 + 每项「改了会怎样」说明 | ✗ 不需要 `DEFAULT_CONFIG` 加元数据 | 客户端 i18n 字典已有 119 个标签键 + zh/en 两块;分组与说明写在客户端常量里 |
|
|
44
|
-
| 场景预设(省心/平衡/激进) | ✗ | 把一组 patch 发给既有的 `POST /config`(宿主本来就是 patch 合并,`index.js:1425`) |
|
|
45
|
-
| 「仅文件键」折叠 | ✗ | 客户端本来就不渲染那 18 个键,只需显式标注 |
|
|
46
|
-
| 幽灵键 `pythonGpu` | ✗ 宿主侧**零引用**(`index.js` 0 次 / `client.js:4154` 1 次) | 删客户端那一处即可 |
|
|
47
|
-
| 术语改写(水位→上下文余量…) | ✗ | 客户端 i18n |
|
|
48
|
-
| 首启「一键开启主动联想」 | ✗ | 客户端在向导里明确询问后写入 `POST /config`(**不改出厂默认值**,见 §4.4) |
|
|
49
|
-
| 把页面挂到原生插槽(侧栏面板等) | ✗ | `slots.inject(name, () => slots.register({name,id,order,label}, 组件))` 是通用 API(`client.js:4509-4523`);必要时在 `package.json` 的 `dsh.client.inject` 加一个包名 |
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 2. 现状硬数据
|
|
54
|
-
|
|
55
|
-
### 2.1 界面(`lib/client.js` 4,541 行)
|
|
56
|
-
|
|
57
|
-
| 指标 | 数值 | 出处 |
|
|
58
|
-
| --- | --- | --- |
|
|
59
|
-
| 注册面 | 5 个:侧栏入口按钮 / 浮层面板 / 弹窗宿主 / 自动接续宿主 / 设置页 | `client.js:4507-4523` |
|
|
60
|
-
| 浮层尺寸 | **440×560 固定**,可拖拽缩放,位置存 localStorage | `client.js:34-36` 等 |
|
|
61
|
-
| 页签 | **12 个**(概览/日志/唤起回顾/记忆中枢/存储管理/笔记/白板/反思/接续/日历/检索/工作区) | `client.js:307` |
|
|
62
|
-
| 设置分组 | 8 组 / 85 键(界面可改 67、仅文件 18) | `UI-INVENTORY-RAW.md` §2 |
|
|
63
|
-
| 巨型函数 | `SettingsPage` **582 行**(8 分组+目录浏览器+模型抽屉+环境检测+向导挂载+更新检查+调试中心)、`DialogHost` **478 行**(7 种弹窗+首启向导状态机) | 同上 §4 |
|
|
64
|
-
| 逐字重复 | `RefineTab` 的 `badge`/`reasonChip`/`apeRow` 两份完全相同 | `client.js:1644-1662` / `1682-1699` |
|
|
65
|
-
| 文案机制 | **两套混用**:`I18N` 字典(`client.js:150-453`)+ 内联 `locale==='zh'?…:…` 约 **354 处**;4,450 非空行中 **737 行含中文(16.6%)** | 冷启动审计 |
|
|
66
|
-
| 界面专有名词 | ≈49 个(12 页签 + 8 分组 + 19 配置键 + 杂项) | 文档审计 |
|
|
67
|
-
|
|
68
|
-
### 2.2 设计语言:**三套并存**(这是「乱」最硬的结构性证据)
|
|
69
|
-
|
|
70
|
-
| 语言 | 用在哪 | 令牌/特征 | 证据 |
|
|
71
|
-
| --- | --- | --- | --- |
|
|
72
|
-
| DSH 原生 | 插件所在的宿主界面 | `--dsw-*` 令牌体系(`dsh-client-ui-theme` 内 **768 处**引用),亮/暗自动切换;CSS Modules 私有不可复用 | 官方 checkout `dsh-client-ui-theme/lib/client.js` |
|
|
73
|
-
| 面板「液态玻璃」 | 插件面板 | `backdrop-filter: blur(28px) saturate(1.55)`、`border-radius: 16px`、渐变高光、圆角卡片层叠 | `client.js:951-971` |
|
|
74
|
-
| 首页「现代主义」 | `docs/landing/index.html` | 暖纸 `#F4F1EB` / 墨 `#17171A` / 信号橙 `#E9470C` / 1px 细线 / 12 列网格 / **无渐变·无圆角·无阴影** | `:root` 令牌块;自述"现代主义·国际主义" |
|
|
75
|
-
|
|
76
|
-
补充事实:首页的**原始大纲**写的是「深色底 #0B0F1A + 渐变 #4D6BFE→#9B7EFF + 磨砂玻璃卡片」(`docs/LANDING-OUTLINE.md:13`),落地时被实现成了**相反的**现代主义风格(大纲允许"美术完全自由发挥")。也就是说:宿主一套、面板一套、首页一套,且首页连自己的大纲都没继承——**三套语言、三个来源、互不知情**。
|
|
77
|
-
|
|
78
|
-
### 2.3 文档
|
|
79
|
-
|
|
80
|
-
| 指标 | 数值 |
|
|
81
|
-
| --- | --- |
|
|
82
|
-
| README | `README.md` 490 行 / `README.zh-CN.md` 492 行(**说明书式内容 147 行 = 30%**) |
|
|
83
|
-
| 操作词频(中文侧) | 向导 16 / 开关 12 / 设置页 10 / 面板 8 / 点击 6 / 页签 6 / 勾选 2 / 按钮 2 |
|
|
84
|
-
| README 与 USER-GUIDE | 重复讲同一件事 **13 处**;两份 USER-GUIDE 各 382 行,是**页面导向**的说明书(30 标题 / 61 配置键 / 13 条排错) |
|
|
85
|
-
| docs 全量 | 盘上 **106 个 .md**,其中 **48 个连 git 都没进**(含 `USER-GUIDE.en.md`、`HANDBOOK.md`、`ROADMAP.md`、`STATUS-BOARD.md`、`docs/prompts/*` 36 份)——**npm tarball 是其中相当一部分的唯一副本** |
|
|
86
|
-
| npm 包体量 | 2.4.0 tarball **209 文件 / 12.59 MB,其中 docs 占 10.86 MB = 86%**(截图 7.92 MB);**101/106 个 md 是内部工程文档**,README 只引用 8 个 |
|
|
87
|
-
| 事实性错误 | 至少 **6 处**(见 §4.5 表) |
|
|
88
|
-
|
|
89
|
-
### 2.4 首页与分发面
|
|
90
|
-
|
|
91
|
-
| 项 | 现状 |
|
|
92
|
-
| --- | --- |
|
|
93
|
-
| 首页 | `docs/landing/index.html`,**1,745 行 / 122 KB 自包含单文件**(1 个 `<style>` + 1 个 `<script>`,零外链,中英双语切换) |
|
|
94
|
-
| 发布链 | 只在 `preview` 分支;README 用 **第三方代理** `htmlpreview.github.io/?…/blob/preview/docs/landing/index.html` 渲染(`README.md:9`);**无 `.github/`、无 gh-pages、无 CNAME、无 Pages workflow** |
|
|
95
|
-
| 线上一致性 | 已核对:GitHub `preview` 分支该文件 blob sha = 本地 `ec6604…`,**内容一致**(不存在"线上是旧的"问题) |
|
|
96
|
-
| 配图 | `docs/screenshots` 29 张 / 7.92 MB:22 张界面图(panel-* / tour-* / settings-* / calendar-* / overview-* …)+ 7 张六幕宣传图;**全部需要按新 UI 重拍** |
|
|
97
|
-
| 门面件 | `.github/` 完全不存在(无 issue 模板 / CONTRIBUTING / SECURITY / workflow);`package.json` 缺 `homepage`;description 331 字符被 npm 截到 255(中文段全丢) |
|
|
98
|
-
|
|
99
|
-
### 2.5 冷启动(npm 公开用户的真实断点)
|
|
100
|
-
|
|
101
|
-
| # | 断点 | 证据 |
|
|
102
|
-
| --- | --- | --- |
|
|
103
|
-
| 1 | **头号卖点出厂关闭**:`associativeMemoryEnabled: false`,而首启向导把它渲染成「推荐 + 默认开」(`tg.def!==false`) | `index.js:349` / `client.js:3229,3303`;用户不点 = 看到 ON 但实际 OFF(幻觉),点一下才真写入 |
|
|
104
|
-
| 2 | **向导无兜底触发**:只有 `update-check` 返回 `current` 才分发首启弹窗;断网/代理拦截 → **完全没有首启引导**;`firstRunDone` 是死键(只读无写) | `client.js:4439,4398` |
|
|
105
|
-
| 3 | 向导进引擎步**自动开下 130MB 模型**,失败态**没有重试按钮** | `client.js:3168-3175,3287` |
|
|
106
|
-
| 4 | 「面板怎么打开」没有独立说明(README 只有一句"侧边栏出现「记忆」入口") | `README.md:277` |
|
|
107
|
-
| 5 | README 首屏 8 张图(3.11 MB)之后才有第一句价值叙事 | `README.md:13-53,61` |
|
|
108
|
-
| 6 | USER-GUIDE 让用户跑 `node tools/subagent-gc.mjs`——`tools/` **根本没打包**;且泄漏 `-pre` 期命名 | `USER-GUIDE.en.md:307,355,329,369` |
|
|
109
|
-
|
|
110
|
-
### 2.6 设计审计:样式层的量化证据(只读,`lib/client.js` L954-1259 为 CSS 区)
|
|
111
|
-
|
|
112
|
-
**体量与写法**:CSS 数组 306 行 / 290 条字符串;`data-dam-*` 出现 **673 次 / 86 种**;内联 style 对象 **228 个**,而 `className` **仅 4 处**——**样式只有 1.7% 走 class**,其余全在 JS 里。
|
|
113
|
-
|
|
114
|
-
**令牌层「只有名字,没有层」**:
|
|
115
|
-
|
|
116
|
-
| 项 | 实测 |
|
|
117
|
-
| --- | --- |
|
|
118
|
-
| 自有 `--dam-*` | 引用 63 次,**8 个名字**,其中 4 个只是首启向导的玻璃美术参数;真正服务全 UI 的只有 `--dam-accent` 与 `--dam-scale` |
|
|
119
|
-
| 宿主 `--dsw-*` | 引用 86 次 / **11 个名字**;上游公开 `--dsw-alias-*` 有 **79 个** → 只用了 **14%** |
|
|
120
|
-
| **幽灵令牌** | `--dsw-alias-text-primary`×4、`--dsw-alias-warn`×4、`--dsw-alias-danger`×1 —— **上游不存在**,这 9 处永远走 fallback |
|
|
121
|
-
| 硬编码颜色 | **320 处 / 132 种**(hex 131 处 37 种 + rgba 189 处 95 种) |
|
|
122
|
-
| **主题色的 5 个 fallback** | 同一个 `--dam-accent` 分别兜底 `#2456c4`(14) `#3a6df0`(9) `#4f7cff`(9) `#1d4ed8`(7) `#6b98ff`(1)——**等于承认这个语义从没定过一个值** |
|
|
123
|
-
|
|
124
|
-
**「乱」的取值集合(去重后)**:
|
|
125
|
-
|
|
126
|
-
| 维度 | 种数 | 最刺眼的一条 |
|
|
127
|
-
| --- | --- | --- |
|
|
128
|
-
| `border-radius` | **25 种** | 9/10/11/12/14/16 六个相邻值同时存在,各只出现 1-4 次,没有台阶 |
|
|
129
|
-
| `padding` | **47 种** | 内联 58 处里 22 种只出现一次(如 `4px 2px 2px 8px`) |
|
|
130
|
-
| `gap` | **14 种** | **2px→13px 连续满档一个不缺** = 没有间距刻度的直接证据 |
|
|
131
|
-
| `font-size` | **19 种** | 裸值与 `calc(Npx * var(--dam-scale))` 并存 → **缩放开关对约 20% 的文字无效** |
|
|
132
|
-
| `box-shadow` | **20 种** | CSS 侧 16 种**全是 singleton(100%)**,没有任何两个相同 |
|
|
133
|
-
| `line-height` | **13 种** | CSS 侧 7 种全 singleton |
|
|
134
|
-
| 毛玻璃 | **8 套配方** | 5/6/10/12/14/16/20/28/30px 九档并存 |
|
|
135
|
-
| `z-index` | 6 种 | `1/2/3/5/3000/2147482900`——中间全空 |
|
|
136
|
-
| `opacity`(内联) | **29 种** | 缺「说明文字」级别的直接后果 |
|
|
137
|
-
|
|
138
|
-
**布局**:面板尺寸在 **CSS 与 JS 各写一遍**(`width:440px;height:560px` 与 `DEFAULT_W/H`);`@media` **只有 1 条且是 `prefers-reduced-motion`,没有任何宽度断点**。窄面板推演:拖到 300px 下限 → body padding 16 后剩 268 → 设置页 `92px 导航 + 18px gap` 剩 158 → 行 label `flex:0 0 110px` → **输入控件只剩 ≈48px**,而 12 个页签在 196px 里必然长距离横滚。
|
|
139
|
-
|
|
140
|
-
**状态与可访问性(几乎全是"补"的)**:`:hover` 12 条、`:active` 2 条、**`:focus` 0 条、`:focus-visible` 0 条**;`aria-*` 9、`role` 1、`tabIndex` 0;`window.confirm` **0 次**——`StorageTab` 删除是**单击即删**(仅"输入没填全则 disabled"的软保护),危险色有 **5 个值**各自为政。
|
|
141
|
-
|
|
142
|
-
**排版**:**6 套卡片**并存(`data-dam-card` / `data-dam-banner` / 内联 `var card`×2 份逐字复制 / `panelStyle`×2 / 向导卡);"表格"有 **4 种实现**(grid auto / 固定 110px / 120px / 140px);"标题"有 **4 种写法**(`h3`×1 / `b`×19 / `strong`×1 / 内联 `fontWeight:700`×14);`RefineTab` 同一页里圆角玻璃卡 + 尖角左边框条 + 细分隔线三种表达并存。
|
|
143
|
-
|
|
144
|
-
**一个 CSS 装两个产品**:CSS 的 **67%**、`@keyframes` 的 **32/38**、`data-dam-*` 的 **43/86** 都服务首启向导与更新卡(核心面板只用 14,619 字符)——`z-index: 2147482900`、`border-radius: 23px/27px` 这些值其实只用一次,却容易被误当成"设计语言的一部分"。
|
|
145
|
-
|
|
146
|
-
**与首页的纪律差距(这是"不像同一个产品"的量化来源)**:
|
|
147
|
-
|
|
148
|
-
| | 首页 `docs/landing/index.html` | 面板 `lib/client.js` |
|
|
149
|
-
| --- | --- | --- |
|
|
150
|
-
| 令牌 : 字面量 | 227 : 75 = **3.03 : 1** | 86 : 320 = **0.27 : 1** |
|
|
151
|
-
| 圆角出现 | **2 次**(都是 `50%`) | **96 次 / 25 种** |
|
|
152
|
-
| 阴影出现 | **2 次**(状态点光环) | **20 种配方** |
|
|
153
|
-
| `backdrop-filter` | **0 次** | 17 处 / 8 配方 |
|
|
154
|
-
|
|
155
|
-
**上游令牌层是「纯颜色层」**:79 个 `--dsw-alias-*` 里检索 `radius|space|font|shadow|z-` **命中 0**。→ 结论:**颜色/边框必须 100% 继承 `--dsw-*`(可做到零字面量);间距/圆角/字号/行高/阴影/层级/玻璃强度必须自建 `--dam-*`,且只留这一套真值;向导美术隔离到 `--dam-tour-*`。**
|
|
156
|
-
|
|
157
|
-
**收敛映射(可直接当施工单)**:圆角 **25 → 5**(6/10/16/999/50%)· padding **47 → 5**(4/8/12/16/24)· 字号 **19 → 6**(10/11/12/13/14/20,且全量 `calc(… * var(--dam-scale))`)· 行高 **13 → 3** · 阴影 **20 → 3(+1 高光)** · 层级 **6 → 5** · 玻璃 **8 → 3** · 边框 **24 → 3** · 字重 **7 → 3**。触碰点:颜色 320 处、间距 ≈253 处、字号 104 处、圆角 96 处、阴影/玻璃 44 处;**零风险的 9 处幽灵令牌建议第一批做**。
|
|
158
|
-
**风险最高 5 处**:面板玻璃配方(全产品观感)· `SettingsPage`/设置栅格(窄面板塌陷)· `DialogHost`(67% CSS 所在地,须先物理拆出 `--dam-tour-*`)· 日历象限色(要重新定义语义而非机械替换)· `fontScale` 全量生效(会让从未缩放的 20% 文本在 `xl` 档溢出,四档逐一实测)。
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## 3. 诊断:为什么"乱"(每条都可反驳)
|
|
163
|
-
|
|
164
|
-
1. **没有设计令牌层** → 同一语义有多种取值:面板自己定义玻璃/圆角/间距,既不统一于 DSH 的 `--dsw-*`,也不统一于首页的 `--paper/--ink/--accent`。后果:任何一处调整都是局部补丁,且亮/暗主题下表现不一致。
|
|
165
|
-
2. **没有组件层** → 卡片/行/标签/按钮各页各写一套(`RefineTab` 两份逐字重复、`data-dam-settings-row` 全仓仅 3 处),新增功能只能"往缝隙里塞"(4 个补丁式入口已被盘点)。
|
|
166
|
-
3. **三套设计语言并存**(§2.2)——用户看到的"美学一般且很乱",本质是**没有统一的美学主张**。
|
|
167
|
-
4. **内容与容器错配**:12 个页签 + 8 个设置分组 + 85 个键,全塞进一个 **440×560** 的浮层。这不是"东西多",是**把内容管理型界面塞进了状态展示型容器**。
|
|
168
|
-
5. **文档在替界面说话**:README 30% 是操作说明、49 个界面专名 → 等价于承认"界面自己没说清"。
|
|
169
|
-
6. **冷启动断链**:卖点功能出厂关闭 + 向导无兜底 + 无重试 → 公开用户"装上了但没看见效果",于是回头找说明书。
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## 4. 方案:三条线的目标形态
|
|
174
|
-
|
|
175
|
-
### 4.1 W1-a 设计基座(令牌 + 组件原语 + 去玻璃)
|
|
176
|
-
|
|
177
|
-
- **颜色/边框/层级唯一来源 = `--dsw-*`**(宿主原生令牌,亮/暗自动跟随);面板不再自造色值。
|
|
178
|
-
- **新增一层极小的度量令牌**(写死在 client.js 的 `:root` 注入):间距(4/8/12/16/24)、圆角(4/8/12)、字号阶(11/12/13/15/18)、行高、层级(面板/弹窗/提示)、密度(舒适/紧凑)。
|
|
179
|
-
- **去掉液态玻璃层叠**:`backdrop-filter` 从"每张卡一层"降为"面板底板一层"(或按宿主环境决定),圆角收敛到 3 档,去渐变高光。
|
|
180
|
-
- **三层职责划分**(依 §2.6 审计结论):**颜色/边框 = `--dsw-alias-*` 唯一来源(零字面量,亮暗自动跟随)**;**间距/圆角/字号/行高/阴影/层级/玻璃强度 = 自建 `--dam-*`(上游不提供,必须自建且只留这一套真值)**;**首启向导/更新卡美术 = `--dam-tour-*` 独立命名空间**(物理隔离,否则会把只用一次的美术值当设计语言抄进令牌表)。
|
|
181
|
-
- **抽 7 个组件原语**(替换现存的 6 套卡片 / 4 套「表格」/ 4 种标题 / 4 套浮层 / 2 套页签):`Card` / `Row`(label+control+hint) / `Field` / `Badge` / `Tabs` / `Modal`(含 Popover) / `Toolbar`(可选第 8 个 `SegmentedControl`)。
|
|
182
|
-
- **术语表替换**(Top5):水位 → **上下文余量**;接续 → **换窗口续做**;锚定 → **记忆索引**;白板 PLAN / 账本 → **项目看板 / 交接记录**;唤起·固化·晋升 → **想起来 / 记下来 / 变成技能**。全部走 i18n,中英同步。
|
|
183
|
-
|
|
184
|
-
### 4.2 W1-b IA 重排:12 页签 → 三处原生落点
|
|
185
|
-
|
|
186
|
-
DSH 插槽目录共约 58 个(从 `dsh-cordis-client-runner` 提取),插件今天只用了 3 个。可用落点与建议:
|
|
187
|
-
|
|
188
|
-
| 今天的位置 | 建议落点 | 为什么 |
|
|
189
|
-
| --- | --- | --- |
|
|
190
|
-
| 概览 / 水位 / 接续状态 | `conversation.session.header.utilities` 或 `conversation.composer.bar`(常驻一行小状态) | 状态展示型内容不该占浮层;"瞄一眼"原则 |
|
|
191
|
-
| 日志 / 笔记 / 白板 / 反思 | `sidebar.panellist`(侧栏面板,可停靠) | 内容管理型,需要空间与常驻 |
|
|
192
|
-
| 记忆中枢 / 存储管理 / 工作区关系图 / 日历 | `sidebar.right.tab.document`(右侧文档页,宽幅) | 表格与图需要宽度 |
|
|
193
|
-
| 检索 / 唤起回顾 | 对话内交互(`conversation.*`)或侧栏面板 | 结果就地展示,不做"独立页" |
|
|
194
|
-
| 设置(85 键) | `settings.section`(已用)+ `settings.onboarding` | 原生设置位 |
|
|
195
|
-
| 浮层面板 | **降级为"状态 + 快捷入口"**(小、只读、不承载内容管理) | 保留老用户肌肉记忆,但不再当仓库 |
|
|
196
|
-
|
|
197
|
-
**实现可行性**:`slots.inject(name, () => slots.register({name,id,order,label}, render))` 是通用 API,注册别的插槽不需要改后端;跨包插槽可能需要在 `package.json` 的 `dsh.client.inject` 里加包名(打包层)。
|
|
198
|
-
**第一个动作(P2 开工当天)**:写一个 20 行的 spike——向 `sidebar.panellist` 注册一个空面板,重启后确认渲染位置与样式。**失败则回退**为"保留浮层但按 §4.2 三组重排"。
|
|
199
|
-
|
|
200
|
-
### 4.3 W1-c 设置台重构
|
|
201
|
-
|
|
202
|
-
- 85 键分 5 组:**记忆(她记什么)/ 引擎(怎么检索)/ 接续(怎么交接)/ 界面 / 高级**。
|
|
203
|
-
- 组内再分「**政策**」(用户该懂的开关、阈值、容量,默认可见)与「**实现**」(文件路径、模型文件名、目录名 → 折进「高级」,展开时明确警示)。
|
|
204
|
-
- **场景预设**三档(省心 / 平衡 / 激进)一键写一组值,并显示"已偏离预设"。
|
|
205
|
-
- 每项配一句「改了会怎样」(客户端 i18n,~67 条)。
|
|
206
|
-
- 删幽灵键 `pythonGpu`;把 `SettingsPage` 582 行按分组拆成多个组件。
|
|
207
|
-
|
|
208
|
-
### 4.4 W2 冷启动闭环(公开用户的关键)
|
|
209
|
-
|
|
210
|
-
| 动作 | 做法 | 是否动后端 |
|
|
211
|
-
| --- | --- | --- |
|
|
212
|
-
| 向导兜底触发 | `update-check` 失败/超时也用本地条件(localStorage + 版本)决定是否播放;清掉死键 `firstRunDone` | ✗ |
|
|
213
|
-
| 消除"幻觉 ON" | 向导第 3 步**如实显示出厂关**,并给「帮我打开(推荐)」一键按钮 → 明确写入配置 | ✗(不改默认值) |
|
|
214
|
-
| 引擎步 | 改为"点『安装』才下载";失败态加**重试**按钮(复用设置页同源 API) | ✗ |
|
|
215
|
-
| 面板怎么开 | 首启在侧栏入口旁给一次性提示(tooltip/渐变高亮),README 不再承担 | ✗ |
|
|
216
|
-
| 术语与文案 | §4.1 术语表;把 354 处内联 `locale==='zh'?…:…` 收进 i18n 字典(英文 UI 漏翻的结构性原因) | ✗ |
|
|
217
|
-
|
|
218
|
-
**唯一需要你破例的后端改动(可选)**:把 `associativeMemoryEnabled` 出厂默认改为 `true`。我**不建议**——它会让老用户升级后行为突变;用"向导明说 + 一键开启"更稳。
|
|
219
|
-
|
|
220
|
-
### 4.5 W3 文档体系
|
|
221
|
-
|
|
222
|
-
| 文档 | 现在 | 目标 | 关键动作 |
|
|
223
|
-
| --- | --- | --- | --- |
|
|
224
|
-
| README(双语) | 490 / 492 行,30% 说明书 | **各 ≤120 行**,五段式:一句话价值 → 30 秒上手 → 为什么值得装 → 装与不装 → 指针 | 落地已写好的 `docs/NEXT-MAJOR-README-DRAFT.zh.md`(205 行)为骨架,但**必须改掉**:安装位置提前、"十个页签"错、"配置 JSON 保留区"删除、`memory_search` 错名、草稿 58 行违反自家文风守则的句式 |
|
|
225
|
-
| USER-GUIDE(双语) | 各 382 行,页面导向 | **各 ≤260 行**,任务导向("我想找回上周的决定"/"我想让她别总弹窗"…) | 设置键说明降为附录表;删 `-pre` 泄漏与不可用命令 |
|
|
226
|
-
| docs 打包 | 101/106 个 md 不该进包 | `docs/internal/**` 移出 `files`;保留 `screenshots/` + 3 篇论文 + system-map.html | **不能整目录删 docs**:README/GUIDE 的图片是相对路径 `docs/screenshots/…`,删了 npm 页图全断 |
|
|
227
|
-
| 双语漂移 | 靠人工纪律,已漏(`README.md:294` 的 `/n/n`,ZH +2 行) | 加**对账脚本**:标题序列 + 命令块 + 关键数字(0GB/130MB/563MB、0.75/0.80、8000/200000)必须逐字符一致 | 新增 `tools/check-readme-parity.mjs` |
|
|
228
|
-
| 事实性错误 6 处 | — | 全部修正 | ①handoff「默认开启」写 4 处(实为 false)②「Ten tabs」实为 12 ③`memory_search` 实为 `memory_recall` ④EN:294 `/n/n` ⑤EN 的 H1 是中文 ⑥GUIDE 让跑未打包的 `tools/subagent-gc.mjs`、配置路径写成非 `-pre` 名 |
|
|
229
|
-
|
|
230
|
-
### 4.6 W3 首页 + 发布链
|
|
231
|
-
|
|
232
|
-
- **改版**:沿用现代主义的**排版纪律**(网格/细线/等宽标签),把品牌色与产品面板的关系说清;内容按现状大纲重写(数据流 → 十二能力 → 界面速览 → 三步安装 → 社区)。
|
|
233
|
-
- **配图**:重拍 22 张界面图 + 更新六幕宣传图(依赖 P1/P2 定稿)。
|
|
234
|
-
- **发布链**(建议改):把 landing 从 `preview` 分支 + htmlpreview 代理,改为 **GitHub Pages**(需要你开仓库 Settings → Pages,或加一条 `gh-pages` workflow);README 入口改直链。理由:第三方代理是单点依赖(限流/失效即断),且多一跳渲染。
|
|
235
|
-
- **门面件**:补 `.github/`(issue 模板、CONTRIBUTING)、`package.json` 的 `homepage`、缩短 description 到 255 字符内(中文段前置)。
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
## 5. 排期(每阶段独立可发版)
|
|
240
|
-
|
|
241
|
-
| 阶段 | 内容 | 产出 | 验收 | 预估 |
|
|
242
|
-
| --- | --- | --- | --- | --- |
|
|
243
|
-
| **P0 前置** | ①`git add` 48 份未跟踪 md(防丢)②双语对账脚本 ③边界快照(现界面/现首页全屏留档) | 脚本 + 基线截图 | 脚本跑绿;48 份文件进 git | 0.5 天 |
|
|
244
|
-
| **P1 设计基座** | 令牌层 + 6-8 组件原语 + 去玻璃 + 术语表 | `client.js` 重构(**功能零变化**) | smoke 69/69;亮/暗双主题截图;你目视签收 | 2-3 天 |
|
|
245
|
-
| **P2 IA 重排 + 设置台** | 插槽 spike → 三处落点;浮层降级;85 键分组/预设/高级折叠;拆 `SettingsPage` | 新面板 + 新设置页 | 12 页签全部可达(≤2 次点击);无功能丢失(逐项对账表) | 4-6 天 |
|
|
246
|
-
| **P3 冷启动闭环** | 向导兜底/真默认/重试/术语/空状态/一次性提示 | 向导 v2 | 断网也能进向导;引擎步失败可重试;英文 UI 无中文残留 | 2-3 天 |
|
|
247
|
-
| **P4 文档体系** | README 双语重写 + GUIDE 任务化 + docs 分层出包 + 6 处纠错 | 4 份公开文档 + 收窄的 `files` | README ≤120 行、操作词频归零;`docs/internal` 不在 tarball;图片仍可渲染 | 3-4 天 |
|
|
248
|
-
| **P5 首页 + 发布链** | landing 改版 + 22 张图重拍 + Pages/gh-pages + 门面件 | 新首页 | 直链可访问;双语切换正常;图与产品一致 | 3-5 天 |
|
|
249
|
-
| **P6 收口发版** | 一致性走查(术语/数字/截图/链接)+ CHANGELOG + 发版 | 大版本 | §6 判据全绿;三处复核(npm/GitHub/tag) | 1-2 天 |
|
|
250
|
-
|
|
251
|
-
**合计约 16-24 个工作日**。每阶段结束都可单独发一个版本,中断不会留下半成品界面。
|
|
252
|
-
|
|
253
|
-
---
|
|
254
|
-
|
|
255
|
-
## 6. 验收判据(替代旧 J1-J4)
|
|
256
|
-
|
|
257
|
-
| 判据 | 目标 | 怎么测 |
|
|
258
|
-
| --- | --- | --- |
|
|
259
|
-
| **J1 能上手** | 陌生用户**不看文档**,5 分钟内完成"装上 → 打开面板 → 看见她在工作" | 找 1-2 个真人(或录屏自测):从 npm 页开始计时;且**卖点功能真的在跑**(不是幻觉 ON) |
|
|
260
|
-
| **J2 看得懂** | 界面术语零专业黑话;英文 UI 无中文残留、中文 UI 无英文残留 | 术语表逐项对照;`grep` 统计残留 |
|
|
261
|
-
| **J3 找得到** | 任一设置项 ≤2 次点击;"政策级"键默认可见数 ≤20 | 点击路径走查 |
|
|
262
|
-
| **J4 不重复** | README 操作指引 = 0;README ≤120 行;docs 内部文档不进包 | 操作词频统计 + tarball 清单 |
|
|
263
|
-
| **J5 后端零改动** | 46 路由 / 85 键语义 / 14 工具 / prompt 层**逐字节未变** | `git diff` 只命中可动清单;smoke 69/69 |
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
## 7. 风险与坑
|
|
268
|
-
|
|
269
|
-
1. **48 份未入 git 的文档**(`USER-GUIDE.en.md`、`HANDBOOK.md`、`ROADMAP.md`、`STATUS-BOARD.md`、`docs/prompts/*`)——改造前必须先收编,否则"整理 docs"会直接销毁只存在于磁盘/npm 包里的文件。**这是 P0 的第一件事。**
|
|
270
|
-
2. **治理冻结**:`docs/PROJECT-FREEZE-AND-ROADMAP.md:8` 写着「大版本完成前禁止改 README;npm 同步也等大版本一起」——本次排期**就是**那个大版本,所以不冲突,但**必须由你确认**这条冻结以本次排期为准解除。
|
|
271
|
-
3. **插槽可行性尚未实测**:`sidebar.panellist` 等原生位能否被第三方插件注册、样式是否可接受,需要 P2 的 spike 验证;有回退方案(保留浮层重排)。
|
|
272
|
-
4. **npm 页面按版本缓存 README**:文档改动必须随下一次 publish 才在 npm 可见。
|
|
273
|
-
5. **配图重拍成本**:22 张界面图 + 7 张宣传图,且 landing/README 都引用相对路径——改图必须同步改文,顺序是"UI 定稿 → 重拍 → 改文"。
|
|
274
|
-
6. **双语维护**:中文母本 + 英文按骨架重写(**不做逐句翻译**:EN 现行 H1 是中文、文风守则的中文语料不可迁移),并用对账脚本锁住命令与数字。
|
|
275
|
-
7. **pre 线不能发布**:仓库 `package.json:5` 是 `private: true`(REL 由 `release.mjs` 剥离),任何"从 pre 发一版"都会失败;`-pre` 专名会持续往文档里漏,需在 P4 统一清理。
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
## 8. 待你拍板(6 件)
|
|
280
|
-
|
|
281
|
-
1. **首页托管**:继续 htmlpreview + `preview` 分支,还是改 GitHub Pages / `gh-pages`?(改 Pages 需要你在仓库 Settings 里开一次)
|
|
282
|
-
2. **设计主张**:产品内界面**向 DSH 原生靠**(`--dsw-*` 令牌 + 原生插槽),首页**保留现代主义品牌风**——接受"同一产品两种语境",还是要求两者视觉完全统一?
|
|
283
|
-
3. **浮层面板**:同意降级为"状态 + 快捷入口",内容迁到侧栏/右侧原生位?(P2 会先做 spike,失败即回退)
|
|
284
|
-
4. **出厂默认**:`associativeMemoryEnabled` 保持 `false` + 向导明说并一键开启(我推荐),还是改为出厂 `true`(破例动后端默认值)?
|
|
285
|
-
5. **docs 出包**:同意把内部文档移到 `docs/internal/` 并收窄 `files`(npm 包体量预计从 12.6 MB 降到 ~1.5 MB)?保留 `docs/screenshots` + 3 篇论文 + system-map.html。
|
|
286
|
-
6. **排期节奏**:按 P0-P6 顺序推进(每阶段可发版),还是先集中做 P1+P2(界面)再谈文档?
|
|
287
|
-
|
|
288
|
-
---
|
|
289
|
-
|
|
290
|
-
## 9. 本次不做什么
|
|
291
|
-
|
|
292
|
-
后端引擎与协议(§1.1 全部)、功能语义(不新增/不删除能力)、prompt 与注入策略、Python 引擎、既有 69 个 smoke 的断言、`npm publish` / push(按你的规矩,未获明确指示不发)。
|