Skip to content

Latest commit

 

History

History
201 lines (131 loc) · 7.89 KB

File metadata and controls

201 lines (131 loc) · 7.89 KB
eXprompt

eXprompt

Umgekehrtes T9 für LLMs. Kostenloser, quelloffener CLI-Proxy-Prompt-Kompressor für deine KI-Prompts und Agents.

Pure Go No ML No network MIT licensed

English · Español · Français · Deutsch · 日本語 · Українська


In einer Sekunde gezeigt

$ 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.


Was eXprompt ist

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.


Warum du das wollen könntest

  • 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.

Wie es funktioniert

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 , . ! ? ; : ' &quot;]
    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→&amp;</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])
Loading

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.


Installation

Ziel: exprompt läuft aus jedem Verzeichnis.

macOS / Linux — Homebrew (empfohlen)

brew install bladysh/tap/exprompt
exprompt -v

Aktualisieren: brew upgrade exprompt. Entfernen: brew uninstall exprompt.

Windows — Scoop (empfohlen)

scoop bucket add bladysh https://github.com/bladysh/scoop-bucket
scoop install exprompt
exprompt -v

Aktualisieren: scoop update exprompt. Entfernen: scoop uninstall exprompt.

Vorgefertigte Binaries

Lade das passende Archiv von der Release-Seite, entpacke es und lege exprompt irgendwo in deinem PATH ab.

Aus dem Quellcode

git clone https://github.com/bladysh/exprompt.git
cd exprompt
make install          # kopiert nach /usr/local/bin/ (fragt nach sudo)
exprompt -v

Schnellnutzung

⚠️ Setze den Prompt immer in Anführungszeichen. Einfache Anführungszeichen sind am sichersten — sonst interpretiert die Shell ( ) $ ! " schon vor exprompt.

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 deaktivieren

Editor-Integration

Claude Code

cd dein-projekt
exprompt hook claude        # schreibt einen UserPromptSubmit-Hook in .claude/settings.json

Ab 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.


Bibliotheksmodus

pkg/exprompt ist ein öffentliches Go-Paket — du kannst die Pipeline direkt aus deinem Code nutzen:

go get github.com/bladysh/exprompt
import "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/.


Mehr

Die ausführlichen Abschnitte — vollständige Konfiguration, Vokal-Filter (BETA), savings-Befehl, Sicherheit, Projektaufbau und Beitragsleitfaden — stehen im englischen README.


Lizenz

MIT — vollständig Open Source, ohne Bedingungen.

Auf den Schultern von

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:

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.