分享个我用 kimi k3 抄的一款粘贴板软件

7 月 26 日
 awenforlinux

如果你每天要在浏览器、IDE 、文档、聊天窗口之间复制粘贴几十次,就会明白一件事:剪贴板才是最常用的生产力工具。但它又是最被忽视的——系统默认只记住最后一条,一旦手滑复制了新内容,刚才那段文字就再也找不回来。

我之前用 Rust 写过一个剪贴板工具,一直在 Windows 上用。基本功能都有,但越用越觉得受限:想要更顺滑的 UI 动画、更跟手的拖拽交互、更深度的系统集成,在 Windows 上绕路太多。

后来我转到 macOS 主力环境,索性用 Swift 重新写了一遍,并全程用 Kimi K3 做辅助。结果发现,Swift + AppKit/SwiftUI 能做出很多 Rust 版本难以实现的效果——比如直接把文件拖到面板里保存、更精准的全局热键、与系统钥匙串和 iCloud 的原生集成。

新版本仍然叫 ClipVault,但它已经是从 0 开始、为 macOS 重新设计的一版。

它解决的不是"能不能找到",而是"找起来爽不爽"

剪贴板工具的核心就一件事:你曾经复制过的东西,现在能迅速再找回来。但"迅速"两个字,包含了很多细节。

ClipVault 的交互完全围绕一个底部面板展开。按 ⇧⌘V,面板从屏幕底部滑出,最近复制的内容以卡片形式横向排列。你不需要离开当前窗口、不需要打开一个完整应用,视线几乎不用移动,手指也不需要离开键盘。

这些快捷键都可以在设置里自己改。对我来说,理想状态是"肌肉记忆替代鼠标",所以所有高频操作都给了键盘入口。

不只是历史,更是你的知识碎片

复制的内容种类很杂:一段 URL 、一个颜色值、一张截图、几行报错日志、一句临时想到的灵感。

ClipVault 会自动识别类型:链接会显示网站 favicon ,hex 颜色会直接渲染成色块,图片会显示缩略图,文本会显示字符数。这样你不用点开卡片,扫一眼就知道是不是自己要找的那一条。

但历史条目终究会被清掉。真正需要长期保留的东西,我会拖到"集合"( Pinboard )里。集合就像一个个小抽屉:常用代码片段、设计参考、写作素材、待读链接……每个集合可以命名、配不同颜色,双击即可重命名。放进集合的内容会永久保留,不受自动清理策略影响。

从"临时复制"到"主动收藏",这个边界很重要。历史是流水,集合是书架。

Swift 带来的新能力:把文件直接拖进面板

这是 Rust 版本让我最遗憾的一点:Windows 上要实现文件拖拽进窗口,要么依赖第三方框架,要么自己处理大量 COM 和窗口消息,做到最后体验总是很生硬。而 macOS 上的 SwiftUI/AppKit 对拖放有原生支持,几行代码就能让面板接受文件拖拽。

在 ClipVault 里,你可以直接从 Finder 拖一个文件到面板里,它会变成一个文件类型的剪贴板条目,显示文件名、图标和路径。需要时按回车或 ⌘1 就能把它重新写回剪贴板,再粘贴到聊天窗口、邮件或命令行里。

这个能力看起来小,但用起来很顺:图片素材、PDF 、配置文件、脚本……只要拖一下就能暂存,不用专门打开一个文件管理器或云盘。

搜索和筛选,是剪贴板的第二大脑

当历史超过几百条,滚动就找不到了。ClipVault 的搜索框支持全局搜索,同时覆盖历史和所有集合。输入的同时结果即时更新,150ms 的防抖让频繁输入也不会卡顿。

如果只记得"大概是个图片"、"从微信里复制的"或者"是某个颜色",还可以用筛选气泡按类型、来源应用、集合进一步缩小范围。这种组合查询在日常使用中非常高效:

"找昨天从浏览器复制的那个蓝色色值"——输入 blue + 筛选"颜色" + 看相对时间,基本秒定位。

数据放在本地,加密是我给自己设的门

这可能是 ClipVault 和大多数剪贴板工具最不一样的地方:所有数据默认只存在本机。

历史记录、集合、图片,全部经过加密后落盘,密钥保存在系统钥匙串里。即使别人拿到你的电脑硬盘文件,也无法直接读取内容。同步也走了 iCloud Drive ,但同步目录里的文件同样是加密的。

我当然可以把数据上传到某个服务端实现跨设备同步,但剪贴板这个场景太敏感了。它可能包含 token 、身份证号、内部链接、私人对话。本地优先 + 端到端加密,是我能接受的最低标准。

另外,ClipVault 会主动忽略两类内容:

不该记的,它不会记。

一些贴心的小设计

这些设置都在同一个窗口里,左侧边栏切换,不需要翻来翻去。

从 Rust 到 Swift:我为什么决定重写

ClipVault 并不是第一次出现。我之前用 Rust 写过一个版本,在 Windows 上用了挺久,核心逻辑其实早就想清楚了:本地存储、卡片历史、快速搜索、集合收藏。

但转到 macOS 后,我发现很多体验在原版里只能妥协:没有原生的系统钥匙串集成、拖放文件进窗口很别扭、UI 动画和面板行为很难做到"像原生应用"。于是我决定用 Swift 在 macOS 上完整重写——一来性能足够好,二来能深度调用 NSPasteboard、全局热键、钥匙串和 iCloud Drive 。

Kimi K3 是这次重写的"结对程序员"

整个开发过程我几乎都在用 Kimi K3。它帮我完成了大量 Swift 代码的生成、调试和重构,尤其是处理 NSPasteboard、底部面板动画、全局热键这些 macOS 特有的 API 时,K3 的长上下文和代码理解能力省了很多时间。

上图是我在 Kimi 后台的截图,K3 已经正式上线,最高支持 1M 上下文。对这类需要反复打磨 UI 细节和系统交互的桌面应用来说,能把整段 SwiftUI 视图代码、事件处理逻辑一次性丢进去讨论,效率提升非常明显。

下面是 ClipVault 的实际界面:

这是刚安装完、还没有历史记录时的底部面板。顶部的「剪贴板 / 图片 / 文件」标签就是集合入口,右侧搜索和筛选会在这里展开。整个面板没有复杂的窗口边框,呼出和收起都很轻。

实际使用时,面板可以停靠在屏幕右侧(也可以选底部、顶部或左侧)。上图里我把刚写好的博客正文复制了进去,ClipVault 自动识别为文本类型,显示来源应用和字符数,按 ⌘1 就能直接粘贴回来。

隐私设置页是我花时间最多的地方之一。这里可以开启「忽略机密内容」和「忽略瞬时内容」,也可以把 1Password 这类密码管理器加入忽略应用列表。辅助功能权限按需授权,不需要时 ClipVault 只会把内容写回剪贴板,不会自动帮你粘贴。

用 Swift 写 macOS 应用、用 Kimi K3 做辅助,这个组合让我一个周末就能把原型跑起来,再花一两个晚上把细节打磨到能日常使用的程度。如果你也有类似"何不自己做一个"的想法,现在的工具链真的已经够用了。

写在最后

ClipVault 不是一个大而全的工具,它只是把"复制粘贴"这件小事做到了我觉得舒服的程度:响应快、不联网、能搜索、能收藏、能加密。

目前它只支持 macOS 14 以上系统。如果你也受够了订阅制剪贴板工具,或者只是想找一款真正本地的替代品,可以试试看。

下载地址:ClipVault-Swift v1.1.0 Release,欢迎提 issue 或 PR 。

2792 次点击
所在节点    分享发现
13 条回复
awenforlinux
7 月 26 日
SteveRogers
7 月 26 日
难的在 ios 端要证书
Wcowin
7 月 26 日
这赛道真卷啊,我的作品是 https://github.com/One-Clip/OneClip
shilianmlxg
7 月 27 日
大佬,windows 剪贴板 偶尔第一次失效 得第二次才能复制成功,这种也没报错,请问怎么排查呢
awenforlinux
7 月 27 日
@Wcowin 哈哈哈
Wcowin
7 月 27 日
@awenforlinux #5 共同进步!
yakun4566
7 月 27 日
确实卷,之前用 ditto 很多年,前几天发现一个 clipi 在尝试使用(因为带多设备同步),真的而用不过来了
maemolee
7 月 28 日
感谢,立即安装体验了。不过为什么设置里的快捷键没法禁用。
awenforlinux
7 月 28 日
@maemolee 好的加上这个功能
maemolee
7 月 28 日
@awenforlinux #9 还有个小细节,bro

mac 上使用鼠标的话,滚动滚轮无法横向翻滚内容,必须按住 shift+滚轮才行。这个对于触控板逻辑没问题,但是对鼠标来说略有难受。
awenforlinux
7 月 28 日
awenforlinux
7 月 29 日
@maemolee 解决了去 github 下载最新版本
maemolee
7 月 29 日
@awenforlinux #12 稳的一批 bro👍

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1229954

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX