Contents

从 NeoPad 到 NeoClip:让每一次复制,都能被重新找回

从 NeoPad 到 NeoClip:让每一次复制,都能被重新找回

我们每天都在复制:一段稍后要用的文字、一张截图、一组准备移动的文件。可系统剪贴板通常只记得“最后一次”,新的复制会立即覆盖旧内容。很多时候,我们并不是没有保存信息,而是少了一个足够轻、足够快,又不会打断当前工作的找回入口。

这正是 NeoClip 想解决的问题。

在此之前,我开发了 NeoPad:一款本地优先的桌面便签工具,用 Markdown 保存笔记,强调快速记录、快速查找,也允许本地 AI Agent 通过 MCP 访问同一批笔记。NeoPad 处理的是“值得留下来的内容”,而 NeoClip 更靠近信息进入电脑的第一站——剪贴板。

一个负责把想法沉淀下来,一个负责把刚刚经过手边的信息找回来。两者形态不同,却共享同一套取舍:本地优先、数据可控、启动迅速、交互克制,不用账号,不把日常工具变成笨重的平台。

NeoClip 是什么?

NeoClip 是一款使用 Rust 开发的轻量桌面剪贴板历史工具,目前以 Windows 日常使用为主要验收场景。它常驻系统托盘,在后台捕获复制过的文本、图像、截图,以及从 Windows 资源管理器复制的文件或文件夹,并把这些内容整理成可以搜索、收藏和再次复制的历史记录。

默认按下 Alt+C,NeoClip 会像一个临时面板一样出现在当前工作流旁边。用方向键选择记录,按 Enter 即可重新写回剪贴板;按 Esc 或切换到其他窗口,它又会安静地隐藏到托盘。需要对照内容时,也可以开启悬浮模式,让窗口在失去焦点后继续保持显示。

它不是一个云剪贴板,也不打算替代笔记软件。NeoClip 只专注于一件事:用尽可能短的路径,找回你复制过的内容。

不只是文字:三类常用内容都能留下

1. 文本历史

普通文本、多行文本和 Unicode 内容都可以被后台捕获。历史列表支持实时搜索、键盘切换、收藏、单条删除和重新复制。

相同内容不会无休止地堆出重复记录。NeoClip 使用内容哈希去重;再次复制同一段文字时,会更新它的时间并把它带回列表前面。这比简单累加更接近日常使用习惯:最近再次用到的内容,理应更容易被找到。

2. 图像与截图

复制图片或截取屏幕后,NeoClip 会保存 PNG 原图,并生成适合列表查看的缩略图。选中图像记录即可预览,双击或按 Enter 能把原图重新放回系统剪贴板。

图像没有直接塞进 SQLite 正文列,而是以独立 PNG 文件保存;数据库只记录经过校验的相对文件名、尺寸和哈希。缩略图与原图分开,界面也只缓存当前选中图像的纹理,在预览体验和内存占用之间保持克制。

3. Windows 文件与文件夹列表

在资源管理器中复制一个文件、多个文件或文件夹时,NeoClip 会把整组路径保存为一条记录。搜索时可以按路径和文件名查找,重新复制时则恢复完整列表。

这里有一个很重要的边界:NeoClip 只记录路径,不复制、移动或托管文件本体。 删除 NeoClip 中的历史不会影响磁盘上的源文件。如果源路径已经失效,NeoClip 会让整次恢复失败并给出提示,而不是悄悄丢掉无效项、只复制一个残缺列表。

一块为高频操作设计的桌面面板

NeoClip 的界面基于 eframe/egui,没有传统桌面软件厚重的窗口层级。它更像一块随叫随到的操作面板:

  • 默认全局快捷键 Alt+C 呼出或隐藏,也可以在设置中录入新的组合键;
  • 切换记录,Enter 恢复选中内容,Esc 隐藏窗口;
  • 搜索框即时过滤文本、图像和文件记录;
  • 收藏内容可以长期保留,普通“清空历史”只清理未收藏项;
  • 系统托盘左键切换窗口,右键可打开菜单并退出程序;
  • 支持简体中文与英文即时切换;
  • 默认可随 Windows 登录启动,也可以在设置中关闭;
  • 单实例保护避免重复启动多个进程争用同一份数据。

这些看起来都是小功能,但剪贴板工具的体验恰恰由这些细节决定:窗口能不能稳定获得焦点,悬浮时会不会意外隐藏,截图能不能可靠地重新复制,选中的预览会不会在滚动后丢失。NeoClip 的开发过程里,相当一部分工作都花在了这些“不应该被用户注意到”的地方。

两天形成的产品骨架,背后是一条清晰的开发主线

NeoClip 的首轮开发集中在 2026 年 7 月 16 日至 17 日。回看提交历史,它不是一次把功能堆满,而是沿着使用链路逐层补齐。

7 月 16 日,项目先建立本地存储、剪贴板监听、历史列表和贡献规范等基础骨架;随后很快加入图像剪贴板历史,再补上 Windows 文件列表,让“剪贴板历史”从纯文本扩展为真正覆盖日常桌面内容的工具。

功能闭环之后,开发重心转向桌面体验:临时窗口的显示与隐藏、失焦行为、悬浮状态、图像复制稳定性、选中项预览、卡片间距、操作区反馈,以及更紧凑的关于窗口。7 月 17 日又完成了可自定义快捷键、开机自启动、语言切换与配置持久化,并通过系统字体和图标资源策略压缩 Windows 发布体积,最后补齐中英文 README 与 MIT License。

这段历史也延续了 NeoPad 开发中的一个经验:高频桌面工具并不只靠功能清单成立。可靠的保存、清晰的数据边界、稳定的窗口生命周期和足够短的操作路径,才是“每天愿意打开”的基础。

本地优先,也把隐私边界说清楚

NeoClip 不提供网络同步,不添加遥测,也不会把剪贴板正文写进日志。数据默认保存在用户目录下的 .neoclip 文件夹中:SQLite 数据库负责记录与索引,图像则保存在独立的 images 目录。

本地优先不等于自动加密。当前剪贴板文字、文件路径和 PNG 图像都以未加密数据保存在本机。因此,不建议在不可信设备上长期保留密码、密钥或其他高度敏感的剪贴板内容。这是现阶段明确的产品边界,也欢迎社区围绕隐私保护、清理策略和安全体验提出建议。

为什么选择 Rust?

NeoClip 使用 Rust 2024 edition 开发,UI 采用 eframe/egui,持久化采用 SQLite。剪贴板监听运行在独立线程中,通过拥有所有权的事件把文本、图像或文件列表交给界面;退出时线程可以可靠停止,不在 UI 主线程里执行阻塞轮询。

项目也把桌面工具中容易混在一起的职责拆开:界面交互、剪贴板读写、SQLite 存储、图像文件、平台集成、配置与路径各自位于独立模块。这样的结构不是为了追求“架构感”,而是为了让贡献者能更安全地修改某一部分,而不意外破坏剪贴板数据、后台线程或窗口生命周期。

现在能用到什么,接下来还缺什么?

当前仓库版本为 0.1.x,Windows 是完整验收基线。文本、图像与 Windows 文件列表已经形成可用闭环;macOS 与 Linux 仍需要逐平台验证,尤其是图像剪贴板、托盘、全局快捷键和窗口生命周期,非 Windows 平台的文件剪贴板能力也尚未完成。

接下来值得继续推进的方向包括:

  • 为文件记录增加图标、类型、大小等更丰富的预览;
  • 区分“列表显示上限”和“数据保留策略”,加入可解释、保护收藏项的自动清理能力;
  • 完成 macOS 与 Linux 的构建和人工行为验证;
  • 继续打磨键盘操作、无障碍体验、高 DPI 与多显示器场景;
  • 在不牺牲本地优先原则的前提下,探索更清晰的隐私与数据管理能力。

欢迎试用,也欢迎来提 Issue

NeoClip 已基于 MIT License 开源:

GitHub:https://github.com/trevanzhang/neoclip

如果你正在使用 Windows,欢迎从源码构建、体验真实工作流,并把遇到的问题告诉我。无论是剪贴板捕获失败、快捷键冲突、窗口焦点异常、图像或文件恢复问题,还是对交互、隐私、跨平台支持的新想法,都可以在这里提交:

Issues:https://github.com/trevanzhang/neoclip/issues

提交问题时,如果方便,请附上操作系统版本、复现步骤、预期行为和实际表现;涉及剪贴板内容时,请务必使用脱敏或合成示例,不要上传真实密码、个人文件路径或私人截图。

也欢迎关注它的姊妹项目 NeoPad:

NeoPad:https://github.com/trevanzhang/neopad

NeoPad 让灵感更容易留下,NeoClip 让经过手边的信息不再转瞬即逝。希望这两个小工具,能够一起把日常桌面工作中那些频繁、琐碎,却真实消耗注意力的步骤缩短一点。