# 隐私说明（typing-insight）

本插件为**个人电脑自用**设计的输入记录与分析工具，运行于 DeepSeek Harness Desktop。请在使用前完整阅读本说明。

## 采集什么

- **键盘事件**：通过全局低级键盘钩子（uiohook-napi）记录按键的键码与时间戳，用于统计与输入强度分析。不记录按键序列对应的原始文本推导之外的任何窗口内容。
- **上屏文本**：通过 UIA（UI Automation）辅助进程读取焦点控件的文本增量，仅保存"上屏后"的新增文字段；输入法组合中的拼音候选不计入。
- **软件使用时长**：前台窗口归属、系统最后输入时间、锁屏/解锁状态与心跳共同判定，只保存应用、起止时间、聚合时长与交互计数。

## 明确不采集

- 窗口标题、鼠标坐标、点击目标、滚轮轨迹
- 截图、剪贴板内容
- 密码框内容（见下）
- 任何网络传输：插件运行期**没有任何网络请求**，数据零出口

## 哪些场景保存文本、哪些仅统计按键

| 场景 | 行为 |
| --- | --- |
| Chromium/UIA 应用（Chrome/Edge/ChatGPT/钉钉/DSH Desktop 等） | 按键 + 文本（脱敏后） |
| 标准 Win32 输入框（记事本等） | 按键 + 文本（脱敏后） |
| IMM32 型输入法兜底通道 | 按键 + 文本（尽力而为） |
| 微信 4.1.x（MMUI 封闭渲染） | **仅按键统计，不获取文字** |
| 全屏独占应用（游戏等） | 自动降级为仅按键统计（capture=keys-only） |
| 密码框 | 一律不记录（fail-closed，见下） |

## 密码框 fail-closed

- UIA 的 IsPassword 属性 + Win32 ES_PASSWORD 窗口风格双层识别密码输入框。
- 无法确认安全的控件一律按密码框处理：该控件的文本与按键**一并停止采集**，直到焦点离开或状态确认。
- 密码框所在应用的名称不会出现在采集状态中（"隐私保护中"）。

## 数据存储

- 位置：`%USERPROFILE%\.dsh\data\typing-insight\`（catalog.sqlite + days/YYYY/YYYY-MM-DD.sqlite 分片）。
- **当前为明文存储**：SQLite 未加密（FR-022 加密功能尚未实现）。能物理访问本机的人可读取库文件；插件提供的是内容级脱敏（手机号/身份证/银行卡/邮箱落盘前掩码），**不是磁盘加密**。请勿在共享设备上启用。
- 保留期：默认 90 天，可配置 7/30/90/365/永久。选择"永久"意味着输入文本将无限期保存在本机磁盘上，请自行评估风险。
- 删除：设置面板「数据与隐私」一键清除（今日/全部），或对话命令 /typing clear（需确认）。**卸载不会自动删除数据**。

## 暂停与控制

- 对话命令 /typing pause、/typing resume。
- 全局快捷键（默认未绑定，可在设置面板绑定 Ctrl+Alt+Shift+P / L）。
- 首次安装后插件处于**未授权/暂停**状态，需在设置面板阅读本说明并主动点击「开始采集」才会启动键盘钩子与文本采集。

## 卸载

- 从 DSH profile 的 package.json 移除依赖并重启 DSH Desktop。
- 数据目录不会被自动删除；如需彻底清除，卸载前执行 /typing clear 或手动删除数据目录。

## 版本与审计

- helper 校验和与构建信息见 RELEASE.md；当前 helper 未做 Authenticode 签名（正式签名前仅以 rc/beta 发布）。
- 第三方依赖与许可证见 THIRD_PARTY_NOTICES.md；安全报告渠道见 SECURITY.md。
