[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1dh88r383mpu":3},{"code":4,"message":5,"data":6,"timestamp":46},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":27,"summary_md":28,"topic":29,"github_topics":32,"license":42,"homepage":43,"updated_at":44,"history":45},"Automattic\u002Fharper",9,"Offline, privacy-first grammar checker. Fast, open-source, Rust-powered","Rust",17093,769,491,1098,[16,22],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},44420586,"Harper: Offline, privacy-first grammar checker. Fast, open-source, Rust",4,0,"2025-06-30",{"id":23,"title":24,"points":25,"comments":20,"posted_at":26},48906147,"harper",2,"2026-07-14","面向写作者的离线英文语法检查器，用本地毫秒级检查替掉云端服务，兼顾速度与隐私。","## 解决什么问题\n\n靠写字吃饭的人一直要在两件事之间取舍：把稿子发给云端语法服务，还是自己肉眼校对。云端服务每改一版都要多一次网络往返，而且每一段文字都离开了你的机器。Harper 走的是另一条路：用 Rust 写的语法引擎在本地做检查，毫秒级出结果，同时提供语言服务器、Obsidian 插件、多个编辑器扩展和浏览器端 WebAssembly 版本。\n\n## 有什么不同\n\n最直接的对比对象是 Grammarly——闭源、云端、订阅制。开源一方是 LanguageTool，但它吃内存，还要下载体积庞大的 n-gram 数据集，普通文档检查也要好几秒。Harper 的赌注正好相反：规则集保持克制、引擎保持快、只支持英文，然后嵌入到你原本写作的地方。代价是规则引擎没有大模型兜底，会漏掉云端能发现的问题；Harper 的立场是少而准的建议好过多而错的建议。另一个区别在打包方式：同一套核心通过 `harper-ls` 进入编辑器、进入 Obsidian、通过 WebAssembly 进入浏览器，你不需要换一个写作软件才能用上检查。\n\n## 适合谁\n\n在意隐私和响应速度的写作者、学生、英语非母语者；以及宁愿在 Neovim、Helix、Zed、Emacs 里看到提示、也不想再开一个网页编辑器的开发者。不能把文本发给第三方服务器的团队也适合。如果你需要多语言支持，或者期待大模型那种整句重写、而不只是标出语法问题，那就不合适。\n\n## 上手成本\n\nApache-2.0 协议，商业使用和嵌入都没问题。安装方式取决于你用哪个集成：README 列出了 VS Code、Neovim、Helix、Emacs、Zed、Obsidian 和 `harper.js` 的文档，并指向 Crates.io 与 npm，没有给单一安装命令。主要成本在范围和成熟度——只支持英文，README 对性能测试方法和规则维护流程写得很薄，建议质量要靠自己试用判断。另外，虽然背后是 Automattic，但集成形态很多，各自都可能滞后。\n\n## 点评\n\n这不是周末项目：仓库已有 1000 多天历史，Apache-2.0，17k stars，最近还上了 Rust 周榜第 9，一周约新增 500 stars。但 Hacker News 上的声量很小，最好的一条帖子只有 4 分，说明关注度并不来自持续的公共讨论。这种「老仓库突然单周冲高」的模式，更像是成熟的代码库被重新发现，而不是新项目在证明自己。如果离线、低延迟的校对符合你的写作流程，花一个下午试试值得；如果要多语言或模型级改写，可以再等等。",{"slug":30,"name":31},"productivity","效率与系统工具",[33,34,35,36,37,38,39,40,41],"chrome-extension","developer-tools","english-language","grammar-checker","nodejs","react","rust","svelte","webassembly","Apache-2.0","https:\u002F\u002Fwritewithharper.com","2026-10-24T21:06:55Z",[],1792890739]