Modell-Radar
OpenRouter-Modellauswahl per CLI. Analysiert natürlichsprachliche Einschränkungen in token:value-Argumente, fragt einen lokalen Cache mit Modellmetadaten + Rankings ab und gibt JSON aus, das der Agent als Markdown-Tabelle rendern kann.
Einrichtung
- Laufzeit: Node.js 18+ (kein Installationsschritt und keine npm-Abhängigkeiten)
- Kein API-Key – verwendet öffentliche OpenRouter-Endpunkte
- Führen Sie alle Befehle aus diesem Skill-Verzeichnis aus (dem Verzeichnis, das diese Datei enthält)
- Der erste Aufruf befüllt den Cache aus dem Netzwerk; nachfolgende Aufrufe verwenden den lokalen Cache (Modelle TTL 6h, Rankings TTL 24h)
- Selbstaktualisierungen sind standardmäßig aktiviert. Jeder CLI-Lauf prüft höchstens einmal alle 24h die feste GitHub-Quelle und wendet Aktualisierungen automatisch für installierte Kopien an. Setzen Sie
MODEL_RADAR_AUTO_UPDATE=0, um dies zu deaktivieren.
Arbeitsablauf
- Führen Sie
node scripts/self-update.js autovor der Verwendung des Skills aus. Wenn stderrMODEL_RADAR_UPDATEDausgibt, lesen Sie dieseSKILL.mderneut, bevor Sie fortfahren. - Analysieren Sie die Anfrage des Benutzers in
token:value-Argumente mithilfe der Intent → Token-Zuordnung unten. - Wählen Sie den Befehl:
list(filtern+sortieren),recommend(gewichtete Bewertung gegen eine Voreinstellung),compare(Seit-an-Seit-Vergleich). - Führen Sie den Befehl aus dem Skill-Verzeichnis aus.
scripts/main.jsführt ebenfalls automatisch die gleiche Selbstaktualisierungsvorbereitung durch, sodass die direkte CLI-Nutzung aktuell bleibt. - Rendern Sie die JSON-Ausgabe als Markdown-Tabelle (siehe Ausgabe).
- Beenden Sie mit
Datenstand {fetched_at}; schlagen Sierefreshvor, wenn älter als 12h.
Befehle
node scripts/main.js list [tokens...] # filtern + sortieren
node scripts/main.js recommend [tokens...] # gewichtete Bewertung gegen eine Voreinstellung
node scripts/main.js compare <id|name>... # Seit-an-Seit-Vergleich
node scripts/main.js refresh # erzwingt Aktualisierung beider Caches
node scripts/self-update.js status # Aktualisierungsstatus anzeigen
node scripts/self-update.js check # nach Updates auf GitHub suchen
node scripts/self-update.js apply # neuestes Skill-Update anwenden
Selbstaktualisierung
- Quelle ist festgelegt durch
package.json.repository:primexiao/agent-skills, Pfadskills/model-radar. - Installierte Kopien aktualisieren sich automatisch. Quellcode-Überprüfungen überspringen die automatische Aktualisierung, es sei denn,
MODEL_RADAR_AUTO_UPDATE_SOURCE=1ist gesetzt. - Lokale, nicht committete Änderungen im Skill-Verzeichnis führen dazu, dass die automatische Aktualisierung übersprungen wird.
- Die direkte Verwendung von
scripts/main.jsstartet den aktuellen Befehl nach einer erfolgreichen Selbstaktualisierung neu, sodass das Ergebnis mit dem aktualisierten Code erzeugt wird. - Aktualisierungen verwenden eine temporäre Überprüfung, validieren erforderliche Dateien, sichern den aktuellen Skill, ersetzen Nicht-Laufzeitdateien und machen bei Fehlern rückgängig.
- Erfolgreiche Aktualisierungen löschen
cache/raw.json,cache/models.jsonundcache/rankings.json, sodass neuer Code nicht mit altem Daten-Cache vermischt wird. - Selbstaktualisierungsstatus und Warnungen gehen nach stderr. Befehls-JSON bleibt auf stdout.
Token-Syntax
Von Tailwind inspirierte Positionsargumente token:value. Die Reihenfolge spielt keine Rolle.
| Token | Bedeutung | Werteformat | Beispiele |
|---|---|---|---|
sort | Sortierdimension | vordefiniertes Wort (siehe unten) | sort:günstig sort:beliebt |
price | $/MTok gemischt | ..max / min.. / min..max / bare=max | price:..10 price:5..20 |
ctx | Kontextlänge | gleich, k/m Suffix, bare=min | ctx:128k ctx:128k..1m |
out | Maximale Ausgabetokens | gleich, bare=min | out:32k |
cap | Fähigkeiten (UND) | kommasepariert | cap:werkzeugnutzung,reasoning |
in | Eingabemodalitäten (UND) | kommasepariert | in:bild in:audio,image |
gen | Ausgabemodalitäten (UND) | kommasepariert | gen:bild gen:audio |
open | Open-Source-Filter | true / false | open:true |
top | Ergebnislimit | Zahl (Standard: list=20, recommend=3) | top:5 |
preset | Bewertungsvoreinstellung (nur recommend) | Voreinstellungsname | preset:coding |
sort-Werte: günstig teuer neu (Standard) ctx beliebt durchsatz latenz
Fähigkeiten: werkzeugnutzung reasoning strukturierte_ausgabe vision lange_ausgabe prompt_caching websuche audio_eingabe video_eingabe datei_eingabe bild_generierung audio_ausgabe
Eingabemodalitäten: text bild audio video datei
Ausgabemodalitäten: text bild audio
Empfehlungsvoreinstellungen: coding batch chat vision (siehe config/presets.json für Gewichtungen und erforderliche Fähigkeiten)
Intent → Token
| Benutzer sagt | Token(s) |
|---|---|
| „Budget $X“ / „unter $X“ | price:..X |
| „mindestens $X“ / „Premium-Stufe“ | price:X.. |
| „mindestens Nk Kontext“ | ctx:Nk |
| „benötigt Werkzeugnutzung / Vision / Reasoning“ | cap:werkzeugnutzung / cap:vision / cap:reasoning |
| „strukturierte Ausgabe“ / „JSON-Modus“ | cap:strukturierte_ausgabe |
| „kann Audio / Bildeingabe verarbeiten“ | in:audio / in:bild |
| „kann Bilder / Audio generieren“ | gen:bild / gen:audio |
| „nur Open Source“ | open:true |
| „günstigstes“ / „am erschwinglichsten“ | sort:günstig |
| „am beliebtesten“ / „im Trend“ | sort:beliebt |
| „neuestes“ / „aktuellstes“ | sort:neu |
| „schnellstes“ / „niedrigste Latenz“ | sort:latenz |
| „höchster Durchsatz“ | sort:durchsatz |
| „Codierungs-Agent“ | recommend preset:coding |
| „Batch / Massenauftrag“ | recommend preset:batch |
| „Vision-Agent“ | recommend preset:vision |
Modellvergleich (compare)
Übereinstimmungspriorität für jedes Argument von compare:
- Exakte ID —
anthropic/claude-sonnet-4-5 - Suffix-exakt —
claude-sonnet-4→anthropic/claude-sonnet-4(niemals die-fast-Variante) - Teilweise Teilzeichenfolge in ID/Name, neueste Veröffentlichung gewinnt —
claude-sonnet→ neuestes Sonnet
Ausgabe
Rendern Sie die JSON-Ausgabe immer als Markdown-Tabelle — Tabellen sind das primäre Anzeigeformat.
list
| # | Modell | $/MTok (P/C/Gemischt) | Ctx | Ausgabe | Fähigk. | Bel# |
$/MTok: Prompt / Completion / gemischte PreiseFähigk.: Kurzbezeichnungen (werkzreasonvision…)Bel#: Beliebtheitsrang (wenn Rankings-Cache aktuell, sonst—)
recommend
| Rang | Modell | Bewertung | Kosten↑ | Ctx↑ | Ausg.↑ | Fähigk.↑ | $/MTok | Fähigk. |
Fügen Sie eine einzeilige Begründung pro Modell hinzu. Bewertung und Bewertungen pro Dimension liegen in [0, 1].
compare
Vertikale Tabelle — eine Spalte pro Modell, eine Zeile pro Dimension:
| Dimension | Modell A | Modell B | Modell C |
| ------------------ | -------- | -------- | -------- |
| Preis (P/C/Gemischt)| … | … | … |
| Kontext | … | … | … |
| Max. Ausgabe | … | … | … |
| Eingabemodalitäten | … | … | … |
| Ausgabemodalitäten | … | … | … |
| Fähigkeiten | … | … | … |
| Beliebtheitsrang | … | … | … |
| Wöchentliche Anfragen| … | … | … |
Beenden Sie immer mit: Datenstand {fetched_at}. Wenn älter als 12h, schlagen Sie dem Benutzer vor, node scripts/main.js refresh auszuführen.
Zwischenspeicherung (Caching)
cache/
raw.json — OpenRouter-Frontend-Kartendaten, angepasst an lokales Rohschema (TTL 6h)
models.json — angereichert: normalisierte Preise + Fähigkeitsbezeichnungen (TTL 6h)
rankings.json — Beliebtheit / Durchsatz / Latenz + Nutzungsanalysen (TTL 24h)
config/
presets.json
tier1-categories.json
- Cache-Dateien befinden sich unter
cache/und werden nicht versioniert — der erste Aufruf greift auf das Netzwerk zu. - Bei TTL-Ablauf ruft die CLI mit einem 10s-Timeout erneut ab.
- Bei fehlgeschlagenem Abruf fällt sie auf den veralteten Cache zurück und gibt
[warn]auf stderr aus — so antworten schreibgeschützte / offline-Sandboxen dennoch (möglicherweise veraltet). - Ein erfolgreiches Skill-Selbstupdate löscht die Modelldaten-Cache-Dateien. Der nächste Modellbefehl füllt sie wieder auf.
Sandbox-Hinweise
- Codex CLI: benötigt
-s workspace-write(CLI schreibt nachcache/) und Netzwerkausgang zuopenrouter.ai. Innerhalb der TTL keine Netzwerkaufrufe. - Erster Aufruf in einer frischen Überprüfung ist der einzige, der zwingend Netzwerk benötigt.
- Selbstaktualisierung benötigt Dateisystem-Schreibzugriff auf dieses Skill-Verzeichnis und Netzwerkzugriff auf GitHub. Falls nicht verfügbar, wird gewarnt oder übersprungen, und der Modellbefehl läuft weiterhin mit der aktuellen lokalen Kopie.
Bekannte Probleme
- Die OpenRouter-Frontend-API (
/api/frontend/v1/models/find?active=true&fmt=cards) ist inoffiziell; falls sie fehlschlägt, fällt die CLI auf veralteten Cache zurück, falls verfügbar, und gibt[warn]aus.
Datenquellen
- Modelle:
https://openrouter.ai/api/frontend/v1/models/find?active=true&fmt=cards - Rankings: gleicher Endpunkt mit
order=top-weekly,order=throughput-high-to-lowundorder=latency-low-to-high