Skip to content

Latest commit

 

History

History
289 lines (219 loc) · 14.4 KB

File metadata and controls

289 lines (219 loc) · 14.4 KB

Klip 产品需求文档 (PRD)

1. 产品概述

1.1 产品定位

Klip 是一个当前以 Windows 为 MVP 交付目标的桌面剪贴板管理器,解决操作系统剪贴板只能保存一条内容的限制,帮助用户高效管理复制粘贴历史。

1.2 目标用户

用户类型 使用场景
知识工作者 收集资料、整理笔记
开发者 复制代码片段、命令行
内容创作者 写作素材收集
数据录入人员 重复性粘贴操作

1.3 核心价值

  • 效率提升 - 快速访问历史剪贴板内容,减少重复复制
  • 隐私保护 - 本地存储,数据不上传云端
  • 平台聚焦 - 当前 MVP 以后端 Windows 体验为主,后续扩展 macOS/Linux
  • 轻量高效 - 低内存占用,快速启动

1.4 产品名称

Klip - 简短有力,K 开头有辨识度,易于记忆和搜索。


2. 功能需求

Phase 1: MVP (最小可行产品)

F1: 剪贴板历史记录

属性 内容
描述 自动监听并保存剪贴板内容变化
用户场景 用户复制文本后,内容自动保存到历史列表
验收标准 1. 复制内容后 100ms 内出现在列表
2. 最多保存 100 条记录
3. 自动去重相同内容
技术要点 使用 clipboard-rs 统一监听/读写,SQLite 存储,哈希抑制应用自身写回事件

F2: 多格式支持

属性 内容
描述 支持识别和存储不同类型的内容
用户场景 用户复制文本、图片、文件,都能正确保存和预览
验收标准 1. 正确识别文本、图片、文件路径
2. 图片显示缩略图预览
3. 文件显示文件名和数量
技术要点 检测剪贴板格式类型,图片 Base64 存储

F3: 全局快捷键唤起

属性 内容
描述 通过快捷键快速显示/隐藏主窗口
用户场景 用户在任何应用中按快捷键,Klip 窗口立即出现
验收标准 1. 当前默认快捷键为 Ctrl+Alt+K
2. 当前运行时支持 Ctrl+Alt+<A-Z> 范围内的窗口快捷键配置
3. 修改后无需重启即可重载热键
技术要点 tauri-plugin-global-shortcut

F4: 快速数字键粘贴

属性 内容
描述 使用 Ctrl+Alt+数字键 快速选择并粘贴历史记录
用户场景 用户按 Ctrl+Alt+1Ctrl+Alt+9,对应记录立即粘贴到当前应用
验收标准 1. Ctrl+Alt+1Ctrl+Alt+9 对应当前搜索和筛选后的前 9 条可见记录
2. 已同步空结果或已删除快照 ID 不回退到其他记录
3. 粘贴后窗口自动隐藏
技术要点 前端同步最多 9 个有序 ID 到进程内快照;快捷键按位置解析并从数据库重新加载该 ID,再调用系统剪贴板 API 和模拟 Ctrl+V 粘贴

F5: 搜索功能

属性 内容
描述 按关键词搜索历史记录
用户场景 用户输入关键词,列表实时过滤匹配内容
验收标准 1. 搜索响应时间 < 50ms
2. 支持原内容、预览、OCR、自定义标题和备注匹配
3. 支持内容类型、标签、收藏、敏感、精确匹配和创建日期范围过滤
4. 搜索框自动聚焦,可直接用方向键选择、Enter 原格式粘贴、Ctrl+Enter 纯文本粘贴,IME 组合输入不触发粘贴
技术要点 Tantivy + jieba 全文检索;SQLite 叠加等值/范围筛选并在索引异常时回退 LIKE;标题/备注更新后同步索引并刷新活动搜索

F6: 删除历史记录

属性 内容
描述 删除单条或全部历史记录
用户场景 用户右键或点击删除按钮移除不需要的内容
验收标准 1. 支持删除单条记录
2. 支持清空全部记录
3. 删除操作有确认提示
技术要点 数据库 DELETE 操作

F7: 系统托盘常驻

属性 内容
描述 应用在系统托盘运行,不占用任务栏
用户场景 用户关闭窗口后,应用继续在托盘运行
验收标准 1. 托盘图标显示应用状态
2. 托盘菜单支持常用操作
3. 点击托盘图标显示窗口
技术要点 Tauri TrayIcon API

F8: 本地 SQLite 存储

属性 内容
描述 所有数据存储在本地 SQLite 数据库
用户场景 用户数据完全本地化,无需网络
验收标准 1. 数据库文件在用户目录
2. 当前版本完成基础本地存储能力
3. 当前版本提供 JSON/CSV 导入导出和数据库备份/恢复
4. 当前版本具备 schema 版本门禁、轻量迁移、损坏数据库保留与干净重建能力
技术要点 rusqlite crate,数据目录管理

F9: 应用配置持久化

属性 内容
描述 用户设置自动保存和加载
用户场景 用户修改设置后,下次启动保持配置
验收标准 1. 配置存储在数据库
2. 提供默认配置
3. 当前后端运行时消费 hotkey_toggle_windowhotkey_quick_paste_prefix,并支持 auto_start 同步系统自启动状态
技术要点 配置表存储,JSON 序列化

F10: 开机自启动

属性 内容
描述 可选开机时自动启动应用,并将系统状态与数据库配置保持一致
用户场景 安装包阶段由用户显式启用后,每次开机自动运行 Klip
验收标准 1. 用户可显式开启或关闭系统自启动
2. 应用启动时按 auto_start 配置同步系统状态
3. 以 Windows 为主验证,其他平台作为后续阶段补充验证
技术要点 tauri-plugin-autostart 或平台 API

F11: 标签、片段与来源规则

属性 内容
描述 提供标签管理、常用片段管理,以及按来源忽略剪贴板采集
用户场景 用户给历史条目打标签、保存常用命令或短语,并避免保存密码管理器/隐私窗口内容
验收标准 1. 支持创建/删除标签,并在单条或批量历史条目上分配标签
2. 支持创建、搜索、复制和删除片段
3. 按平台可用的前台应用名、窗口标题或两者匹配来跳过剪贴板采集;来源不可用时不阻止捕获
4. 监听暂停和隐私模式会阻止新条目入库
技术要点 SQLite 关系表、snippets 表、clipboard_source_rules 表,以及 Windows、macOS、Linux X11 的 best-effort 来源查询

F12: MVP 边界与发布配置记录

属性 内容
描述 记录发布相关配置,并明确外部服务不属于当前 MVP
用户场景 发布前确认 Windows 签名输入和更新源 URL 是否已配置;设置页不把云同步、插件市场或真实加密伪装成已上线能力
验收标准 1. 设置页可保存监听开关、更新源、加密就绪开关、同步目录和插件目录
2. 更新、加密、同步和插件配置默认收在高级折叠区
3. pnpm release:readiness 可报告签名与更新源配置状态
4. 不伪造外部服务状态:证书、托管更新源、云同步服务、真实加密迁移和插件市场仍需外部提供
技术要点 app_config 持久化,PowerShell release readiness 检查

F13: 核心剪贴板操作与详情

属性 内容
描述 明确区分复制与粘贴,并在统一详情中提供完整预览、纯文本操作、有限内容动作和 annotation
用户场景 用户可以只把历史内容复制回系统剪贴板,也可立即粘贴;可查看文本/富文本/图片/OCR/文件详情,并为条目补充可搜索标题和备注
验收标准 1. 复制不模拟粘贴且不隐藏窗口,粘贴会恢复目标并隐藏窗口
2. 文本支持保留格式与纯文本 copy/paste,非文本拒绝 plain 命令
3. 统一详情完整显示已有内容类型,敏感遮罩不泄露原内容或 annotation
4. 只对完整 HTTP/HTTPS URL、保守邮箱和已验证本地路径提供打开/定位/复制动作
5. 标题最多 200 个 Unicode 字符,备注最多 10,000 个,空白保存为 NULL 并参与搜索
技术要点 DB v7、类型化 Tauri IPC、统一 clipboard writer、DOMPurify、执行前后端重新检测内容动作

3. 非功能需求

3.1 性能指标

以下为产品目标;当前仓库已提供覆盖率和发布验证入口。覆盖率、冷启动、内存、搜索延迟 和安装包大小都必须在具体发布候选上重新测量,不能沿用历史结果声明达标。

指标 目标值
冷启动时间 < 1 秒
热启动时间 < 200ms
内存占用 (空闲) < 50MB
内存占用 (100条记录) < 100MB
剪贴板监听延迟 < 100ms
搜索响应时间 < 50ms
安装包大小 记录并披露;离线 OCR 资源不适用早期的 10MB 目标

3.2 兼容性

平台 版本要求
Windows Windows 10+(当前实现目标)
macOS macOS 11+ (Big Sur)(后续阶段)
Linux Ubuntu 20.04+, Fedora 35+(后续阶段)

3.3 安全性

  • 本地数据存储,不上传云端
  • 可选敏感内容检测(密码、密钥等),并可选择标记或跳过新捕获的敏感文本
  • Windows、macOS 和 Linux X11 按平台可用信息执行来源规则;Wayland/不支持平台为空来源降级
  • 数据库位于操作系统用户数据目录;额外文件权限加固尚未完成跨平台验证

3.4 可维护性

  • 模块化代码结构
  • 提供 pnpm test:coverage 覆盖率测量;80% 覆盖率目标当前尚未作为强制门禁
  • 完整的 API 文档

4. 用户界面设计

4.1 主窗口布局

┌─────────────────────────────────────┐
│  🔍 搜索框              ⚙️ 设置    │  ← Header (40px)
├─────────────────────────────────────┤
│  全部 │ 文本 │ 图片 │ 文件         │  ← 类型筛选 (32px)
├─────────────────────────────────────┤
│                                     │
│  ┌─────────────────────────────┐   │
│  │ 📋 复制的内容预览...  10:30 │   │  ← 剪贴板列表项
│  │                         [🗑️] │   │
│  └─────────────────────────────┘   │
│                                     │
│  ┌─────────────────────────────┐   │
│  │ 🖼️ 图片 200x150      10:28 │   │
│  │                         [🗑️] │   │
│  └─────────────────────────────┘   │
│                                     │
│  ...                                │
│                                     │
└─────────────────────────────────────┘

4.2 窗口属性

属性
默认宽度 560px
默认高度 760px
最小宽度 360px
最小高度 480px
窗口装饰 无边框
置顶
显示状态 默认隐藏

4.3 系统托盘

菜单项 功能
显示窗口 打开主窗口
开机自启 设置中可开启/关闭,安装包阶段重点验证
设置 打开设置面板
关于 显示版本信息
退出 关闭应用

5. 验收标准

5.1 当前仓库验收状态

项目 状态
应用启动和主窗口渲染 已由前端测试、构建和桌面 E2E 覆盖
剪贴板监听 已由桌面 E2E 覆盖文本复制流程
文本、图片、文件识别 已由后端格式策略测试和前端预览测试覆盖;安装包发布前仍需实机抽查
快捷键唤起和数字键快速粘贴 可见项快照已由 Windows 隔离桌面 E2E 验收;发布前仍需安装包抽查全局唤起
搜索和筛选 已由前端、IPC、Tantivy/SQLite 测试和 Windows 桌面 E2E 覆盖
复制/粘贴、纯文本与统一详情 组件/后端测试覆盖语义和详情边界;Windows 剪贴板集成测试确认 plain 模式不写 HTML/RTF
内容动作与 annotation Windows 桌面 E2E 已验证中文/空格路径打开与定位、annotation 持久化和 note-only 搜索
删除和清空历史 已由前端交互测试和后端测试覆盖
系统托盘 已接入运行时;发布前需安装包实机验证
设置保存和加载 已由 store、Settings 和后端配置测试覆盖
开机自启动 已接入设置和后端同步;发布前需重启或重新登录实测
性能指标 作为目标保留,冷启动和内存占用需在发布候选安装包上实测
明显阻塞 Bug 当前自动化验证未发现阻塞项

5.2 测试场景

  1. 基础流程: 复制 → 显示在列表 → 搜索 → 方向键选择 → Enter 粘贴
  2. 复制/纯文本流程: 独立复制不隐藏窗口 → Ctrl+Enter 纯文本粘贴 → 系统剪贴板无 HTML/RTF
  3. 快捷键流程: 按 Ctrl+Alt+K → 窗口显示 → 筛选到唯一记录 → 按 Ctrl+Alt+1 → 粘贴可见项
  4. 详情和动作流程: 打开详情 → 预览完整内容 → 对经验证路径执行打开/定位
  5. Annotation 流程: 详情中保存标题和备注 → 关闭详情 → 只搜索备注 token → 显示自定义标题
  6. 托盘流程: 关闭窗口 → 托盘图标存在 → 点击显示窗口

6. 后续规划

详见 ROADMAP.md

当前阶段

当前不继续扩大功能面。优先保持 Windows-first 本地剪贴板管理器的小闭环稳定:复制、记录、搜索、粘贴、快捷键、托盘、隐私控制和本地数据恢复。

暂不进入 MVP

  • 云同步:当前只有本地同步目录配置,不含服务端、账号或冲突处理。
  • 插件系统:当前只有本地插件目录配置,不含插件运行时和市场。
  • 自动更新服务:当前只有更新源配置和发布脚本检查,不含托管更新源。
  • 真实数据库加密迁移:当前只有就绪配置,不含密钥管理和迁移流程。
  • AI 智能分类:不属于当前剪贴板 MVP 的核心闭环。