一个基于 Tauri + React + Rust 的本地 Markdown 编辑器,目标是提供 Typora 级 WYSIWYG 写作体验,同时保留 Obsidian 风格的插件扩展能力。
当前定位:Windows 平台 MVP,后续规划 macOS / Linux。
- 低资源占用:Tauri + Rust 后端,面向轻量桌面应用。
- WYSIWYG + 源码双模式:支持在富文本编辑与纯文本源码间快捷切换(Ctrl+/)。
- 富文本增强交互:表格悬浮工具条、选区文本快捷工具条(可在设置中开关)。
- 常用 Markdown 增强:GFM、代码高亮、Mermaid、KaTeX。
- 本地优先:文件打开/保存、最近文件、多标签、工作区文件树。
- 中英双语界面:设置中可切换中文 / English。
- 系统文件直开:打包版支持关联 md/markdown/txt,双击即可用 Typist 打开。
- 可扩展架构:插件生命周期、事件总线、UI 插槽机制。
- 更安全插件运行:外部插件通过 Web Worker Sandbox 执行,降低主线程脚本注入风险。
- 工业化导出链路:内置 Pandoc 导出管线,支持多格式导出。
- 编辑能力
- WYSIWYG 编辑(Milkdown / ProseMirror)
- 源码模式切换(纯文本编辑)
- 查找替换(支持正则)
- 多标签页与脏标记
- 内容渲染
- GFM(表格、任务列表、删除线)
- Prism 代码高亮
- Mermaid 图表
- KaTeX 数学公式
- 文件与系统能力
- 打开 / 保存 / 另存为
- 外部文件变更检测(保留当前版本 / 重新加载磁盘内容)
- 最近文件
- 工作区文件树与全局搜索
- 支持从启动参数自动打开文件
- 单实例文件转发(已运行时再次双击文件,会发送到现有窗口打开)
- 打包版文件关联(md / markdown / txt)
- 导出 HTML / PDF / DOCX / LaTeX / EPUB / Reveal.js(Pandoc)
- 崩溃恢复与更新检查
- 可定制能力
- 中文 / English 语言切换
- 亮色 / 暗色主题
- 自定义 CSS 主题文件动态注入
- 焦点模式 / 打字机模式
- 非 Markdown 默认源码模式、非 Markdown 行号显示
- 富文本选区工具条开关
- 插件管理与基础 SDK
- 桌面框架:Tauri 2
- 前端:React 19 + TypeScript + Vite
- 编辑器:Milkdown + ProseMirror
- 后端:Rust(独立 backend crate + Tauri 集成)
- 状态管理:Zustand
.
├─ frontend/ # React 前端
├─ backend/ # Rust 业务后端(文件、搜索、导出、插件等)
├─ src-tauri/ # Tauri 容器与打包配置
└─ docs/ # PRD 与开发文档
- Node.js 20+
- Rust 1.77+
- Windows 开发环境(已在当前阶段优先验证)
- Tauri 2 依赖环境(WebView2、MSVC Build Tools 等)
- Pandoc(用于 PDF / DOCX / LaTeX / EPUB / Reveal.js 导出;HTML 导出不依赖)
npm install
npm --prefix frontend installnpm run tauri:dev命令会自动启动前端 Vite 服务并拉起桌面应用。
npm --prefix frontend run buildcargo check --manifest-path backend/Cargo.tomlHTML导出使用内置渲染链路,不依赖 Pandoc。PDF / DOCX / LaTeX / EPUB / Reveal.js通过 Pandoc 执行导出。- 若导出时报错提示找不到 Pandoc,请先安装并确保
pandoc可在系统 PATH 中直接调用。
以下步骤用于从源码构建可分发的 Windows 安装包。
- 已完成上面的环境安装与依赖安装步骤。
- 建议先执行一次开发模式,确认本机 Tauri 环境可正常运行:
npm run tauri:devnpm run tauri:build说明:当前 src-tauri/tauri.conf.json 中 bundle.targets 为 all,会按本机环境生成可用的安装包类型。
只打 NSIS(.exe 安装程序):
npm run tauri -- build --bundles nsis只打 MSI(.msi 安装包):
npm run tauri -- build --bundles msi- 安装包输出目录:
src-tauri/target/release/bundle/ - 常见子目录:
src-tauri/target/release/bundle/nsis/src-tauri/target/release/bundle/msi/
- 问题:开发模式正常,但打包失败。
- 处理:先执行
npm --prefix frontend run build,确认前端可单独构建成功,再执行npm run tauri:build。
- 处理:先执行
- 问题:希望验证文件关联是否生效。
- 处理:必须安装打包后的应用后再验证;
npm run tauri:dev不会写入系统文件关联。
- 处理:必须安装打包后的应用后再验证;
- 在开发模式(
npm run tauri:dev)下,不会写入系统文件关联。 - 需要在打包安装后生效(
src-tauri/tauri.conf.json已配置md、markdown、txt)。 - 生效后可直接通过系统双击打开文档,Typist 会自动载入文件。
- Ctrl+O:打开文件
- Ctrl+Shift+N:新建窗口
- Ctrl+S:保存
- Ctrl+Shift+S:另存为
- Ctrl+W:关闭标签
- Ctrl+F / Ctrl+H:查找 / 替换
- Ctrl+/:切换源码模式
详见 docs/PRD.md。 插件构建说明见 docs/PLUGIN_BUILD.md。
当前里程碑聚焦:
- 完善跨平台体验与稳定性验证。
- 持续完善第三方插件权限强校验与安全治理。
欢迎通过 Issue / PR 参与共建。
建议流程:
- Fork 仓库并创建特性分支。
- 提交清晰的 commit 信息。
- 在 PR 中附上变更说明与验证结果。
- 涉及 UI 变更时附截图或录屏。
- 性能基准与自动化验收(启动、内存、加载、滚动)
- 插件权限强校验与来源签名
- 跨平台适配(macOS / Linux)
- 学AI上L站喵,LinuxDo
MIT License,详见 LICENSE。