为什么我用 Tauri 给自己写了一个 Markdown 编辑器
XiMD 是我做的 macOS Markdown 编辑器:行内所见即所得、原生毛玻璃界面,常驻内存约 90MB。这篇讲它从两年前一个网页版小工具开始,到这次为什么选择 Tauri,以及还没做好的地方。
这个博客的每一篇文章,都是先用 Markdown 写好,再发布上线的。写得多了,对编辑器就会越来越挑剔。
XiMD 是我给自己做的 Markdown 编辑器,2026 年 9 月发布了第一个版本 v0.1.0,在 GitHub 上开源。这篇讲讲它是怎么来的,以及几个技术上的取舍。
两年前的第一个版本:AI-Markdown
XiMD 不是我第一次做 Markdown 编辑器。2024 年 12 月,我做过一个叫 AI-Markdown 的网页版工具:React + TypeScript + Vite,左边写、右边实时预览,可以接 DeepSeek、OpenAI、Claude 帮忙润色,也有亮暗主题和自动保存。
它能用,但一直是个“网页里的工具”:要打开浏览器,文件存在浏览器里,和本地文件夹之间总隔着一层。
这一次,我想要的三件事
隔了两年重新做,我给自己定了三个要求:
- 不要左右分屏。 像 Typora 那样,行内所见即所得:光标放在哪一行,那一行就显示 Markdown 源码;光标移开,立刻变回排好版的样子。视线始终落在内容上,不用在两栏之间来回对照。
- 看起来就是一个 Mac 应用。 用系统的毛玻璃侧边栏,标题栏和红绿灯按钮融为一体,而不是一个套了窗口的网页。
- 轻。 打开要快,常驻内存要小,不能因为写几段字就让风扇转起来。
为什么选 Tauri
做桌面应用,最常见的选择是 Electron。它很成熟,但每个应用都要自带一整套 Chromium 浏览器,安装包大,内存占用也高。
Tauri 的思路不一样:不自带浏览器,直接用系统里已经有的。在 macOS 上用的是系统自带的 WKWebView,界面部分还是熟悉的网页技术,底层逻辑则用 Rust 写。
对 XiMD 来说,这带来了两个直接的好处:
- 更轻:XiMD 常驻内存大约 90MB;
- 读写本地文件更自然:打开、保存文件走的是 Rust 写的原生命令,任意目录下的
.md文件都能直接打开和保存,不受网页沙箱的限制。
整体的技术组合是:Tauri 2.0 做桌面底座,React 19 + TypeScript + Vite 6 做界面,编辑器内核用基于 ProseMirror 的 Milkdown,样式用 Tailwind CSS 和 Radix UI,数学公式用 KaTeX,流程图用 Mermaid,毛玻璃效果则调用系统原生的 vibrancy 能力。
几个我自己最常用的细节
功能列表可以看 GitHub 上的说明,这里只挑几个我写东西时最常用的:
- 不用想着保存。 停止输入 1.2 秒后自动保存,窗口失去焦点时也会存一次。
- 截图直接粘贴。 截图后在编辑器里按
⌘V,图片会自动存到当前文档旁边的assets/目录,并插入相对路径。文档整个文件夹拿走,图片不会丢。 - 打字机模式和专注模式。 前者让当前行始终停在屏幕中间,后者把其他段落调暗,只留正在写的这一段。
- 一键复制到公众号和知乎。 把渲染好的内容转成带样式的富文本,直接粘贴到微信公众平台或知乎的编辑器里。对中文写作者来说,这一步能省掉很多重复排版。
- 划词就能叫 AI。 选中一段文字按
⌘J,可以润色、纠错、翻译或总结。模型可以用本地的 Ollama,完全离线;也可以填自己的 OpenAI 兼容接口。密钥只保存在本机,代码里没有任何内置的 Key。
取舍和还没做好的地方
- 只支持 macOS。 毛玻璃、标题栏这些“原生感”都是针对 Mac 做的,所以目前没有 Windows 版本。
- 第一次打开需要多点一步。 作为独立开源项目,XiMD 没有购买苹果的开发者签名证书,macOS 会提示“无法验证开发者”。需要在“应用程序”里按住 Control 点击图标,选择“打开”;这个操作只需要做一次。
- 还很新。 v0.1.0 是第一个公开版本,一定还有我自己没用到的场景和没发现的问题。
做工具这件事,本身也是一种能力
从 AI-Markdown 到 XiMD,我最大的体会是:先想清楚“不要什么”,比列出“要什么”更重要。 不要分屏、不要臃肿、不要把用户的文件和密钥藏到云端,这几条定下来之后,技术选型几乎就自己出来了。
给客户做网站或小工具时,我也是这么开始的:先把“这个东西不需要做什么”说清楚,剩下的部分才能做得又快又稳。如果你有一个想做成工具或网站的想法,可以看看我的网站建设服务。
想试试 XiMD,可以去 GitHub Releases 下载:Apple Silicon 和 Intel 芯片的 Mac 都有对应的安装包。