
Anleitung: Jev Model Router für Claude Code
Nicht jede Aufgabe braucht dein teuerstes Modell. Der Jev Model Router fragt bei jedem Prompt, welches Claude-Modell wirklich reicht, und gibt einfache Aufgaben an einen günstigeren Subagenten ab. So richtest du ihn in wenigen Minuten ein.
Wenn du aus meinem Video zu Jev kommst: Hier ist die Anleitung für den Model Router, den ich dort zeige. Alle Dateien liegen fertig in einem GitHub-Repository, du musst also nichts abtippen.
Zum Repository: github.com/AlexPEClub/Jev-Model-Router-Claude-Code
Worum es geht
In Claude Code arbeitest du meistens mit einem Modell für die ganze Session. Ist das Opus, bezahlst du Opus-Preise auch für Aufgaben wie „Such mir die Datei, in der der Supabase-Client initialisiert wird". Das könnte Haiku genauso gut.
Der Router setzt genau dort an. Bei jedem Prompt fragt er Jev von TypeSafe AI: Welches Claude-Modell ist das günstigste, das diese Aufgabe gut erledigen kann? Die Antwort kommt in unter einer halben Sekunde. Liegt das empfohlene Modell unter deinem Session-Modell und ist die Aufgabe in sich geschlossen, gibt Claude sie an einen Subagenten mit dem günstigeren Modell ab.
So funktioniert es
Der Router besteht aus zwei Teilen: einem Hook und einem Skill.
- Ein
UserPromptSubmit-Hook schickt den Text deines Prompts an Jev. - Jev beantwortet zwei Fragen: die günstigste passende Stufe (
haiku,sonnet,opusoderfable) und wie wahrscheinlich es ist, dass die Aufgabe vom bisherigen Gespräch abhängt. - Der Hook blendet Claude das Ergebnis ein: entweder DELEGATE (an einen Subagenten mit dem genannten Modell abgeben) oder handle (in der Session bleiben).
- Der Skill
/jevschaltet den Router ein und aus und zeigt dir, wie er entschieden hat.
Die zweite Frage ist wichtig. Ein Subagent startet mit leerem Kontext. Schreibst du „Mach das Gleiche noch für die andere Seite", weiß er nicht, was gemeint ist. Solche Aufgaben bleiben deshalb im Session-Modell, auch wenn Jev eine kleinere Stufe für möglich hält.
Was du vorher brauchst
| Wofür | |
|---|---|
| Claude Code | Dort läuft der Router als Hook. |
jq und curl | Der Hook ist ein Bash-Skript. Auf dem Mac: brew install jq, curl ist vorinstalliert. |
| TypeSafe-API-Key | Von console.typesafe.ai. Neue Accounts bekommen Startguthaben. |
Schritt 1: Repository klonen und Claude Code starten
Wichtig ist, dass du Claude Code im geklonten Ordner startest. Nur dann findet Claude die Dateien, die es installieren soll.
git clone https://github.com/AlexPEClub/Jev-Model-Router-Claude-Code.git jev-model-router
cd jev-model-router
claude
Schritt 2: Den Einrichtungs-Prompt einfügen
Die Einrichtung übernimmt Claude selbst. Kopier diesen Prompt in die Session:
Richte mir den Jev Model Router aus diesem Repo ein. Kopiere die Dateien exakt,
ohne den Inhalt zu verändern:
1. jev-router/route.sh → ~/.claude/jev-router/route.sh (ausführbar machen)
2. jev-router/jev.sh → ~/.claude/jev-router/jev.sh (ausführbar machen)
3. jev-router/config.json → ~/.claude/jev-router/config.json
4. skills/jev/SKILL.md → ~/.claude/skills/jev/SKILL.md
5. Den Hook-Block aus hook-settings.json in ~/.claude/settings.json unter
hooks.UserPromptSubmit ERGÄNZEN, ohne bestehende Hooks oder andere
Einstellungen zu überschreiben. Existiert die Datei noch nicht, lege sie an.
Danach:
- Frag mich, welches Modell meine Claude-Code-Session normalerweise nutzt
(haiku, sonnet, opus oder fable), und trage es in ~/.claude/jev-router/config.json
als "session_model" ein.
- Prüfe, ob jq und curl installiert sind. Falls jq fehlt, nenn mir den
Installationsbefehl für mein System.
- Prüfe, ob TYPESAFE_API_KEY in meiner Umgebung gesetzt ist. Falls nicht, sag mir,
dass ich den Key selbst in die Datei ~/.claude/jev-router/.env als Zeile
TYPESAFE_API_KEY=... eintragen soll (Datei mit chmod 600 schützen).
Schreib den Key niemals selbst in eine Datei.
- Schalte den Router NICHT ein (keine Datei "enabled" anlegen). Das mache ich
selbst mit /jev on.
- Zum Schluss: bash ~/.claude/jev-router/jev.sh test "Wo wird in diesem Projekt
der Supabase-Client initialisiert?" ausführen und mir die Ausgabe zeigen.
Claude kopiert die Dateien an ihren Platz, ergänzt den Hook in deinen Einstellungen, ohne bestehende Hooks anzufassen, fragt dich nach deinem Session-Modell und macht am Ende einen Testlauf.
Zwei Dinge macht Claude dabei bewusst nicht: Es schreibt deinen API-Key nie selbst in eine Datei, und es schaltet den Router nicht ein. Beides machst du selbst.
Schritt 3: API-Key eintragen
Falls der Key noch nicht in deiner Umgebung gesetzt ist, legst du die Datei
~/.claude/jev-router/.env an und trägst eine Zeile ein:
TYPESAFE_API_KEY=dein_schluessel
Danach schützt du die Datei, damit nur du sie lesen kannst:
chmod 600 ~/.claude/jev-router/.env
Schritt 4: Neu starten und einschalten
Beende Claude Code einmal und starte es neu. Erst dann sind der Hook und der Skill /jev
geladen. Anschließend:
/jev on
Ab jetzt arbeitest du ganz normal. Du siehst an der ersten Zeile jeder Antwort, wie entschieden wurde:
→ haiku (Jev)heißt: Die Aufgabe wurde an einen Haiku-Subagenten abgegeben.→ opus (Jev: haiku, ctx 0.89)heißt: Jev hätte Haiku empfohlen, aber die Aufgabe hängt zu 89 Prozent vom Gespräch ab. Deshalb bleibt sie in deiner Opus-Session.
Du siehst also immer, was Jev empfohlen hat und warum es trotzdem anders gelaufen ist.
Die Befehle im Überblick
| Befehl | Was er tut |
|---|---|
/jev on | Router einschalten. Ab jetzt geht der Prompt-Text an TypeSafe. |
/jev off | Router ausschalten. Nichts verlässt mehr deinen Rechner. |
/jev status | An oder aus, Session-Modell, Verteilung nach Stufe, Anzahl Delegationen, mittlere Antwortzeit |
/jev test <Prompt> | Trockenlauf: Du siehst Jevs Entscheidung, ohne dass etwas passiert. |
/jev log 20 | Die letzten 20 Entscheidungen |
Slash-Commands und Prompts mit weniger als 12 Zeichen werden nie an Jev geschickt.
Anpassen
Alles, was du einstellen kannst, steht in ~/.claude/jev-router/config.json:
| Feld | Bedeutung | Standard |
|---|---|---|
session_model | Das Modell deiner Session. Abgegeben wird nur an Stufen darunter. | opus |
min_confidence | Ist Jev sich weniger sicher als dieser Wert, bleibt die Aufgabe in der Session. | 0.6 |
context_threshold | Ab dieser Wahrscheinlichkeit für „hängt vom Gespräch ab" bleibt die Aufgabe in der Session. | 0.5 |
questions.route.criteria | Die Beschreibung der vier Stufen | siehe Datei |
model | Die Jev-Version | jev-latest |
Delegiert Jev dir zu oft oder zu selten, schärfst du zuerst die Beschreibungen unter
criteria nach. Dort steht in Klartext, welche Art von Aufgabe zu welcher Stufe gehört.
Wenn du mit den Schwellen zufrieden bist, stell model auf eine feste Jev-Version. Sonst
kann sich das Verhalten ändern, sobald eine neue Version erscheint.
Ehrliche Einschränkungen
- Die Delegation ist eine Empfehlung, kein Zwang. Der Hook blendet Claude nur die Entscheidung ein, abgeben muss Claude selbst. In der Praxis hält es sich daran, garantiert ist es aber nicht. Wer das hart erzwingen will, findet in gargpratyush/jev-router einen Proxy-Ansatz, der das Modell wirklich austauscht.
- Ob sich das für dich lohnt, musst du messen.
/jev statusund/jev logzeigen dir, wie oft abgegeben wurde und an welche Stufe. - Das Log enthält Ausschnitte deiner Prompts. In
~/.claude/jev-router/log.jsonlstehen die ersten 120 Zeichen jedes klassifizierten Prompts. Die Datei also nicht teilen und nicht committen.
Datenschutz
An TypeSafe geht nur der Text deines Prompts, höchstens 12.000 Zeichen. Keine Dateien, kein Code, kein Gesprächsverlauf.
TypeSafe ist ein US-Anbieter. Wenn du mit Kundendaten arbeitest, gilt dieselbe Prüfung wie
für jeden anderen KI-Dienst, Details unter
docs.typesafe.ai/legal. Im Zweifel schaltest du den
Router mit /jev off für die Session aus.
Außerdem ist der Router fail-open: Antwortet Jev nicht innerhalb von fünf Sekunden, läuft dein Prompt einfach unverändert durch. Ein Ausfall bei TypeSafe hält dich also nicht auf.
Kurz zusammengefasst
Repository klonen, Claude Code im Ordner starten, Prompt einfügen, Key eintragen,
/jev on. Danach entscheidet bei jedem Prompt ein kleines Modell, ob dein großes Modell
wirklich nötig ist. Die Entscheidung siehst du in jeder Antwort, und mit /jev off ist
alles sofort wieder aus.
Alle Dateien, die README und die Links zur TypeSafe-Dokumentation findest du im Repository auf GitHub.