Umgekehrtes T9 für LLMs. Kostenloser, quelloffener CLI-Proxy-Prompt-Kompressor für deine KI-Prompts und Agents.
English · Español · Français · Deutsch · 日本語 · Українська
$ exprompt 'Actually I think you should really check if the API returns correct JSON'
→ chk if the API rtrns crct JSON
███████████░░░░░░░░░ 56% saved · 31 chars · 2 passes · <1ms
✓ copied to clipboard
Das Ergebnis liegt in der Zwischenablage und ist bereit zum Einfügen in ChatGPT, Claude oder anderswo.
Ein winziges CLI-Werkzeug, das KI-Prompts um 25–50 % verkleinert, bevor sie das Modell erreichen. Es entfernt Füllwörter, ersetzt häufige Wörter durch Kurzformen und schützt technische Begriffe (API, JSON, camelCase, func(), Zahlen, Dateinamen), sodass sie nie verändert werden.
| Rein lokal | Kein Modell läuft, keine Netzwerkaufrufe, keine Daten verlassen den Rechner. Text rein, Text raus. |
| Deterministisch | Wörterbuchgetrieben. Dieselbe Eingabe ergibt immer dieselbe Ausgabe. |
| Kombinierbar | Filter pro Aufruf umschalten oder Voreinstellungen mit exprompt config set speichern. |
| Winzig | Ein einziges statisches Go-Binary. Verarbeitet jeden realistischen Prompt in unter 1 ms. |
| Offen | MIT-lizenziert; jede Transformation liegt in lesbaren JSON-Dateien, die du forken oder erweitern kannst. |
Kein Ziel: semantisches Umschreiben (kein LLM verändert deinen Text), Übersetzung oder Proxy-Funktion.
- Niedrigere API-Rechnungen. Jedes Token kostet Geld. eXprompt schneidet ein Drittel der Eingabe weg, ohne die Modellantwort zu verändern.
- Mehr Platz im Kontextfenster. Gleiches Budget, mehr Signal. Top für lange Chats, Code-Reviews und RAG.
- Schnellere Prompts. Kleinerer Text reist schneller übers Netz und wird auf Modellseite schneller vorausgefüllt.
- Ein Befehl, kein Lock-in. Funktioniert mit jedem LLM (ChatGPT, Claude, Gemini, Llama …), weil die Ausgabe einfacher Text ist.
- Unauffällig. Einmal an Claude Code hängen — und vergessen, dass es existiert.
Eine feste, deterministische Kette läuft über den Text. Sie wird vollständig erneut ausgeführt, bis sich die Ausgabe nicht mehr ändert (maximal 3 Durchläufe), damit das Entfernen einzelner Wörter Mehrwort-Phrasen wieder zusammenfügen kann, die ein zweiter Durchlauf dann erkennt.
flowchart TD
Input([Dein Prompt]) --> P[<b>Anchors.Protect</b><br/>schützt func, GROßBUCHSTABEN,<br/>Dateinamen, camelCase,<br/>Zahlen → §A0 §A1 …]
P --> Punct[<b>Interpunktion</b><br/>entfernt , . ! ? ; : ' "]
Punct --> AbbP[<b>Abkürzungen.Phrasen</b><br/>mehrwortig, auf dem<br/>ORIGINALTEXT<br/><i>that is → i.e.</i>]
AbbP --> Fil[<b>Füllwörter</b><br/>Phrasen → Wörter → Phrasen erneut<br/>+ Pronomen-Bereinigung]
Fil --> AbbW[<b>Abkürzungen.Wörter</b><br/>einzelne Wörter nach Füllwörtern<br/><i>you→u, should→shld, and→&</i>]
AbbW --> Vow[<b>Vokale</b><br/>BETA, deaktiviert]
Vow --> Rest[<b>Anchors.Restore</b><br/>§A0 → Original]
Rest --> Orph[<b>"I"-Verwaisten-Bereinigung</b><br/><i>I tht the X → the X</i>]
Orph --> WS[<b>Whitespace-Komprimierung</b>]
WS --> Conv{Gleich wie<br/>letzter Durchlauf?}
Conv -- nein, geändert --> P
Conv -- ja, konvergiert --> Out([Komprimierter Prompt])
Warum die Schleife wichtig ist: bei "I honestly think that the createUserTable() function should be documented" ist die Phrase "I think that" im ersten Durchlauf nicht zusammenhängend (das Wort "honestly" steht dazwischen). Durchlauf 1 entfernt "honestly". Durchlauf 2 erkennt jetzt "I think that" als zusammenhängende Füllphrase und entfernt sie. Durchlauf 3 bestätigt: keine Änderungen mehr — fertig.
Ziel: exprompt läuft aus jedem Verzeichnis.
brew install bladysh/tap/exprompt
exprompt -vAktualisieren: brew upgrade exprompt. Entfernen: brew uninstall exprompt.
scoop bucket add bladysh https://github.com/bladysh/scoop-bucket
scoop install exprompt
exprompt -vAktualisieren: scoop update exprompt. Entfernen: scoop uninstall exprompt.
Lade das passende Archiv von der Release-Seite, entpacke es und lege exprompt irgendwo in deinem PATH ab.
git clone https://github.com/bladysh/exprompt.git
cd exprompt
make install # kopiert nach /usr/local/bin/ (fragt nach sudo)
exprompt -v
⚠️ Setze den Prompt immer in Anführungszeichen. Einfache Anführungszeichen sind am sichersten — sonst interpretiert die Shell( ) $ ! "schon vorexprompt.
exprompt 'dein Prompt hier' # Standard: komprimieren
echo 'dein Prompt' | exprompt # aus stdin lesen
exprompt --stdin -q --no-copy < prompt.txt
exprompt '...' --no-copy # Zwischenablage nicht anfassen
result=$(exprompt '...' -q) # komprimierten Text in Variable
exprompt '...' --disable fillers # einen Filter deaktivierencd dein-projekt
exprompt hook claude # schreibt einen UserPromptSubmit-Hook in .claude/settings.jsonAb jetzt wird jeder Prompt, den du in diesem Verzeichnis an Claude Code schickst, zuerst komprimiert. Der Hook speichert den absoluten Pfad zur Binary und funktioniert daher unabhängig vom PATH. Entfernen: exprompt hook remove. Status: exprompt hook status.
pkg/exprompt ist ein öffentliches Go-Paket — du kannst die Pipeline direkt aus deinem Code nutzen:
go get github.com/bladysh/expromptimport "github.com/bladysh/exprompt/pkg/exprompt"
p := exprompt.NewPipeline("en")
r, _ := p.Compress("Actually you should test the API")
fmt.Println(r.Text) // "test the API"
fmt.Println(r.Savings) // 0.42 (Anteil 0.0–1.0)
fmt.Println(r.Passes) // 2 (tatsächlich gelaufene Durchläufe)Lauffähige Beispiele in examples/.
Die ausführlichen Abschnitte — vollständige Konfiguration, Vokal-Filter (BETA), savings-Befehl, Sicherheit, Projektaufbau und Beitragsleitfaden — stehen im englischen README.
MIT — vollständig Open Source, ohne Bedingungen.
Unsere englischen Füllwort- und Hedge-Wörterbücher sind aus den MIT-lizenzierten Wortlisten von Titus Wormer hervorgegangen. Wir haben sie seither für die Prompt-Kompression stark erweitert, kuratiert und neu organisiert — aber die ursprünglichen Repos waren das Saatkorn, das dieses Projekt möglich gemacht hat. Ein großes Dankeschön:
- words/fillers — gängige Füllwörter
- words/hedges — abschwächende Phrasen
Die Original-MIT-Lizenztexte (für die Einträge, die wir übernommen haben) stehen in pkg/filters/dictionaries/README.md neben den jeweiligen Daten.
Gebaut mit Go · Für alle, die zu höflich mit ihrem LLM reden.