La compression de contexte devient 5× plus rapide : une requête auxiliaire au lieu de 19

Votre contexte est presque plein, Hermes démarre la compaction, et vous fixez le spinner pendant bien 10 minutes. Ce n’est pas le réseau — l’ancienne « compaction lean » appelait le modèle auxiliaire une fois par morceau d’historique pour construire des digests, donc une grosse session pouvait exiger jusqu’à 28 appels auxiliaires séquentiels, et sur une route auxiliaire lente (disons gpt-5.6 à effort de raisonnement élevé comme modèle de résumé), une compaction signifiait 7 à 11 minutes de douleur (issue #96603). Un changement fusionné le 30 août (PR #98628) supprime entièrement cette boucle de digests : exactement une requête auxiliaire par tentative de compaction. Le changement est sur main, pas encore dans une release.
Pourquoi la compaction était si lente
« Compaction lean » est le pipeline de compression devenu le défaut dans v0.20.6 ; son travail consiste à condenser un long historique en un résumé de journal de session. Le problème tenait au modèle d’exécution : l’ancienne implémentation découpait l’historique en morceaux et faisait un appel au modèle auxiliaire par morceau pour générer un digest, puis cousait les digests ensemble. Avec beaucoup de morceaux, ces appels sont séquentiels — jusqu’à 28 requêtes auxiliaires par tentative, chacune attendant que le modèle streame ses tokens. Sur un modèle rapide, c’était juste lent ; sur un modèle auxiliaire lent, c’était catastrophique (7 à 11 minutes mesurées dans #96603).
Le correctif : un morceau, une requête
La directive du mainteneur était sans détour : « un morceau, une requête ». Concrètement :
- La boucle de digests a disparu : la requête de résumé principale absorbe désormais les tâches du journal de session (mêmes règles strictes — identifiants verbatim, puces denses, le transcript est une donnée), avec un budget de tokens de réponse unique relevé ;
- Régions surdimensionnées : les entrées trop grandes sont échantillonnées uniformément avec des marqueurs explicites
[... elided ...]— jamais une seconde requête ; - Les garde-fous restent inchangés : l’index d’ancres sans LLM (couvrant la région complète) et le pied de récupération
session_searchrestent exactement ce qu’ils étaient — les évaluations officielles montrent que c’est l’index d’ancres, pas les digests par morceau, qui a piloté le rappel des faits-aiguilles (23,3 → 60,0 sur la piste GUI).
Les chiffres : 5× plus rapide, et plus maigre aussi
Le A/B officiel a tourné sur une vraie grosse session (1 338 messages, ~499 625 tokens, de vrais appels auxiliaires) :
| Métrique | Ancien (boucle de digests) | Nouveau (requête unique) |
|---|---|---|
| Appels auxiliaires | 19 (1 résumé + 18 digests) | 1 |
| Temps réel | 196,5 s | 39,6 s |
| Tokens après | 57 567 | 46 135 |
5× plus rapide sur une route rapide ; sur les routes lentes (le scénario de #96603), on passe de 7 à 11 minutes à environ un appel de résumé. La sortie post-compaction est aussi ~11K tokens plus légère — le vieux mur de digests de 81K caractères voyageait dans chaque requête suivante ; désormais il a disparu. Neuf nouveaux tests épinglent le contrat d’exactement-un-appel (restaurer un second appel les fait passer au rouge).
Ce que cela signifie pour vous
Si vous travaillez régulièrement avec de très longues sessions, la sensation de la compression passe de « le temps d’un café » à « le temps d’une gorgée d’eau ». Et comme le résultat est plus maigre, chaque tour suivant économise aussi des tokens. Associez cela à notre guide du défaut de compression lean-tail et au guide d’optimisation des tokens de contexte pour le playbook complet d’économie de tokens ; la récupération des faits clés après compaction est couverte dans le guide d’ancrage de l’usage du contexte.
Quand vous pouvez l’utiliser
Le PR #98628 a été fusionné le 30 août et n’est pas dans v0.20.6 (taggé le 27 août). Tirez le dernier main pour l’essayer, ou attendez la prochaine release. Les gros utilisateurs qui ont vécu « la compaction prend 10 minutes » devraient mettre à jour tôt.
En résumé : la lenteur venait des appels séquentiels de la boucle de digests par morceau ; désormais c’est une requête et c’est fini — 5× plus rapide, moins de tokens, et les capacités de rappel intactes.