Harper 是什麼?
Harper 是由 Automattic(WordPress 母公司)開源的離線英語語法檢查器,使用 Rust 編寫,目前在 GitHub 上已有 12,000+ Stars,並且持續登上趨勢榜。
它的誕生源於作者對現有語法檢查工具的不滿:
- 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 值得一試。