Vale:开源文档Linter,用代码质量思维自动化检查拼写与术语
这次我们来看一个在很多文档团队里非常实用、但在中文技术社区讨论度还不算高的工具:Vale。它不是什么新出的 AI 写作助手,而是一个开源的、本地运行的 Linter,专门面向“散文”(Prose)——也就是我们每天在写的 README、产品文档、博客文章、接口说明、技术教程这类文本。换个角度理解:ESLint 负责检查 JavaScript 代码的语法和风格,Vale 做的就是检查整篇文档里的拼写、术语一致性、被动语态、句子长度、标点风格这些语言层和写作风格层的问题。如果你维护开源项目,每次 PR 里文档部分都要靠人肉评审拼写和术语,那 Vale 完全可以把这件事变成自动化、可重复执行的检查。
这篇文章会按“先看能力、再讲部署、最后验证效果”的顺序把 Vale 讲透。内容包括 Vale 的核心功能、系统要求、安装步骤、vale.ini 配置、样式规则编写、CLI 批量检查、API 服务调用、VS Code 集成、GitHub Actions 集成,以及常见问题排查。适合这几类读者:技术文档工程师、开源项目维护者、经常写 Markdown/restructuredText 的开发者,以及想在团队里建立文档规范但不想全靠“人工提醒”的质量负责人。如果你最近刚被文档里的术语混用和拼写错误折腾过,这篇文章可以直接收藏。
1. Vale 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | 开源文档/散文 Linter,定位类似 ESLint,但针对文本写作 |
| 项目来源 | Errata AI 维护的开源项目,源码托管在 GitHub |
| 主要功能 | 拼写检查、术语统一、被动语态提示、句子长度检查、标点/大小写风格检查、自定义词法规则 |
| 支持文件格式 | Markdown、reStructuredText、AsciiDoc、HTML、LaTeX 等,具体以官方文档为准 |
| 运行方式 | 单文件二进制 CLI、本地 API 服务、编辑器插件 |
| 硬件要求 | 纯 CPU 工具,无 GPU、无显存需求 |
| 支持平台 | macOS、Windows、Linux,均有预编译二进制 |
| 启动方式 | 命令行 / API 服务 / 编辑器集成,无需常驻 WebUI |
| 是否支持 API | 支持,CLI 模式下可启动本地服务并提供 HTTP 检查接口 |
| 是否支持批量任务 | 支持,可检查整个目录,可用 glob 过滤文件 |
| 适合场景 | 本地文档质量检查、批量仓库扫描、CI 文档门禁、文本质量控制 |
从这张表能明显看出,Vale 和那些需要下载几个 G 模型、还要纠结显卡显存大小的 AI 项目完全不同。它没有模型权重,不依赖 GPU,安装包非常小,核心就一个二进制文件。正因为是这个定位,它在 CI、pre-commit、编辑器集成的场景里非常容易落地。你不需要给它准备专门的推理服务器,也不需要担心显存不够,普通办公电脑就能跑。接下来的章节,我会从环境准备开始,一步步把整个检查链路拉通。
2. Vale 适用场景与使用边界
Vale 最适合解决的场景,我总结成四类。第一类是团队文档规范落地:在代码仓库里把“不要用被动语态”“产品名称必须统一叫 XXX”“不要出现容易产生歧义的模糊词”写进样式规则,然后在 CI 里强制执行,PR 提交文档时自动把关。第二类是文档质量基线建设:老项目里可能有几千个文档,先让 Vale 扫一遍,把问题数量统计出来,再逐步清零,把“文档质量”变成一个可量化的指标。第三类是本地写作辅助:写 Markdown 的时候边写边检查,不用等到“写完再找同事看一遍”,Vale 直接告诉你哪一行有什么问题。第四类是发布前检查:在生成 HTML、PDF 或静态站之前,先把术语、拼写、大小写问题拦下来,避免带病上线。
但也要说清楚 Vale 不适合什么。它不会帮你改句子,也不会理解你这段话想表达什么意思,它只根据你定义的词法规则去匹配文本。所以它更像是一个“纪律检查员”,而不是“写作教练”。如果团队本身没有明确的文档写作规范,Vale 上手的价值会打折扣,因为你得先花时间提炼规则。另外,Vale 的默认生态主要面向英文,社区里流行的 Microsoft、Write Good 这类规则集对英文写作做了大量优化;中文场景需要自己写样式规则,这对习惯“开箱即用”的用户来说有一定门槛。写中文规则时要注意,Vale 底层使用 Go 的 RE2 正则引擎,不支持 lookahead/lookbehind 这类 PCRE 语法。
使用边界和合规方面有一点可以放心:Vale 默认在本地运行,文档内容不会上传到第三方服务,适合对隐私和保密要求较高的内部技术文档。如果你在 CI 里使用现成的 GitHub Action,它运行在 GitHub 托管 Runner 上,私密仓库的文档内容会进入 GitHub 环境,是否可接受需要自己评估。还有,社区下载的样式规则有自己的开源许可证,使用前看下 LICENSE,特别是要商用时。总的来说,Vale 是本地优先、规则驱动、可脚本化的质检工具,适合有规范维护能力的团队长期使用。
3. Vale 环境准备与前置条件
Vale 是 Go 编译出来的单文件程序,环境要求非常低。操作系统方面,Windows 10/11、macOS、主流 Linux 发行版都能运行。内存方面,检查单文件文档时,进程加样式规则加载通常只需要几十到几百 MB 量级;大型仓库批量检查时,比如一次性扫几千个文件,内存占用会明显升高,但普通 8GB/16GB 内存的开发机足够应付。它不需要 GPU,不需要 CUDA,也不占显存,更不需要专门的模型服务器。这算是它在文档工程化里最大的优势:可以非常轻量地嵌入任何现有工作流。
获取 Vale 有两种常见方式。第一种是从 GitHub Releases 下载对应平台的预编译压缩包,解压后把 vale 可执行文件放进 PATH。第二种是用系统包管理器安