ByteNoteByteNote
EcoPaste 把剪贴板管理器的后端换成了 Rust
字

字节笔记本

2026年10月5日 · 约 8 分钟读完

EcoPaste 把剪贴板管理器的后端换成了 Rust

API中转
¥120

你每天要复制粘贴几百次,却很少意识到剪贴板管理器的存在,直到用上一个好的,才发现剪贴板历史这么有用。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 后端。

重构前

text
Tauri (外壳)
├── Rust:薄薄的壳(窗口管理、系统调用)
└── JS/TS:几乎所有逻辑(剪贴板捕获、存储、搜索、设置)

JS 做剪贴板捕获和存储有几个先天不足:

  • 性能:大量剪贴板事件时,JS 的 GC 停顿导致丢帧
  • 可靠性:JS 运行时崩了,整个剪贴板历史可能丢
  • 内存:JS 运行时占 100-200MB,对一个后台剪贴板工具太重

重构后(Rust-First)

text
Tauri (外壳)
├── Rust:核心逻辑全部在这里
│   ├── clipboard/    剪贴板捕获、内容检测、回写、来源应用、循环抑制
│   ├── db/           SQLite 仓储、模型、迁移、FTS 全文搜索
│   ├── settings/     设置持久化
│   ├── window/       窗口管理
│   ├── shortcut/     全局快捷键
│   ├── tray/         系统托盘
│   ├── menu/         右键菜单
│   ├── autostart/    开机自启
│   └── backup/       备份/恢复
│
└── React UI:只管渲染和交互
    ├── 组件(Ant Design)
    ├── 样式(UnoCSS)
    ├── 状态镜像(Valtio)
    └── Tauri 命令封装

EcoPaste Rust-First 重构前后架构对比

前端通过 Tauri 命令调用 Rust,通过事件(clipboard://updated、settings://updated)接收刷新信号。Rust 做所有重活,React 只管显示。

为什么剪贴板管理器适合 Rust

剪贴板管理器的特点是常驻后台、频繁事件、大量小数据、对延迟敏感,这恰好是 Rust 的甜蜜点:

特性JS 后端Rust 后端
内存占用100-200MB10-30MB
事件响应延迟GC 导致偶尔卡顿微秒级,无 GC
数据可靠性JS 崩溃可能丢数据内存安全,不会段错误
SQLite 性能JS 绑定有开销原生 rusqlite,零开销
并发单线程 + async原生多线程,无数据竞争

一个常驻后台的工具,用 Rust 做核心意味着更轻、更快、更稳。这和近期一批桌面工具的选型是同一个方向:AnyDoor 用原生 Swift 做菜单栏工具,senda 用 Wails 加 Go 做轻量 API 客户端,Codex Island 用 Swift 加 Rust 做常驻看板。后台工具就该用原生语言写核心。

Rust 后端的剪贴板事件流水线

和同类剪贴板工具对比

EcoPaste (Rust-First)MaccyCopyQPaste (付费)
语言Rust + ReactSwift (macOS)C++ (Qt)Swift
平台macOS + Windows仅 macOSmacOS/Windows/LinuxmacOS + 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 化趋势的又一个案例:

工具后端为什么选原生
EcoPasteRust(重构中)剪贴板管理器要轻、快、稳
AnyDoorSwiftMac 菜单栏工具要轻
sendaGo (Wails)API 客户端要轻
Codex IslandSwift + Rust常驻 Agent 看板要轻
BlurtSwift语音听写要轻

共同规律:常驻后台的工具,后端正在从 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。

相关文章

分享: