paste3 是一个 macOS 剪贴板历史工具,目标是做一个本地优先、开源、面向开发者工作流的轻量 Paste 替代品。它会在菜单栏常驻,记录最近复制的内容,并提供类似底部浮层的横向历史浏览体验。
当前项目仍处于早期阶段,默认把隐私和可审计性放在功能复杂度之前。
- 监听系统剪贴板变化并保存历史记录。
- 支持文本、链接、命令、图片、文件、富文本、HTML 和通用数据片段。
- 使用 SwiftData 在本机持久化剪贴板历史。
- 按内容 hash 去重,同一内容从不同来源复制会分别保留。
- 支持搜索、删除单条记录、清空历史。
- 菜单栏入口和底部 quick panel。
- 支持复制回剪贴板;授权辅助功能权限后可自动粘贴回前台应用。
- 默认保留最近 1 年历史,并可在设置中切换为 1-6 天、1-3 周、1-11 个月、1-3 年或永久保留。
剪贴板里经常包含 token、密码、代码片段、截图和内部链接。paste3 的当前设计原则是:
- 不上传剪贴板内容。
- 不接入远程分析、遥测或崩溃上报。
- 数据保存在本机 SwiftData 存储中。
- 辅助功能权限只用于把选中的历史项自动粘贴回原前台应用。
- 用户可以从菜单中清空历史记录。
更详细的说明见 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。