Aller au contenu
Hermès Skills
← Retour au catalogue

model-manager

Gestion rapide et intelligente des modèles LLM — changements de provider, bascule rapide, fallback local.

Quand l'utiliser (Trigger)

Déclenchement standard selon le contexte de l'écosystème Hermès.

Mode d'emploi (Usage)

Mode d'emploi standard via l'agent Hermès.

Skill: Model Manager

Permet de changer de modèle LLM via Hermes pour basculer rapidement entre performance, rapidité et spécialisation (coder/reasoning).

Commandes

  • hermes model — Interactive model/provider picker
  • hermes config set model.default <modele> — Set default model
  • hermes config set model.provider <provider> — Set provider
  • hermes config set model.roles.<role> <modele> — Per-role routing

Structure des Modèles — Actuel (DeepSeek Direct API)

Le provider principal est DeepSeek (API directe, pas OpenRouter).

RôleModèleProvider
🏆 Par défaut / Rapidedeepseek-v4-flashdeepseek
🧠 Planner / Reasoningdeepseek-v4-prodeepseek
🔧 Codage lourddélégué à Claude Code CLIanthropic

Changer de modèle

# Méthode 1 — Interactive (recommandée)
hermes model

# Méthode 2 — Config directe
hermes config set model.default deepseek-v4-pro
hermes config set model.provider deepseek

# /reset pour prise d'effet

Les anciens deepseek-chat et deepseek-reasoner sont dépréciés. v4-flash a le thinking ON par défaut. v4-pro en promo -75% jusqu’au 2026-05-31.

💰 Cas A — Forfaits illimités (ChatGPT Plus + Claude Code) — optimiser coût ET latence

Si tu as des abonnements forfaitaires, la règle reste : éviter les API pay-per-token quand un modèle inclus suffit. Mais ne mets pas automatiquement gpt-5.5 partout sur les gateways : en Telegram, les sessions longues + compression peuvent rendre le bot silencieux plusieurs minutes.

Profil recommandé pour Telegram / Gateway rapide

model:
  provider: openai-codex
  default: gpt-5-5-instant       # ChatGPT Plus — rapide, coût marginal 0 $
  roles:
    explorer: gpt-5-5-instant
    executor: gpt-5-5-instant
    planner:  gpt-5.5            # qualité quand il faut planifier
    reviewer: gpt-5.5            # qualité quand il faut arbitrer/revoir
    vision:   gpt-5.5
  fallback: []

auxiliary:
  compression:
    provider: openai-codex
    model: gpt-5-5-instant       # compression rapide, pas DeepSeek payant
  title_generation:
    provider: openai-codex
    model: gpt-5-5-instant
  approval:
    provider: openai-codex
    model: gpt-5-5-instant
  web_extract:
    provider: openai-codex
    model: gpt-5-5-instant

fallback_providers:
  - deepseek/deepseek-v4-flash   # backup SI ChatGPT/Codex down
  - deepseek/deepseek-v4-pro     # backup SI ChatGPT/Codex down

Profil équilibré agentique — vitesse sans perte de qualité

Quand l’objectif explicite est réactivité + qualité agentique, ne pas basculer tout Hermes sur instant. Garder le centre décisionnel fort et accélérer la périphérie :

model:
  provider: openai-codex
  default: gpt-5.5
  roles:
    explorer: gpt-5-5-instant
    planner: gpt-5.5
    executor: gpt-5.5
    reviewer: gpt-5-5-thinking
    vision: gpt-5.5
  fallback: []

Règle : instant pour triage/auxiliaires simples; gpt-5.5 pour plan/exécution/compression; thinking pour revue critique. Voir references/openai-codex-agentic-latency-routing.md.

Profil qualité maximale WebUI

model:
  provider: openai-codex
  default: gpt-5.5
  roles:
    explorer: gpt-5.5
    planner: gpt-5.5
    executor: gpt-5.5
    reviewer: gpt-5.5
    vision: gpt-5.5
  fallback: []

Raison : ChatGPT Plus coûte $20/mois quel que soit ton volume. Utiliser DeepSeek pour les rôles/auxiliaires n’économise rien si OpenAI Codex OAuth est disponible — ça ajoute des coûts API. Par contre, utiliser gpt-5.5 partout peut coûter de la latence en gateway. Le bon compromis est gpt-5-5-instant pour Telegram/chat/auxiliaires, gpt-5.5 pour les décisions lourdes, et Claude Code pour le codage agentique.

Piège observé : Telegram peut sembler ne pas répondre alors que la gateway fonctionne : la session est en compression préflight sur un gros contexte (~110k tokens), avec gpt-5.5 comme modèle principal/auxiliaire. Dans ce cas, passer la gateway et auxiliary.compression à gpt-5-5-instant, réduire les sessions Telegram, ou démarrer /new améliore plus que changer de fallback.

Script one-shot : hermes-change-model.sh <modele> (change default + 5 roles d’un coup)

# Setup
echo 'export PATH="$HOME/.hermes/scripts:$PATH"' >> ~/.bashrc
source ~/.bashrc

# Usage
hermes-change-model.sh gpt-5.5    # depuis n'importe où

Nettoyage des fallbacks superflus

Chaque fallback provider dans fallback_providers: ajoute du overhead au system prompt. Avec ChatGPT Plus + Claude Code, tu n’as besoin que de DeepSeek en backup :

Avant : groq ❌ | gemini ❌ | kimi ❌ | ollama ❌  ← 5 entries inutiles
Après : deepseek V4 Flash + V4 Pro              ← 2 entries, backup pur

Commande pour nettoyer :

# Remplacer tous les fallbacks par juste deepseek
hermes config set fallback_providers \
  "[{\"provider\":\"deepseek\",\"model\":\"deepseek-v4-flash\"},{\"provider\":\"deepseek\",\"model\":\"deepseek-v4-pro\"}]"

# model.fallback (fallback dans le MÊME provider) — vide par défaut
hermes config set model.fallback "[]"

Vision : pourquoi passer sur auto

Quand auxiliary.vision.provider = custom (gemini-2.5-flash), tu utilises ta clé API Gemini — pay-per-token. Or gpt-5.5 gère aussi la vision et est dans ton forfait ChatGPT Plus. Passer sur auto économise les frais Gemini. Même conclusion que la doc officielle : “si le main model a la vision, garder auto”.

🏆 Cas B — Pay-per-token (API DeepSeek, OpenRouter)

Quand tu paies à la consommation, le pattern modèle fort au centre, modèles légers en périphérie est validé par triangulation: doc officielle + Reddit 6B tokens + tests terrain.

Architecture recommandée

default:   gpt-5.5              ← raisonnement lourd (abonnement ChatGPT)
roles:
  explorer:  deepseek-v4-flash   ← cheap: $0.14/M, exploration rapide
  planner:   deepseek-v4-pro     ← prix raisonnable pour planification
  executor:  deepseek-v4-flash   ← tâches d'exécution simples
  reviewer:  deepseek-v4-pro     ← revue de qualité
  vision:    deepseek-v4-flash   ← vision basique

Avec fallback vers les modèles spécifiques via auxiliary: pour les tâches de fond.

Script one-shot : hermes-change-model.sh

~/.hermes/scripts/hermes-change-model.sh — change model.default + tous les roles d’un coup.

# Setup (déjà fait si ~/.hermes/scripts est dans le PATH)
echo 'export PATH="$HOME/.hermes/scripts:$PATH"' >> ~/.bashrc
source ~/.bashrc

# Usage
hermes-change-model.sh gpt-5.5    # change default + 5 roles

Le script met à jour model.default + model.roles.* en une commande.

⚡ Optimisation des modèles auxiliaires

Au-delà de model.roles, Hermes a des tâches auxiliaires (vision, compression, titrage, approval, etc.). Par défaut, elles utilisent le même modèle que default — gaspille si c’est un modèle lourd.

Configuration auxiliaire recommandée

# ~/.hermes/config.yaml
auxiliary:
  vision:
    provider: custom
    model: gemini-2.5-flash        # vision → modèle spécialisé rapide
  title_generation:
    provider: deepseek
    model: deepseek-v4-flash        # titrer = pas besoin de 5.5
  compression:
    provider: deepseek
    model: deepseek-v4-flash        # résumer = tâche simple
  approval:
    provider: deepseek
    model: deepseek-v4-flash        # approval binaire = cheap

Pourquoi c’est important

Tâche auxiliaireImpact tokenRecommandation doc
Title GenExécuté à chaque session“Un flash model écrit des titres aussi bien qu’Opus pour 1/100e”
CompressionExécuté au-delà du seuil de contexte“Résumer ne nécessite pas de raisonnement”
ApprovalMode smart auto-approve“Modèles chers ici = gaspillage”
VisionAnalyse d’imageIdéal: gemini-2.5-flash via API custom

Source: Doc officielle Hermes — Configuring Models, section “Common override patterns”.

Réduction d’overhead token

Reddit (3 jours, Token Bloat -71%):

  • Supprimer les skills inutilisés
  • Désactiver les MCP non nécessaires
  • Réduire les toolsets au strict minimum
  • Limiter les fallback providers (chaque fallback ajoute du contexte)

Benchmark communautaire (6B tokens analysés):

  1. GPT-5.5 (by far) → 2. Kimi k2.6 → 3. GLM 5.1 → 4. Minimax M2.7 → 5. Qwen 3.6 Max

Voir references/model-optimization-research.md pour les détails complets.

⚠️ Constraint: CPU Only (No GPU)

Bernard n’a pas de GPU sur son VPS. Modèles > 8B params = timeout/inference impossible. RAM disponible: ~11 GB total, ~3.5 GB libre après services.

Modèles locaux VALIDES pour CPU-only

llava:latest        | 7B   | 4.7 GB | ✅ vision locale (testé)
llama3.2:latest     | 3.2B | 2.0 GB | ✅ agentic (rapide, économe)
deepseek-r1:8b       | 8.2B | 5.2 GB | ✅ code / reasoning

Modèles SUPPRIMÉS (trop lourds pour CPU)

gemma3:12b          | 12B  | 8.1 GB | ❌ DELETE — timeout CPU (~5-10min)
pshohel/kimi-k2.5   | 3.2B | 2.0 GB | ❌ DELETE — doublon llama3.2

Ollama Local — Fallback Zero-Coût

Quand le crédit DeepSeek/API est épuisé → Ollama local prend le relais.

Configuration custom_providers (config.yaml)

custom_providers:
  # ── Vision (local CPU) ─────────────────────────────────
  ollama-vision-local:
    provider: openrouter
    base_url: http://localhost:11434/v1
    model: llava:latest            # 7B, léger, rapide
  # ── Code (local CPU) ───────────────────────────────────
  ollama-code-local:
    provider: openrouter
    base_url: http://localhost:11434/v1
    model: deepseek-r1:8b          # 8B, reasoning fort
  # ── Agentic (local CPU) ────────────────────────────────
  ollama-agent-local:
    provider: openrouter
    base_url: http://localhost:11434/v1
    model: llama3.2:latest         # 3.2B, rapide, ~2GB RAM

Chaîne de fallback

  1. deepseek/deepseek-v4-flash → DeepSeek direct (idéal)
  2. Agents Claude Code en parallèle (abonnement)
  3. Urgenceollama-agent-local (llama3.2, zero coût, CPU)

Vérifier qu’Ollama fonctionne

curl -s http://localhost:11434/api/tags | python3 -m json.tool

OpenAI Codex OAuth — Utiliser son abonnement ChatGPT

Le provider OpenAI Codex OAuth permet d’utiliser un abonnement ChatGPT Plus/Pro directement dans Hermes — pas besoin de clé API OpenAI.

Setup

# 1. Lancer le device code flow
hermes auth add openai-codex

# 2. Ouvrir dans un navigateur : https://auth.openai.com/codex/device
# 3. Entrer le code affiché, connecter son compte ChatGPT

# 4. Basculer le provider
hermes config set model.provider openai-codex
hermes config set model.default gpt-5.5

Vérifier

hermes auth list openai-codex
### Vérifier

- **Ne PAS confondre `provider: openai-codex` avec `provider: openai-api`** — le premier utilise OAuth avec ChatGPT, le second une clé API OpenAI classique
- Si un refresh token expire, Hermes le marque comme mort et arrête de le réessayer une nouvelle auth est nécessaire
- ⚠️ **`gpt-5.5-codex` peut être déprécié** (constaté le 2026-05-30) — voir `references/codex-model-names-and-discovery.md` pour la liste des slugs valides.
- ⚠️ **Erreur en cascade** si `model.default` reste `gpt-5.5-codex` après avoir changé de provider (ex: deepseek), les appels auxiliaires (title_generation, compression) échouent aussi. Vérifier `model.default` après chaque changement de provider.
- Voir `references/provider-subscription-vs-api.md` pour plus de détails
- Voir `references/codex-model-names-and-discovery.md` pour la liste des modèles Codex disponibles
- Voir `references/gateway-chatgpt-plus-model-routing.md` pour le profil Telegram rapide `gpt-5-5-instant` avec ChatGPT Plus + Claude Code
- Voir `references/openai-codex-agentic-latency-routing.md` pour le profil équilibré `gpt-5.5` + `gpt-5-5-instant` + `gpt-5-5-thinking` optimisé vitesse sans perte agentique
- Voir `references/provider-pricing-comparison-2026-06.md` pour le tableau complet des prix officiels API (DeepSeek, Claude, GPT, Gemini) + scores WebDev Elo et ratios coût — recommandations par cas d'usage

## 🚨 Dépannage — Codex OAuth & changement de modèle

### Symptôme : footer runtime_footer ne s'affiche plus après switch de modèle

Quand tu changes de provider (ex: openai-codex deepseek), le `display.runtime_footer` peut cesser de fonctionner car ses champs `fields` sont mal formatés.

**Solution :**
```bash
# Vérifier le format YAML dans config.yaml
grep -A3 runtime_footer ~/.hermes/config.yaml
# La ligne 'fields' doit être une vraie liste YAML :
#   fields: [model, context_pct, cost]    ✅
# PAS une chaîne :
#   fields: '[model, context_pct, cost]'  ❌

# Corriger avec Python si nécessaire :
python3 -c "
import yaml
with open('/home/bf/.hermes/config.yaml') as f:
    cfg = yaml.safe_load(f)
cfg['display']['runtime_footer']['fields'] = ['model', 'context_pct', 'cost']
cfg['display']['show_cost'] = True
with open('/home/bf/.hermes/config.yaml','w') as f:
    yaml.dump(cfg, f, default_flow_style=None, sort_keys=False)
"

# Redémarrer le gateway
hermes gateway restart

Symptôme : “The ‘gpt-5.5-codex’ model is not supported” — HTTP 400

Le token OAuth Codex a expiré ou le nom du modèle a changé. Pas un problème de clé API — l’OAuth est valide, c’est le modèle/l’authentification qui ne passe plus.

Diagnostic dans les logs :

grep "openai-codex\|codex" ~/.hermes/logs/errors.log | grep "400\|401\|403"

Étapes de résolution :

  1. Ré-authentifier OAuth (le refresh token expire aussi) :

    hermes auth add openai-codex

    → Ouvrir https://auth.openai.com/codex/device dans un navigateur → Entrer le code affiché → Connecter le compte ChatGPT

  2. Si l’auth réussit mais le modèle est toujours rejeté : Le nom du modèle Codex (gpt-5.5-codex, o3, etc.) n’est plus reconnu par le backend. → Solution : Basculer vers DeepSeek :

    hermes config set model.provider deepseek
    hermes config set model.default deepseek-v4-flash
    # Vérifier que fallback_providers pointe bien sur DeepSeek

⚠️ Piège : model.default oublié après changement de provider

Quand tu changes model.provider sans changer model.default, Hermes envoie l’ancien nom de modèle au nouveau provider :

provider=deepseek base_url=https://api.deepseek.com
model=gpt-5.5-codex  ← OUBLIÉ ! DeepSeek ne connaît pas ce modèle
→ HTTP 400: "The supported API model names are deepseek-v4-pro or deepseek-v4-flash,
  but you passed gpt-5.5-codex."

Solution : Toujours changer les deux ensemble :

hermes config set model.provider deepseek
hermes config set model.default deepseek-v4-flash
# Optionnel : utiliser le script one-shot
hermes-change-model.sh deepseek-v4-flash

Symptôme : Toutes les tâches auxiliaires échouent après changement de provider

Title generation, context compression, vision — tout tombe avec l’erreur du même ancien modèle.

Deux causes possibles :

Cause A — model.default oublié : Le provider a changé mais le modèle par défaut pointe encore vers l’ancien provider.

Solution : hermes config set model.default <nouveau-modèle> et vérifier :

grep "default:" ~/.hermes/config.yaml
grep -A5 "roles:" ~/.hermes/config.yaml

Cause B — Provider sans credential (cascade credential mismatch) : model.provider est configuré vers un provider qui n’a aucun credential valide (ex: openai-codex configuré mais aucun token OAuth). La conversation principale tombe en fallback et fonctionne, mais toutes les tâches auxiliaires (title_generation, compression, approval, web_extract, skills_hub, triage, etc.) pointent encore vers le provider sans credential et échouent en cascade.

Symptômes dans les logs :

Primary auth failed — switching to fallback: deepseek / deepseek-v4-flash
Title generation failed: Provider 'openai-codex' is set in config.yaml but no API key was found.

Diagnostic rapide :

# 1. Vérifier si le provider configuré a un credential
hermes auth list | grep openai-codex           # ← absent = credential manquant

# 2. Lister tous les credentials disponibles
hermes auth list

# 3. Lister tous les providers configurés pour les auxiliaires
grep -A2 "provider:" ~/.hermes/config.yaml | grep -v "^--$" | sort -u

Solution :

# Option A — Ajouter le credential (si tu veux garder openai-codex)
hermes auth add openai-codex                    # device code flow

# Option B — Basculer provider principal ET tous les auxiliaires vers un provider fonctionnel
hermes config set model.provider deepseek
hermes config set model.default deepseek-v4-flash
# Puis éditer config.yaml pour changer tous les auxiliary.*.provider de openai-codex → deepseek

Piège : Même si model.fallback a un provider fonctionnel, les auxiliaires ne l’utilisent pas — ils utilisent leur propre provider: configuré dans auxiliary.*. Il faut corriger chaque auxiliaire un par un.

Provider confusion — Subscription vs API

L’abonnement Claude Pro/Max ne donne pas accès à l’API Anthropic (sauf Claude Max + crédits extra). L’abonnement ChatGPT Plus/Pro peut être utilisé via le provider openai-codex (OAuth device flow). Voir references/provider-subscription-vs-api.md pour les distinctions complètes et workarounds.