Skip to content

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=0 und completion=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 → enabled Flag

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.defaultdeepseek/deepseek-v4-flash:free (oder andere) - model.provideropenrouter - 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.defaultmimo-v2-pro (oder andere) - model.providerxiaomi - 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

  1. Neue Session nötig: Config-Änderung per hermes config set wird erst nach /new oder Neustart wirksam.
  2. :free Suffix: OpenRouter free Modelle haben ein :free Suffix in der ID (z.B. deepseek/deepseek-v4-flash:free).
  3. Model-Level base_url/api_key: Müssen bei Provider-Wechsel geleert werden, sonst überschreiben sie die ENV-Vars.
  4. OpenRouter-Ausfall: Wenn OpenRouter API nicht erreichbar ist (15s Timeout), switcht Cron auf MiMo-Fallback.