这个故事从一个真实的痛点开始。

每天复制几十次, 却丢了一半

我做开发工作, 每天要在 IDE、浏览器、终端、聊天窗口之间来回切换。每次切换都要复制点东西: 一段代码、一个 URL、一条命令、一行 SQL、一段报错信息。一天下来, Ctrl+C 按了至少 50 次

然后我发现了一个尴尬的事: 我复制了 A, 切到另一个窗口准备粘贴时, A 已经不在剪贴板里了 — 因为中间我又复制了 B。最常见的情况是:

  • 在浏览器找到一段代码, 复制 → 切回 IDE → 想粘贴 → 没了
  • 复制一个 URL → 切到 IM → 复制了一段聊天文本 → 切到浏览器 → 想粘贴 URL → 没了
  • 复制报错信息 → 切到 IDE → 又复制了一段日志 → 切回浏览器 → 想搜索报错 → 没了

系统剪贴板只有 1 条。我被迫反复来回切窗口、重新复制。每天浪费的时间大概 10~20 分钟, 心情也更烦。

试了 Win+V, 不够

Win10 引入的 Win+V 我用了一阵。它的体验是: 按 Win+V 弹出面板, 鼠标点一条, 内容就回到剪贴板, 再 Ctrl+V 粘贴。看起来不错。

但我用下来觉得有几个问题:

  • 还是需要鼠标: 我切窗口、找目标应用, 然后要点一下历史条目, 再 Ctrl+V。键盘流被切碎了。
  • 不能直接粘贴: Win+V 只能把内容"放回剪贴板", 不会自动粘到当前窗口。
  • 容量太小: 25 条, 容易满。
  • 偶尔丢失: 某些情况下(系统更新、异常关机), 历史会清空。

我想要的体验是: 按一个键 → 看到历史 → 用键盘选 → 直接粘到上一个窗口。Win+V 给不了。

市面上其他工具的取舍

去搜了一下, 有几个老牌工具: Ditto、ClipX、CopyQ。我都试用了, 有功能但有几个让我不舒服的点:

  • 界面停留在 10 年前: 我不是怀旧的人, 视觉体验对我很重要。
  • 体积 10~30 MB: 明明就一个监听剪贴板 + 列表的工具, 凭什么这么大?
  • 依赖 .NET / Visual C++: 安装要装一堆运行时。
  • 部分工具有广告 / 收费功能: 基础功能免费, 高级功能收费。我只是要个剪贴板, 不要订阅。
  • 云同步选项: 我的剪贴板内容有客户的服务器地址、未发布的 API key, 我绝对不想让这些传到云端。

后来我意识到: 这个工具的核心需求很朴素 — 记录 + 检索 + 回填。市面上的工具要么太老、要么太重、要么要订阅。算了, 自己做。

为什么选 Rust + Tauri

技术栈选择主要看三点:

  • 体积: 剪贴板工具应该几 MB, 不应该 30 MB。Rust + Tauri 用原生 WebView(系统自带 Edge WebView2), 编译后只有几 MB。
  • Windows API 集成: 需要调 Win32 API 做自动粘贴, Rust 的 windows crate 覆盖了完整的 Win32 绑定, 类型安全。
  • 前端简单: 剪贴板历史就是个列表, 不需要 React/Vue。我用 vanilla JS + 几十行 CSS, 不引入任何打包步骤。

Tauri v2 + Rust + 原生 JS 的组合, 让我可以写出 3 MB 的安装包, 同时享受 Rust 的内存安全和 Win32 API 集成。完美。

做产品的取舍

开发过程中, 我做了几个明确不做的事:

  • 不做账号体系: 不需要登录, 不需要云端, 不需要同步。增加这些会拖慢开发、引入隐私问题。
  • 不做图片 / 文件支持: 当前只记录纯文本。图片剪贴板需要更多资源(缩略图缓存), 与"轻量"的定位冲突。
  • 不做花哨的 UI 主题: 一个简洁的浅色 UI 就够了, 用户换主题是低优先级需求。
  • 不做订阅: 一份安装包, 永久免费。

这些取舍让我能在两周内做出 v1.0.0, 而且每个功能都打磨到位, 而不是做一个"半成品"等用户来投票。

踩过的坑

开发过程中有几个让我印象深刻的坑, 详细写在了 另一篇文章 里。简短版:

  • 全局热键按下和松开各触发一次: 必须判断 ShortcutState::Pressed, 否则"按下显示、松开隐藏"。
  • SetForegroundWindow 静默失败: 必须先 AttachThreadInput
  • SendInput 丢 Ctrl: 必须用 keybd_event + 真实扫描码。
  • HWND 不是 Send: 跨线程传 isize 原始值, 线程内重建。

每个坑都花了 1~2 小时才定位到原因。如果以后还有做类似工具的开发者, 希望这些能帮到你。

为什么永久免费

经常会有人问: "你做了这么多, 怎么变现?"

答案是: 不打算变现。这是一个个人项目, 不是商业产品。它解决我自己每天都有的问题, 也顺便分享给有同样问题的人。我用它节省的时间, 已经"赚"回来了。

免费的代价是:

  • 没有客服 SLA, 反馈邮件可能几小时到几天才回
  • 功能迭代速度有限, 看个人精力
  • 不出 macOS 版(暂时)

如果你需要的功能它已经有了, 恭喜, 直接用。如果你需要的功能它没有, 欢迎在 反馈页 告诉我。

写在最后

做这个工具的过程让我重新理解了"产品": 一个真正解决自己痛点的小工具, 比一个试图覆盖所有人的大平台更有生命力。copypaste 不是要取代 Ditto 或 CopyQ, 它只是满足我自己对"轻量 + 键盘流 + 永久免费"这三个条件的剪贴板工具的需求

如果你也在为复制粘贴的体验烦恼, 试试 copypaste。3 MB 一键安装, 按 Alt+Space 即可开始。如果它对你有用, 那是我最高兴的事。