
字节笔记本
2026年10月5日 · 约 8 分钟读完
EcoPaste 把剪贴板管理器的后端换成了 Rust
你每天要复制粘贴几百次,却很少意识到剪贴板管理器的存在,直到用上一个好的,才发现剪贴板历史这么有用。EcoPaste 是一个开源的跨平台剪贴板管理器,支持 macOS 和 Windows,最近完成了一次相当大胆的重构:把后端运行时从 JavaScript 全面转向 Rust-First 架构。这不是小修小补,而是重写了整个后端,对应 PR #1273。
EcoPaste 是什么
EcoPaste(GitHub 仓库 EcoPasteHub/EcoPaste)是一个开源桌面剪贴板管理器,支持 macOS 和 Windows。核心能力:
- 捕获剪贴板历史:文本、HTML、RTF、图片、文件、文件夹
- SQLite 全文搜索(FTS5):快速检索历史内容
- 按来源应用或类型过滤:只看从某个 App 复制的内容
- 自动跳过敏感内容:私钥、API token、AWS key、JWT 不记录
- 预览、置顶、收藏、分组、笔记:组织管理剪贴板
- 备份加密:
.ecopastebak格式导入导出 - 本地存储:数据不上云,隐私安全
技术栈:Tauri v2 + React 19 + Rust + SQLite + UnoCSS + Ant Design。
Rust-First 重构改了什么
这次重构的核心,是把「持久的、核心的行为」从 JS 前端挪到 Rust 后端。
重构前
Tauri (外壳)
├── Rust:薄薄的壳(窗口管理、系统调用)
└── JS/TS:几乎所有逻辑(剪贴板捕获、存储、搜索、设置)JS 做剪贴板捕获和存储有几个先天不足:
- 性能:大量剪贴板事件时,JS 的 GC 停顿导致丢帧
- 可靠性:JS 运行时崩了,整个剪贴板历史可能丢
- 内存:JS 运行时占 100-200MB,对一个后台剪贴板工具太重
重构后(Rust-First)
Tauri (外壳)
├── Rust:核心逻辑全部在这里
│ ├── clipboard/ 剪贴板捕获、内容检测、回写、来源应用、循环抑制
│ ├── db/ SQLite 仓储、模型、迁移、FTS 全文搜索
│ ├── settings/ 设置持久化
│ ├── window/ 窗口管理
│ ├── shortcut/ 全局快捷键
│ ├── tray/ 系统托盘
│ ├── menu/ 右键菜单
│ ├── autostart/ 开机自启
│ └── backup/ 备份/恢复
│
└── React UI:只管渲染和交互
├── 组件(Ant Design)
├── 样式(UnoCSS)
├── 状态镜像(Valtio)
└── Tauri 命令封装
前端通过 Tauri 命令调用 Rust,通过事件(clipboard://updated、settings://updated)接收刷新信号。Rust 做所有重活,React 只管显示。
为什么剪贴板管理器适合 Rust
剪贴板管理器的特点是常驻后台、频繁事件、大量小数据、对延迟敏感,这恰好是 Rust 的甜蜜点:
| 特性 | JS 后端 | Rust 后端 |
|---|---|---|
| 内存占用 | 100-200MB | 10-30MB |
| 事件响应延迟 | GC 导致偶尔卡顿 | 微秒级,无 GC |
| 数据可靠性 | JS 崩溃可能丢数据 | 内存安全,不会段错误 |
| SQLite 性能 | JS 绑定有开销 | 原生 rusqlite,零开销 |
| 并发 | 单线程 + async | 原生多线程,无数据竞争 |
一个常驻后台的工具,用 Rust 做核心意味着更轻、更快、更稳。这和近期一批桌面工具的选型是同一个方向:AnyDoor 用原生 Swift 做菜单栏工具,senda 用 Wails 加 Go 做轻量 API 客户端,Codex Island 用 Swift 加 Rust 做常驻看板。后台工具就该用原生语言写核心。

和同类剪贴板工具对比
| EcoPaste (Rust-First) | Maccy | CopyQ | Paste (付费) | |
|---|---|---|---|---|
| 语言 | Rust + React | Swift (macOS) | C++ (Qt) | Swift |
| 平台 | macOS + Windows | 仅 macOS | macOS/Windows/Linux | macOS + iOS |
| 开源 | 是 | 是 | 是 | 否 |
| 全文搜索 | 是,SQLite FTS5 | 是 | 是 | 是 |
| 图片/文件 | 是 | 是 | 是 | 是 |
| 敏感内容过滤 | 是,自动跳过 token | 否 | 否 | 否 |
| 备份加密 | 是 | 否 | 否 | 是 |
| 免费 | 是 | 是 | 是 | 否,订阅制 |
EcoPaste 的差异化在于四点叠加:Rust-First、敏感内容自动过滤、备份加密、跨平台。大部分剪贴板管理器不做敏感过滤,你的 API key 可能被悄悄记进历史,而 EcoPaste 会自动识别私钥、token、JWT 并跳过。
当前状态
- 版本:0.6.0-beta.3,测试阶段,非稳定版
- 平台:仅 macOS + Windows,重构后砍掉了 Linux
- 兼容性:和旧版数据不兼容,架构、存储、数据库 schema 全变了,升级前务必备份
- 协议:开源
谁该关注
适合你,如果:
- 你做大量复制粘贴:开发者、设计师、写作者
- 你想要一个轻量的剪贴板管理器,Rust 后端省内存
- 你关心隐私:敏感内容自动过滤、本地存储、加密备份
- 你用 macOS 或 Windows
- 你偏好开源、可审计的工具
可能要注意:
- 当前是 beta,不稳定,升级前先备份
- Linux 不再支持,Linux 用户可以继续用旧版或换 CopyQ
- 依赖 Tauri,需要系统 webview(macOS 用 WebKit,Windows 用 WebView2)
它背后的趋势
EcoPaste 的 Rust-First 重构,是桌面工具后端 Rust 化趋势的又一个案例:
| 工具 | 后端 | 为什么选原生 |
|---|---|---|
| EcoPaste | Rust(重构中) | 剪贴板管理器要轻、快、稳 |
| AnyDoor | Swift | Mac 菜单栏工具要轻 |
| senda | Go (Wails) | API 客户端要轻 |
| Codex Island | Swift + Rust | 常驻 Agent 看板要轻 |
| Blurt | Swift | 语音听写要轻 |
共同规律:常驻后台的工具,后端正在从 JS/Electron 迁向 Rust/Swift/Go。原因只有一个,常驻工具的内存和 CPU 占用,用户每天都能感受到。EcoPaste 选择 Rust-First,意味着剪贴板管理器这个品类也开始走原生轻量路线了。
如果你关注这股趋势,AnyDoor、senda、Codex Island 都是值得顺手一看的同类项目。
本文基于 EcoPaste 仓库(EcoPasteHub/EcoPaste)与 PR #1273 整理,当前版本 0.6.0-beta.3,Rust-First 架构,支持 macOS 与 Windows。



