Harper 是什么?
Harper 是由 Automattic(WordPress 母公司)开源的离线英语语法检查器,使用 Rust 编写,目前 GitHub 上已有 12,000+ Stars,并且持续 trending。
它的诞生源于作者对现有语法检查工具的不满:
- Grammarly:价格昂贵,隐私问题严重(你写的所有内容都要发送到他们的服务器),而且建议常常缺乏上下文
- LanguageTool:虽然好用,但需要数 GB 内存和 ~16GB 的 n-gram 数据集,速度较慢
Harper 的定位是"just right"——快、轻、隐私优先。
为什么开发者需要 Harper?
| 特性 | Grammarly | LanguageTool | Harper |
|---|---|---|---|
| 运行方式 | 云端 | 本地/云端 | 纯本地 |
| 隐私 | ❌ 数据发往服务器 | ⚠️ 可选离线 | ✅ 完全离线 |
| 内存占用 | — | ~GB 级 | ~几十 MB |
| 速度 | 受网络延迟影响 | 中等 | 毫秒级 |
| 开源 | ❌ | ⚠️ 部分 | ✅ MIT |
| 编辑器集成 | 浏览器插件 | 插件 | LSP + 多插件 |
对开发者来说,Harper 最大的吸引力在于:
- 隐私安全:代码、API 文档、技术博客草稿不会离开你的机器
- 毫秒级响应:基于规则引擎,不依赖网络请求
- LSP 原生支持:通过
harper-ls可以集成到几乎所有支持 LSP 的编辑器 - Rust 性能:内存占用仅为 LanguageTool 的 1/50
安装 Harper
Harper 提供了多种使用方式,从浏览器到 IDE 全覆盖。
方式一:浏览器直接使用
最简单的体验方式——访问 writewithharper.com,页面通过 WebAssembly 在浏览器本地运行,无需注册、无需联网,粘贴文本即可检查。
方式二:安装 harper-ls(语言服务器)
harper-ls 是 Harper 的核心引擎,通过 LSP 协议为各种编辑器提供语法检查能力。
通过 cargo 安装(推荐)
cargo install harper-ls
安装完成后验证:
harper-ls --version
通过二进制下载
Harper 提供预编译的二进制文件,从 GitHub Releases 下载对应平台的可执行文件即可:
# Linux 示例
wget https://github.com/Automattic/harper/releases/latest/download/harper-ls-x86_64-unknown-linux-gnu.tar.gz
tar -xzf harper-ls-x86_64-unknown-linux-gnu.tar.gz
sudo mv harper-ls /usr/local/bin/
编辑器集成实战
VS Code
- 在 VS Code 扩展市场搜索
Harper - 安装
harper-ls插件 - 打开任意 Markdown 或纯文本文件,语法检查自动生效
// settings.json 可选配置
{
"harper-ls.dialect": "American",
"harper-ls.markdown.ignore": ["code", "inlineCode"]
}
Obsidian
Harper 对 Obsidian 有专门的插件支持:
- 在 Obsidian 的 Community Plugins 中搜索
Harper - 启用插件
- 在笔记编辑过程中,语法错误会以红色波浪线标出
对于中文开发者写英文技术文档(如 README、API 文档),这是非常实用的组合。
Neovim
通过 lspconfig 配置:
-- 使用 Mason 安装后配置
require('lspconfig').harper_ls.setup({
settings = {
["harper-ls"] = {
dialect = "American",
userDictPath = "" -- 可选:自定义词典路径
}
}
})
Helix
Harper 原生支持 Helix 编辑器,在 ~/.config/helix/languages.toml 中添加:
[[language]]
name = "markdown"
language-servers = ["harper-ls"]
Emacs / Zed
同样支持 LSP,参考 官方文档。
进阶用法
自定义方言
Harper 支持多种英语方言:
{
"dialect": "British" // American | British | Canadian | Australian | Indian
}
忽略特定区域
在 Markdown 文档中,你可以通过注释标记忽略某些段落:
<!-- harper: ignore -->
This is code-related text that shouldn't be checked.
<!-- harper: end -->
命令行检查(harper-cli)
如果你想在 CI/CD 流水线中集成语法检查,可以用 harper-cli:
# 安装
cargo install harper-cli
# 检查单个文件
harper-cli check README.md
# 检查目录下所有 Markdown 文件
harper-cli check docs/
# 输出 JSON 格式(方便集成到 CI)
harper-cli check --format json docs/ > report.json
示例输出:
README.md:42:5 - "their" should be "there"
README.md:87:12 - Missing article before "documentation"
在 GitHub Actions 中使用
name: Grammar Check
on: [push, pull_request]
jobs:
harper:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Harper
run: cargo install harper-cli
- name: Check docs
run: harper-cli check docs/ --format json > report.json
Harper vs LanguageTool 性能对比
| 指标 | Harper | LanguageTool |
|---|---|---|
| 启动时间 | < 1 秒 | 数秒(需加载 n-gram 数据) |
| 内存占用 | ~20-50 MB | ~1-4 GB |
| 1000 字文档检查 | < 10 ms | 2-5 秒 |
| 安装体积 | ~10 MB | ~16 GB(含数据) |
| 离线支持 | ✅ 完全离线 | ⚠️ 需额外配置 |
Harper 用 规则引擎 + 词典 的方式实现了极简架构,不依赖庞大的统计模型。这也意味着它的检查规则覆盖面不如 Grammarly 全面,但对于技术文档、博客、邮件等场景已经足够。
适合谁用?
✅ 推荐使用
- 英文技术博客作者:写文档时不用担心代码片段被上传到云端
- 非英语母语开发者:快速检查英文文档语法错误
- 注重隐私的用户:所有处理完全在本地完成
- CI/CD 流程:通过 harper-cli 自动检查文档质量
⚠️ 暂时不够
- 需要中文语法检查(目前仅支持英文)
- 需要深度语义分析和风格建议(Harper 基于规则,没有 AI 语义建议)
- 团队协作场景(暂无共享词典功能)
小结
Harper 是一个定位精准的开源语法检查工具:轻量、快速、隐私优先。它不会取代 Grammarly 在专业写作领域的地位,但对于开发者日常写文档、博客、邮件来说,已经绰绰有余。
关键信息速览:
| 项目 | 值 |
|---|---|
| GitHub | Automattic/harper |
| Stars | 12,000+ |
| 语言 | Rust |
| 许可证 | MIT |
| 支持语言 | 英语(多地区方言) |
| 编辑器支持 | VS Code / Obsidian / Neovim / Helix / Emacs / Zed |
| 官网 | writewithharper.com |
如果你厌倦了 Grammarly 的隐私问题,又觉得 LanguageTool 太重,Harper 值得一试。