在 Windows、macOS、Linux 三平台间实时同步剪贴板内容,类似 Apple Universal Clipboard。支持文本、富文本(HTML/RTF)、图片、表格数据。后台静默运行,局域网自动发现,端到端加密。
2. 技术选型:Python(原计划 Go,已变更)
维度
Python(实际)
Go(原计划)
剪贴板访问
Pillow + ctypes + subprocess,API 成熟
需手写 Win32 syscall / macOS CGo
开发速度
极高,改完即测
编译等待
依赖安装
pip install 即可
编译后单文件
内存占用
~25-40MB
~5-15MB
分发方式
需 Python 环境 或 PyInstaller 打包
单一 exe
适用场景
开发者自用、快速迭代
分发给普通用户
结论 :对于自己多设备使用的场景,Python 开发效率和剪贴板库生态优势明显。后续如需分发,可用 PyInstaller 打包成独立可执行文件。
clipsync/
├── cmd/
│ └── main.py # 入口,组装所有模块
├── internal/
│ ├── clipboard/
│ │ ├── clipboard.py # 抽象接口 (Reader/Writer/Monitor)
│ │ ├── clipboard_windows.py # Windows: ctypes+Win32 API,事件驱动
│ │ ├── clipboard_darwin.py # macOS: pbpaste/pbcopy+osascript,轮询
│ │ ├── clipboard_linux.py # Linux: xclip/wl-paste,自动检测X11/Wayland
│ │ ├── format.py # ClipboardContent / SyncMessage 数据类
│ │ └── platform.py # 平台自动选择
│ ├── config/
│ │ └── config.py # JSON配置,支持三平台路径
│ ├── protocol/
│ │ └── codec.py # 二进制帧编解码 (TLV+JSON载荷)
│ ├── sync/
│ │ ├── manager.py # 同步引擎 (去重/防回环/防抖)
│ │ └── file_transfer.py # 文件传输引擎 (分块/TCP直传/进度)
│ ├── transport/
│ │ ├── discovery.py # mDNS 局域网设备发现 (zeroconf)
│ │ └── connection.py # TLS 1.3 TCP 连接管理
│ ├── security/
│ │ └── pairing.py # Ed25519证书+8位配对码+证书指纹+速率限制
│ └── ui/
│ ├── systray.py # 系统托盘 UI (pystray)
│ └── settings_window.py # 图形化设置界面 (customtkinter)
├── requirements.txt
├── run.bat
├── Makefile
└── PLAN.md
┌─────────────── ClipSync 节点 ───────────────┐
│ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ 系统托盘 UI │◄──►│ Sync Manager │ │
│ │ + 设置窗口 │ │ (中央协调器) │ │
│ └──────────────┘ └──┬───┬───┬───┬─────┘ │
│ │ │ │ │ │
│ ┌──────────┘ │ │ └───────┐ │
│ ▼ ▼ ▼ ▼ │
│ ┌────────────┐ ┌─────────────┐ ┌────────┐│
│ │ 剪贴板监听 │ │ Transport │ │Pairing ││
│ │ (平台API) │ │ (TCP+TLS1.3)│ │(Ed25519)│
│ └────────────┘ └──────┬──────┘ └────────┘│
│ │ │
└────────────────────────────┼───────────────────┘
│
┌────────┴────────┐
│ mDNS 发现 │
│ (zeroconf/Bonjour)│
└────────┬────────┘
│
┌────────┴────────┐
│ 对等节点 │
│ (另一台设备) │
└─────────────────┘
平台
方法
特点
Windows
AddClipboardFormatListener + 消息窗口 + GetMessageW 泵
事件驱动,空闲零CPU
macOS
NSPasteboard.changeCount 轮询 (400ms)
唯一可行方案,Chromium 同款
Linux
内容哈希轮询 (400ms),自动检测 X11/Wayland
xclip (X11) / wl-paste (Wayland)
mDNS/DNS-SD 协议,zeroconf 库(纯 Python)
服务类型:_clipsync._tcp.local.
广播元数据:设备名、设备ID、版本号、端口
同一局域网自动发现,无需任何配置
TLS 1.3 加密所有流量
Ed25519 自签名证书,每台设备首次启动自动生成
8 位配对码 (100,000,000 种组合),首次连接时两端显示,用户确认
证书锁定 :配对后存储对端证书指纹,任何变更立即拒绝(防 MITM)
速率限制 :5 次错误尝试 / 5 分钟窗口
证书指纹 :SHA-256 指纹,支持带外验证
去重 :内容 SHA-256 哈希,64 条 LRU 环
防回环 :本地产生的变更不触发远端同步回来
防抖 :300ms 最小发送间隔
格式优先级 :HTML > RTF > TEXT > IMAGE
阶段
内容
状态
Phase 1
项目结构、配置、协议编解码、剪贴板接口
✅ 完成
Phase 2
Windows/macOS/Linux 剪贴板监听、Sync Manager
✅ 完成
Phase 3
mDNS 发现、TLS 连接、Ed25519 配对认证
✅ 完成
Phase 4
系统托盘 UI、customtkinter 图形化设置界面
✅ 完成
Phase 5
安全加固(8位配对码、证书指纹校验、速率限制、证书变更检测)
✅ 完成
Phase 6
文件传输(分块/TCP直传/进度)、开机自启、PyInstaller 打包、中继服务器
🔄 文件传输已完成
Phase 7
跨平台联调测试、压力测试、代码签名
❌ 未做
层级
措施
说明
传输加密
TLS 1.3
业界标准,数据在网络上是密文
身份认证
Ed25519 证书
256-bit 安全级别,无法伪造
首次信任
8 位配对码 + 用户确认
蓝牙式配对模型
持续信任
证书锁定 (Pinning)
证书指纹变更立即报警
防暴力破解
5 次/5分钟 速率限制
10^8 空间,穷举不可行
带外验证
SHA-256 证书指纹
可通过电话/消息比对确认
本地存储
配置文件 0600 权限
私钥存于平台私有目录
使用 customtkinter 构建现代化界面:
侧边栏导航(General / Devices / Security / Network / Transfers)
卡片式设备列表,状态色标(绿=已连接,橙=已配对,灰=待配对)
明暗色主题切换
设备管理:配对、取消配对、移除、手动连接
配对码显示与确认
同步开关、设备名称编辑
网络设置(端口、服务类型)
文件传输面板:发送文件、传输进度卡片(方向/状态/进度条)
开机自启 :Windows 注册表 / macOS LaunchAgent / Linux autostart
PyInstaller 打包 :生成独立 .exe / .app / Linux 二进制,无需 Python 环境
通知提醒 :配对请求时桌面通知、同步失败提醒
剪贴板历史 :本地存储最近 50 条记录,支持搜索和重新复制
内容过滤 :检测密码/密钥特征,可选不同步敏感内容
文件分享 :在设备间直接传输文件 ✅ 已实现
从设置界面选择文件发送到已配对设备
分块传输 + SHA-256 校验
传输进度实时显示(进度条、百分比)
与剪贴板同步共享同一 TLS 1.3 加密通道
自动接收来自已配对设备的文件
中继服务器 :WebSocket 中继实现跨网络(不同 WiFi)同步,E2E 加密,中继不可见明文
二维码配对 :扫描二维码代替手动输入配对码
Web 管理面板 :localhost 上的 Web UI,查看连接状态和同步日志,支持全文本搜索和时间范围过滤
压缩传输 :大内容 zstd 压缩,减少带宽占用
差分同步 :大内容仅发送变更部分
代码片段库 :内置语法高亮的代码片段管理器,支持标签搜索,跨设备同步常用模板
终端命令日志 :自动检测复制的终端命令,记录到可搜索的跨设备命令历史
颜色选择器同步 :检测 Hex/RGB 色值,在接收端显示颜色预览色块
多槽位剪贴板 :Ctrl+Shift+1~9 分配 9 个独立粘贴槽,跨设备保持
时间线回溯 :像 Time Machine 一样浏览剪贴板历史,相邻版本显示可视化 diff
屏幕截图区域同步 :任意设备截图后自动推送到所有设备并显示桌面通知预览
URL/标签页交接 :复制 URL 后配对设备自动提示"在浏览器中打开"
临时公开剪贴板 :生成临时网页链接,实时显示剪贴板内容(用于结对编程),到期自动销毁
插件系统 :社区格式处理器(CAD 数据、代码片段、自定义格式等)
云同步服务 :托管中继,端到端加密,零知识架构
企业版 :LDAP/SSO 集成、审计日志、集中管理控制台
NFC/蓝牙配对 :触碰设备即可配对
iOS/Android App :移动端剪贴板桥接,支持 Share Sheet 集成、相机拍文档 OCR 后同步文字到桌面
浏览器扩展 :右键菜单"发送到 [设备名]",无需先复制到系统剪贴板
IDE 插件 (VS Code / JetBrains):在编辑器中直接拉取其他设备的剪贴板内容
AI 智能分类 :本地模型识别剪贴板内容类型(代码/密码/URL/地址等),自动过滤敏感内容、自动归档代码片段
AI 格式适配 :跨平台粘贴时智能转换格式(如 macOS Pages 表格 → Windows Excel 格式)
AI 翻译/摘要 :右键剪贴板内容即可翻译或摘要,无需离开工作流
团队剪贴板房间 :多人共享剪贴板空间,适用于结对编程和故障排查
# 安装依赖
pip install -r requirements.txt
# 运行
python cmd/main.py
# 系统托盘右键 → Settings... 打开图形设置界面
三平台运行要求:
Windows :Python 3.10+,无需额外系统依赖
macOS :Python 3.10+,首次运行需授予辅助功能权限
Linux :Python 3.10+,需安装 xclip(X11)或 wl-clipboard(Wayland)
库
用途
zeroconf
mDNS 局域网设备发现
cryptography
Ed25519 证书、TLS 操作
Pillow
图片处理、系统托盘图标、剪贴板图片读写
pystray
跨平台系统托盘
customtkinter
现代化 GUI 设置界面
指标
目标
实测 (Windows)
空闲 CPU
< 0.1%
~0% (事件驱动)
空闲内存
< 40MB
~30MB
网络空闲
~0
仅 mDNS 心跳
磁盘
~5KB
配置文件 + 日志