版本: v0.1
更新日期: 2026-04-01
目标平台: Windows(MVP),后续规划 macOS / Linux
打造一款基于 Tauri + React 的现代化本地 Markdown 编辑器。核心追求"所见即所得(WYSIWYG)"的沉浸式写作体验,同时通过底层插件 API 实现深度定制,达成轻量级与高扩展性的平衡。
| 用户画像 | 核心诉求 |
|---|---|
| 重度写作者 | 追求无干扰的沉浸式写作环境,抵触"左编辑右预览"的割裂感 |
| 开发者 / 技术人员 | 高频编写技术文档,依赖代码高亮、Mermaid 图表、数学公式等扩展语法 |
| 极客玩家 | 喜欢折腾工具,希望通过编写插件来定制编辑器工作流 |
| 维度 | Typora | Obsidian | Mark Text | Typist |
|---|---|---|---|---|
| 架构 | Electron | Electron | Electron | Tauri (Rust) |
| 内存占用 | ~200MB | ~300MB+ | ~250MB | 目标 <80MB |
| WYSIWYG | 优秀 | 无(实时预览) | 良好 | 优秀 |
| 插件系统 | 无 | 强大 | 无 | 开放 API |
| 开源 | 否 | 否 | 是 | 是 |
| 许可 | 付费 | 部分付费 | 免费 | 免费开源 |
核心差异化: Tauri 驱动的极低资源占用 + Typora 级 WYSIWYG 体验 + Obsidian 级插件扩展能力。
| 层级 | 技术 | 选型理由 |
|---|---|---|
| 前端框架 | React (TypeScript) | 生态成熟,与 Milkdown 原生集成 |
| 编辑器引擎 | Milkdown (ProseMirror) | 原生 WYSIWYG + 插件化架构 |
| 状态管理 | Zustand | 轻量、跨组件/插件状态同步 |
| 桌面框架 | Tauri (Rust) | 极速启动、低内存、原生文件系统访问 |
| 构建工具 | Vite | 快速 HMR,与 React/Tauri 集成良好 |
- 基础语法:CommonMark 规范
- 扩展语法:GFM (GitHub Flavored Markdown) — 表格、任务列表、删除线、自动链接
- 额外扩展(通过内置插件):Mermaid 图表、KaTeX 数学公式、脚注
MVP 目标:用户能够用 Typist 打开、编辑、保存 Markdown 文件,获得流畅的 WYSIWYG 体验。
| 功能 | 描述 | 验收标准 |
|---|---|---|
| 实时渲染 | 输入 Markdown 语法后,光标移开即转为富文本视图 | # ** ` - 等标准语法均可触发 |
| 源码模式切换 | 快捷键在 WYSIWYG 与纯文本源码模式间无缝切换 | 切换后光标位置保持对应 |
| Undo / Redo | 完整的撤销/重做栈 | 支持 Ctrl+Z / Ctrl+Shift+Z,跨渲染模式状态一致 |
块级元素:
- 标题(H1-H6)
- 有序/无序列表、任务列表(GFM
- [ ]) - 引用块、嵌套引用
- 代码块(带语言标识的语法高亮)
- 表格(GFM 语法,支持可视化拖拽调整列宽)
- 水平分割线
- 脚注
行内元素:
- 粗体、斜体、删除线、行内代码
- 链接、图片
- 自动链接(GFM)
| 功能 | 实现方式 |
|---|---|
| 多语言代码高亮 | 支持主流编程语言,提供一键复制按钮 |
| Mermaid 图表 | ```mermaid 代码块失去焦点后渲染为流程图/时序图,点击可回退到源码编辑 |
| KaTeX 数学公式 | $...$ 行内公式 + $$...$$ 块级公式,实时渲染 |
| 本地图片处理 | 拦截剪贴板粘贴,通过 Tauri Rust 接口存入 .assets/ 目录,文档中插入相对路径 |
| 功能 | 描述 |
|---|---|
| 文件打开/保存/另存为 | 通过 Tauri IPC 调用原生系统对话框 |
| 自动保存 | 编辑后自动保存到原文件,可配置间隔(默认 30s),支持关闭 |
| 外部修改检测 | 监听文件变动,外部修改后提示用户重新加载或保留当前版本 |
| 最近文件列表 | 记录最近打开的文件(上限 20 条),支持快速打开 |
| 多标签页 | 支持同时打开多个文件,标签页可拖拽排序,未保存文件显示标记 |
| 功能 | 描述 |
|---|---|
| 无边框窗口 | 自定义可拖拽标题栏,支持最大化/最小化/关闭 |
| 隐藏式侧边栏 | 默认隐藏,鼠标悬停边缘或快捷键呼出文档大纲 |
| 隐藏式状态栏 | 底部状态栏显示字数统计、光标位置、编码格式 |
| 亮色/暗色主题 | 默认跟随系统,支持手动切换 |
| 操作 | 快捷键 |
|---|---|
| 保存 | Ctrl+S |
| 另存为 | Ctrl+Shift+S |
| 打开文件 | Ctrl+O |
| 新建文件 | Ctrl+N |
| 关闭标签 | Ctrl+W |
| 切换源码模式 | Ctrl+/ |
| 搜索 | Ctrl+F |
| 替换 | Ctrl+H |
| 加粗 | Ctrl+B |
| 斜体 | Ctrl+I |
| 插入链接 | Ctrl+K |
| 呼出大纲 | Ctrl+Shift+O |
| 呼出命令面板 | Ctrl+Shift+P |
- 当前文档内搜索/替换,支持正则表达式
- 高亮所有匹配项,显示匹配计数
Enter跳转下一个 /Shift+Enter跳转上一个
register → activate → (enable / disable) → deactivate → destroy
- 提供统一 Event Bus,插件可监听核心事件:
onFileOpen、onDocumentChange、onSave、onThemeChange - 插件通过声明式
manifest.json注册元信息(名称、版本、依赖、权限声明)
| 插槽 | 用途 | 示例 |
|---|---|---|
SidebarSlot |
侧边栏扩展 | 文件树插件、目录大纲插件 |
ToolbarSlot |
顶部工具栏扩展 | 格式化按钮、导出按钮 |
StatusBarSlot |
底部状态栏扩展 | 字数统计、阅读时间预估 |
EditorFloatSlot |
编辑器浮动层 | 悬浮工具条、AI 补全面板 |
暴露 Milkdown / ProseMirror 底层 API,允许插件:
- 注册自定义
Node和Mark - 定义自定义输入规则(InputRules)
- 接管特定节点的渲染逻辑(NodeView)
- 插件运行在受限沙箱中,文件系统访问需声明权限
- 内置插件与第三方插件权限隔离
| 功能 | 描述 |
|---|---|
| 焦点模式 | 当前编辑段落高亮,淡化上下文 |
| 打字机模式 | 当前行始终垂直居中 |
| 文件树 / 工作区 | 以文件夹为单位打开工作区,树形浏览和管理文件 |
| 全局搜索 | 跨文件搜索(工作区范围) |
| 导出 | 支持导出为 PDF、HTML(通过 Tauri 调用系统打印接口或内置转换) |
- 自定义 CSS 主题
- 编辑器字体/字号配置
- 多窗口支持
| 指标 | 目标值 |
|---|---|
| 冷启动时间(Windows) | < 1s |
| 静态待机内存 | < 80MB |
| 万字长文编辑内存 | < 150MB |
| 万字文档加载时间 | < 1.5s |
| 滚动帧率 | 稳定 60fps |
| 自动保存写入延迟 | < 100ms |
- 文件系统隔离: 通过 Tauri FS Scope 限制访问范围,仅允许访问用户授权目录和当前编辑文件所在目录
- XSS 防护: 严格过滤 Markdown 中嵌入的 HTML 标签,防止富文本渲染引入 XSS
- 插件隔离: 第三方插件在受限环境中运行,无法越权访问文件系统
- 崩溃恢复: 维护编辑中文档的临时备份,异常退出后下次启动可恢复
- 保存冲突处理: 外部修改与本地修改冲突时,提供对比选择界面
- 集成 Tauri 内置更新机制,支持静默检查更新 + 用户确认安装
- 应用运行日志写入本地文件,用于排查问题
- 错误上报(可选开启),收集崩溃堆栈
| 阶段 | 当前状态 | 说明 |
|---|---|---|
| Phase 1:技术验证 | 已完成(4/4) | Tauri + React + Milkdown 基础能力与文件流转闭环已打通 |
| Phase 2:MVP 开发 | 已完成(8/8) | 核心编辑、渲染、文件管理、快捷键、搜索替换等能力已接入 |
| Phase 3:插件系统 | 已完成(5/5) | 插件管理、UI 插槽、SDK、文档与 manifest 导入激活流程已接入 |
| Phase 4:体验打磨 | 基本完成(6/6) | 工作区、导出、恢复、更新、主题配置等已接入,稳定性仍需持续验证 |
目标: 跑通核心技术栈,验证可行性
- 搭建 Tauri + React + Vite 工程脚手架
- 集成 Milkdown,实现基础 Markdown 输入与 WYSIWYG 渲染
- 实现无边框窗口 + 自定义标题栏
- 通过 Tauri IPC 完成文件打开/保存
- 后端状态与命令:实现文件读取、保存、另存为及数据流映射
- 前端交互绑定:UI 触发并完整流转文件内容到编辑器
验收标准: 能打开 .md 文件,编辑后保存,基础 WYSIWYG 渲染正常。
当前结论: 已通过验证,前端完整闭合了文件系统流转。
目标: 可日常使用的最小可用版本
- 完善 GFM 全语法支持(表格、任务列表、删除线)
- 集成代码高亮、Mermaid 渲染、KaTeX 公式
- 前端:接入对应的 Milkdown 交互插件与渲染组件
- 前端:通过内置 advanced-render 插件补齐代码块复制、Mermaid 点击回退源码编辑与图片粘贴插入路径
- 实现多标签页、自动保存、最近文件列表
- 后端:多标签状态管理、脏标记更新、自动保存配置维护及近期文件落盘
- 前端:多标签栏 UI 切换、保存轮询调度机制展现
- 实现搜索/替换功能
- 后端:高功能正则与文本匹配逻辑
- 前端:呼出式浮动搜索/替换面板 UI 交互
- 实现源码模式切换
- 前端:双向绑定无缝切换逻辑(富文本 vs 纯文本引擎)
- 本地图片粘贴处理(
.assets/目录)- 后端:安全过滤拦截,处理 base64 落盘并返回相对路径
- 前端:拦截
paste事件提取图像并上传调用
- 亮色/暗色主题
- 后端:设置持久化选项
- 前端:已支持 CSS 主题变量体系与可视化的 Settings 设置中心
- 完善快捷键体系
- 前端:绑定全局指令快捷操作 (
Ctrl+S,Ctrl+O,Ctrl+F等)
- 前端:绑定全局指令快捷操作 (
验收标准: 能完全替代 Typora 完成日常 Markdown 编辑工作,性能指标达标。
当前结论: 基本通过。目前已具备生产可用的多标签及多格式解析能力。
目标: 开放扩展能力
- 实现 Plugin Manager
- 后端:生命周期调度(加载/销毁)、注册、事件总线与沙盒权限检查
- 前端:插件集市与管理(启用/禁用)可视化面板
- 前端:Load Plugin 支持读取 manifest 并自动完成注册、激活与脚本注入
- 实现 UI 插槽机制
- 前端:提供侧边栏、状态栏、顶部工具栏的 React Hook 挂载点
- 暴露 Milkdown/ProseMirror 扩展 API
- 后端:通过 IPC 对插件暴漏底层 API 支持
- 前端:封装基于编辑器的操作上下文环境
- 将"字数统计"和"大纲视图"重构为内置插件,验证插件架构
- 前后端联调:抽离为标竿官方插件
- 编写插件构建文档
- 文档:
docs/PLUGIN_BUILD.md(manifest 规范、构建产物要求、加载与调试流程)
- 文档:
验收标准: 第三方开发者可根据文档独立开发并加载插件。
目标: 精细化用户体验
- 焦点模式、打字机模式
- 后端:配置管理生效
- 前端:根据设置动态插入视图居中与淡化效果样式
- 工作区 / 文件树
- 后端:打开文件夹目录树构建、跨文件全局并发搜索
- 前端:侧边树状结构渲染、点击文件交互与侧栏右键菜单(打开、复制路径、设为工作区)
- PDF / HTML 导出
- 后端:数据格式工厂支持转化输出
- 前端:导出视图选项与菜单触发弹窗
- 自定义主题 / 字体配置
- 后端:保存用户自定义设置
- 前端:配置页可视化表单调整
- 崩溃恢复机制
- 后端:定期的后台快照存储与异常检查恢复逻辑
- 前端:应用崩溃二次拉起时的异常恢复弹窗确认
- 自动更新集成
- 后端:请求远程 feed 版本判定逻辑
- 前端:更新进度条展示交互
验收标准: 用户体验评测无明显短板,可发布公开 Beta 版本。
| 模块 | 状态 | 说明 |
|---|---|---|
| WYSIWYG / 源码模式 / Undo-Redo | 已完成 | 前端交互与快捷键均已接入 |
| Markdown + GFM + 进阶渲染 | 已完成 | 代码高亮、Mermaid、KaTeX 与图片粘贴已接入 |
| 本地文件管理 | 已完成 | 打开/保存/另存为/自动保存/最近文件/多标签已接入;外部修改已支持“保留当前版本 / 重新加载磁盘内容”决策提示 |
| 搜索替换与快捷键体系 | 已完成 | 文档内搜索替换、快捷键配置均可使用 |
结论:核心功能需求(P0)已完成。
| 模块 | 状态 | 说明 |
|---|---|---|
| 插件系统架构 | 基本完成 | 生命周期、UI 插槽、SDK、manifest 导入激活已接入;已提供 cleanup 协议,第三方插件接入率与回归覆盖待提升 |
| 高级编辑功能 | 已完成 | 焦点模式、打字机模式、工作区、全局搜索、导出均已接入 |
| 其他 P1(主题/字体/多窗口) | 已完成 | 主题与字体配置已完成;已支持标题栏与快捷键触发的新建窗口能力 |
结论:增强功能需求“基本完成”,当前主要缺口聚焦在插件权限治理深度与回归覆盖。
| 模块 | 状态 | 说明 |
|---|---|---|
| 性能指标 | 未完成 | 尚缺系统化压测与指标验收报告 |
| 安全性 | 部分完成 | 已有权限声明与基础隔离能力,但插件权限强校验与来源可信机制需加强 |
| 数据安全 | 已完成 | 崩溃恢复与草稿恢复链路已接入 |
| 自动更新 | 已完成 | 更新检查与前端更新交互已接入 |
| 日志与诊断 | 已完成 | 日志写入与诊断报告能力已接入 |
结论:非功能性需求“未全部完成”,核心差距在性能验收与插件安全治理深度。
- 推动第三方插件接入 cleanup 协议并补齐权限强校验。
- 建立性能基准与自动化验收(启动、内存、加载、滚动、自动保存延迟)。
- 已补齐核心文件管理中的外部修改处理:当文件在编辑器外被修改或删除时,前端会触发决策提示。
- 已补齐自动保存调度链路:按设置项
autosave_enabled与autosave_interval_secs周期执行脏标签自动保存。 - 已补齐恢复草稿调度链路:对脏标签周期写入恢复草稿,降低异常退出后的内容丢失风险。
- 已补齐多窗口能力:支持标题栏按钮与
Ctrl+Shift+N快捷键创建新窗口。