⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/Fight/tolaria-note-tool/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

我最近在整理自己的笔记系统,Obsidian 用了三年,插件装了七十多个,配置文件快赶上一个小项目了。每次换台电脑,光是把那套环境弄回来就要大半天。

后来有群友推荐,试了试开源的 Tolaria。它发布后短短几周就冲到一万 Star 以上,现在已经一万九千多。

refactoringhq/tolaria 仓库首页,Star 19.9k

先说它解决什么问题

Tolaria 的定位是一个跨平台的桌面应用,macOS、Windows、Linux 都能跑,用来管理以 Markdown 为核心的知识库。听起来和 Obsidian 差不多,但不完全是,它的每一处设计决定,出发点都不太一样。

Tolaria 的三栏界面

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

一个用 Claude Code 写出来的应用

作者 Luca 在 GitHub 页面里写过一句话,整个代码库超过 10 万行,而他自己一行都没有亲手写,全部是用 Claude Code 搞的。

有人评论说这不过是花哨提法,真改一个很具体的 bug 的时候还是得自己上。我的看法不太一样。这句话真正说明的是开发方式变了,人跨得过去,工具才能跨得过去。至于「开发者消失了」,那是另一回事。

还有一点更值得说。Luca 拿这个工具管理自己超过一万条笔记。顺序是先有工作流再有代码,他把一套真实有效的知识管理方式运转了好几年,才把它实现成软件。所以这个项目是从真实使用场景里长出来的。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

五条设计原则里,有三条在讲同一件事

先说前三条,它们其实在说同一件事,就是把数据的归属权从应用手里拿回来。

Files-first,你的每一条笔记就是磁盘上的一个 .md 文件。应用永远不拥有你的数据,它只是一个读写工具。就算哪天它停止更新,或者你决定换别的软件,文件和内容一分不少地都还在那里。

Git-first,每个 vault 就是一个 git repository。这意味着你天生有完整的修改历史,可以用任意 git remote 同步,当 AI 工具编辑过你的笔记之后,你还能直接看 diff、随时回滚。

Offline-first,没有账号,没有订阅,没有云依赖,vault 完全离线也能正常工作。

这三条合起来回答的是同一个问题,就是万一哪天不用它了,你会损失什么。答案是几乎不损失什么。这一点在笔记软件里其实挺难得,大部分工具的卖点都是「你越来越离不开我」。

另外两条是功能取向的。AI-first but not AI-only,内置支持 Claude Code、Codex CLI、Gemini CLI 的接入配置,同时也有一个 MCP server,让任何支持 MCP 协议的 Agent 都能接进来。Keyboard-first,Command Palette 也就是 Cmd+K 是所有操作的入口,上手一天之后基本可以不摸鼠标。

官方 README 里还写了两条来源没展开的。一条是 Standards-based,笔记就是带 YAML frontmatter 的 markdown,没有专有格式。另一条是 Types as lenses, not schemas,类型只是导航辅助,不是强制机制,没有必填字段也没有校验。第二条挺关键,它意味着你不会因为某个字段没填而被工具拦住。

AI 是怎么接进去的

它内置了一个 MCP server,就在 mcp-server/ 目录里。提供了一套工具,search_notes 搜笔记、read_note 读单条、create_note 建新笔记、edit_note_frontmatter 改元信息,还有几个同类的。

使用方式不复杂。在 Status Bar 或者 Command Palette 里跑一下 MCP 注册,它会自动把自己写进 ~/.claude.json、~/.cursor/mcp.json 这些客户端的配置文件里,不用你手工编辑。

除了 MCP,应用内部还直接集成了一个 AI 面板。你在右侧栏切过去,就能直接对当前打开的笔记对话。支持的 Agent 有 Claude Code、Codex、OpenCode、Pi、Gemini 这些。

笔记正文与右侧 AI 面板并排

还有一点设计我看了好几遍才理清楚。当 Claude Code 通过 MCP 改了你的笔记,应用会自动检测文件操作,一旦出现 file modified 事件就触发 vault reload。也就是说你在界面上看到的,始终是磁盘上真实的那个版本。

技术栈和几个没做的取舍

它是用 Tauri v2 加 React 19 加 TypeScript 写的,后端是 Rust。这套组合是目前做跨平台桌面应用的主流方案之一,比 Electron 轻很多。

编辑器用的是 BlockNote,同时支持块式富文本编辑和原始 Markdown 模式,后者基于 CodeMirror 6。图表用 Mermaid,白板用 tldraw。都是当前工具链里比较靠谱的开源选择。

块编辑器的插入菜单

它也有几处明显的没做。搜索目前是基于关键词的 walkdir 文件扫描,没有语义搜索,也没有向量索引。这在日常用够了,但如果你真在意一万条笔记里语义相近的内容,现在这块要靠上面那些 AI 工具来补。

vault 的缓存策略倒是设计得比较细。它基于 git HEAD 做增量更新,不是每次全量重扫,缓存文件放在 ~/.laputa/cache/,跟 vault 目录分开放,不会在笔记目录里留一堆临时文件。

跟 Obsidian 比,差在取舍上

这两个没有好坏之分,只看合不合适自己。

Obsidian 最大的优势是东西少,它的插件生态能让你拼出一套完全自定义的工具链。但这同时是它的问题,上手门槛高,你得自己搞明白哪些插件值得装、怎么配,为了第一次用就顺手,往往要花好几个下午。我装了七十多个插件,这个代价我挺有体会。

Tolaria 走的是反面思路,它是 opinionated 的。vault 就是一个 git repo,笔记类型用 YAML frontmatter 里的 type 字段定义,左侧导航按类型和集合分组显示。开箱就用,不需要你先做一套配置决策。

所以选哪个看你是谁。喜欢自己一块一块砖搬起来的人,Obsidian 更合适。想要一个拿出来就能用、AI 友好、带 git 历史的笔记环境,Tolaria 简单很多。

装起来只有一条命令

macOS 上用 Homebrew 最省事。

brew install --cask tolaria

Windows 和 Linux 可以直接到 releases 页面下载安装包。Linux 需要先补两个系统依赖,WebKit2GTK 4.1 和 GTK 3,Debian 与 Ubuntu 上这样装。

sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev

这里有个容易漏的前提。捆绑的 MCP server 在 Linux 上运行的时候会去调用系统里的 node,所以如果你打算走外部 AI 工具那条流程,先把 Node 装上。

第一次打开时会提示你选择一个 vault,或者克隆官方的 getting started vault。后者可以直接 clone 下来。

git clone https://github.com/refactoringhq/tolaria-getting-started.git

那个入门仓库本身就是一个配好了示例类型和工作流程的模板,跟着跑一遍,大概就明白它在做什么了。

最后说我的判断

用下来它也有几个问题,简单提一下。搜索是纯关键词的,移动端不支持,如果你的笔记量很大,或者组织方式跟它预设的类型不太对得上,用起来会有点难受。

但这个项目的出发点很清楚,就是让一个「自己用、AI 也用得顺畅」的 Markdown 知识库更容易长期存在和扩大。它把 Files、Git、AI Agents 这三样串起来的那个方式,我目前还没看到有第二个工具这么做。

开源这个决策本身也很关键。许可证是 AGPL-3.0-or-later,代码全开放,有问题可以直接看源码、开 issue、提 PR。另外要提醒一句,AGPL 覆盖的是代码,Tolaria 这个名字和 logo 还另外受项目的商标政策约束,别把它当成可以随便用的品牌资产。

GitHub 地址是 https://github.com/refactoringhq/tolaria

文章目录
  1. 1. 先说它解决什么问题
  2. 2. 一个用 Claude Code 写出来的应用
  3. 3. 五条设计原则里,有三条在讲同一件事
  4. 4. AI 是怎么接进去的
  5. 5. 技术栈和几个没做的取舍
  6. 6. 跟 Obsidian 比,差在取舍上
  7. 7. 装起来只有一条命令
  8. 8. 最后说我的判断