跳转到内容

落笔的技术栈:为本地写作设计的桌面应用

落笔 Loby 是一款本地优先的专业写作应用。它结合了桌面应用的本地能力和现代前端的交互体验,让文章可以直接保存在用户自己的电脑中,同时保持 Markdown 文档的开放性和可迁移性。

Loby 使用的主要技术包括:

Tauri 2 + Rust + TypeScript + React 19 + CodeMirror 6

这些技术各自负责不同的部分,共同组成 Loby 的编辑、文件管理、AI 协作和发布能力。

Loby 使用 Tauri 2 构建桌面应用。

Tauri 负责创建应用窗口,并连接文件系统、系统菜单、应用更新和其他操作系统能力。它让 Loby 既拥有桌面应用的本地体验,又可以使用现代 Web 技术构建界面。

简单来说,Tauri 是 Loby 的桌面外壳,负责连接用户界面和操作系统。

Loby 的原生层使用 Rust 编写。

Rust 主要负责需要稳定性、安全性和本地权限的工作,包括:

  • 读取、保存和监听 Markdown 文件
  • 管理写作库、项目、分组和文稿
  • 建立本地全文搜索索引
  • 处理图片和其他写作资源
  • 管理 AI Provider、工具和 MCP 连接
  • 执行发布、上传和系统级操作
  • 保存敏感凭证和处理应用更新

前端不会直接操作这些底层能力,而是通过 Tauri 提供的 command 和 event 与 Rust 通信。这样可以让界面逻辑和本地业务保持清晰分工。

Loby 的前端使用 TypeScript 和 React 19。

React 负责构建写作库、文稿列表、编辑器、AI 助手、设置页面、历史记录和发布界面等内容。

TypeScript 为这些界面和业务逻辑提供明确的数据类型。例如,一篇文稿有哪些属性、一个项目可以执行哪些操作、Rust 返回的数据应该是什么格式,都可以在开发阶段提前检查。

Loby 的前端按照产品功能组织代码。编辑器、写作库、AI、发布和设置等能力各自保持边界,再通过清晰的接口进行协作,便于维护和持续扩展。

Loby 的 Markdown 编辑器使用 CodeMirror 6。

CodeMirror 是专门用于代码和结构化文本编辑的编辑器框架,负责处理:

  • 键盘输入
  • 光标和选区
  • 撤销与重做
  • 查找和替换
  • 中文输入法
  • Markdown 语法识别
  • 长文档编辑性能
  • 快捷键和编辑器扩展

Loby 在 CodeMirror 的基础上加入了标题、列表、表格、任务列表、图片、脚注、代码块等 Markdown 交互,因此形成了自己的即时渲染 Markdown 编辑体验。

Loby 的 AI 能力由前端界面和 Rust 原生运行时共同完成。

前端负责展示对话、输入请求和审阅结果;Rust 负责连接不同的模型服务、管理工具调用、处理权限和保护敏感凭证。

这样的分工可以让 AI 成为写作助手,而不是取代编辑器本身。文章仍然保存在本地 Markdown 文件中,AI 产生的修改也需要经过用户审阅和决定。

Loby 的一个重要原则是:

Markdown 文件是文章内容的事实来源。

用户的文章保存在本地写作库中。Loby 的索引、缓存和运行状态只是为了提高加载和搜索效率,并不取代原始文稿。

这意味着:

  • 离开 Loby 后,文章仍然可以被其他工具读取。
  • 用户可以直接管理和备份自己的 Markdown 文件。
  • 应用内部的数据结构变化,不应影响文章本身的可迁移性。
  • 写作内容始终掌握在用户自己手中。

Loby 的技术栈并不是简单堆叠各种工具,而是按照职责进行分层:

  • Tauri 负责桌面应用边界。
  • Rust 负责本地能力和安全操作。
  • React 负责用户界面和交互。
  • CodeMirror 负责高质量文本输入。
  • Markdown 文件负责保存用户真正拥有的内容。

这种架构让 Loby 同时具备桌面应用的本地能力、现代前端的交互体验,以及 Markdown 文档的开放性和可迁移性。