blog.dopana

Back

Grammarly 很贵,会把你的所有写作内容发送到他们的服务器,而且常常给出缺乏上下文甚至完全错误的建议。LanguageTool 能用,但它需要几千兆字节的 RAM 和约 16GB 的 n-gram 数据集——检查一份中等规模的文档都要好几秒。

Harper 就是为了解决所有这些问题而诞生的。它是一款完全离线、隐私优先的语法检查器,可以在毫秒级检查文档,内存占用不到 LanguageTool 的 1/50,甚至小到可以通过 WebAssembly 运行。

Harper 是什么?#

Harper 是由 Automattic 用 Rust 构建的开源英语语法检查器。它的设计理念很简单:应该恰到好处——足够快,永远不会打断你的工作流;足够私密,你的文字永远不会离开你的设备;足够小,可以在任何地方运行。

为什么选择 Harper?#

极速#

Harper 平均约 10 毫秒即可检查完一份文档,而云端方案通常需要约 400ms–4000ms。检查速度如此重要,以至于该项目将”检查时间长”视为 bug。

隐私优先 & 完全离线#

零遥测。零云端传输。一切都在你的设备上本地运行。这使得 Harper 非常适合处理无法发送到第三方服务器的敏感文档的记者、法律专业人士和企业。

极小的内存占用#

Harper 的内存占用不到 LanguageTool 的 1/50——不需要千兆字节的 RAM,也不需要下载 16GB 的 n-gram 数据集。

支持 WebAssembly#

Harper 小到可以编译为 WebAssembly,因此它可以在 Web 浏览器和浏览器扩展中运行——无需任何服务器,随处进行语法检查。

语言支持#

英语方言#

Harper 支持多种英语方言:美式、英式、加拿大式、澳大利亚式和印度式英语。

宿主语言(注释与文档)#

语法引擎检查英语,但 harper-ls 可以解析和检查数十种编程语言和标记语言的注释与文档:

  • 标记语言: Markdown、AsciiDoc、Org Mode、LaTeX/TeX、HTML、Email/纯文本
  • 编程语言(注释): C、C++、C#、Go、Rust、Python、JavaScript、TypeScript、Java、Ruby、PHP、Swift、Kotlin、Lua、Bash/Shell、Haskell、Scala、Zig、TOML、YAML 等

安装#

# macOS / Linux
brew install harper

# Windows
scoop install harper

# Arch Linux
sudo pacman -S harper

# Nix
nix shell 'nixpkgs#harper'

# Rust
cargo install harper-ls --locked
bash

编辑器集成#

Harper 拥有官方插件:Visual Studio Code、Neovim、Helix、Emacs、Obsidian、Zed、Sublime Text,以及 Chrome 和 Firefox 浏览器扩展。

架构#

Harper 单体仓库有三个主要组件:

组件角色
harper-core核心 Rust 库——对文本进行分词、解析、分析和检查
harper-ls将核心引擎连接到编辑器和 IDE 的 Language Server Protocol (LSP) 服务器
harper.js / harper-wasm通过 WebAssembly 为浏览器和 Node.js 打包引擎的 JS/TS 绑定

harper-core 流水线#

  1. Document — 结构化的文本表示
  2. Parser — 将英语和宿主语言(如 Markdown)词法化为 Token 流
  3. Linter — 检查文档并产生错误 Lint 的 trait

主要功能#

细粒度词典#

支持用户级、工作区级、文件本地级和内置静态词典——你可以在每个层级管理自己的词汇表。

代码操作与快速修复#

内置的 IDE 代码操作让你可以:用建议替换错误、忽略当前会话的 lint、将单词添加到自定义词典。

注释忽略#

Harper 尊重 // harper:ignorespellchecker:ignore 等注释跳过标签,因此可以与 CSpell 等工具和平共处。

通过 Weir 自定义规则#

使用 Weir(Harper 的自定义表达式语言)编写你自己的语法和风格规则。组织可以将规则打包为 Weirpack(压缩的 .weir 文件),以强制执行品牌命名约定、专有术语和团队特定的写作规范。

使用场景#

注重隐私的写作 — 处理敏感数据、无法将文档发送到云端语法检查器的记者、法务团队和企业。

开发者文档 — 直接在 IDE 中编写干净的 README、代码注释和 Markdown 文档,即时获得反馈。

企业风格指南 — 使用自定义 Weir 规则自动强制执行专有术语和品牌约定。

网页端检查 — WebAssembly 构建意味着语法检查可以在浏览器和扩展中离线运行,无需服务器。

总结#

Harper 集语法检查器应有的优点于一身:快速、私密、开源。无论你是编写文档的开发者、保护消息来源的记者,还是维护品牌声音的企业,它都是一款恰到好处的语法检查器。

Rust 驱动、支持 WebAssembly、Apache 2.0 许可、完全离线——Harper 是一款尊重你隐私和时间的现代语法检查器。

参考资料#