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 最大的吸引力在於:

  1. 隱私安全:程式碼、API 文件、技術部落格草稿不會離開你的機器
  2. 毫秒級回應:基於規則引擎,不依賴網路請求
  3. LSP 原生支援:透過 harper-ls 可以整合到幾乎所有支援 LSP 的編輯器
  4. 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

  1. 在 VS Code 擴充功能市場搜尋 Harper
  2. 安裝 harper-ls 外掛程式
  3. 開啟任意 Markdown 或純文字檔案,語法檢查自動生效
// settings.json 可選配置
{
  "harper-ls.dialect": "American",
  "harper-ls.markdown.ignore": ["code", "inlineCode"]
}

Obsidian

Harper 對 Obsidian 有專門的外掛支援:

  1. 在 Obsidian 的 Community Plugins 中搜尋 Harper
  2. 啟用外掛
  3. 在筆記編輯過程中,語法錯誤會以紅色波浪線標示

對於中文開發者撰寫英文技術文件(如 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 值得一試。