pi-harper-grammar

内容来源:README.md(说明文档) · 原始地址 · 查看安装指南

原始内容

pi-harper-grammar

Type it right, make the agent guess less.

CI npm version npm downloads license

Live grammar checking of the chat input box in Pi and OMP (Oh My Pi), powered by Harper.

It lints what you are about to send — the text in the input editor — and shows issues (with fixes) in a widget just below the editor. It does not read or check your project files, and it never sends anything to the model to do the check: everything runs locally through harper-cli.

pi-harper-grammar demo

Prerequisite: Harper

This extension shells out to the harper-cli binary. Install it first:

harper-cli must be on your PATH (or point $HARPER_CLI at it). If it's missing, the extension shows a one-line install hint instead of failing silently.

Install

# Pi
pi install npm:pi-harper-grammar

# OMP (Oh My Pi)
omp plugin install npm:pi-harper-grammar

Or straight from git without npm:

pi install git:github.com/LoneExile/pi-harper-grammar

Restart the agent (or open a new session) after installing.

Usage

Just type. As soon as your input is stable for a moment, Harper checks it and lists any issues below the editor. The widget clears when the input is empty, corrected, or a slash command.

  • alt+g — apply Harper's suggested fixes to the current input, in place.
  • /grammar — toggle the live checker on/off.

alt+g applies the issues Harper can concretely replace (spelling, agreement, a/an, punctuation, etc.). A lint with no replacement suggestion is left for you to fix by hand — the alt+g to fix hint appears only when something is auto-fixable.

Configuration

  • $HARPER_CLI — absolute path to the harper-cli binary, if it isn't on PATH.
  • User dictionary — Harper reads a per-user dictionary (one word per line). Its default location is printed by harper-cli lint --help (--user-dict-path). Add terms there to stop them being flagged.

Tunables live at the top of extensions/harper-grammar.ts:

  • POLL_MS — how often the editor is polled (debounce cadence).
  • MAX_LINES — how many issues are shown at once.

How it works

There is no per-keystroke editor event, so the extension polls ctx.ui.getEditorText() on a timer and runs harper-cli once the text has been stable across a tick (a lightweight debounce). Results are parsed from harper-cli lint --format json and rendered via ctx.ui.setWidget(...) in a belowEditor widget. Warm harper-cli runs in well under a second, and a check only fires when the text actually changes.

This checks your input before you send it. It does not grammar-check the assistant's replies.

License

MIT — see LICENSE.