写代码注释老被吐槽语法?试试这个毫秒级响应的离线英语语法检查工具 Harper
你肯定遇到过这种场面:写完一段代码注释,推上去,同事在 PR 下面回一句"English, please"。或者自己重读技术文档时,发现 teh、a couple of more 这种低级错误已经发布了好几天。语法检查工具不是没有,但要么贵、要么慢、要么把你的文字悄悄传到云端。今天要聊的 Harper,就是为解决这些糟心事而生的离线英语语法检查工具,而且它免费、开源、快得离谱。
先交代一个背景:一个被 Grammarly 和 LanguageTool 逼疯的开发者
Harper 的诞生故事挺朴素。作者自己常年被两类工具折磨:
Grammarly 贵,还"管得太多"——给出的建议经常脱离上下文,甚至直接是错的。更要命的是隐私:你写的一切都要发到它的服务器上,即便官方承诺不卖数据,谁也无法保证这些内容不被拿去训练大模型。再加上网络请求的往返延迟,改一段文字要等半天。
LanguageTool 倒是开源,但想吃下它得先掂量自己的内存——官方推荐的 n-gram 数据集有大约 16GB,跑起来动不动吃掉几个 G 的内存,lint 一篇中等长度的文档要等好几秒。
于是作者决定自己写一个:检查毫秒级完成、内存占用不到 LanguageTool 的五十分之一、完全本地运行不出网。这就是 Harper。
它凭什么是"快"的?聊聊 Rust 和那套聪明的检查架构
很多人一听"语法检查器"就以为它要联网调大模型,其实 Harper 走的是另一条路:纯本地规则引擎 + Rust 原生性能。
项目核心 harper-core 用 Rust 编写,整体可以编译成 WebAssembly,小到能直接在浏览器里跑(官方网页版就是这么干的)。Rust 带来的收益很直接:内存占用极小,lint 一篇文档只需几毫秒,你敲字的间隙结果就出来了。
架构上也很有讲究。检查逻辑被拆成两大类:Linter 和更细化的 PatternLinter,后者的职责更单一、更容易组合和扩展。
规则库本身是亮点。项目内置了 700 多条检查规则,而且很多规则用自定义的 weir 描述语言写成,一条规则就是一个文件,普通人也能看懂。比如 harper-core/src/linting/weir_rules/ 下有个 ACoupleMore.weir,内容大致是:
expr main (a couple of more)
let message "The correct wording is `a couple more`, without the `of`."
let becomes "a couple more"
意思很直白:把 a couple of more 纠正成 a couple more。想新增规则,照着这个格式写一个文件就行,不需要碰核心逻辑。这就是它能覆盖大量常见错误、又容易长期维护的原因。
别急着装,先看看它适合谁、不适合谁
适合用的人:
- 写代码注释、PR 描述、commit message 的开发者,尤其是非英语母语者
- 需要经常在 GitHub、WordPress、Gmail 这类网页上输出英文内容的人
- 对隐私敏感,写的内容涉及机密或不想让第三方看见的文档
- 用 Obsidian 记笔记、希望写作过程顺带纠错的知识工作者
不适合用的人:
- 需要完整润色、改写、生成风格化长文的用户——Harper 定位是纠错,不是 AI 写作助手
- 只写中文、完全用不到英文的场景
- 追求"联网大模型式"语感建议、能接受数据上云的朋友
说白了,Harper 是替你"查漏"的,不是替你"代笔"的。搞清楚这一点,期望值就对上了。
装好、跑起来、玩出花样:一条实在的上手路径
第一步:挑一个趁手的入口
Harper 的生态覆盖得很全,你大概率能找到已经在用的平台:
- VS Code / Neovim / Helix / Emacs / Zed:装对应扩展,注释、文档随手可查
- Chrome 扩展:GitHub、Gmail、Reddit 这些网页的输入框自动生效
- 桌面客户端:
harper-desktop,适合不依赖编辑器的独立写作 - Obsidian 插件:笔记边写边改
- WordPress 插件:发博客前先扫一遍
第二步:让它在 GitHub 评论里"自动上岗"
把 Chrome 扩展装上之后,最直观的体验发生在 GitHub:你在评论框里打字,它实时标红拼写和语法问题,光标挪过去就有修正建议。从此 PR 交流里少一句"Sorry for my English"。
桌面版还能看到更完整的检查面板:左边是正文,右边是问题列表,点一下就能采纳建议或忽略。
第三步:按你的脾气调规则
700 多条规则不可能条条都合你胃口,好在每条都能单独开关。在 Chrome 扩展的选项页或桌面版设置里,可以按主题浏览规则分组(专有名词、首字母缩写、复合词……),也可以用搜索框直接定位某一条。
写 WordPress 博客的话,插件侧边栏会逐条给出替换建议,页面底部还特意强调:"你的数据在你点 Publish 之前不会离开站点"——这大概就是离线工具最好的广告语。
几个常见疑问,一并说清
它会联网吗? 不会。所有检查都在本地完成,断网也能用。这也是它叫"隐私优先"的原因。
中文支持吗? 目前只支持英文,但核心架构预留了扩展其他语言的可能,社区欢迎相关贡献。
开源吗?怎么拿到源码? 完全开源免费。想自己部署或研究实现,可以 git clone https://gitcode.com/GitHub_Trending/har/harper 拉取整个仓库,核心检查逻辑都在 harper-core/src/ 下。
它会不会像某些工具那样"越改越糟"? 规则是人工可读、可审计的(就是前面那种 weir 文件),每条建议都有明确的修正对象,你可以随时禁用不喜欢的规则,把主动权攥在自己手里。
下一步,去把第一条波浪线消掉
Harper 的哲学很朴素:语法检查应该快、准、不偷看你的文档。它不打算取代你的写作,只负责在你敲下每一个字符时,轻声提醒一句"这里不对"。挑一个你天天在用的平台装上它,下一次同事再说"English, please"的时候,你可以直接回他一个截图。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考







