Compression Engines (Français)
Combinaisons de compression
Section intitulée « Combinaisons de compression »Les combinaisons de compression sont des profils de compression nommés qui peuvent être attribués à des combinaisons de routage :
compression_combos: stocke le mode, le pipeline, la configuration RTK, la configuration linguistique et l’indicateur par défautcompression_combo_assignments: associe une combinaison de compression à une combinaison de routage- l’intégration à l’exécution résout une combinaison de compression attribuée avant les substitutions génériques de combinaison
- les données analytiques incluent
compression_combo_idetengine
Interface du tableau de bord : Tableau de bord -> Contexte et cache -> Combinaisons de compression.
Surface de l’API
Section intitulée « Surface de l’API »| Route | Objectif |
|---|---|
/api/settings/compression |
Paramètres globaux de compression (inclut la configuration mcpAccessibility) |
/api/compression/preview |
Prévisualiser n’importe quel mode de compression |
/api/compression/language-packs |
Répertorier les packs linguistiques Caveman disponibles |
/api/context/caveman/config |
Alias des paramètres Caveman |
/api/context/rtk/config |
Valeurs par défaut et paramètres RTK |
/api/context/rtk/filters |
Catalogue de filtres RTK |
/api/context/rtk/test |
Point de terminaison de prévisualisation/test RTK |
/api/context/rtk/raw-output/[id] |
Récupération authentifiée de la sortie brute expurgée |
/api/context/combos |
Opérations CRUD sur les combinaisons de compression |
/api/context/combos/[id]/assignments |
Opérations CRUD sur les attributions aux combinaisons de routage |
/api/context/analytics |
Alias des données analytiques de compression |
Les routes de gestion nécessitent une authentification de gestion ou des contrôles de stratégie par clé d’API.
Outils MCP
Section intitulée « Outils MCP »La compression expose cinq outils MCP :
| Outil | Portée | Objectif |
|---|---|---|
omniroute_compression_status |
read:compression |
Paramètres, données analytiques, statistiques du cache |
omniroute_compression_configure |
write:compression |
Mettre à jour les paramètres globaux |
omniroute_set_compression_engine |
write:compression |
Définir le mode et le pipeline facultatif |
omniroute_list_compression_combos |
read:compression |
Répertorier les combinaisons de compression |
omniroute_compression_combo_stats |
read:compression |
Consulter les données analytiques par combinaison/moteur |
Périmètre et exclusions
Section intitulée « Périmètre et exclusions »Les embeddings ne sont jamais compressés. open-sse/handlers/embeddings.ts n’appelle jamais de
moteur de compression — les corps des requêtes/réponses sont transmis directement à l’exécuteur sans modification.
Cette séparation est actuellement structurelle (les embeddings et les complétions de chat utilisent des gestionnaires distincts), et non un
contrôle à l’exécution, mais cela signifie que le problème de distorsion vectorielle décrit dans #8034 n’a aucune surface d’exposition
dans le chemin des embeddings.
Filtre d’exclusion par modèle/point de terminaison (#8034). Pour les complétions de chat, un opérateur peut désigner
des identifiants de modèle/cibles provider/model qui ne doivent jamais être compressés — une mesure de protection utile si
la compression est ultérieurement intégrée plus près d’un chemin adjacent aux embeddings, et généralement utile
pour tout modèle dont l’invite doit rester strictement identique octet par octet (évaluations déterministes, préfixes
sensibles au cache, etc.).
- Champ de paramétrage :
exclusions?: string[]dans la configuration globale de compression (GET/PUT /api/settings/compression), persisté via l’espace de noms de compressionkey_valueexistant (src/lib/db/compression.ts) — aucune nouvelle table. - Onglet du tableau de bord : Tableau de bord → Compression → Exclusions
(
/dashboard/compression/exclusions). - Syntaxe des motifs :
*est le seul caractère générique. Tous les autres métacaractères d’expression régulière d’un motif sont échappés avant la recherche de correspondance, de sorte quegpt-5.6correspond uniquement à la chaîne littérale, jamais àgpt-5x6(sans risque de ReDoS, borné, sans quantificateurs imbriqués). Les motifs sont comparés sans tenir compte de la casse à la fois à l’identifiant de modèle seul et à la valeur compositeprovider/model—gpt-5-6,openai/gpt-5-6, etopenai/*fonctionnent tous, et*seul exclut tous les modèles. - Correspondance :
isCompressionExcluded()/normalizeCompressionExclusions()dansopen-sse/services/compression/exclusions.ts.chatCore.tsvérifie la cible exclue immédiatement après avoir résolu les paramètres de compression, avant l’exécution de tout moteur, et traite une correspondance exactement comme si la compression était désactivée globalement — le corps de la requête est de manière démontrable identique octet par octet. L’omission est enregistrée viawriteCompressionSkip(..., "excluded")afin d’être visible dans les données analytiques. - Valeur par défaut (liste vide/absente) : comportement identique à celui précédant #8034 — rien n’est exclu.
Limitations connues
Section intitulée « Limitations connues »- LLMLingua-2 (SLM) nécessite que les dépendances optionnelles soient colocalisées. Le worker ne fonctionne dans une
build de production que lorsque
@atjsh/llmlingua-2et ses dépendances homologues sont colocalisés dansdist/node_modules(voirscripts/build/colocateOptionals.mjs, #4286). Sans eux, le moteur échoue en mode ouvert (il renvoie le texte d’origine). La résolution du worker ne dépend plus deimport.meta.url(qui échoue dans le bundle autonome) — elle s’appuie sur le cwd d’exécution /argv[1]. - Les packs linguistiques Caveman
de/fr/jasont partiels. Ils fournissent des règlescontext+filler+structural, mais aucun packdedup/ultra; l’intensitéultran’est donc pas supérieure àfullpour ces langues (elles utilisent uniquement leurs propres règles — il n’existe aucun repli silencieux vers les règles anglaisesdedup/ultra, qui déformeraient le texte en langue étrangère). Les packsen/es/id/pt-BRsont complets. Les contributions de fichiersdedup.json+ultra.jsonpour les packs partiels sont les bienvenues. - La télémétrie empilée répertorie uniquement les moteurs ayant effectué une compression. Une étape d’un pipeline empilé dont le
moteur s’est exécuté, mais n’a produit aucun gain, renvoie
stats:nullet n’apparaît donc pas dansengineBreakdown— ce qui la rend impossible à distinguer d’une étape ignorée. Distinguer « exécutée, 0 % » de « ignorée » nécessiterait une modification du modèle de ventilation et est reporté.
Validation
Section intitulée « Validation »Les portes ciblées pour ce domaine sont :
node --import tsx/esm --test tests/unit/compression/rtk-*.test.ts tests/unit/compression/pipeline-integration.test.ts tests/unit/compression/context-compression-api.test.tsnode --import tsx/esm --test tests/unit/compression/*.test.ts tests/golden-set/*.test.ts tests/integration/compression-pipeline.test.ts tests/unit/api/compression/compression-api.test.tsnode --import tsx/esm --test tests/unit/compression/mcpAccessibility*.test.tsnpm run typecheck:coreHagiCode
HagiCode est un espace de développement agentique qui associe workflows structurés, exécution multi-agent et vues Hero Dungeon.
Transformez vos idées en logiciels utiles grâce à un workflow agentique plus intelligent, rapide et agréable.

- SmartDes workflows structurés transforment une intention en parcours exécutable, de l’idée à la livraison.
- EfficientLes workflows multi-agents font avancer recherche, réalisation et revue en parallèle.
- FunHero Dungeon rend les longues sessions de code plus visuelles et collaboratives.