Skip to content

Latest commit

 

History

History
407 lines (302 loc) · 13.4 KB

File metadata and controls

407 lines (302 loc) · 13.4 KB

Bufferly PRD

版本:v0.1
日期:2026-06-04
状态:Draft
负责人:Tian
产品类型:macOS 原生桌面应用

1. 产品概述

Bufferly 是一款面向开发者和 AI heavy user 的本地优先剪贴板工作台。

它不是 Paste 的简单平替,而是围绕开发者每天高频复制的代码片段、命令、URL、JSON、prompt、错误信息和临时文本,提供快速搜索、复用、转换和安全过滤能力。

一句话定位:

为开发者和 AI 工作流打造的本地优先剪贴板工作台。

2. 背景与问题

开发者和 AI 用户每天会频繁复制大量临时信息:

  • 代码片段
  • Shell 命令
  • URL
  • JSON / API response
  • prompt
  • 错误日志
  • commit hash / branch name
  • .env 配置片段
  • token、验证码、临时密码等敏感文本

普通剪贴板只保存当前一条内容,系统级剪贴板历史能力有限;通用剪贴板工具虽然能保存历史,但通常缺少开发者工作流里的类型识别、格式转换、敏感内容过滤和本地优先体验。

Bufferly 要解决的问题:

  1. 复制过的有用内容经常找不回来。
  2. 开发者需要反复复制、清洗、格式化和重用片段。
  3. 剪贴板历史可能泄露 token、密码、验证码等敏感内容。
  4. 通用剪贴板工具对代码、命令、JSON、prompt 等内容没有足够强的语义支持。
  5. 用户需要一个低打扰、随时可呼出的工作台,而不是一个重型笔记软件。

3. 目标用户

3.1 核心用户

  • macOS 开发者
  • 高频使用 AI 编程工具的用户
  • 经常在浏览器、终端、IDE、聊天工具之间复制内容的人

3.2 次级用户

  • 产品经理、设计师、运营等高频复用文本片段的人
  • 经常处理链接、prompt、客服话术、临时资料的人

4. 用户场景

场景 1:找回刚刚复制过的命令

用户刚从文档复制了一条命令,又复制了其他内容导致命令丢失。用户按快捷键呼出 Bufferly,搜索命令关键字,回车粘贴。

场景 2:复用常用 prompt

用户把常用 AI prompt pin 到固定区域。需要时按快捷键呼出,输入关键词,直接粘贴到 ChatGPT、Codex、Cursor 或 Claude。

场景 3:清洗 URL

用户复制带有 tracking 参数的 URL。Bufferly 自动识别 URL,并提供“移除 tracking 参数后复制”的操作。

场景 4:格式化 JSON

用户复制一段压缩 JSON。Bufferly 识别为 JSON,提供格式化、压缩、复制为代码块等操作。

场景 5:避免保存敏感内容

用户复制 .env、API key、验证码或临时密码。Bufferly 判断为敏感内容,默认不保存,或只保存脱敏预览。

5. 产品目标

5.1 MVP 目标

在 macOS 上提供一个稳定、快速、低打扰的本地剪贴板历史工具,并具备开发者向差异化能力。

5.2 成功指标

MVP 阶段先以个人使用和可验证行为为指标:

指标 目标
呼出速度 快捷键触发后 200ms 内显示窗口
搜索响应 500 条历史内搜索无明显卡顿
剪贴板捕获准确性 普通文本复制可稳定入库
敏感内容过滤 明确规则命中的 token / 密码 / 验证码默认不保存明文
日常可用性 作者连续使用 7 天,不需要切回其他剪贴板工具
崩溃率 日常使用不出现可复现崩溃

6. MVP 范围

6.1 必须有

  1. 剪贴板监听

    • 监听 macOS 系统剪贴板文本变化。
    • 自动保存新文本内容。
    • 相同内容去重。
  2. 历史记录

    • 保存最近 500 条文本历史。
    • 显示内容预览、复制时间、类型标识。
    • 支持删除单条记录。
  3. 快捷键呼出

    • 支持全局快捷键呼出/隐藏主面板。
    • 默认快捷键建议:Option + Space,后续允许配置。
  4. 搜索

    • 支持按内容模糊搜索。
    • 搜索结果实时更新。
    • 支持键盘上下选择。
  5. 粘贴

    • 回车将选中内容写回剪贴板。
    • 尽量自动粘贴到当前前台 App。
    • 如自动粘贴受权限限制,至少保证内容已复制到剪贴板。
  6. Pin 常用内容

    • 用户可以 pin 常用片段。
    • Pin 内容固定展示在独立区域或搜索结果顶部。
  7. 类型识别

    • URL
    • Email
    • JSON
    • Shell command
    • Code-like text
    • Plain text
  8. 敏感内容过滤

    • 检测疑似 API key、token、password、验证码、.env 片段。
    • 默认不保存明确敏感内容明文。
    • UI 中显示“已过滤敏感内容”的占位记录或完全跳过,具体策略开发时确认。
  9. 本地存储

    • 历史记录默认只保存在本机。
    • 不做云同步。

6.2 应该有

  1. 粘贴为纯文本。
  2. URL 去 tracking 参数。
  3. JSON 格式化 / 压缩。
  4. 长文本自动生成短标题。
  5. 设置页:历史保留数量、敏感过滤开关、快捷键设置。

6.3 可以后做

  1. 图片剪贴板历史。
  2. 文件剪贴板历史。
  3. Prompt 片段库。
  4. 多段复制栈。
  5. AI 总结 / 改写 / 翻译。
  6. iCloud 同步。
  7. Raycast / Alfred 集成。

7. 不做范围

MVP 明确不做:

  • Windows / Linux 客户端
  • iPhone / iPad 客户端
  • 云同步
  • 团队共享
  • 账号系统
  • 订阅付费
  • 浏览器插件
  • 完整笔记系统
  • 所有文件类型的剪贴板管理
  • 复杂 AI agent 功能

8. 核心交互

8.1 主流程

  1. 用户复制内容。
  2. Bufferly 后台监听剪贴板变化。
  3. 通过敏感规则检查。
  4. 合格内容写入本地历史。
  5. 用户按全局快捷键呼出面板。
  6. 用户搜索或键盘选择条目。
  7. 用户回车粘贴。
  8. 面板自动隐藏。

8.2 搜索面板

面板应满足:

  • 低打扰,浮层展示。
  • 默认聚焦搜索框。
  • 支持键盘优先操作。
  • 不把 UI 做成重型素材库。
  • 列表信息密度高,但要能快速扫读。

建议布局:

------------------------------------------------+
| Search clips...                               |
+------------------------------------------------+
| Pinned                                         |
| [JSON] API payload preview...             pin |
| [Prompt] Rewrite selected text...         pin |
+------------------------------------------------+
| Recent                                         |
| [URL] github.com/...                      2m  |
| [CMD] npm run build                       5m  |
| [TEXT] error message...                   8m  |
+------------------------------------------------+

9. 功能需求

9.1 剪贴板监听

编号 需求 优先级 验收标准
FR-001 App 启动后监听文本剪贴板变化 P0 复制普通文本后,历史列表出现新记录
FR-002 相同内容不重复保存 P0 连续复制同一文本,只保留一条或更新时间
FR-003 忽略空文本和纯空白文本 P0 复制空白内容不会新增记录

9.2 历史记录

编号 需求 优先级 验收标准
FR-010 展示最近剪贴板历史 P0 面板中能看到最近复制内容
FR-011 支持删除单条历史 P1 删除后该条不再出现在列表
FR-012 限制历史数量 P0 超过 500 条后自动淘汰最旧记录

9.3 搜索与选择

编号 需求 优先级 验收标准
FR-020 支持模糊搜索 P0 输入关键词后列表只显示匹配项
FR-021 支持键盘上下移动 P0 上下键能改变当前选中项
FR-022 支持回车选择 P0 回车后选中内容写入剪贴板

9.4 Pin

编号 需求 优先级 验收标准
FR-030 用户可 pin 历史条目 P0 被 pin 的条目显示在 pinned 区域
FR-031 用户可 unpin P0 取消后条目回到普通历史

9.5 类型识别

编号 需求 优先级 验收标准
FR-040 识别 URL P0 URL 显示 URL 类型标识
FR-041 识别 JSON P0 合法 JSON 显示 JSON 类型标识
FR-042 识别 Shell command P1 常见命令显示 CMD 类型标识
FR-043 识别 Email P1 邮箱地址显示 Email 类型标识
FR-044 识别 code-like text P1 多行代码显示 Code 类型标识

9.6 敏感内容过滤

编号 需求 优先级 验收标准
FR-050 识别 .env 风格 key-value P0 API_KEY=... 不保存明文
FR-051 识别 password/token/secret 关键词 P0 命中关键词的内容默认不保存明文
FR-052 识别常见 API key 形态 P1 明显 token 字符串不保存明文
FR-053 用户可在设置里查看过滤策略 P2 设置页能看到规则说明

9.7 格式转换

编号 需求 优先级 验收标准
FR-060 粘贴为纯文本 P1 富文本复制后可输出纯文本
FR-061 URL 去 tracking 参数 P1 utm_* 等参数可被移除
FR-062 JSON 格式化 P1 压缩 JSON 可格式化后复制
FR-063 JSON 压缩 P2 格式化 JSON 可压缩后复制

10. 非功能需求

类别 要求
性能 快捷键呼出到可交互目标 200ms 内
存储 本地保存,默认不联网
隐私 敏感内容默认不保存明文
稳定性 后台监听不应导致明显 CPU 占用
可访问性 搜索、选择、粘贴主流程必须可纯键盘完成
可靠性 App 重启后历史和 pinned 内容仍存在
可维护性 剪贴板监听、存储、过滤、识别、UI 分层实现

11. 技术方向

当前确认采用 macOS 原生技术栈:

  • Swift
  • SwiftUI
  • AppKit
  • SQLite
  • Keychain

职责划分建议:

模块 技术 说明
主 UI SwiftUI 搜索面板、历史列表、设置页
系统能力 AppKit 剪贴板监听、全局快捷键、窗口层级、菜单栏
本地数据库 SQLite 保存历史、pin、设置
安全存储 Keychain 保存加密密钥或敏感配置
内容识别 Swift service URL / JSON / Command / Email / Code 类型判断
敏感过滤 Swift service token / password / secret / .env 规则检测

12. 数据模型草案

ClipItem

字段 类型 说明
id UUID 主键
content String 剪贴板文本内容,敏感内容不保存明文
preview String UI 预览文本
contentHash String 去重用 hash
type String url / json / command / email / code / text
isPinned Bool 是否 pin
isSensitive Bool 是否命中敏感规则
createdAt Date 首次复制时间
updatedAt Date 最近复制时间
sourceApp String? 来源 App,后续可选

AppSettings

字段 类型 默认值
maxHistoryCount Int 500
globalShortcut String Option+Space
enableSensitiveFilter Bool true
autoPasteAfterSelect Bool true
launchAtLogin Bool false

13. 里程碑

M0:项目骨架

  • 初始化 Swift macOS app。
  • 建立模块目录。
  • App 可启动。
  • 有基础主窗口。

M1:剪贴板历史

  • 后台监听文本剪贴板。
  • 内存中展示历史。
  • 去重。
  • 搜索。

M2:可用工作流

  • 全局快捷键呼出。
  • 回车复制/粘贴。
  • Pin。
  • 本地持久化。

M3:开发者增强

  • 类型识别。
  • 敏感过滤。
  • JSON 格式化。
  • URL 清洗。

M4:自用打磨

  • 设置页。
  • 启动项。
  • 菜单栏图标。
  • 错误处理。
  • 连续 7 天自用修复。

14. 验收标准

MVP 可认为完成,当满足:

  1. App 能在 macOS 正常启动。
  2. 复制普通文本后,Bufferly 能捕获并显示。
  3. 按全局快捷键可呼出搜索面板。
  4. 搜索、上下选择、回车复制/粘贴流程可用。
  5. Pin / unpin 可用。
  6. App 重启后历史记录仍存在。
  7. 明确敏感内容不会保存明文。
  8. 作者能连续使用 7 天,不需要退回其他剪贴板工具完成日常工作。

15. 开放问题

  1. 默认快捷键是否使用 Option + Space?是否会和现有工具冲突?
  2. 敏感内容命中后,是完全跳过,还是保存脱敏占位记录?
  3. 自动粘贴是否需要请求辅助功能权限?第一版是否接受只复制不自动粘贴?
  4. 数据库是否需要加密?如果加密,是否使用 Keychain 保存密钥?
  5. 第一版是否支持图片?当前建议不支持。
  6. UI 是做底部横向卡片流,还是 Raycast 风格垂直列表?
  7. 是否需要显示来源 App?

16. 参考资料