我用 AI 搓了一个跨平台便签工具:NeoPad
我用 AI 搓了一个跨平台便签工具:NeoPad
全文约 2000 字,阅读需要 5 分钟
最近杂事多,公众号断更了一阵子。不过我没闲着——零零碎碎的时间凑起来,用 AI 搓了个小工具。名字叫 NeoPad,一个跨平台桌面便签。
它不是知识库,不做双向链接,也不塞 AI 聊天框。就一件事:脑子里冒出一句想法、一个待办、一段临时信息,怎么用最快的速度记下来。
项目地址:https://github.com/trevanzhang/neopad
从 FlashPad 说起
NeoPad 致敬的是一款叫 FlashPad 的小工具。
我用了 FlashPad 很多年。界面朴素,功能简单,但特别适合随手记:按一下快捷键,窗口弹出;写几句,再按一下,隐藏。没有启动仪式,不用操心文件放哪个目录。开会时记个临时待办,写代码时顺手记个想法,下班前记个明天要跟进的事——它就在那里,按一下就出来,按一下就消失。
FlashPad 的作者持续维护了将近 20 年。说实话,在软件行业做出一个工具不稀奇,但二十年如一日地修补一个小工具,很难。不怎么赚钱,也上不了技术新闻,但就是一直在。这种事,我打心底佩服。
不过,FlashPad 主要面向 Windows。随着我使用的设备和系统越来越多,我希望有一个相似的工具,能够同时运行在 Windows、Linux 和 macOS 上;同时保留那种“随叫随到、写完就走”的轻便感。
这就是 NeoPad 的起点。
它不是"大而全"笔记软件
现在的笔记软件越来越重。标签、数据库、双向链接、关系图谱、团队协作、云同步、AI 问答……功能当然有价值,但它们解决的是知识管理的问题。随手记两行字,完全是另一回事。
我想要的更像桌面上的一张便签纸:
- 常驻后台,需要时用全局快捷键唤出;
- 支持多个标签页,不同临时事项可以分开放;
- 输入后自动保存,不需要惦记
Ctrl+S; - 关闭窗口只是隐藏,而不是退出;
- 可以把剪贴板内容快速追加到固定页面;
- 全文搜索,过几天还能把那句话找回来。
所以 NeoPad 一开始就给自己划了界:不做云同步,不做账户,不做 RAG,不做向量数据库,不做知识图谱。
小工具最重要的品质——你需要它的时候,它马上出现。从不添乱。
本地优先,笔记就是 Markdown 文件
NeoPad 是本地优先。所有笔记都以普通 Markdown 文件存在用户目录下的 ~/.neopad/notes/,配置和标签页信息也在本地。你的文字不会被锁在某个数据库里——就算哪天不用 NeoPad 了,随便开个文本编辑器照样能读。这种"数据自有"的感觉,用惯了云端笔记的人可能觉得无所谓,但我自己在经历了几次"平台关停、笔记迁移"的折腾之后,对这一点非常在意。
删除也不直接抹文件,先移到 trash/。写入走原子保存,程序崩了也不至于把原文搞坏。对一款天天挂在桌面上随手写的工具来说,这些小事比花哨功能要紧得多。
三种写作方式,以及真正的沉浸模式
NeoPad 用 CodeMirror 6 做 Markdown 编辑器,目前三种视图:编辑模式——专心写;混合模式——一边写一边看渲染;预览模式——只读排版效果。
支持明暗主题切换,还能调窗口透明度。记两行字时它是一块小便签,想安静写长段内容时可以切视图、放大窗口,进入更沉浸的状态。不是要变成写作软件,就是让不同场景下都顺手。
给 Vimer 的一个惊喜
NeoPad 目前让我最满意的功能,是 Vim 操作模式。
很多软件号称支持 Markdown,但 Vimer 一进编辑区就下意识按 Esc、j、k、w、dd——然后发现什么也没发生,或者文字里多了一串奇怪字符。
NeoPad 可以开 Vim 键位,并显示当前处于 Normal、Insert 还是 Visual 模式。Insert 退出序列可配,NeoPad 自身快捷键和 Vim 映射冲突时,也能选谁优先。
我自己用了几个月,最大的感受是肌肉记忆终于不用被打断了。hjkl 移动光标,ciw 改一个词,dd 删一行——这些操作在便签里也能用,那种感觉怎么说呢,就是终于不用从 Vim 模式里"退出来"了。
它不是完整的 Vim,也不打算在便签工具里重新实现 Vim 插件生态。但对习惯键盘的人来说,不离开主键区就能完成移动、选择和编辑,体验差很多。这是 FlashPad 没有的能力,也是 NeoPad 除跨平台之外我最想留住的特色。
为 AI 时代留了个接口
NeoPad 还有个不太显眼、但我认为很重要的设计:自带 MCP Server。
支持 MCP 的 AI Agent 可以在授权后读取、搜索或写入 NeoPad 的笔记。比如让 Agent 搜某段临时记录,或者把整理好的内容追加到指定页面。我自己的用法是让 Hermes Agent 直接往 NeoPad 里写每日速记——对话中说"把这条记下来",Agent 就调 MCP 写进去,不需要切换窗口,也不用手动复制粘贴。
安全边界我特意收紧了:MCP 默认只读,只有启动时加 --allow-write 才开放写入;所有文件访问都走同一套核心逻辑,不能越出工作目录;更新整页内容还会检查时间戳,防止覆盖刚改过的文字。
我不想在应用里硬塞一个 AI 聊天框。让 NeoPad 做好记录的事,让外部 Agent 在明确授权的前提下调用它——这更合理。
AI 编程之后,更重要的是取舍
这个项目基本是忙里偷闲,用 AI 一点点搓出来的。技术栈是 Tauri 2、Vue 3、TypeScript 和 Rust,桌面端跟 MCP Server 共用同一个 Rust 核心模块,笔记读写、搜索、路径安全都集中在这里。选择 Tauri 而不是 Electron,主要是因为打包体积极小——一个便签工具如果安装包动辄一百多兆,总觉得有点说不过去。
AI 确实把实现成本打下来了。过去要连续空出几个周末才能搭起来的东西,现在拆成零碎小任务慢慢推就行。
但 AI 不替你决定产品是什么。
真正费心思的,还是取舍。哪些功能属于快速记录,哪些会让软件变重?删除是直接删还是移到回收站?AI 接口该不该默认有写权限?快捷键冲突时听谁的?代码可以让 AI 写,边界得人来守。
接下来
NeoPad 从设计之初就按跨平台方向走,目标是在 Windows、Linux 和 macOS 上提供一致的快速记录体验。目前打包工作主要围绕 Windows MSI 展开,另外两个平台还会继续完善。开源协议用的 Apache 2.0,代码质量还在打磨中,但核心功能已经稳定可用。
它会替代 FlashPad,长期驻扎在我的桌面上。所以它不会是个"写完文章就扔进仓库吃灰"的演示项目——只要我每天还在用,就会遇到不顺手的地方,就会接着改。
老子说"大器晚成,大音希声"。FlashPad 用了二十年证明了一件事:真正好用的工具,往往不需要多大动静。NeoPad 不敢说能达到那个境界,但至少方向是对的——不追求做功能最多的笔记软件,只求按下快捷键时,它永远能立刻出现。
这就是 NeoPad。