Skip to content

Repository files navigation

📋 剪贴板管家 (Clipboard Keeper)

自动监控系统剪贴板,记录文本和图片的复制历史。 纯本地存储,隐私安全 —— 你的数据永远只在你自己的电脑上。

Python License Platform

界面截图

✨ 特性

特性 说明
🔍 全自动监控 文本、图片、链接、代码 —— 复制即记录,无需手动操作
🔒 纯本地存储 SQLite 单文件数据库,数据绝不上传,离线可用
🎨 极简设计 黑白灰配色,暗色/亮色自动切换(早6点亮色,晚6点暗色)
实时推送 SSE(Server-Sent Events)即时通知,新内容零延迟出现
📌 收藏置顶 重要内容一键标星,永久保留不被自动清理
🔄 一键回拷 点击任意历史记录,瞬间回到剪贴板
📊 统计面板 总条数、类型分布、每日趋势一目了然
📤 数据导出 支持 TXT / JSON / Markdown 格式导出
🪟 原生桌面 基于 pywebview + Edge WebView2,无边框 Liquid Glass 风格
📦 系统托盘 关闭窗口 → 隐藏到托盘,后台持续监控
🧹 自动清理 超过 30 天的非收藏记录自动清除,节省磁盘空间

🚀 快速开始

环境要求

  • Python 3.9+
  • Windows 10/11(macOS/Linux 可通过浏览器模式运行)

1. 安装依赖

pip install -r requirements.txt

核心依赖(必装):

用途
flask Web 框架,提供 API 和页面服务
pyperclip 跨平台剪贴板文本读写
Pillow 图片捕获 + 缩略图生成

可选依赖(装了体验更好):

用途 效果
pywebview 原生桌面窗口 无边框窗口 + 系统托盘
pystray 系统托盘图标 关闭即隐藏,右键菜单操作
# 一键安装全部(含可选依赖)
pip install flask pyperclip Pillow pywebview pystray

2. 启动

python clipboard_app.py

浏览器会自动打开 http://127.0.0.1:8742

Windows 用户也可以直接双击 启动剪贴板.bat(后台静默启动,不弹命令行窗口)。

3. 命令行参数

python clipboard_app.py --port 9999        # 自定义端口
python clipboard_app.py --no-browser       # 不自动打开浏览器
python clipboard_app.py --no-tray          # 不显示系统托盘图标
python clipboard_app.py --interval 1000    # 自定义轮询间隔(毫秒)
python clipboard_app.py --retention 60     # 数据保留 60 天
python clipboard_app.py --ontop            # 启动时窗口置顶悬浮

🏗️ 架构设计

┌─────────────────────────────────────────────────┐
│                 剪贴板管家                        │
│                                                  │
│  ┌──────────────┐     ┌──────────────────────┐  │
│  │ ClipboardMonitor │     │    Flask Web Server   │  │
│  │  (后台守护线程)   │     │    (127.0.0.1:8742)   │  │
│  │                  │     │                       │  │
│  │  每 500ms 轮询   │     │  /          → UI 页面 │  │
│  │  剪贴板变化       │     │  /api/items → 记录CRUD│  │
│  │        ↓         │     │  /api/stats → 统计面板│  │
│  │  写入 SQLite      │     │  /api/export → 导出  │  │
│  └──────┬───────────┘     └───────────┬──────────┘  │
│         │                             │              │
│         └──────────┬──────────────────┘              │
│                    ↓                                 │
│         ┌──────────────────┐                        │
│         │     SQLite DB     │                        │
│         │  (clipboard.db)   │                        │
│         │  + 图片文件存储    │                        │
│         └──────────────────┘                        │
│                    ↓                                 │
│         ┌──────────────────┐                        │
│         │   SSE 实时推送    │                        │
│         │  前端即时刷新      │                        │
│         └──────────────────┘                        │
└─────────────────────────────────────────────────────┘

设计决策

为什么用轮询而非 Hook? Windows 剪贴板 Hook 需要消息循环 + C 扩展,复杂且容易内存泄漏。500ms 轮询的 CPU 占用 < 0.1%,用户完全无感知,且跨平台兼容。

为什么用 SQLite 而非文件存储? 支持索引加速搜索、事务保证一致性、单文件零配置。月均 1500 条记录下 LIKE 查询 < 10ms。

为什么用 SSE 而非 WebSocket? SSE 更轻量,单向推送即可满足需求(只需服务器通知客户端有新数据),不需要 WebSocket 的双向通信复杂度。

为什么用 pywebview 而非 Electron? pywebview 利用系统自带的 Edge WebView2,打包体积 ~5MB。Electron 内置 Chromium,打包 ~200MB,对一个小工具来说太重了。

📁 项目结构

clipboard-keeper/
├── clipboard_app.py        # 主程序(单文件,所有后端逻辑)
├── clipboard_ui.html       # 前端 UI(纯 HTML/CSS/JS,零框架)
├── requirements.txt        # Python 依赖
├── 启动剪贴板.bat           # Windows 一键启动脚本
├── README.md               # 你正在看的这个
├── LICENSE                 # MIT 开源协议
├── screenshots/            # 截图(可选)
└── clipboard_data/         # 运行时自动生成(已在 .gitignore 中忽略)
    ├── clipboard.db        # SQLite 数据库
    └── images/             # 剪贴板图片 + 缩略图

⌨️ 快捷键

快捷键 功能
Ctrl + K 聚焦搜索框
Esc 关闭图片预览弹窗

🤝 贡献

欢迎提 Issue 和 PR!

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

📄 License

MIT © 2025 — 自由使用、修改、分发。详见 LICENSE


用 ❤️ 和 Python 写成 | 隐私优先,永不上传

About

A privacy-first clipboard historian — local SQLite storage, SSE real-time sync, Liquid Glass native UI, and automatic type detection (text/image/link/code). Your clipboard, your data.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages