开发团队写文档这件事,表面看起来简单,真正进入工程化阶段却很容易分裂。

  • 一部分内容是 Markdown 正文;
  • 一部分内容是 Quarto 或 R Markdown 里的代码块和元数据;
  • 一部分需求是排版统一;
  • 另一部分需求是编辑器里要有诊断、补全、跳转和 code action;
  • 真到 CI 里,又希望它能像 ruffbiomeprettier 一样稳定跑起来。

问题在于,这几类能力往往不在同一个工具里。

很多 Markdown 工具擅长“渲染”或者“简单格式化”,但对带有 YAML frontmatter、引用、表格、代码块、文献引用和 Quarto 扩展语法的文档工程来说,通常还差一截。

今天想记下的 jolars/panache,就在补这块空白。它不是只想做一个 Markdown formatter,而是要把 language server、formatter 和 linter 合成一套统一工具链,服务对象直接指向 Markdown、Quarto 和 R Markdown

按 GitHub 仓库页面、release 页面和 commits feed 在 2026-06-24 的公开信息,这个仓库当前约有 177 stars9 forks,主要语言是 Rust,仓库创建于 2025-09-03,最近一次公开提交时间是 2026-06-24。项目采用 MIT 许可证,最新 release 是 v2.58.0,发布时间为 2026-06-23

项目概览

属性详情
仓库jolars/panache
定位Markdown / Quarto / R Markdown 的 language server、formatter 和 linter
Stars177
Forks9
主要语言Rust
创建时间2025-09-03
最近公开提交2026-06-24
LicenseMIT
最新版本v2.58.0
版本日期2026-06-23
项目主页panache.bz

它在补的不是“排版”单点,而是整条文档开发链路

Panache 在 README 里的自我描述很直接:它是一个 language server、formatter 和 linter,而且不是面向普通纯文本 Markdown,而是明确支持:

  • Markdown;
  • Quarto;
  • R Markdown。

这件事的价值,在文档仓库规模变大之后会特别明显。

因为这类文档并不只是写几段说明文字,它们经常同时包含:

  • frontmatter;
  • 引用和脚注;
  • 表格;
  • 代码块;
  • 可执行分析内容;
  • 多种外部格式化和 lint 规则。

如果工具只擅长其中一部分,你最后还是会回到“编辑器一套、CLI 一套、CI 再拼一套”的状态。Panache 的路线则是把这几块收拢成一个可重复使用的入口。

最关键的点,是它把 LSP 和 CLI 当成同一产品,而不是两个松散附件

README 里写得很清楚,Panache 的设计目标包括:

  • 完整的 LSP 实现;
  • 独立 CLI,可同时做 formatting 和 linting;
  • 支持 Quarto、Pandoc、R Markdown 语法;
  • 基于 lossless CST 的解析;
  • 幂等格式化;
  • 可配置但不过度放任的默认风格;
  • 可在代码块上调用外部 formatter 和 linter。

我觉得这比“支持 VS Code”更重要。

很多文档工具的问题不在于能不能装进编辑器,而在于编辑器体验和 CI 行为经常不是同一套逻辑。你本地看到的结果、提交前跑的命令、CI 最终检查的输出,可能来自不同实现。

Panache 试图把这些入口统一在一个核心里。这样你在编辑器里看到的诊断、在命令行里执行的格式化、在流水线里跑的检查,更有机会保持一致。

对带代码块的技术文档来说,支持外部 formatter / linter 很重要

我最在意的一点,是 Panache 不是把文档当成“纯文字文件”处理。

README 明确提到它支持对代码块调用外部 formatter 和 linter,而且内置了常见语言和工具的 preset。这个设计很务实,因为现实里的技术文档通常长这样:

  • 正文是 Markdown;
  • 示例代码可能是 Python、R、JavaScript、Bash、YAML;
  • 有些代码块需要格式化,有些还要做 lint;
  • 你不希望文档主工具完全重造每种语言的规则。

换句话说,Panache 的思路更像“文档层的总调度器”,而不是试图自己吞掉所有代码语言生态。

这让它更适合真正的文档工程场景:课程材料、研究报告、技术博客、数据分析说明、团队 handbook、含大量示例代码的知识库,都可能受益。

lossless CST + idempotent formatting,说明它重视可审计性

Panache 在设计目标里强调了两个词:

  • lossless CST-based parsing
  • idempotent formatting

这两个点看起来偏实现细节,但其实非常关键。

文档格式化工具一旦会“吃信息”或者每次运行结果不稳定,就很难进入团队级工作流。因为:

  • diff 会变脏;
  • review 成本会上升;
  • 很难放心把它接入 pre-commit 或 CI;
  • 作者会害怕工具偷偷改坏文档结构。

Panache 把这两个目标直接写进 README,至少说明它不是把“能跑通 demo”当成结束,而是在往稳定的工程工具方向收敛。

安装入口很多,说明作者在认真做分发

另一个让我觉得它已经过了玩具阶段的信号,是安装方式覆盖得比较全。

README 里能看到:

  • Homebrew;
  • crates.io;
  • 预编译二进制;
  • macOS / Linux 安装脚本;
  • Windows PowerShell 安装脚本;
  • AUR;
  • NixOS;
  • PyPI;
  • npm。

这不是锦上添花,而是直接决定工具能不能进入真实团队。

一个只靠 cargo install 的 Rust 工具,往往只能吸引已经在 Rust 生态里的人;但如果你希望文档作者、数据分析同学、技术写作者、平台工程师都能装起来,分发路径就必须足够宽。Panache 在这点上明显想得更远。

它适合什么团队

从目前公开信息看,我觉得 Panache 特别适合下面这些场景:

  • 团队文档大量使用 Markdown,但已经不满足于最基础的格式化;
  • 内容里有 Quarto 或 R Markdown,包含 frontmatter、引用、表格和代码块;
  • 希望编辑器体验和 CI 检查共用同一套核心规则;
  • 想给文档仓库引入更稳定的 lint / format 流程;
  • 希望代码块仍然复用各语言已有的 formatter / linter,而不是重新发明一遍。

尤其是做技术写作、研究文档、分析报告、课程材料或知识库工程的人,应该会很容易理解它的价值。

它的边界也很明确

当然,Panache 也不是“所有文档问题的总答案”。

从项目定位看,它更偏向:

  • 面向作者和仓库维护者的文档开发工具;
  • 面向结构化技术文档,而不是所见即所得写作器;
  • 面向工程工作流,而不是内容发布平台。

如果你的核心需求是:

  • 团队协作式在线编辑;
  • CMS 发布流程;
  • 非技术作者优先的可视化写作;
  • 文档站点托管和审校后台;

那它不是直接答案。

但如果你真正要解决的是“技术文档仓库缺一套像代码仓库那样稳定的语言服务和质量门禁”,Panache 的方向就很对。

为什么值得继续关注

我觉得这个项目有意思,不只是因为它用了 Rust,也不只是因为它支持 Quarto。

真正值得注意的是,它抓住了一个长期被低估的问题:文档工程经常已经很复杂,却还在使用明显低于代码工程成熟度的工具链

Panache 想做的事情,本质上是把这条链补齐:

  • 编辑器里的语言服务;
  • 命令行里的格式化;
  • 命令行里的 lint;
  • 代码块和正文之间的协同;
  • 本地作者体验和 CI 质量门禁的一致性。

只要你写的不是“随手记两段 Markdown”,而是一批需要长期维护、可审计、可协作的技术文档,这条路线就很有价值。

小结

jolars/panache 不只是想把 Markdown 排得更整齐,而是想让 Markdown、Quarto 和 R Markdown 这类技术文档,也拥有更接近现代代码工具链的开发体验。

如果你的仓库里已经有越来越多“带结构、带代码、带规则”的文档内容,这个项目很值得放进观察列表。