Free Model Cost Optimization¶
Überblick¶
Automatisiertes Management der LLM-Modell-Auswahl für Hermes Agent, um API-Kosten nahe null zu halten. Das System nutzt OpenRouter Free Models und fällt bei Bedarf auf die lokalen Xiaomi MiMo-Modelle zurück.
Funktionsweise¶
┌──────────────────┐
│ Cron (alle 6h) │
│ --check Modus │
└────────┬─────────┘
│
┌────────▼─────────┐
│ free-model-mode │
│ aktiviert? │
└────────┬─────────┘
JA │ NEIN
┌──────────────┴──────────────┐
│ │
┌─────────▼──────────┐ ┌─────────▼──────────┐
│ Aktuelles Modell │ │ Nur Info ausgeben, │
│ noch free? │ │ kein Switch │
└─────────┬──────────┘ └────────────────────
JA │ NEIN
┌────────┴────────┐
│ Nichts tun │ ┌─────────────────────┐
│ (bleibt free) │ │ Migriere zu bestem │
└─────────────────┘ │ free Modell │
│ oder MiMo-Fallback │
└──────────────────────┘
Komponenten¶
1. Free Model Finder Script¶
- Pfad:
~/.hermes/scripts/free-model-finder.py - Scannt OpenRouter API nach Modellen mit
prompt=0undcompletion=0 - Bewertet nach: Context Length (primär) + Quality Boosts (sekundär)
- 28+ free Modelle aktuell verfügbar (Stand: 17.05.2026)
- Ranking: DeepSeek V4 Flash (1.05M ctx) > Qwen3 Coder > Nemotron 3 Super > Owl Alpha > Gemma 4 31B
2. Status-Flag Datei¶
- Pfad:
~/.hermes/free-model-mode.json - Enthält:
enabled(bool),last_check,fallback_model,last_status,last_message - Wird vom Script geschrieben und gelesen
3. Cron-Job¶
- Intervall: Alle 6 Stunden
- Modus:
--check(prüft + schaltet ggf. automatisch um) - Respektiert
free-model-mode.json → enabledFlag
Drei Modi¶
| Modus | Beschreibung | Cron-Verhalten |
|---|---|---|
| Auto-Free (default) | Hermes nutzt bestes free Modell | Switcht automatisch; falls kein free → MiMo-Fallback |
| Manual | User hat Modell selbst gesetzt | Prüft nur, gibt Info wenn free verfügbar |
| MiMo-Override | User hat MiMo manuell gesetzt (Provider=xiaomi) | Cron bleibt komplett passiv |
MiMo Fallback-Modelle¶
| Key | Model | Verwendung |
|---|---|---|
pro |
MiMo v2 Pro | Hochleistung (komplexe Tasks) |
v2.5 |
MiMo v2.5 | Allround (Jarvis Default) |
omni |
MiMo v2 Omni | Multimodal |
flash |
MiMo v2 Flash | Schnelle, einfache Tasks |
Config-Änderungen bei Switch¶
Bei Switch zu OpenRouter:
- model.default → deepseek/deepseek-v4-flash:free (oder andere)
- model.provider → openrouter
- model.base_url → geleert (OpenRouter nutzt ENV-Var)
- model.api_key → geleert (OpenRouter nutzt ENV-Var)
- OPENROUTER_API_KEY muss in .env gesetzt sein
Bei Switch zu MiMo/Xiaomi:
- model.default → mimo-v2-pro (oder andere)
- model.provider → xiaomi
- model.base_url → geleert (Xiaomi nutzt ENV-Var)
- model.api_key → geleert (Xiaomi nutzt ENV-Var)
- XIAOMI_API_KEY muss in .env gesetzt sein
Abhängigkeiten¶
- [[server-infrastructure]] — Cron-Job läuft auf dem Server
- [[ai-advisor]] — MiMo-Fallback teilt sich die API-Infrastruktur
Bekannte Issues¶
- Neue Session nötig: Config-Änderung per
hermes config setwird erst nach/newoder Neustart wirksam. :freeSuffix: OpenRouter free Modelle haben ein:freeSuffix in der ID (z.B.deepseek/deepseek-v4-flash:free).- Model-Level base_url/api_key: Müssen bei Provider-Wechsel geleert werden, sonst überschreiben sie die ENV-Vars.
- OpenRouter-Ausfall: Wenn OpenRouter API nicht erreichbar ist (15s Timeout), switcht Cron auf MiMo-Fallback.