Paste3 是一个 macOS 剪贴板历史工具,目标是做一个本地优先、开源、面向开发者工作流的轻量 Paste 替代品。它会在菜单栏常驻,记录最近复制的内容,并提供类似底部浮层的横向历史浏览体验。
当前项目仍处于早期阶段,默认把隐私和可审计性放在功能复杂度之前。
- 监听系统剪贴板变化并保存历史记录。
- 支持文本、链接、命令、图片、文件、富文本、HTML 和通用数据片段。
- 使用 SwiftData 在本机持久化剪贴板历史。
- 图片、富文本、HTML 和通用数据 payload 会保存到本机 Application Support 文件目录,SwiftData 只保留可检索元数据。
- 按内容 hash 去重,同一内容从不同来源复制会分别保留。
- 支持普通搜索,以及
app:、type:、from:、pin:查询过滤。 - 支持暂停捕获、排除指定 App、删除单条记录、清空历史。
- 菜单栏入口和底部 quick panel。
- 支持复制回剪贴板;授权辅助功能权限后可自动粘贴回前台应用。
- 默认保留最近 1 年历史,并可在设置中切换为 1-6 天、1-3 周、1-11 个月、1-3 年或永久保留。
剪贴板里经常包含 token、密码、代码片段、截图和内部链接。Paste3 的当前设计原则是:
- 不上传剪贴板内容。
- 不接入远程分析、遥测或崩溃上报。
- 数据保存在本机 SwiftData 存储中。
- 可在设置中暂停捕获或排除指定 Bundle ID,默认排除 1Password、Keychain Access 和 Passwords 等敏感 App。
- 辅助功能权限只用于把选中的历史项自动粘贴回原前台应用。
- 用户可以从菜单中清空历史记录。
搜索框支持普通关键词,也支持几个确定性过滤器:
app:Terminal:按来源 App 名称或 Bundle ID 过滤。type:command:按内容类型过滤,支持text、link、command、image、file、rich、data。from:today:按时间过滤,支持today、yesterday、week、month、year和7d这类相对天数。pin:PR:按 Pinboard 名称过滤,pin:any表示任意已 pin 项目。
更详细的说明见 PRIVACY.md。
- macOS 14.0 或更高版本。
- Xcode 16 或更高版本。项目使用 SwiftData 和 Swift Testing,建议使用较新的 Xcode。
克隆仓库后可以直接用 Xcode 打开:
open paste3.xcodeproj命令行运行单元测试:
xcodebuild test \
-project paste3.xcodeproj \
-scheme paste3 \
-destination 'platform=macOS' \
-derivedDataPath /private/tmp/paste3-derived-unit \
CODE_SIGNING_ALLOWED=NO \
-only-testing:paste3Tests \
-skip-testing:paste3UITestsDEVELOPMENT_TEAM 在仓库中保持为空。需要本地签名、Archive 或发布时,请在 Xcode 中配置自己的 Apple Developer Team。
Paste3 读取系统剪贴板不需要额外授权。自动粘贴到前台应用需要 macOS 辅助功能权限,因为它会模拟 Cmd+V。
如果不授予辅助功能权限,仍然可以使用历史浏览和复制回剪贴板,只是不会自动向目标应用发送粘贴快捷键。
目前还没有正式二进制发布。建议开发者先从源码构建运行。正式发布前还需要补充签名、notarization、安装包或 Homebrew Cask 流程。
贡献前请先阅读 CONTRIBUTING.md。安全或隐私问题请按 SECURITY.md 处理,不要在公开 issue 里粘贴真实敏感剪贴板内容。
本项目使用 MIT License,见 LICENSE。