TrayClip:一个轻量、本地优先的开源剪贴板管理工具
复制了一段内容,还没来得及粘贴,又顺手复制了另一个链接,前一段就找不到了。写代码、整理资料或者在几个应用之间来回切换时,这样的小插曲很容易打断思路。
这篇文章想和大家分享一个我自己开发的项目:TrayClip,一个轻量、本地优先的开源剪贴板管理工具。它把复制过的文字、图片和文件路径记录下来,需要时通过快捷键唤出,搜索、整理,再次复制使用。
它的重点不是把剪贴板变成复杂的工作台,而是让“刚才复制的东西”和“经常要用的片段”更容易找回来。
TrayClip 是什么
TrayClip 是一款基于 Tauri 2、Rust、React 和 TypeScript 开发的跨平台桌面应用,支持 Windows、macOS 和 Linux,采用 MIT 开源协议。
它平时常驻系统托盘,macOS 上则通过菜单栏图标访问。日常使用不需要注册账号,剪贴板历史保存在本机,不做云端同步。
先放两个入口:
- 官网与在线演示:https://heyiki.github.io/TrayClip/
- GitHub 源码仓库:Heyiki/TrayClip
官网适合先了解界面和操作方式,仓库则提供源码、使用说明、发行版本和问题反馈入口。
不只是多存几条复制记录
保存历史,再通过搜索找回来
TrayClip 支持记录四类剪贴板内容:
| 内容类型 | 常见使用场景 |
|---|---|
| 纯文本 | 代码片段、命令、链接、临时笔记 |
| 图片 | 截图、复制的图片 |
| 文件路径 | 复制文件时记录下来的路径信息 |
这里的文件路径记录不等于备份了文件本身,原文件仍需要保留在可访问的位置。
记录多了以后,可以按内容、来源应用或文件路径搜索,也可以结合内容类型和分组筛选。比如只记得某段文字来自哪个应用,或者文件路径里包含哪个目录名,都可以作为查找线索。
历史记录默认保留 200 条,可以在设置中调整,支持范围为 5 到 10000 条。达到保留上限后会自动清理旧记录,避免一直积累。
用分组和置顶区分临时内容与常用内容
临时复制的内容通常只用一次,但命令、常用回复、项目路径等片段可能会反复使用。把它们全部混在时间流里,找起来并不方便。
TrayClip 提供了分组和置顶:
- 按项目或用途创建分组,例如“工作”“常用命令”“资料链接”。
- 将记录移动到对应分组,需要时按组查看。
- 把长期需要的记录置顶,置顶记录不参与自动清理,也不会被“清空历史”删除。
分组栏右侧的 + 可以新建分组;重命名和删除则在分组标签的右键菜单中操作。删除分组不会连带删除里面的记录,记录会回到未分组状态。
这样一来,剪贴板既可以保存短期历史,也能放少量经常复用的内容,不必再单独开一个文档临时存放。
通过快捷键完成主要操作
剪贴板工具要用得顺手,关键是随时能叫出来,而且操作足够短。
TrayClip 的默认快捷键如下:
| 操作 | Windows / Linux | macOS |
|---|---|---|
| 唤出主窗口 | Ctrl+Shift+V | Control+P |
| 选择记录 | ↑ / ↓ | ↑ / ↓ |
| 复制选中记录 | Enter | Enter |
| 复制当前结果的前九条 | Ctrl+1 至 Ctrl+9 | Command+1 至 Command+9 |
| 聚焦搜索框 | Ctrl+F | Command+F |
唤出窗口后,默认焦点在列表上。先按一次方向键选中第一条结果,再按 Enter 复制;并不是打开窗口后直接按回车就会复制第一条。
数字快捷键对应的是当前搜索、分组和类型筛选后的前九条结果,不是滚动后视口内看到的前九条。主窗口的全局唤出快捷键可以在设置中修改,其他表中的操作属于窗口内快捷键。
不习惯键盘操作的话,也可以点击复制按钮,或者双击记录内容区域。
另外,Windows 支持复制后自动粘贴到上一个活跃窗口。macOS 和 Linux 不提供这一快捷粘贴行为,需要在目标应用中手动粘贴。窗口本身也可以按设置居中打开,或者跟随鼠标位置出现。
图片里的文字,也可以提取出来
收到一张截图,想复制其中的报错信息、地址或几行说明文字时,重新打字比较麻烦。TrayClip 提供了离线 OCR,可以从剪贴板图片中提取文字,识别结果支持编辑和复制。
这里的“离线”需要分两个阶段理解:
- 首次准备:按需下载独立的 OCR 引擎和模型,需要联网。
- 日常识别:组件准备完成后,在本机运行识别,图片不上传。
OCR 引擎独立于主应用安装包,不需要使用这一功能时,也就不必先下载完整的识别组件。
如果引擎自动下载失败,可以在 OCR 弹窗中选择“浏览器下载”,取得当前应用版本与设备平台对应的引擎 ZIP,再通过“导入引擎包”安装。
需要注意,浏览器下载仍然访问 GitHub,并不是镜像或绕过网络限制的渠道;导入引擎包后,缺失的模型仍需下载。
识别结果也建议检查一下,尤其是代码、数字和符号。能够提取文字,不代表结果一定完全准确。
可选的翻译和 AI,不影响基础使用
除了历史记录管理,TrayClip 还提供在线翻译,以及通过 LLM 完成关键词提取、摘要和翻译的能力。
AI 增强使用用户自行配置的 OpenAI 兼容接口,可以在设置中填写 API 地址、API Key 和模型名称。不配置 AI,也不影响剪贴板历史、搜索、分组、置顶等本地功能。
这里也需要把数据边界说清楚:
| 功能 | 数据处理方式 |
|---|---|
| 历史记录、搜索、分组、置顶 | 在本机处理和存储 |
| OCR 图片文字识别 | 引擎和模型准备完成后,本机离线识别 |
| 在线翻译 | 相关文本发送至对应翻译服务 |
| AI 摘要、关键词提取、翻译 | 相关文本发送至自己配置的 AI 接口 |
因此,“本地优先”指的是基础剪贴板管理不依赖云端,不能理解为所有可选功能都永远不联网。
下载后怎么开始用
选择对应平台的安装包
可以从官网进入下载区,也可以直接访问 GitHub Releases。
按操作系统和处理器架构选择安装包即可。具体有哪些平台包、对应什么架构,以发行页实际提供的资源为准,本文不固定某个版本的文件名。
macOS 的安装、首次启动和安全提示处理,可先查看官网 FAQ 与安装包内的说明。遇到系统安全警告时,应先确认下载来源,不要为了启动应用而关闭系统级安全保护。
先做几项基础设置
首次使用可以先检查这些选项:
- 全局快捷键:如果与其他应用冲突,换成自己顺手的组合。
- 历史保留条数:按使用习惯调整,不必一开始就设到最大。
- 关闭行为:默认关闭窗口会隐藏到托盘,也可以选择退出或每次询问。
- 开机自启:希望随时可用时再开启。
- 窗口呼出位置:根据桌面习惯选择居中或跟随鼠标。
界面也支持简体中文、英文,以及亮色和暗色主题。
用一次完整流程试试看
可以先复制几段测试文字和一个链接,然后按快捷键唤出 TrayClip:
- 在历史列表中找到刚复制的内容。
- 输入关键词,试试搜索。
- 选中一条常用内容,将它置顶并移动到分组。
- 双击记录,或者用方向键选中后按
Enter,重新复制。 - 回到目标应用中粘贴。
只要这一轮操作顺手,后续就可以把它放在后台,等需要找回内容时再唤出。
本地存储,也要注意隐私和备份
记录不上传云端,并不意味着可以忽略本机上的敏感信息。密码、访问令牌、私人消息等内容一旦被复制,也可能进入剪贴板历史。
处理敏感内容前,可以先在设置中暂停采集;已经记录的内容,可以单独删除。不再需要的普通历史,也可以通过“清空历史”集中清理。注意,清空历史会保留置顶记录,清理敏感内容时不要漏掉这一部分。
TrayClip 支持将记录、分组和设置导出为 ZIP,也支持从备份恢复,适合重装或迁移时使用。但它不是自动跨设备同步工具,恢复会替换现有数据并重启应用,操作前应先确认要保留哪份数据。
备份文件本身也应当按私人数据保存,不要随意上传到公开仓库或分享给其他人。
简单看一下技术实现
在技术实现上,我使用 Tauri 2 作为桌面框架,搭配 Rust 后端和 React 前端。项目的主要技术栈如下:
| 层级 | 使用的技术 |
|---|---|
| 桌面框架 | Tauri 2 |
| 后端与系统能力 | Rust |
| 界面 | React 19 + TypeScript |
| 构建工具 | Vite |
| 本地数据库 | SQLite |
| 样式与组件 | Tailwind CSS + Radix UI |
前端主要放在 src/,负责列表、搜索、分组和设置界面;桌面端代码放在 src-tauri/,负责剪贴板读写、托盘、全局快捷键和本地数据管理等系统能力。
列表使用虚拟化渲染,减少大量记录同时显示时的界面开销;OCR 则通过独立 helper 运行,让识别引擎与主应用分开管理。
对用户来说,这些实现细节最终还是要落到日常操作上:复制时不用额外整理,需要时能较快找回,常用内容也有地方安放。
最后
TrayClip 适合希望保留剪贴板历史、经常复用文本片段,又不想引入账号和云端同步的人。写代码、查资料、整理链接,或者频繁在多个应用之间搬运内容,都能用到这类工具。
它不是云同步笔记,也不是文件备份工具。它做的是更具体的一件事:给复制过的内容留一份可搜索、可整理的历史,减少重复查找和来回切换。
欢迎到官网试试示例交互,再下载桌面端体验。官网演示使用的是示例数据,不会读取电脑上的剪贴板,也不能代替桌面应用的后台采集功能。如果使用中遇到问题,或者有功能建议,也欢迎到 GitHub Issues 告诉我。