- 类别
- Mac 应用
- 平台
- macOS 14+
- 版本
- 0.2.0
- 大小
- 3.6 MB
- 许可
- MIT
能把你复制的东西原样还给你的 macOS 剪贴板管理器:剪贴板给出的每种格式都留着,一次复制多个文件粘出来还是多个,中文也真能搜到。
在浏览器里试试
下面是在浏览器里跑的交互演示,用的全是虚构的样例数据,不连接任何真实服务。真实软件请到 GitHub 下载。
按键:↑ ↓ 移动,↵ 复制,⌘1–9 直选(浏览器可能占用 ⌘1–9,这里 ⌥1–9 也行),⌘P 置顶,⌘⌫ 删除,esc 清空搜索。双击某一行也能复制。
为什么要 bigram:同一个词,两种分词器
两栏查的都是由上面样例数据建的索引(两边都用前缀查询,敏感条目不入索引)。面板本身还会像 App 一样跑「标题前缀」和「子串兜底」两层。
一串连续汉字就是一个词元。
连续汉字切成相邻两字的词元,查询要求这些词元首尾相接。
保真,不只是文本
一次复制是一个 NSPasteboardItem,上面挂着好几种格式:public.rtf、
public.html、public.utf8-plain-text,还有来源 App 自己的私有格式。
Clipflow 全部存下来、全部写回去,带格式的文字粘到别处格式还在。复制三个文件粘出来还是三个文件,
剪贴板的多 item 结构被完整保留,不会被拍平成一个。
复制文件时剪贴板上只有一个 public.file-url(200 MB 的视频在剪贴板上只有 76 字节),
所以存下和粘回去的都是这个引用,别的剪贴板工具也一样。预览区会列出这一条存了哪些格式、各多大——
保真是卖点,就该看得见。
中文搜索是真能用的
SQLite FTS5 自带的分词器把一串连续汉字当成一个词元,夹在句子中间的词永远搜不到。 Clipflow 在应用层分词:连续汉字切成相邻两字的 bigram,并用短语查询,要求这些 bigram 首尾相接, 精度才立得住。拉丁文按整词加 camelCase 子词入索引、按前缀查询;词中间的片段和单个汉字, 交给一层有上限的子串兜底。
结果按最近使用排序,从不按相关度打分:给 2 万条命中打分要 46 ms,按时间倒序只要 0.30 ms, 而且剪贴板用户要找的本来就多半是最近那条。
天然隐私
- 没有遥测、没有账号、没有统计。捕获、存储、搜索、粘贴全在本机完成。
- 唯一的网络请求是去 GitHub Releases 检查更新,不带任何标识,可以在设置里关掉。
- 遵守
org.nspasteboard.ConcealedType、TransientType、AutoGeneratedType,并内置 1Password、Bitwarden、LastPass、Dashlane、KeePassXC 等密码管理器的屏蔽名单。 - 看起来像 JWT、AWS 密钥、私钥或
password=的内容会标为敏感:不进搜索索引,短时间后过期。 - 数据库文件权限
600,目录700。
实测性能
以下数字摘自项目 README:M4 Pro 上 48,000 条数据,可用 bench/ 里的脚本复现。
| 操作 | 中位数 | P95 | 预算 |
|---|---|---|---|
| 列出最近 20 条 | 0.09 ms | 0.11 ms | — |
| 中文短语检索 | 0.16 ms | 0.19 ms | 16 ms |
| 标识符检索 | 0.45 ms | 0.55 ms | 16 ms |
扩到 100 万条时总共 518 MB,检索 P95 为 0.27 ms,延迟不随历史条数增长。