# typing-insight v1 发布清单（1.0.0-rc.1）

> 状态：发布候选。生成时间：2026-08-27。本文件为 v1 发布收口清单，与 REVIEW.md 滚动开发日志互补。

## 1. 安装与卸载

- 安装：`dsh plugin add "D:/Doc/输入记录与分析插件/plugin"`（符号链接安装，源码目录即插件目录）；或拷贝目录到 profile 的 node_modules 下。
- 卸载：从 profile 的 package.json 移除 typing-insight 依赖并重启 DSH Desktop；数据目录 `%USERPROFILE%\.dsh\data\typing-insight\` 不会被自动删除——如需彻底清除，删除该目录（不可恢复）。
- 依赖：uiohook-napi、better-sqlite3、@node-rs/jieba 为原生模块，安装后由 node-gyp-build 按当前 ABI 加载（已在 DSH Electron Node 24 ABI 148 实测）。

## 2. 校验和

| 文件 | SHA-256 |
| --- | --- |
| native/win32-x64/typing-insight-uia.exe（33280 字节，Edit 优先（Document 焦点 + 最优根级输入框）构建）构建） | `6f0701d19109b7719d95add73b200c448b407feb3b270748f89c9846f0143473` |

发布前需重新生成：helper 重建后 `sha256sum native/win32-x64/typing-insight-uia.exe` 并更新本表；正式发布时应补充插件目录打包后的整包校验和与 SBOM。

## 3. 隐私边界（NFR-001/002/008）

- 密码框零记录：UIA IsPassword + Win32 ES_PASSWORD 风格双层判定，fail-closed；无法确认时文本与按键采集一并暂停。
- 敏感信息落盘前脱敏：手机号（11 位）、身份证号（18 位 + Luhn）、银行卡号（13–19 位）、邮箱；跨片段号码通过 tailCarry 拼接识别，命中时回裁上一条记录的未完成尾段（不重复计数）。
- 零网络出口：service/helper 无 HTTP 客户端、不读代理、不建 socket。
- 不采集：鼠标坐标/点击目标/滚轮轨迹/窗口标题/原始按键序列对外不暴露；实时态势仅含计数与状态。
- 仅自用工具：安装说明明示记录范围（README 隐私声明）。

## 4. 明文存储说明（重要）

**当前数据库为明文存储**（SQLite 普通文件，无加密）。FR-022「可选加密」**未实现**，列入未实现清单。数据目录位于本机用户目录下，物理访问该机器者可读库文件；已做的是内容级脱敏（敏感信息掩码），不是磁盘级加密。若需要加密，请勿在共享机器上启用本插件，或等待 FR-022。

## 5. 兼容矩阵

见 README「采集原理与限制 → 兼容矩阵（v1 验收范围）」。要点：

- Chromium/UIA 应用、标准 Win32 输入框：文本采集 ✓（已实测 DSH Desktop/ChatGPT/Edge/钉钉/SourceTree 等）
- IMM32 型输入法兜底通道：部分支持
- **微信 4.1.x（MMUI 封闭渲染）：仅按键统计，不采集文本**（原因码 unsupported_mmui_text；面板有徽标提示）
- 微信 3.9.x（Chromium 界面）：文本可用，列为可选兼容方案，**非推荐安装路径**（本地聊天记录与 4.1 不互通，降级风险自担）
- 密码框：始终排除
- 全屏独占应用（游戏等）：自动降级仅按键（capture_mode=2 标记）

## 6. 数据清除与回滚

- 清除：`/typing clear [日期]`（缺省全部，confirm 确认门）或设置面板「数据与隐私」卡（清除今日/全部 + window.confirm）；保留期 7/30/90/365/永久（默认 90），每日自动清理 + 面板「立即清理过期」。
- 回滚 helper：`native/win32-x64/` 下保留历史构建（typing-insight-uia.prev*.exe），替换回 `typing-insight-uia.exe` 并重启服务（taskkill 服务进程后由 supervisor 重生）即可。
- 回滚插件：git/目录备份恢复 plugin 目录 + 重启 DSH Desktop；数据库分片按天独立，回滚不影响已采集数据。

## 7. 已知问题

1. 微信 4.1.x 聊天输入不可采集文本（MMUI/TSF 封闭，四条路径实证）——按限制处理，非故障。
2. 应用切换后 500ms 内的按键归属采用 helper 事件驱动兜底；极端时序下个别按键可能归属前一应用。
3. 键盘钩子异常自动重试未实现（FR-050 部分）；UIA 失联有 5 秒重连。
4. UIA helper 启动期存在偶发瞬态 fault（已分步隔离，不影响采集链路，fault 带 step 定位）。
5. 内容洞察为本地抽取式摘要；调用 DSH 模型的生成式摘要未实现（FR-032 偏差）。

## 8. 测试报告（v1 回归，2026-08-27）

| 套件 | 项数 | 结果 |
| --- | --- | --- |
| smoke-test-pinyin.cjs | 18 | 见下方复跑记录 |
| smoke-test.mjs（M0） | 7 | 见下方复跑记录 |
| smoke-test-m1.mjs | 12 | 见下方复跑记录 |
| smoke-test-uia.mjs | — | 见下方复跑记录 |
| smoke-test-m2.mjs | — | 见下方复跑记录 |
| smoke-test-m3.mjs | — | 见下方复跑记录 |
| smoke-test-cold.mjs | — | 见下方复跑记录 |
| smoke-test-activity.cjs | 17 | 见下方复跑记录 |
| smoke-test-carry.cjs | 7 | 见下方复跑记录 |
| smoke-test-schema.mjs | 10 | 见下方复跑记录 |
| _e2e7.cjs（第 7 轮 E2E，严格断言） | — | 见下方复跑记录 |

复跑完整输出已存档：**RC-TEST-REPORT.md**（2026-08-27 生成，235 行、0 FAIL、11 个通过标记，含 E2E 严格断言 4/4 与精确样本）。另有 scratch profile 安装→冷启动→卸载→回滚验证 8/8（REVIEW.md「v1 发布收口复跑」条目）。

## 9. 发布工程化状态（2026-08-27 更新）

- 包清理：files 白名单 + .npmignore 双重排除；npm pack 实测 66 个文件（lib 12 + vendor 44 + helper + 文档），无数据库/日志/测试残留/旧 helper/C# 源码；scripts/verify-release.mjs 作为 prepack 门（版本一致/唯一 helper/校验和/无密钥/体积上限/vendor 仅 win32-x64），scripts/run-regression.mjs 为 npm test 入口。
- vendor 化原生依赖：better-sqlite3 / uiohook-napi / @node-rs/jieba 的 win32-x64 预编译产物随包分发，安装零构建脚本。已在全新 typing-rc profile 用 dsh plugin add 实测：安装成功、无 ERR_PNPM_IGNORED_BUILDS、插件树冷启动（10 工具 + /typing/api + sqlite/jieba 加载 + helper 就位 + 零残留）、dsh plugin remove 卸载干净、数据目录保留。
- 首次授权：全新安装默认未授权（hook/UIA 不启动），面板显示隐私摘要与「开始采集」确认；存量配置自动迁移为已授权。
- 发布身份：npm 包名 @sharelights/dsh-typing-insight（作用域版），发布者 sharelights；GitHub 仓库 https://github.com/SYeShare/dsh-typing-insight（author: sushare）。RC 安装命令：dsh plugin add @sharelights/dsh-typing-insight@next。**发布记录：1.0.0-rc.1 → next（2026-08-27）；1.0.0-rc.2 → next（2026-08-27，修复文档级焦点误采助手回答）；npm 注册表不允许删除 latest 标签（E400），RC 期 latest 保持 npm 首次发布自动设置的值、不向其发布；安装必须显式 @next，1.0.0 发布时用 --tag latest 归位。**
- 发布方式：npm 已移除 Classic/Automation Token，**首次手动发布**用账号登录（npm login + 2FA），不传递 token；后续 CI 发布走 GitHub Actions Secret 或 **npm Trusted Publishing（OIDC）**。RC 阶段打 next 标签，不占 latest。
- 待办（发布前人工确认）：① helper Authenticode 签名（当前未签名，仅 rc/beta 标签）；② 无源码、无 VS 工具链的干净机器安装复验；③ CI Secret 扫描 / SBOM / npm audit。

## 10. 未实现清单（发布时明确告知）

- FR-022 可选加密（明文存储，见第 4 节）
- FR-003 友好名称映射与图标
- FR-032 模型生成式摘要（现为本地抽取式）
- FR-050 键盘钩子自动重试 + 1 小时长稳基准；NFR-003/004 性能基准（CPU/内存/查询）
- NFR-005 兼容实测：Office/QQ/VS2022 文本采集未人工实测
- FR-041 面板剩余开关：脱敏开关、加密开关（保留天数/快捷键/范围已实现）
