Aller au contenu
Hermès Skills
← Retour au catalogue

context-window-manager

Visualise et gère la fenêtre de contexte — alertes à 40%, stratégies de compression, monitoring en temps réel.

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.

Context Window Manager

Gère proactivement la fenêtre de contexte d’Hermes pour éviter la dégradation de qualité et les dépassements. Combine visualisation en temps réel, alertes précoces, et stratégies d’action par palier.

🎯 Pourquoi c’est critique

La qualité des réponses se dégrade avant d’atteindre la limite de contexte :

UsageImpact
< 40%✅ Performance optimale
40-60%⚠️ Dégradation légère — c’est le moment d’agir
60-80%🔴 Perte de précision notable — compression ou /new recommandé
> 80%🚨 Risque élevé d’hallucinations et d’oublis

⚙️ Setup (one-time)

# Active le footer qui affiche model + % contexte utilisé
hermes config set display.runtime_footer.enabled true

# Configure les champs affichés
hermes config set display.runtime_footer.fields '[model, context_pct]'

✅ Après restart (ou /reset), chaque réponse inclut : [deepseek-v4-pro | ████████░░ 78%]

⚠️ Pitfall — fields format YAML

hermes config set stocke la valeur comme une chaîne YAML ('[model, context_pct]'), pas comme une vraie liste. Si le footer ne s’affiche pas, éditer le fichier directement :

# Corriger manuellement dans config.yaml
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)
"

Format attendu : fields: [model, context_pct, cost] (pas de guillemets autour du crochet).

Champs disponibles pour fields

ChampDescription
modelNom du modèle actif
context_pct% fenêtre de contexte utilisé
costCoût estimé de la session
cwdRépertoire de travail courant

Toggle via slash command

Alternative sans restart : /footer on / /footer off en session. ✅ Après restart, chaque réponse inclut : [deepseek-v4-pro | ████████░░ 78%]

2. Baisser le seuil de compression à 40%

# Hermes compresse automatiquement le contexte — on abaisse le seuil
hermes config set compression.enabled true
hermes config set compression.threshold 0.40
hermes config set compression.target_ratio 0.25

3. Définir la taille de contexte du modèle (si non-détectée)

# Pour deepseek-v4-pro (128K tokens)
hermes config set model.context_length 131072

# Pour deepseek-v4-flash (128K tokens)
hermes config set model.context_length 131072

Quick reference — Aide-mémoire rapide

Un script shell est disponible dans le skill (scripts/context-menu.sh) pour afficher les outils en un coup d’œil :

# Depuis le dossier du skill :
bash ~/.hermes/skills/devops/context-window-manager/scripts/context-menu.sh

# Ou via l'alias recommandé (à ajouter dans ~/.bashrc) :
alias ctx="bash ~/.hermes/skills/devops/context-window-manager/scripts/context-menu.sh"

Usage : ctx → affiche le menu des 5 outils de gestion de contexte.

Ou dans le chat Hermes : demander « menu contexte » ou « affiche les outils » pour obtenir la même liste sans quitter la conversation.

Le footer Hermes affiche aussi le répertoire de travail courant (~/.hermes/hermes-agent par défaut). Si un autre dossier s’affiche (ex: ~/openclaw-workspace), c’est que Hermes a été lancé depuis ce répertoire. Solution : ajouter un alias qui cd automatiquement :

alias hermes="cd ~/.hermes/hermes-agent && /home/bf/.local/bin/hermes"

Le footer activé affiche context_pct à chaque réponse. C’est le signal le plus fiable.

Format typique : [deepseek-v4-pro | ████░░░░░░ 42%]

Commande /usage

/usage

Affiche la répartition détaillée : tokens input/output, coût, nombre de tours, et utilisation du cache.

Check manuel rapide

/status

Montre l’ID de session, le modèle, le nombre de tours.

🎮 Commandes d’action par palier

🟢 < 40% — Tout va bien

Aucune action nécessaire. Continue normalement.

🟡 40-60% — Vigilance

CommandeEffet
/compressCompression manuelle immédiate — réduit le contexte au target_ratio défini
/usageVérifier ce qui consomme le plus (system prompt ? outils ? historique ?)

Stratégie : Si tu arrives à 50%+ régulièrement, active la compression auto avec le setup ci-dessus.

🟠 60-80% — Action recommandée

/compress

La compression Hermes garde :

  • Le system prompt
  • Les skills chargés
  • La mémoire
  • Un résumé de l’historique récent

Elle supprime les anciens messages et les résultats d’outils obsolètes.

⚠️ Après compression, rappelle brièvement le contexte si nécessaire.

🔴 > 80% — Urgence

/new

Démarre une session fraîche. Résume le contexte critique en premier message.

Alternative si tu veux garder la session :

/compress

Puis rappelle au modèle ce qui est important.

🛡️ Stratégies proactives

1. Limiter les fichiers chargés automatiquement

Le system prompt charge MEMORY.md, USER.md, SOUL.md, AGENTS.md, etc. Si ces fichiers sont trop volumineux, ils grèvent le budget avant même le premier message.

# Vérifier la taille des fichiers de contexte
wc -l ~/.hermes/hermes-agent/MEMORY.md ~/.hermes/hermes-agent/USER.md ~/.hermes/hermes-agent/SOUL.md ~/.hermes/hermes-agent/AGENTS.md 2>/dev/null

Règle : Chaque fichier < 100 lignes. Au-delà, résumer.

2. Skills : charger uniquement ce qui est nécessaire

Chaque skill chargé avec skill_view() ajoute du contenu au contexte. Pour les tâches simples, évite de charger des skills volumineux.

3. Utiliser /steer pour les rappels légers

Au lieu de répéter des instructions dans chaque message :

/steer N'oublie pas : on est en mode concis, réponse directe.

Le message est injecté après le prochain tool call, sans alourdir l’historique visible.

4. Déléguer les sous-tâches lourdes

delegate_task isole le contexte — le subagent travaille dans sa propre fenêtre, et seul le résumé revient.

delegate_task(goal="Analyser ce fichier de 5000 lignes", context="...")

5. /new préventif

Pour les longues sessions de travail, faire /new toutes les 10-15 interactions lourdes garde le contexte frais.

📐 Anatomie du contexte Hermes

Comprendre ce qui consomme des tokens :

ComposantPoids typiqueContrôle
System prompt~3-8K tokensAGENTS.md, config
Skills chargés0-15K tokens/skill, -s
Mémoire persistante0.5-3K tokensmemory tool
User profile0.5-2K tokensUSER.md
Historique conversationVariable/compress, /new
Résultats d’outilsVariableDélégation, filtrage
Tool schemas~2-5K tokenshermes tools

Optimisation ciblée :

  • System prompt trop lourd → réduire AGENTS.md
  • Skills trop lourds → ne charger que ceux nécessaires
  • Mémoire trop verbeuse → condenser avec memory tool
  • Historique qui déborde → /compress

🔧 Dépannage

Causes possibles :

  1. Format YAML incorrecthermes config set stocke fields comme une chaîne YAML ('[model, context_pct]') au lieu d’une vraie liste.
  2. Changement de provider — Après un switch (openai-codex → deepseek), le footer peut ne plus apparaître même si la config est bonne. Un /reset ou gateway restart suffit souvent.
  3. show_cost désactivé — Le champ cost ne s’affiche pas si show_cost: false dans config.yaml.

Solution complète :

hermes config set display.runtime_footer.enabled true
hermes config set display.runtime_footer.fields '[model, context_pct]'
hermes config set display.show_cost true
# Vérifier le format YAML dans config.yaml — fields doit être une vraie liste
grep -A3 runtime_footer ~/.hermes/config.yaml
# Si fields: '[model, context_pct]' (avec guillemets) → corriger en fields: [model, context_pct]
hermes gateway restart

La compression ne se déclenche pas

# Vérifier la config
hermes config show | grep -i compression
hermes config show | grep threshold

# Forcer la compression manuelle
# Dans la session : /compress

Le % semble incorrect

Le context_pct est calculé par le provider (basé sur model.context_length). Vérifie que model.context_length correspond bien au modèle :

# Chercher dans la config
grep context_length ~/.hermes/config.yaml
# deepseek-v4 = 131072
# claude-sonnet-4 = 200000
# gpt-4o = 128000

La compression supprime des infos importantes

La compression Hermes utilise un résumé intelligent. Si des infos critiques sont perdues :

  1. Sauvegarde-les dans la mémoire persistante (memory tool) avant de compresser
  2. Ou utilise /new et résume le contexte dans ton premier message

📚 Références

Absorbed: Caveman Agent

references/caveman-agent.md — Alternative context management approach: aggressive compression, priority-based pruning, and context budget allocation. Previously a standalone skill (caveman-agent). Use as a complementary strategy when the standard compression triggers are too conservative.

Absorbed: Session Checkpoint

references/session-checkpoint.md — Context checkpointing: save session state to .md, threshold detection at 80%, suggest /compact, log sessions with duration and token counts. Previously a standalone skill (session-reset).