Textus
CatVinci-Studio/Textus加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你正在写一篇两万字的长文。写到第三千字时卡住了——不是没思路,而是要查资料、要改结构、要回头核对前文的伏笔。过去你得在三个标签页之间来回跳:编辑器写稿、浏览器查资料、AI 工具改句子。Textus 想把这些收进同一个窗口。
Textus 是 CatVinci Studio 于 2026 年 7 月开源的一款 Markdown 编辑器,579 Star、31 Fork,MIT 协议,横跨 macOS、Windows、Linux 以及 iPhone/iPad。它的自我定位很直接:"The next-generation Markdown editor. You hold the pen. AI keeps your ink flowing."(你执笔,AI 让墨水不断流。)
Markdown 编辑器这个赛道已经拥挤了十年。Typora 拿下了"所见即所得"的心智,Obsidian 拿下了插件生态,VS Code + Markdown 插件拿下了开发者群体。Textus 是 2026 年才出现的新项目,能在不到半年里拿到 579 Star,说明它踩中了某个真实痛点。
痛点在哪?在于前两类工具都不理解"写作"这件事。Typora 是纯粹的排版器,它不会帮你把散落的笔记连成一篇有论点的文章;Obsidian 的双向链接很强大,但它的界面是为"信息管理"设计的,而不是为"从零写出第一段"设计的。写作者真正需要的不是更好的知识图谱,而是一个愿意陪你把话说完的编辑环境。
Textus 的做法是:保留纯 Markdown 文件作为唯一真相(你的所有内容都是本地 .md,可版本管理、可迁移),然后把 AI 做成编辑器的一等公民,而不是外挂。

Textus 最有意思的地方在架构选型上——它同时用 Rust 和 TypeScript。
前端(React + TypeScript,1348 个 .ts/.tsx 文件) 用 Milkdown(基于 ProseMirror)做编辑器内核。这不是随手选的:Milkdown 是目前 Markdown 编辑器里插件化程度最高、渲染性能最稳的方案,支持 KaTeX 数学公式、Mermaid 图表、语法高亮、GFM 表格与任务列表、CJK 友好换行。配合 remark-* 生态做 Markdown 解析,tiny-pinyin 处理中文拼音输入,dompurify 做 XSS 防护。
后端(Rust,344 个 .rs 文件) 跑在 Tauri 2 之上,负责窗口管理、文件系统、菜单、托盘、自动更新、后台模式,以及最关键的——AI Agent 引擎。Rust 的选择带来两个实打实的收益:一是二进制体积(Linux x86_64 从 36.2MB 压到 16.5MB,开了 lto + codegen-units=1 + opt-level="s"),二是写作规则引擎的性能(10 个帮助文档的渲染从 167ms 降到 73ms)。作者在 Cargo.toml 里逐条注释了每个编译选项的权衡,这种级别的工程自律在开源编辑器里并不常见。
核心模块分布:后端 src-tauri/src/ai/ 下有 30+ 个模块,覆盖 agent 循环(agent/)、工具系统(tools/)、记忆(memory/)、技能包(skills/)、图片理解、MCP 客户端、项目工作区等;crates/aicompat 是独立的 provider 兼容层,用 Rust 实现 OpenAI Responses / Anthropic Messages / OpenAI Chat Completions 三种方言的 OAuth(PKCE)与流式 API 调用。
Textus AI 提供四种模式(src/ai/modes.ts 定义):写作(write)、审阅(review)、创作(create)、研究(research)。每个模式的提示词、可用工具、交互形态都不同——审阅模式会在句子旁钉住批注并给出修改理由,创作模式用于从零生成结构,研究模式则挂载网页搜索。
具体到编辑器内的行为:
/ 唤起技能菜单(内置 skill.md、proofread.md、theme.md 等多个技能包)doc_blocks.rs、memory/、workspace/ 构成一个会读你整个项目文件的 Agent



模型侧不绑定任何厂商:OpenAI(支持 ChatGPT 账号 OAuth 登录)、Anthropic(Claude 账号登录)、以及任意 OpenAI 兼容的自定义端点(可接 Ollama 跑本地模型)。内置目录里预置了 gpt-6.1-sol、claude-sonnet-5-5、claude-haiku-5-5 等模型 ID,并支持实时拉取模型列表。
值得一提的是 MCP 客户端(src-tauri/src/mcp/):在 settings.json 的 mcpServers 里配置本地进程或 HTTP 服务,Textus 会在后台启动它们,把它们的工具合并进 Agent 的工具集。这是把 MCP 从"AI 编程工具"下沉到"普通人的写作工具"的一个信号。
Textus 的工程规范密度高得罕见。仓库有 2383 个文件,其中 390 个测试文件、237 个端到端测试文件。测试分四层:Rust 单元测试、Vitest 单元测试、编辑器集成测试(editor-view-kit.ts)、Playwright 端到端(含 WebKit 专项,用于 macOS/iOS 的真实渲染)。10 条 GitHub Actions 工作流覆盖 CI、iOS 发布、桌面发布、镜像下载、依赖审计、模型列表同步。
文档密度同样惊人:200 个 Markdown 文件,docs/dev/ 下 19 篇开发者文档(架构、测试、本地构建、存储、生命周期、保存、翻译、发布、基础设施、iOS 发布……),docs/design/ 有设计语言规范。界面支持 10 种语言(英、简中、繁中、日、韩、西、法、德、俄、葡),每个用户可见字符串都必须进全部 10 个 locale 文件。
作者还专门写了 AGENTS.md 交给 AI 编程助手使用,内容包括"不要为了让检查通过而修改 CI 配置或测试期望值"、"改 bug 前必须先复现"、"组件最多 8 个 hook、文件最多 600 行"、"provider 差异要当数据处理,绝不写 `if provider == 'xxx'"。这份文件本身就是一份高质量的 AI 协作工程规范样本。
Textus 是桌面应用,没有 Dockerfile、没有 docker-compose、没有 K8s 清单——这符合它"本地优先"的定位。
| 维度 | 评估 |
|---|---|
| 容器化 | 不支持(无 Dockerfile / compose / K8s) |
| Web UI | 支持(桌面 WebView + Cloudflare Workers 部署的 Web Playground) |
| 官方分发 | macOS .dmg / Windows .exe / Linux .AppImage/.deb/.rpm / Homebrew Cask / Arch 仓库 |
| 源码构建要求 | Node.js 22+、Rust(rust-toolchain.toml 锁定版本)、Tauri 平台依赖、WebView2 或 WebKitGTK |
| 硬件要求 | 无 GPU 需求,运行时内存约 110MB/窗口 |
| 快速部署 | partially_supported —— 官方预编译包开箱即用,源码构建需完整桌面工具链 |
如果只想体验,Playground 版本可以直接在浏览器里跑;如果要长期使用,安装包是最省事的选择;如果要二次开发,需要 Rust + Node 双栈环境,门槛中等偏高。


Textus 的插件系统支持官方插件(Graph 视图、Vim 模式、Quick Preview、版本历史)以及社区插件,能力涵盖思维导图、Marp 幻灯片、看板、PDF/Word 标签页、Zotero 引用、各类图表。插件 API 文档在 docs/dev/plugin-reference.md,权限模型由 src/plugins/api-permissions.ts 统一管控,安装前会检查权限。
插件可以贡献自己的页面(webview),这让 Textus 从"编辑器"变成了"可扩展的个人工作台"。
需要客观指出几点:
docs/dev/ios-code-map.md 承认有大量仅桌面端的功能。Textus 代表的趋势是**"AI 编辑器"从概念走向产品化**。2026 年前后,市面上同类产品密集涌现:Typora 迟迟没有 AI 动作,Obsidian 在插件层面被各种 AI 插件"绕着打",而独立的 AI 原生编辑器(Cursor 之于代码、Textus 之于文字)开始正面竞争。
Textus 的差异化在于它的取舍:坚持纯 Markdown 文件作为唯一存储格式,不引入数据库、不要求账号、不做订阅制。这在数据主权意识增强的当下是一个明确的立场——你的稿子是你的,永远可以带着走。
从工程视角看,它也是 Tauri 2 生态的一个高质量样板:一个跨越三大桌面平台 + iOS 的复杂应用,2383 个文件、四个层级的测试体系、10 条 CI 工作流、10 语种本地化,全部由一个小团队(6 位贡献者)在半年内完成。
对想在自建文档工作流中引入大模型、又不想被厂商平台锁定的团队,Textus 提供了一条值得研究的路径。