@stardustlc/dsh-dream 0.6.0 → 0.7.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.
@@ -0,0 +1,84 @@
1
+ # dsh-dream usage guide
2
+
3
+ [Overview](../README.en.md) · [Changelog](../CHANGELOG.md) · [Validation](VALIDATION.md)
4
+
5
+ ## Install / Uninstall
6
+
7
+ ```bash
8
+ dsh plugin --profile web add @stardustlc/dsh-dream
9
+ # or from source:
10
+ dsh plugin --profile web add github:STARDUSTLC666/dsh-dream
11
+ dsh plugin --profile web remove @stardustlc/dsh-dream
12
+ ```
13
+
14
+ Restart the web service afterwards. The dream journal lives at `~/.dsh/.dsh-dream/dreams.jsonl` and survives uninstallation; remove that directory manually for a full cleanup. Part of [dsh-suite](https://github.com/STARDUSTLC666/dsh-suite) — one command installs all 18 STARDUSTLC plugins.
15
+
16
+ ## Dream journal panel (0.4.0+)
17
+
18
+ Once installed, DSH's **Settings →「梦境日记」(Dream journal)** provides Journal, Lessons and Write log views. From 0.7.0, reviews and feedback run through the authenticated Connection carrier in Harness 0.2.0-rc.2. Headless hosts keep the tools and skill without a settings page.
19
+
20
+ - **What it shows**: totals, a mood-square strip (never empty for a single dream, wraps when there are many) and the lessons board at the top; below that, a card timeline, newest first, with timestamp, mood, reflection body and lessons. Reflections are expanded by default and collapse to 4 lines with a show-more control beyond 4 lines or 220 characters.
21
+ - **Lessons board**: ranked by journal occurrences and recency; 3 or more occurrences are labelled common lessons. Frequency does not establish correctness, importance or bridge eligibility. Technical lessons need their own sources, review and a write preview.
22
+ - **Search**: filters by keyword across reflections and lessons, case-insensitively. Mood distribution and the lessons board are computed over the full journal; the timeline is paged by search and limit (latest 50 by default).
23
+ - **Filtering and older dreams**: from 8 dreams on, a Filter menu appears (by mood, or only dreams with lessons; it applies to the loaded window and says so). When 50 dreams are loaded and more exist, the footer offers "show older dreams", which fetches up to the 500-dream route cap in one go.
24
+ - **Journal reads**: GET /_dsh/dsh-dream/journal is loopback-only; non-GET → 405, non-local Host → 403. Saving, listing and recalling dreams still happen in chat via dream_save / dream_journal / dream_recall. Panel reviews update knowledge events; previews do not write files.
25
+ - **Data file**: the panel renders the journal itself — ~/.dsh/.dsh-dream/dreams.jsonl by default ($DSH_HOME/.dsh-dream/dreams.jsonl; an explicit journalDir wins). The storage format is unchanged: one JSON object per line, safe to remove or read with dream_journal.
26
+ - **Privacy**: read-only routes mask text again while preserving validated lesson, evidence and backup references for commands. The UI reads local same-origin routes and does not upload to third-party services. Privacy blur is a display effect; DOM text and local logs remain plaintext.
27
+ - **Before the first dream**: the panel shows an empty state pointing you to ask the agent to「做个梦」; a single dream renders as one card, with neither the mood strip nor the lessons board left empty and no misleading charts.
28
+ - **Lessons view**: usable lessons and the review queue appear separately; rejected history is optional. Review buttons save directly with revision checks. Conflict resolution requires a reason. Source records can be expanded; useful / not-applicable feedback is recorded independently of review and validation. Command fallbacks remain available.
29
+ - **Write log and rollback**: `dream_bridge apply` appends an application record with the target, time, lesson revisions, hashes and original managed block. The panel provides a confirmed rollback action while the current block still matches. Text outside the managed block remains intact; externally changed blocks are not overwritten.
30
+
31
+ ## Tools
32
+
33
+ | Tool | Purpose | Key params |
34
+ | :-- | :-- | :-- |
35
+ | `dream_digest` | Replay recent sessions (title/turns/user quotes/assistant conclusions/tool footprint); subagent sessions skipped; official packed-chunk rows decoded | `maxSessions`; `mode`: full/brief |
36
+ | `dream_save` | Write a reflection + 1-5 lessons + mood to the permanent journal | `reflection` required |
37
+ | `dream_journal` | List dreams, newest first | `limit` |
38
+ | `dream_recall` | Keyword search across the journal | `query` required |
39
+ | `dream_bridge` | Bridge accepted, scope-matched lessons into AGENTS.md (`preview` / `apply` / `rollback`; omitting `mode` keeps the legacy direct write with a deprecation notice) | `mode` optional; `path` / `lessonIds` / `maxLessons` / `expectedSha256` / `previewId` / `projectId` |
40
+ | `dream_health` | Self-check: sessions dir / dream count / config summary | — |
41
+ | `dream_learn` | Submit a candidate technical lesson with evidence (validate / mask / dedupe / scope; evidence-free input stays a candidate) | `kind`, `title`, `action`, `when` required; `evidence` optional (defaults to `[]`) |
42
+ | `dream_context` | Retrieve a few applicable lessons before a task (read-only; candidates are held out by default) | `query` required; `projectId` / `workspaceRoot` / `limit` / `maxChars` / `packageName` / `packageVersion` / `platform` / `includeCandidates` optional |
43
+ | `dream_review` | Review and transition state: accept / reject / mark stale / mark disputed / resolve conflicts / attach evidence / reopen | `action`, `lessonId`, `expectedRevision` required |
44
+
45
+ Conflict review requires resolution (prefer / drop / merge), affectedIds and note. All parties are validated and updated in one event; invalid groups write nothing. attach-evidence verifies sources without promoting the lesson, and reopen returns a rejected lesson to candidate.
46
+
47
+ `dream_bridge` now has three explicit modes:
48
+
49
+ - `preview` (read-only): returns the real diff, selected lessons and skipped reasons — zero writes;
50
+ - `apply`: requires the preview’s `expectedSha256` (null for a missing file); also pass `previewId` to bind the preview; a concurrent edit returns `conflict` with zero writes. It only replaces the Dream managed block (`<!-- dsh-dream:start/end -->`), preserving text outside the block, BOM and line endings, first fsyncs a pending recovery record, then atomically replaces the target and records applied;
51
+ - `rollback`: locates the record by backupId and rolls back only while the current managed block still equals that apply result, preserving later manual additions outside it.
52
+
53
+ Omitting `mode` keeps the 0.5.x direct write and returns a deprecation notice; new flows should use `preview → apply`. Only `usable`, scope-matched (or explicit global with review.decision accepted) lessons can be bridged — frequency is no longer an admission criterion — and everything written is masked via `mask.ts`. The panel's "Write log" shows these records and whether they are rollbackable.
54
+
55
+ The bundled `dream-protocol` skill teaches the agent when and how to dream (and the journaling discipline: patterns only, never secrets).
56
+
57
+ ## Lesson memory
58
+
59
+ The dream journal holds subjective reflections; technical lessons that should be reused go to `<journalDir>/knowledge/`:
60
+
61
+ - **Candidate → verified source → review**: dream_learn creates candidates. Session evidence needs sessionId, recordSeq and a matching quote (summary is used if omitted); the plugin checks project, role, record and text, then computes sourceHash. User corrections must come from actual user messages. Local artifacts require artifactPath with a real path inside the execution working directory. Failed verification becomes claimed with verificationReason and contributes no independent support. Reading a source is not user acceptance; tool reviews record actor:model. attach-evidence preserves state, and every review checks expectedRevision.
62
+ - **Budgeted retrieval**: `dream_context` returns at most 5 items / 3000 characters by default (hard caps 20 items / 20000 characters). Items are packed whole by rank and packing stops at the first item that does not fit (`skipped: budget-stop`); `title / when / action / exceptions` are never truncated, and no half item is ever returned. Candidates and evidence-free non-usable items are held out of task advice by default (`includeCandidates: false`, reported as `candidate-hold` / `no-evidence`); pass `includeCandidates: true` only when explicitly reviewing candidates, and note that candidates rank after usable lessons and must not be treated as verified. Rejected, stale and unresolved disputed lessons are not injected. An explicit platform wins, otherwise unambiguous task text or the host platform is used; mismatches report platform-mismatch; `applicability.versions` only counts when the package is identified (explicit `packageName` or a package name in the query).
63
+ - **Frequency is not reliability**: resubmitting the same evidence is idempotent; never grind counts by calling `dream_save` / `dream_learn` repeatedly. Repeated occurrences within one session count as a single independent source.
64
+ - **Recoverable storage**: `events.jsonl` is the authoritative append-only event log, `evidence.jsonl` appends evidence and `index.json` is a disposable derived index. Rebuilding the index deletes no source files. When the directory does not exist, the read route returns an empty result and never creates anything.
65
+ - **Removing it**: delete `<journalDir>/knowledge/` to clear lesson memory. The old `dreams.jsonl` journal is unaffected, and older plugin versions can still read it.
66
+
67
+ ## Privacy (on by default)
68
+
69
+ Dream material is masked before journaling: sk keys, GitHub/Groq/Slack tokens, AWS keys, JWTs, `password/token/api_key` assignments and long high-entropy strings become `[masked·type]`. In M1 the lesson / evidence / error / bridge write paths also run through `mask.ts` when `maskSecrets` is on, and text returned by the read-only panel route is masked again. Disable with `maskSecrets: false`.
70
+
71
+ ## Permissions & data
72
+
73
+ Read-only access to the sessions directory; appends JSONL to the journal directory plus lessons/evidence under `journalDir/knowledge/`; no network calls. Session content may be sensitive — the protocol forbids secrets in dreams, but the journal is plaintext: review before sharing.
74
+
75
+ ## Development
76
+
77
+ ```bash
78
+ pnpm install
79
+ pnpm test # build + offline tests (session generations, zstd, streams, masking, journal, bridge, registration)
80
+ ```
81
+
82
+ ## License
83
+
84
+ MIT (see [LICENSE](../LICENSE))
package/docs/USAGE.md ADDED
@@ -0,0 +1,133 @@
1
+ # dsh-dream 使用说明
2
+
3
+ [返回简介](../README.md) · [更新记录](../CHANGELOG.md) · [验证记录](VALIDATION.md)
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ dsh plugin --profile web add @stardustlc/dsh-dream
9
+ # 或从源码:
10
+ dsh plugin --profile web add github:STARDUSTLC666/dsh-dream
11
+ ```
12
+
13
+ 安装后重启 Web 服务即可。本插件收录于 [dsh-suite](https://github.com/STARDUSTLC666/dsh-suite) 全家桶——一条命令可装入 STARDUSTLC 全部 18 个插件。
14
+
15
+ ## 卸载
16
+
17
+ ```bash
18
+ dsh plugin --profile web remove @stardustlc/dsh-dream
19
+ ```
20
+
21
+ 卸载后重启 Web 服务。梦境日记默认保存在 `~/.dsh/.dsh-dream/dreams.jsonl`,卸载不会删除;如需彻底清理请手动删除该目录。
22
+
23
+ ## 梦境日记面板(0.4.0+)
24
+
25
+ 装好后,DSH 的「设置 → 梦境日记」提供日记、经验与写入记录。0.7.0 起可以直接审阅和反馈;写操作使用 DSH 0.2.0-rc.2 的认证 Connection 通道。headless 宿主没有设置页,工具与技能照常可用。
26
+
27
+ - **看什么**:顶部是梦境总数、心境方块序列(单条时不空,多条时自动换行)与教训榜;下面是卡片式时间线,按时间倒序,逐条显示时间、心境、反思正文与教训列表。反思正文默认展开,超过 4 行或 220 字时折叠为 4 行并给出「展开全文」。
28
+ - **教训榜**:按日记出现次数与最近时间排序,≥3 次标为“常见教训”;频率不代表正确性、重要度或桥接资格。技术经验必须另行提交来源、审阅,再预览写入规则。
29
+ - **搜索**:按关键词过滤,命中反思与教训,不区分大小写。心境分布与教训榜基于**全量日记**,时间线按搜索与条数上限(默认最近 50 场)展示。
30
+ - **筛选与更早的梦**:≥8 场时出现「筛选 ▾」(按心境、只看有教训的梦,作用于已加载窗口并在弹层注明);加载满 50 场且总梦数更多时,页脚提供「显示更早的梦」,点击后一次拉满到 500 场(路由上限)。
31
+ - **日记读取**:GET /_dsh/dsh-dream/journal 仅回环地址可达;非 GET → 405,非本机 Host → 403。记梦、翻梦、忆梦仍通过 dream_save / dream_journal / dream_recall 完成。面板审阅只更新经验事件,预览本身不写文件。
32
+ - **数据文件**:面板读的就是梦境日记本身,默认 ~/.dsh/.dsh-dream/dreams.jsonl($DSH_HOME/.dsh-dream/dreams.jsonl;配置了 journalDir 时以配置为准)。存储格式不变,仍是每行一条 JSON 的 JSONL,可直接删除或用 dream_journal 读取。
33
+ - **隐私**:只读路由会再次脱敏正文;已校验的内部经验、证据与备份编号保留以供操作。界面只访问本机同源路由,不上传第三方服务。“隐私模式”仅模糊显示,DOM 仍有文本;日志本身是明文。
34
+ - **还没有梦时**:面板显示空态,提示对 agent 说「做个梦」——它会回放最近的会话、反思之后把第一条梦写进这里;只有一场梦时按单条卡片展示,心境方块与教训榜都不留空、不画失真图表。
35
+ - **经验视图**:可用经验与待核实队列分开,已驳回历史按需查看。来源记录可展开查看核验信息;采纳、驳回、重新送审和标记待复核可以直接点击。处理冲突须选择对方经验和填写依据。每次操作检查版本,冲突时保留输入并提供刷新;对话命令入口仍可使用。
36
+ - **使用反馈**:展开“使用反馈”记录这次有用或不适用,并可填写场景。反馈不会自动改变审阅状态、证据或最后核验时间;最近 20 条明细可恢复,事件流保留历史。
37
+ - **规则变更与回滚**:带项目目录的可用经验提供“预览规则变更”,展示实际目标与新增/删除差异后才可应用。此预览按所选经验重建 Dream 管理块,保留块外内容;经验版本或文件哈希变化时拒绝应用。没有项目目录的经验须在对应项目对话中使用预览命令。写入记录展示备份与“回滚这次变更”;当前管理块仍匹配该次 apply 时才允许回滚。
38
+
39
+ ## 工具一览
40
+
41
+ | 工具 | 作用 | 关键参数 |
42
+ | :-- | :-- | :-- |
43
+ | `dream_digest` | 入梦:回放最近会话(标题/轮数/用户原话/助手结论/工具足迹),自动跳过子代理,还原官方打包行流式文本 | `maxSessions` 可选;`mode`: full/brief |
44
+ | `dream_save` | 记梦:反思 + 1-5 条教训 + 心境,永久保存 | `reflection` 必填;`lessons`/`mood` 可选 |
45
+ | `dream_journal` | 翻梦:倒序列出历史梦境 | `limit` 可选 |
46
+ | `dream_recall` | 忆梦:关键词检索梦境 | `query` 必填 |
47
+ | `dream_bridge` | 渡梦:把已采纳、范围匹配的经验写入 AGENTS.md(`preview` 预览 / `apply` 应用 / `rollback` 回滚;缺省保留旧直写并给弃用提示) | `mode` 可选;`path` / `lessonIds` / `maxLessons` / `expectedSha256` / `previewId` / `projectId` |
48
+ | `dream_health` | 自检:会话目录/梦境计数/配置汇总 | 无 |
49
+ | `dream_learn` | 提交候选技术经验及证据(校验 / 脱敏 / 去重 / 按范围保存;无证据只能留在候选) | `kind`、`title`、`action`、`when` 必填;`evidence` 可选(缺省 `[]`) |
50
+ | `dream_context` | 任务前取回少量适用经验(只读;候选默认不注入) | `query` 必填;`projectId` / `workspaceRoot` / `limit` / `maxChars` / `packageName` / `packageVersion` / `platform` / `includeCandidates` 可选 |
51
+ | `dream_review` | 审阅与状态流转:采纳 / 驳回 / 标记过期 / 标记冲突 / 处理冲突 / 补充证据 / 重新送审 | `action`、`lessonId`、`expectedRevision` 必填 |
52
+
53
+ 处理冲突时必须填写 resolution(prefer / drop / merge)、affectedIds 与 note;所有当事方一并校验并在同一事件中保存,校验失败不改任何经验。attach-evidence 核验并附加来源,reopen 把驳回经验重新置为候选。
54
+
55
+ ### 示例
56
+
57
+ ```text
58
+ dream_digest { maxSessions: 5, mode: 'brief' }
59
+ dream_save { reflection: "用户反复遇到输入法问题,偏好先自查再重启", lessons: ["先问是否重启过应用"], mood: "平静" }
60
+ dream_recall { query: "输入法" }
61
+ dream_bridge { mode: "preview", path: "AGENTS.md", maxLessons: 10 }
62
+ dream_context { query: "SMTP 取消投递", projectId: "mailer", packageName: "nodemailer", packageVersion: "9.0.5", platform: "windows" }
63
+ dream_learn { kind: "pitfall", title: "池化发送中 close() 不保证终止投递", action: "取消后验证当前连接确实关闭", when: "使用 Nodemailer 9.0.5 池化发送并处理 AbortSignal 时", evidence: [{ kind: "local-artifact", artifactPath: "test-results/smtp.txt", summary: "本机 SMTP 复现:取消后服务器仍收到正文", verification: "read" }] }
64
+ dream_review { action: "accept", lessonId: "lesson-…", expectedRevision: 1 }
65
+ ```
66
+
67
+ ## 项目规则预览、写入与回滚
68
+
69
+ `dream_bridge` 现在有显式三模式:
70
+
71
+ - `preview`(只读):返回真实 diff、参与经验与 skipped 原因,零写入;
72
+ - `apply`:必须带预览的 `expectedSha256`(新文件为 null),建议同时带 `previewId`,文件被并发修改时返回 `conflict` 且零写入;只替换 Dream 管理块(`<!-- dsh-dream:start/end -->`),保留块外文字、BOM 与换行风格,先持久化 pending 恢复记录再原子替换文件,最后记录 applied;
73
+ - `rollback`:用 backupId 定位记录,只在当前管理块仍等于该次 apply 结果时回滚,保留块外后来追加的人工内容。
74
+
75
+ 缺省不传 `mode` 保持 0.5.x 直写并返回弃用提示;建议新流程一律显式 `preview → apply`。只有 `usable`、scope 匹配当前项目(或显式 global 且 review.decision 为 accepted)的经验可桥接,频次不再准入;写入内容统一过 `mask.ts`。面板的「写入记录」展示备份与可否回滚,0.7.0 起提供确认回滚按钮。
76
+
77
+ ## 做梦协议(随包技能)
78
+
79
+ 插件附带 `dream-protocol` 技能,教 agent 何时做梦(开场/收尾/距上次做梦超一天)、做梦三步(入梦→解梦→记梦)与记梦纪律(只沉淀规律不复述流水账、密钥隐私不入梦、存疑要标注)。
80
+
81
+ ## 经验记忆
82
+
83
+ 梦境日记是主观感悟;真正要复用的技术经验走 `<journalDir>/knowledge/`:
84
+
85
+ - **候选 → 来源核验 → 审阅**:dream_learn 创建 candidate。会话来源需要 sessionId、recordSeq 与可匹配的 quote(省略时用 summary 匹配);插件核对项目、角色、记录和文本并计算 sourceHash。user-correction 必须来自真实用户消息;local-artifact 需要 artifactPath,真实路径必须位于调用工作目录内。核验失败记 claimed 与 verificationReason,不计独立支持数。读到来源不等于用户采纳,工具审阅记录 actor:model。补充证据不会自动改变状态;所有审阅携带 expectedRevision,旧版本会拒绝。
86
+ - **取回有预算**:`dream_context` 默认最多返回 5 条、3000 字符(硬上限 20 条 / 20000 字符);按排名整条装入,遇到第一条放不下就停止(`skipped: budget-stop`),`title / when / action / exceptions` 永不截断,绝不返回半条。候选与无独立证据的非 usable 条目默认不注入(`includeCandidates: false`,记 `candidate-hold` / `no-evidence`);显式 `includeCandidates: true` 可在审阅候选时看到,且候选排在可用经验之后——未经审阅不得当作已证实结论。已驳回、已过期和冲突未解决的不注入;platform 可显式指定,未指定时从明确任务文字识别,否则采用宿主平台,平台不符记 platform-mismatch;`applicability.versions` 只在包名被识别(显式 `packageName` 或 query 中出现包名)时参与判定。
87
+ - **频率不是可靠性**:同一条证据重复提交是幂等的;不要在同一个会话里反复 `dream_save` / `dream_learn` 刷次数。同一个会话中重复出现的教训只算一次独立来源。
88
+ - **存储可恢复**:`events.jsonl` 是权威事件日志(追加写),`evidence.jsonl` 追加证据,`index.json` 是可丢弃重建的派生索引;重建索引不删除任何原文件。目录不存在时读取接口返回空结果,不会为了读而创建目录。
89
+ - **删除新数据**:直接删除 `<journalDir>/knowledge/` 即清空经验记忆;这不会影响 `dreams.jsonl` 里的旧日记,旧版本插件也仍能读取旧日记。
90
+
91
+ ## 配置
92
+
93
+ 在你自己的 profile 的 `cordis.patch.yml` 里覆盖本插件行(缺省时用默认值也能加载):
94
+
95
+ ```yaml
96
+ - id: dream
97
+ name: '@stardustlc/dsh-dream'
98
+ config:
99
+ # sessionsRoot: '' # 会话根目录(默认 ~/.dsh/sessions)
100
+ # journalDir: '' # 梦境日记目录(默认 ~/.dsh/.dsh-dream)
101
+ maxSessions: 10 # dream_digest 最多回放会话数(1-50)
102
+ maxCharsPerSession: 6000 # 每会话摘要字符上限(500-50000)
103
+ # maxUserMessages: 5 # 每会话保留用户消息条数(1-20)
104
+ # maskSecrets: true # 梦原料隐私脱敏开关(默认开)
105
+ ```
106
+
107
+ ## 隐私保护(默认开启)
108
+
109
+ 梦原料入梦前自动脱敏:sk 密钥、GitHub/Groq/Slack 令牌、AWS 密钥、JWT、`password/token/api_key` 赋值、超长高熵串都会被打成 `[已脱敏·类型]`。M1 的经验 / 证据 / 错误 / 桥接写盘路径在 `maskSecrets` 开启时同样先过 `mask.ts`,面板只读路由返回的文本也会再做一次脱敏。不需要时可在配置里设 `maskSecrets: false`。
110
+
111
+ ## 权限与数据
112
+
113
+ - 只读访问会话目录(`~/.dsh/sessions`),不修改任何会话文件;
114
+ - 梦境日记以 JSONL 追加写入 `journalDir`;经验与证据追加写入 `journalDir/knowledge/`(events.jsonl / evidence.jsonl,index.json 可重建);
115
+ - 插件后端不主动调用外部网络服务;Agent 的模型请求由 DSH 管理;
116
+ - 会话内容可能包含敏感信息——做梦协议明确禁止把密钥/隐私写入梦境,但梦境日记本身是明文存储,请自行评估。
117
+
118
+ ## 排错
119
+
120
+ - `dream_digest` 返回 0 个会话:先运行 `dream_health` 检查会话目录是否存在;确认 DSH 已产生过会话;
121
+ - 梦境写不进去:检查 `journalDir` 可写权限;
122
+ - 加载失败:查看 DSH 启动日志中带 `[dsh-dream]` 前缀的告警。
123
+
124
+ ## 开发
125
+
126
+ ```bash
127
+ pnpm install
128
+ pnpm test # 构建 + 离线测试(会话代际、多帧 zstd、流式记录、隐私脱敏、日记、桥接与注册生命周期)
129
+ ```
130
+
131
+ ## License
132
+
133
+ MIT(见 [LICENSE](../LICENSE))
@@ -0,0 +1,29 @@
1
+ # dsh-dream 验证记录
2
+
3
+ [0.7.1 中英文界面验收](validation-language-2026-10-03.md)。
4
+
5
+ 本页整理原 README 的历史验证说明,保留当时的版本、日期与范围。自动测试、启动检查、浏览器操作和真实服务验收分别记录,不能相互替代。更详细的版本验收文件仍保留在仓库中。
6
+
7
+ ## 最近的版本验收
8
+
9
+ - [0.7.0](validation/0.7.0.md):直接审阅、来源检查、规则预览、应用、回滚与独立反馈。
10
+ - [0.6.0](validation/0.6.0.md):来源核验与恢复流程。
11
+ - [0.5.2](validation/0.5.2.md)、[0.5.1](validation/0.5.1.md):此前的界面与记忆纪律验收。
12
+
13
+ 以下保留原 README 的历史描述;当前版本的测试数量和操作范围以对应版本记录为准。
14
+
15
+ ## 原中文记录
16
+
17
+ 验证宿主:官方源码构建的 Harness 0.2.0-rc.1(commit 407e65c8,含本地宿主修补)+ Node 24.16.0。0.6.0 在隔离 profile 的实际 Web 宿主中验收;Web 验收不等同于原生 Desktop 安装器验收,具体范围见验收记录。保持完整 scoped 前端模块身份,兼容 Desktop 的模块加载契约。本插件注册 9 个工具与 dream-protocol 技能;零运行时依赖。
18
+
19
+ 支持 v0/v1/v2/v3/v4 的普通 JSONL 与多帧 zstd、旧 packed-chunk 行及内嵌 stream;升级留下多代文件时只读取每个会话的最新规范文件。PTC 子工具调用保留工具名且不重复计数,不提取系统提示、推理、工具参数或结果正文。
20
+
21
+ 默认从 `DSH_HOME/sessions` 读取会话、在 `DSH_HOME/.dsh-dream` 保存日记;未设置 `DSH_HOME` 时使用 `~/.dsh`。配置中的 `sessionsRoot`、`journalDir` 始终优先。
22
+
23
+ ## Original English record
24
+
25
+ Validation host: Harness 0.2.0-rc.1 built from official sources (commit 407e65c8, with local host fixes), Node 24.16.0. Version 0.6.0 is exercised in a real Web host with an isolated profile. Web validation does not certify the native Desktop installer; see the validation record for exact scope. The full scoped client identity remains compatible with the Desktop module loader. Registers 9 tools and dream-protocol with zero runtime dependencies.
26
+
27
+ Reads v0/v1/v2/v3/v4 plaintext JSONL and multi-frame zstd, legacy packed chunks and embedded streams. Only the newest canonical file is selected per session. PTC child calls retain tool names without double counting; system prompts, reasoning, tool arguments and result bodies are excluded.
28
+
29
+ Default data directories follow `DSH_HOME`: `sessions` for session logs and `.dsh-dream` for the journal. Without `DSH_HOME`, the base is `~/.dsh`. Explicit `sessionsRoot` and `journalDir` settings take precedence.
@@ -0,0 +1,68 @@
1
+ # dsh-dream 0.5.1 发布证据包(M1.1)
2
+
3
+ > **冻结版**。冻结提交:\`3a90ff7\`(tag \`v0.5.1\`,工作区干净、已推送;npm 0.5.1 发布中)。
4
+ > 复跑时间:2026-09-29 21:55(Asia/Shanghai);运行器 node v24.16.0。
5
+ > 冻结指纹(sha256 前 16 位):src/journal.ts \`1e80f45042aec3ac\`、src/knowledge.ts \`df15e30a7f39e4d8\`、src/knowledge-store.ts \`66fc06e953a32daa\`、src/retrieval.ts \`858a5df024d03a62\`、src/tools.ts \`ed439596869a8552\`、src/web.ts \`aa8a05900cb0be1f\`、lib/client.js \`c7c3912bfaf859ec\`、lib/knowledge-store.js \`7c72b6e7bf567c9e\`、lib/retrieval.js \`6c8f8de5007a6bdb\`、lib/tools.js \`68354586e5744bf0\`、lib/journal.js \`7fa919fc0ee84cfc\`。
6
+ > 本文件定稿后仅再产生一个 docs-only commit;若上述指纹变化,本页证据即视为失效,必须重跑第 3 节。
7
+
8
+ ## 1. 门禁清单(冻结版结果)
9
+
10
+ | # | 证据 | 命令 / 位置 | 结果 |
11
+ | :-- | :-- | :-- | :-- |
12
+ | 1 | L1 七场景断言:S1 命中;S5 命中用户纠正且排除 claimed 推测;S2/S3/S4/S6/S7 零注入;\`rankInversionCount === 0\`;预算不超;含 R4 预算前缀专项 | \`node --test test/l1-eval.test.mjs\` | ✅ 9/9 |
13
+ | 2 | 证据纪律:read → usable;user-correction → \`review.actor=user/accepted\`;claimed 不得自我提权;SKILL.md 写明 read 来源要求 | \`node --test test/verification-discipline.test.mjs\` | ✅ 5/5 |
14
+ | 3 | 旧行为不变基线:旧日记坏行/BOM/超长/CRLF/无尾换行;六工具输出只增不减;只读零写入;\`dream_save\` 只追加一行;R6 计数(unsupportedVersions/orphanEvents/badLines) | \`node --test test/legacy-compat.test.mjs\` | ✅ 4/4(golden 由 0.5.0 HEAD 生成) |
15
+ | 4 | 全量回归 | 显式列出 \`test/*.test.mjs\`(23 个文件) | ✅ **204 项:203 通过 / 0 失败 / 1 默认跳过**;\`DSH_DREAM_STRESS=1\` 时并发用例通过(等效 204/204) |
16
+ | 5 | 并发压力:8 进程 × 8 次 \`dream_learn\` + \`dream_save\` | \`DSH_DREAM_STRESS=1 node --test test/concurrency.test.mjs\` | ✅ 64 经验 / 64 证据 / 128 事件 / 64 梦行,零丢失、零 \`.lock\` 残留、约 1.0s |
17
+ | 6 | 50k 规模:知识面板只读路径耗时 | \`node scripts/scale-knowledge.mjs\` | ❌ 未达标(已知限制):listLessons 555ms / listEvidence 562ms / stats 539ms,面板合计 1656ms;见第 2 节 |
18
+ | 7 | 发布物与加载器 | \`npm pack --dry-run\`;官方 ClientModuleSystem 回归 | ✅ 包 30 files / 97.5 kB,含 \`lib/client.js\`(68.9kB)、\`lib/knowledge-store.js\`、\`skills/dream-protocol/SKILL.md\`;loader \`pass=true\`(冷加载 / 缓存命中 / invalidate 重载,见 \`.skill-audit/dream-m1/loader-051-t3.json\`,version=0.5.1)。⏳ 干净 profile 的 tarball 安装冒烟未做 |
19
+ | 8 | UI 目视 | \`.skill-audit/dream-m1/ui/shots/\`(18 张) | ⏳ **离线夹具渲染**:8 场景 × 深浅色 + 窄窗 + 125%/150% + 键盘焦点 + 错误重试前后 + 隐私 peek;零告警、零违禁词;dream-ui 判据结论待回。**真实宿主 Web/Desktop 目视 ❌ 未做** |
20
+ | 9 | 18 插件同载冷启动 | 宿主实测 | ❌ 未做 |
21
+ | 10 | 只读安全矩阵:回环/非回环 Host/method 403/405 | 全量套件中的 \`test/web.test.mjs\` | ✅ 代码层通过(在 #4 内);发布物上的手工 curl 复跑未做 |
22
+ | 11 | 版本一致性 | package.json / CHANGELOG / README / npm | ✅ 三者均 0.5.1;npm 0.5.1 发布中,dist-tag 与 registry 重装冒烟待发布完成后补 |
23
+
24
+ ## 2. 已知缺陷 / 未验证(对外不得写"已验证")
25
+
26
+ - **大知识库性能(已知限制,不作发布阻塞)**:CHANGELOG 0.5.1 原文——「读/写路径在知识库增长时仍是 O(历史)——50k 条证据时单次读操作数百毫秒、逐条追加呈二次增长。checkpoint 已能避免"截断丢实体",但尚未把读路径变成增量。本版**不承诺大知识库下的性能**;下一批计划 \`evidenceKeys\` 常数时间去重与索引增量更新。」README 同步写明「知识库很大时读/写仍随历史线性增长,本版不承诺大库性能」。本次冻结版实测:50k 条 / 7.0 MB,listLessons 555ms、listEvidence 562ms、stats 539ms、面板合计 1656ms(阈值 150ms/次);lead 另测得逐条 append 在 20k 条时已超时,确认写路径二次增长。
27
+ - **真实宿主目视**:第 8 项的 18 张截图是离线夹具渲染,不能替代真实宿主 Web/Desktop 的目视验收;该项仍 ❌。
28
+ - **18 插件同载冷启动**:未重跑,0.5.0 的欠账延续。
29
+ - **发布物安装**:未把 \`stardustlc-dsh-dream-0.5.1.tgz\` 装进干净 profile 跑端到端;未从 registry 重装冒烟。
30
+ - **真实用户日记**:所有自动测试只用合成夹具;真实 \`dreams.jsonl\` 未参与任何 CI。
31
+
32
+ ## 3. 冻结点复跑命令
33
+
34
+ \`\`\`bash
35
+ node --test test/l1-eval.test.mjs
36
+ node --test test/verification-discipline.test.mjs
37
+ node --test test/legacy-compat.test.mjs
38
+ DSH_DREAM_STRESS=1 node --test test/concurrency.test.mjs
39
+ node scripts/scale-knowledge.mjs # 已知限制:退出码 1(超预算);记录数字即可
40
+ node --test test/*.test.mjs # 204 项(Windows 下用显式文件列表;pnpm test 亦可)
41
+ node node_modules/typescript/bin/tsc -p tsconfig.json --noEmit
42
+ node node_modules/typescript/bin/tsc -p tsconfig.json # 产物重建
43
+ git diff --exit-code -- lib # 期望无漂移(本页已复跑:无漂移)
44
+ node --check lib/client.js
45
+ npm pack --dry-run # 确认含 lib/client.js 等 30 个文件
46
+ # 官方加载器(用 harness 的 tsx,非裸 node):
47
+ node C:/Users/29022/deepseek-harness/node_modules/tsx/dist/cli.mjs \
48
+ E:/deepseek/.harness-validation/pr-issues-20260929/dream-loader-verification.mjs \
49
+ E:/deepseek/.skill-audit/dream-m1/loader-051-t3.json
50
+ \`\`\`
51
+
52
+ 清单 8/9/11 的真实目视、同载与 registry 步骤不在上述命令内,需单独执行并归档截图/日志。
53
+
54
+ ## 4. 证据工件索引
55
+
56
+ - 断言版 L1:\`test/l1-eval.test.mjs\`(expectVisible / expectHidden / rankInversionCount / 预算断言,含 B1 预算前缀专项)。
57
+ - 证据纪律:\`test/verification-discipline.test.mjs\`(含 SKILL.md 文案断言)。
58
+ - 旧行为基线:\`test/legacy-compat.test.mjs\` + \`test/fixtures/legacy-tool-keys.json\`(0.5.0 HEAD 生成,98 个键路径;旧日记夹具内联)。
59
+ - 并发:\`test/concurrency.test.mjs\`(默认跳过,\`DSH_DREAM_STRESS=1\` 运行)。
60
+ - 规模:\`scripts/scale-knowledge.mjs\`(不进常规 CI)。
61
+ - 加载器报告:\`.skill-audit/dream-m1/loader-051.json\`(lead 跑,pass=true;元数据 version=0.5.0,生成于冻结前)与 \`.skill-audit/dream-m1/loader-051-t3.json\`(本轮独立复跑,version=0.5.1,pass=true)。
62
+ - UI 截图:\`.skill-audit/dream-m1/ui/shots/\`(18 张:01 dark/light open、02 empty、03 dreams-no-lessons、04 lessons-no-dreams、05 mixed-states、06 long-content、07 narrow-620/zoom-125/zoom-150、08a keyboard-focus、08b error-retry、08b error-retry-after、08c privacy-peek)。
63
+ - 独立探测脚本(临时,不入库):\`.skill-audit/dream-m1/t3/t3-l1.mjs\`、\`.skill-audit/dream-m1/t3/t3-legacy.mjs\`。
64
+
65
+ ## 5. 变更记录
66
+
67
+ - 2026-09-29:首次建立(未冻结版)。
68
+ - 2026-09-29:冻结版定稿。按 \`3a90ff7\` / \`v0.5.1\` 复跑第 3 节:L1 9/9、纪律 5/5、旧基线 4/4、并发 8×8 通过、全量 204(203 通过 / 1 默认跳过 / 0 失败)、tsc 与 \`node --check\` 通过、\`git diff --exit-code -- lib\` 无漂移、npm pack 30 文件、官方加载器独立复跑 pass(0.5.1);50k 规模按已知限制记录(555/562/539ms)。真实宿主目视、18 插件同载、tarball 安装/registry 冒烟标注未做。
@@ -0,0 +1,39 @@
1
+ # dsh-dream 0.5.2 发布证据包(面板折叠断点修复)
2
+
3
+ > 范围:仅 `lib/client.js` 一处 CSS 级联修复;**不含 M2 面板改动**。
4
+ > 基线:0.5.1(`3a90ff7` / tag `v0.5.1`)。复跑时间:2026-09-29(Asia/Shanghai),Node v24.16.0。
5
+
6
+ ## 1. 修复
7
+
8
+ - **现象**:≤620px 窄窗下 `.dshd-toolbar .dshd-hint` 已按容器查询隐藏,但 `.dshd-two` 仍是两列;1024px 视口 + 150% 缩放同理(hint 已隐藏、grid 未折叠)。
9
+ - **根因**:`@container (max-width:620px){.dshd-two{grid-template-columns:1fr}}` 排在基础 `.dshd-two{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}` 之前,同特异性被后者级联覆盖。
10
+ - **修复**:把该 `@container` 块整体移到 CSS 数组末尾(`lib/client.js`,2 行移动 + 补逗号,无其他改动)。
11
+
12
+ ## 2. 折叠断点语义(本版明确)
13
+
14
+ **折叠断点 = 容器内容宽 ≤620px(`@container`,非视口 media query)。** 因此 1024px 视口 + **150% 缩放**时,面板容器 content-box ≈617px,会折叠为单列——**属预期**;125% 缩放下容器 ≈754px,仍两列。窄窗(视口 620px,容器 content-box 554px)折叠为单列。缩放、窄窗、面板被挤窄共用同一条规则。
15
+
16
+ ## 3. 复核证据
17
+
18
+ | 场景 | computed `grid-template-columns` | scrollWidth / clientWidth | 结果 |
19
+ | :-- | :-- | :-- | :-- |
20
+ | 620px 视口(亮) | `554px`(单列) | 554 / 554,无横向滚动 | ✅ |
21
+ | 620px 视口(暗,重建 fixture) | `554px`(单列) | 554 / 554,无横向滚动 | ✅ |
22
+ | 1024px + 150% | `617.333px`(单列) | 无横向滚动 | ✅ 预期(见第 2 节) |
23
+ | 1024px + 125% | `446.15px 297.438px`(两列) | 无横向滚动 | ✅ 不变 |
24
+ | 1280px(亮 / 暗) | `597.594px 398.391px`(两列) | 1006 / 1006 | ✅ 不变 |
25
+
26
+ - `node --check lib/client.js` → 通过。
27
+ - 官方加载器回归(`dream-loader-verification.mjs`,harness tsx)→ `pass=true`:冷加载 / 缓存命中 / invalidate 重载;报告 `.harness-validation/pr-issues-20260929/dream-loader-0.5.2-cssfix.json`。
28
+ - 全量回归:**204 项 / 203 通过 / 0 失败 / 1 默认跳过**(同 0.5.1 基线)。
29
+ - 截图:`.skill-audit/dream-m1/ui/shots/07-narrow-620.png` 已用修后代码同名重出(620×1896 fullPage,0 console 告警);其余 17 张不受该修复影响。
30
+ - DOM 证据:`.skill-audit/dream-m1/ui/fix-verify.json`、`.skill-audit/dream-m1/ui/audit-followup.json`。
31
+
32
+ ## 4. 未验证
33
+
34
+ - 本版为 CSS 级联修复,**不声称**真实宿主 Web/Desktop 目视验收已完成(沿用 0.5.1 的欠账口径);07 修图的像素级目视由 lead 的 `read_image` 复核。
35
+ - 18 插件同载冷启动、npm 包安装冒烟不在本页范围。
36
+
37
+ ## 5. 变更记录
38
+
39
+ - 2026-09-29:建立。修复面板 `@container` 级联次序;明确折叠断点按容器宽度触发,150% 缩放折叠为单列属预期。
@@ -0,0 +1,73 @@
1
+ # dsh-dream 0.6.0 验收记录
2
+
3
+ 日期:2026-09-30(Asia/Shanghai)。基线:0.5.2(2e91377)。
4
+ 本页记录源码与隔离环境验收;GitHub CI 和 npm 发布结果由发布流程另行核对。
5
+
6
+ ## 已修复
7
+
8
+ - 模型自报 read、伪造用户纠正可直接提升经验:改为实际核对来源,新经验留在候选,审阅记录不冒充用户。
9
+ - web 脱敏破坏 UUID:保留经过校验的内部引用,正文、密钥赋值与敏感串继续脱敏。
10
+ - Linux 目标路径被当成长令牌,导致回滚命令失效:结构化绝对路径按目录分段脱敏,正常路径完整保留,路径中的密钥继续打码。
11
+ - attach-evidence 声明可用但无实现:补充真实来源、检查 revision,保持经验状态。
12
+ - 冲突组逐条修改可能半成功:完整校验后在一个事件中更新,其他未解决冲突继续扣留。
13
+ - 新建文件的预览哈希为 null 但 apply 不接受:公共 schema 与执行流程均支持 null。
14
+ - 目标先写、恢复记录后写:先 fsync pending 记录,再原子替换;进程中断后仍能找到备份并回滚。
15
+ - Windows 项目收到 Linux 平台经验:显式平台优先,其次明确任务文字,再采用宿主平台。
16
+ - 回滚按钮在实际面板缺失:修复真实记录投影与命令生成的字段衔接。
17
+ - 面板重复显示待核实条目、行动建议隐藏、冲突命令缺少参数、Escape 误关设置:拆分视图并提供完整表单、命令及窄窗布局。
18
+
19
+ ## 自动验证
20
+
21
+ | 检查 | 结果 |
22
+ | :-- | :-- |
23
+ | pnpm test(Windows / Node 24) | 273 项:272 通过、0 失败、1 默认跳过 |
24
+ | DSH_DREAM_STRESS=1 并发压力测试 | 8 进程 × 8 次,1/1 通过 |
25
+ | 新增 review-regressions | 16/16,覆盖公开工具、实际面板投影、Unix 路径和持久化产物 |
26
+ | typecheck / client.js 语法 | 通过 |
27
+ | 官方 ClientModuleSystem | 冷加载、缓存、invalidate 后重载通过 |
28
+ | 18 插件同一宿主的契约检查 | 99 工具 / 35 技能,无失败插件 |
29
+
30
+ 以上 18 插件检查使用外部服务夹具,不代表真实邮件、Docker 或第三方 API 验收。
31
+ 桥接测试覆盖 preview 零写入、并发 CAS、链接边界、BOM/CRLF、只读/二进制拒绝、回滚守卫、脱敏和范围资格。
32
+ 冲突测试覆盖双向登记、prefer/drop/merge、无效组零写入及事件回放。
33
+
34
+ ## 实际浏览器操作
35
+
36
+ 宿主:官方源码构建的 Harness 0.2.0-rc.1(407e65c8,含本地宿主修补),Node 24.16.0。
37
+ 使用真实设置页与实际插件,隔离 profile 内放置 12 条合成日记、7 条合成经验和一个项目 AGENTS.md;不读取个人历史或密钥。
38
+
39
+ | 操作 | 实际结果 |
40
+ | :-- | :-- |
41
+ | 日记 / 经验 / 写入记录切换 | 独立视图,可用与待核实条目不重复 |
42
+ | 筛选“存疑”后 Escape | 4 条日记;只关闭筛选,设置页保留 |
43
+ | 清空筛选、长文展开 / 收起 | 恢复列表,正文完整展开后可收起 |
44
+ | 搜索 SMTP | 6 条匹配日记 |
45
+ | 选择冲突经验、填写依据、复制命令 | 显示经验标题与完整参数,复制有反馈 |
46
+ | 执行界面生成的冲突命令并刷新 | 一方 usable、一方 rejected,待核实队列减少 |
47
+ | 驳回历史重新送审并刷新 | 转为 candidate 并进入待核实队列 |
48
+ | 备份标识与复制回滚命令 | 编号完整,命令可执行 |
49
+ | 回滚后核对文件并刷新 | 原人工规则及后来追加内容保留;显示不可再次回滚 |
50
+ | 1280 与 620 像素、浅色与深色 | 实际截图目视,窄窗单列,设置弹窗无横向溢出 |
51
+
52
+ 界面命令由公开工具在同一隔离资料上执行;本轮未调用真实模型对话。
53
+ 浏览器验收不能替代原生 Desktop 安装器验收。宿主热重载期间出现过 session-controller 服务暂不可用日志,未发现 Dream 模块激活或 React 渲染失败。
54
+
55
+ ## 复验入口
56
+
57
+ ```bash
58
+ pnpm install --frozen-lockfile
59
+ pnpm test
60
+ pnpm run typecheck
61
+ node --check lib/client.js
62
+ DSH_DREAM_STRESS=1 node --test test/concurrency.test.mjs
63
+ ```
64
+
65
+ 关键回归:test/review-regressions.test.mjs、test/bridge-acceptance.test.mjs、test/bridge-io.test.mjs、test/review-conflict.test.mjs。
66
+ 源码发布不需要用户数据迁移,不重写旧日记。新事件增加字段,回退旧版本前应备份新知识日志。
67
+
68
+ ## 仍有范围限制
69
+
70
+ - 大知识库读写仍随历史增长,本轮未解决增量索引与规模性能。
71
+ - 当前来源校验读取 v0–v4 会话文件;有可见 seq、匹配原文与明确项目的记录才计为 read,不能核对时降为 claimed。
72
+ - global 桥接要求 review.decision accepted;当前工具的 actor 是 model,不据此声称真实用户已经确认。
73
+ - 未复测原生安装器、125%/150%系统缩放或模型长期行为质量。
@@ -0,0 +1,11 @@
1
+ # Dream 0.7.0 验收范围
2
+
3
+ 环境:Windows、Node 24.16.0、官方 Harness 0.2.0-rc.2(639ed015),独立 DSH_HOME 与合成资料,无用户密钥或真实会话。
4
+
5
+ 浏览器实际操作已完成:展开来源和核验说明、采纳候选、记录有用及不适用场景、标记待复核后重新采纳、填写冲突依据、处理冲突、查看规则差异、应用并从写入记录确认回滚。刷新后反馈与审阅状态保持。通过另一个写者模拟旧版本操作:按钮拒绝写入,填写中的依据保留。
6
+
7
+ 窄窗口检查采用 390×844 视口。发现宿主左侧导航挤压内容后,为当前 Dream 设置页增加顶部横向导航,正常窗口和其他设置页不受该媒体规则影响。实际截图保存在此次工作区验收目录。
8
+
9
+ 自动回归覆盖旧接口与日志读取、人工/模型 actor 分离、反馈不自动晋级和请求幂等、并发版本冲突、关联文件修改拒绝、预览绑定与回滚保留手工内容、跨源/简单请求/大请求/取消拒绝。新写操作只注册在官方认证 Connection 通道,没有未认证的 webServer 回退路由。
10
+
11
+ 范围限制:此记录证明真实 Web 宿主的可见操作与 Windows 文件行为;尚不能替代原生桌面窗口完整操作或真实用户会话核验。没有项目目录的全局经验仍需在对应项目对话中预览规则。预览按所选经验重建整个 Dream 管理块,用户应核对删除与新增差异。外部修改管理块后不强行回滚。
@@ -0,0 +1,16 @@
1
+ # 0.7.1:中英文界面验收
2
+
3
+ 2026-10-03,Windows / Node 24.16.0。采用 E 盘独立 DSH_HOME、合成资料与无密钥 profile;用户资料、账号、密钥、桌面窗口与 VPN 保持原状。
4
+
5
+ - 自动测试:281 项通过、1 项可选多进程压力测试跳过(共 282 项)。
6
+ - 可见 Web 操作:英文日记展开 / 折叠和搜索;经验采纳、来源、项目规则预览 / 应用 / 回滚;中文与英文共用同一经验库。人工 AGENTS.md 内容在回滚后按字节保留。
7
+ - 宿主:官方 DSH 0.2.1-alpha.1 Web;官方 RC2 与 alpha SDK 同载 18 组件,110 工具、35 插件技能、19 输出样例注册与 schema 检查通过。无账号的健康结果不代表真实连接。
8
+ - 边界:本次只修正界面和技能说明,没有新增后台学习。记录、采纳与规则应用仍为不同操作。
9
+
10
+ 中英文共用同一份资料;界面翻译不会改写标题、正文、路径、引用或项目文件。系统文件选择控件和文件对话框跟随 Windows / 浏览器语言。未知技术诊断与原始引擎日志保留原文;英文界面提供操作恢复引导。
11
+
12
+ 此记录不代表原生桌面窗口内的新功能已逐项操作通过。发布包完整性、GitHub CI 与公开 npm 全新安装在发布时另行核对。
13
+
14
+ ## English scope
15
+
16
+ The Chinese and English UI share the same data. UI translation preserves original content, paths and project files. Visible interactions were performed in an isolated official alpha Web profile; both RC2 and alpha SDK registration/schema checks passed. Native file controls use the OS/browser language, and original diagnostic logs are retained. Browser results do not certify native desktop interaction or real-service delivery.