đïž Prompt Compression Guide â OmniRoute (Français)
Modes de compression
Section intitulée « Modes de compression »Désactivé
Section intitulée « Désactivé »Aucune compression appliquée. Tous les messages passent sans modification.
Mode Lite (15 % dâĂ©conomies, <1 ms de latence)
Section intitulĂ©e « Mode Lite (15 % dâĂ©conomies, <1 ms de latence) »Le mode le plus sĂ»r â aucun changement sĂ©mantique, seulement un nettoyage du formatage :
| Technique | Description |
|---|---|
collapseWhitespace |
Fusionne les lignes vides consécutives et les espaces de fin de ligne |
dedupSystemPrompt |
Supprime les messages systĂšme en double |
compressToolResults |
Compresse les sorties verbeuses dâoutils/fonctions |
removeRedundantContent |
Supprime les instructions répétées |
replaceImageUrls |
Raccourcit les URI de donnĂ©es dâimage base64 |
Idéal pour : Utilisation permanente, flux de travail critiques pour la sécurité.
Mode Standard (30 % dâĂ©conomies)
Section intitulĂ©e « Mode Standard (30 % dâĂ©conomies) »InspirĂ© par Caveman â supprime les mots de remplissage et les formulations verbeuses tout en prĂ©servant le sens :
- Supprime les mots de remplissage (« please », « I think », « basically », « actually »)
- Condense les phrases verbeuses (« in order to » â « to », « as a result of » â « because »)
- Supprime les tournures de politesse (« Would you mind⊠», « If you could possibly⊠»)
- Plus de 30 rÚgles regex optimisées pour les prompts de codage
Idéal pour : Flux de travail de codage quotidiens, équipes soucieuses des coûts.
Mode Agressif (50 % dâĂ©conomies)
Section intitulĂ©e « Mode Agressif (50 % dâĂ©conomies) »Gestion intelligente de lâhistorique pour les sessions longues :
- Vieillissement des messages â les messages plus anciens sont progressivement compressĂ©s
- RĂ©sumĂ© des rĂ©sultats dâoutils â les sorties dâoutils longues sont remplacĂ©es par des rĂ©sumĂ©s
- Gardes dâintĂ©gritĂ© structurelle â assure que les paires
tool_use+tool_resultrestent cohĂ©rentes - Conscience de la fenĂȘtre de contexte â respecte les limites de jetons par modĂšle
Idéal pour : Sessions de débogage prolongées, grandes bases de code.
Mode Ultra (75 % dâĂ©conomies)
Section intitulĂ©e « Mode Ultra (75 % dâĂ©conomies) »Compression maximale pour les scĂ©narios critiques en jetons :
- Ălagage heuristique â supprime les messages en dessous du seuil de pertinence
- Amincissement des blocs de code â compresse les exemples de code rĂ©pĂ©titifs
- Troncation par recherche binaire â trouve le point de coupure optimal pour la fenĂȘtre de contexte
- Toutes les fonctionnalités du mode Agressif sont incluses
Idéal pour : Lorsque vous atteignez les limites de contexte de maniÚre répétée.
Mode RTK (plage de 60-90 % en amont)
Section intitulĂ©e « Mode RTK (plage de 60-90 % en amont) »Le mode RTK est optimisĂ© pour les sorties dâoutils verbeuses qui apparaissent dans les sessions dâagents de codage :
- Détecte les classes de commande/sortie telles que
git status,git diff,git log, les exĂ©cuteurs de tests, les builds TypeScript/Vite/Webpack, ESLint/Biome/Prettier, les audits/installations npm, les logs Docker, la sortie dâinfra, et la sortie shell gĂ©nĂ©rique - Applique les packs de filtres JSON depuis
open-sse/services/compression/engines/rtk/filters/ - Importe les filtres du schéma RTK TOML v1 depuis les fichiers
filters.tomlde projet ou globaux, avec validation de test en ligne et contrĂŽle dâaccĂšs pour les fichiers de projet - Fournit 49 filtres intĂ©grĂ©s avec des exemples de vĂ©rification en ligne
- Supprime les séquences de contrÎle ANSI, les barres de progression, les lignes répétées et le bruit non exploitable
- Préserve les échecs, les erreurs, les avertissements, les fichiers modifiés, les résumés et la fin des sorties longues
- Prend en charge les filtres de projet à accÚs contrÎlé, les filtres globaux et la récupération optionnelle de la sortie brute expurgée
IdĂ©al pour : Sessions dâagent avec des transcriptions de shell, build, test, git, grep et sortie de fichier.
Mode Empilé (plage éligible de 78-95 %)
Section intitulée « Mode Empilé (plage éligible de 78-95 %) »Le mode empilé exécute plusieurs moteurs de compression dans un ordre déterministe. Le pipeline par défaut est :
RTK -> CavemanCet ordre maintient dâabord la sortie du terminal/outil compacte, puis applique la condensation sĂ©mantique de Caveman au prompt en langage naturel restant. Les pipelines empilĂ©s peuvent ĂȘtre configurĂ©s globalement ou via des combos de compression attribuĂ©s Ă des combos de routage.
IdĂ©al pour : Contexte mixte avec de grands journaux dâoutils ainsi que des instructions humaines ou des rĂ©sumĂ©s dâassistant.
Calcul des économies en amont
Section intitulée « Calcul des économies en amont »OmniRoute documente les économies de compression provenant de deux sources : les benchmarks des projets en amont et la composition du moteur propre à OmniRoute.
| Source | Chiffre du README en amont utilisé ici |
|---|---|
| Caveman | ~75% de jetons de sortie en moins, 65% dâĂ©conomies moyennes de sortie de benchmark, plage de 22-87%, et ~46% dâoutil de compression dâentrĂ©e |
| RTK | 60-90% dâĂ©conomies sur la sortie de commande ; session dâexemple ~118,000 -> ~23,900 jetons, soit 79.7% dâĂ©conomies (~80%) |
Pour les charges utiles dâoutils/contextes qui se chevauchent, la combinaison OmniRoute par dĂ©faut empile les moteurs :
RTK -> CavemanLes économies combinées sont multiplicatives, non additives :
combinĂ© = 1 - (1 - Ă©conomies RTK) * (1 - Ă©conomies d'entrĂ©e Caveman)moyenne = 1 - (1 - 0.80) * (1 - 0.46) = 89.2%plage = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%Ce chiffre de 78-95% sâapplique lorsque RTK et Caveman peuvent tous deux rĂ©duire la mĂȘme charge utile dâentrĂ©e/contexte. Le mode de sortie de rĂ©ponse de Caveman est distinct : lorsquâil est activĂ©, utilisez les propres Ă©conomies de sortie de Caveman (65% en moyenne, ~75% en titre, plage de 22-87%). Les Ă©conomies de facturation totales dĂ©pendent de votre mix dâinvites/sorties.
Ce que âĂ©ligibleâ signifie rĂ©ellement
Section intitulĂ©e « Ce que âĂ©ligibleâ signifie rĂ©ellement »La plage de 15-95% annoncĂ©e est rĂ©elle, mais elle ne sâapplique quâau contenu redondant ou verbeux â lignes dâerreur rĂ©pĂ©tĂ©es, un journal de construction qui spamme le mĂȘme avertissement, un dump grep/lecture de fichier surdimensionnĂ©. Cela ne signifie pas que chaque requĂȘte Ă©conomise autant.
VĂ©rifiĂ© empiriquement (tests/unit/compression/stacked-compression-tool-result-savings.test.ts) : une exĂ©cution stacked (RTK + Caveman) sur un bloc tool_result de type Anthropic contenant 300 lignes dâerreur identiques a produit 95.93% dâĂ©conomies de jetons / 96.26% dâĂ©conomies de caractĂšres â parfaitement dans la plage annoncĂ©e. Mais la mĂȘme exĂ©cution de pipeline sur une sortie dâoutil normale et non redondante (une liste de correspondances grep propre, une courte lecture de fichier, un texte conversationnel ordinaire) produit correctement des Ă©conomies quasi nulles, car il nây a rien de rĂ©pĂ©titif Ă supprimer et validateCompression() (validation.ts) refuse dâenvoyer une réécriture qui supprimerait ou altĂ©rerait des blocs de code, des URL, des titres, des versions ou des identifiants de constantes en MAJUSCULES.
Câest un comportement attendu et sĂ»r, pas un bug : une session de codage qui lit/grep principalement des fichiers propres verra des Ă©conomies totales modestes mĂȘme avec la compression entiĂšrement activĂ©e, tandis quâune session qui rencontre une boucle dĂ©faillante ou un linter bavard verra la plage complĂšte de 78-95% sur ce trafic. Nâutilisez pas le faible pourcentage dâĂ©conomies agrĂ©gĂ©es dâune seule session comme preuve que la compression est mal configurĂ©e â vĂ©rifiez dâabord si la sortie de lâoutil sous-jacent Ă©tait rĂ©ellement redondante.
Visualisation des économies de jetons
Section intitulĂ©e « Visualisation des Ă©conomies de jetons »Sans compression : 47K jetons envoyĂ©s au LLMAvec Lite : 40K jetons envoyĂ©s (15% d'Ă©conomies â sĂ»r, toujours activĂ©)Avec Standard : 33K jetons envoyĂ©s (30% d'Ă©conomies â rĂšgles de langage cavernicole)Avec Agressif : 24K jetons envoyĂ©s (50% d'Ă©conomies â vieillissement + rĂ©sumĂ©)Avec Ultra : 12K jetons envoyĂ©s (75% d'Ă©conomies â Ă©lagage heuristique)Avec RTK : 19K-5K jetons envoyĂ©s (60-90% d'Ă©conomies sur la sortie de commande/outil)Avec Stacked : 10K-2.5K jetons envoyĂ©s (Plage Ă©ligible RTK+Caveman de 78-95%)Configuration
Section intitulée « Configuration »Tableau de bord
Section intitulĂ©e « Tableau de bord »AccĂ©dez Ă Dashboard â Context & Cache :
- Caveman â sĂ©lection du mode, packs de langue, aperçu et valeurs par dĂ©faut globales
- RTK â aperçu du filtre de commande, paramĂštres de sĂ©curitĂ© RTK et catalogue de filtres
- Compression Combos â pipelines de moteur nommĂ©s assignĂ©s Ă des combos de routage
- Auto-Trigger Threshold â active automatiquement la compression lorsque le nombre de jetons dĂ©passe le seuil
Remplacement par combo
Section intitulĂ©e « Remplacement par combo »Dans Dashboard â Context & Cache â Compression Combos, assignez un combo de compression Ă un combo de routage :
Combo: "free-tier-fallback" Compression Combo: "coding-agent-stack" Pipeline: RTK -> Caveman Targets: 1. if/kimi-k2.7-code 2. if/qwen3.8-max-previewCela vous permet dâutiliser la compression empilĂ©e sur les fournisseurs gratuits/de codage tout en conservant le mode lite sur les abonnements payants.
Cette affectation âRemplacement par comboâ est un contrĂŽle diffĂ©rent du remplacement du mode de compression du combo de routage (Default/Off/Lite/Standard/Aggressive/Ultra) â ce remplacement ne sĂ©lectionne pas un pipeline de combo de compression nommĂ© ; il dĂ©finit simplement le champ compressionMode consultĂ© par resolveCompressionPlan. Il peut ĂȘtre dĂ©fini soit sur la carte du combo (Dashboard â Combos), soit, depuis le #6760, par combo de routage dans la liste âAssign to routingâ sur Dashboard â Context & Cache â Compression Combos, juste Ă cĂŽtĂ© de la case Ă cocher dâaffectation de pipeline documentĂ©e ci-dessus. Les deux interfaces persistent via le mĂȘme point de terminaison PUT /api/combos/{id}.
Remplacement par requĂȘte
Section intitulĂ©e « Remplacement par requĂȘte »Envoyez lâen-tĂȘte de requĂȘte x-omniroute-compression pour remplacer le plan de compression pour une seule requĂȘte. Il a la prioritĂ© la plus Ă©levĂ©e â il lâemporte sur le remplacement du combo de routage, le profil actif, le dĂ©clenchement automatique et le panneau par dĂ©faut. Les valeurs inconnues sont ignorĂ©es (la requĂȘte nâest jamais rejetĂ©e) et lâinterrupteur principal global contrĂŽle toujours tout : lorsque la compression est dĂ©sactivĂ©e globalement, lâen-tĂȘte ne peut pas lâactiver. Valeurs :
| Valeur | Effet |
|---|---|
off |
Aucune compression pour cette requĂȘte. |
default |
Le profil par défaut dérivé du panneau (ignore le profil actif). Les moteurs avec perte sont désactivés. |
safe |
Identique Ă lâomission de lâen-tĂȘte : dĂ©duplication et repliement des espaces blancs uniquement. |
allow-lossy |
Conserve le plan dâopĂ©rateur de cette requĂȘte, y compris les rĂ©sumĂ©s, les filtres de pertinence et les réécritures de style. |
engine:<id> |
Un seul moteur lorsquâil est activĂ©, par exemple engine:rtk. Il sâagit de lâoption dâactivation par requĂȘte pour ce moteur. |
<combo> |
Un combo nommĂ©, correspondant dâabord par nom (insensible Ă la casse), puis par ID. |
Sans allow-lossy, engine:<id>, ou un combo nommĂ©, les moteurs avec perte ne sont pas appliquĂ©s. La requĂȘte bĂ©nĂ©ficie toujours de la dĂ©duplication de session et du repliement des espaces blancs lorsque la compression est activĂ©e.
Le plan appliquĂ© est renvoyĂ© dans lâen-tĂȘte de rĂ©ponse X-OmniRoute-Compression: <mode>; source=<source>, oĂč <source> est lâun des suivants : request-header, routing-override, active-profile, auto-trigger, default, ou off.
# Get compression settingscurl http://localhost:20128/api/settings/compression
# Update compression settingscurl -X PUT http://localhost:20128/api/settings/compression \ -H "Content-Type: application/json" \ -d '{"defaultMode":"stacked","autoTriggerMode":"stacked","autoTriggerTokens":32000}'
# Preview a specific RTK/stacked payloadcurl -X POST http://localhost:20128/api/compression/preview \ -H "Content-Type: application/json" \ -d '{"mode":"rtk","messages":[{"role":"tool","content":"npm test output here"}]}'
# List RTK filter packscurl http://localhost:20128/api/context/rtk/filters
# Test RTK directly with optional command metadatacurl -X POST http://localhost:20128/api/context/rtk/test \ -H "Content-Type: application/json" \ -d '{"command":"npm test","text":"FAIL tests/example.test.ts\nError: boom"}'Ce qui est protégé
Section intitulée « Ce qui est protégé »Le moteur de compression préserve toujours :
- â Les blocs de code (dĂ©limitĂ©s et en ligne)
- â Les URL et les chemins de fichiers
- â Les structures JSON et les donnĂ©es structurĂ©es
- â Les identifiants et les jetons techniques protĂ©gĂ©s
- â Les expressions mathĂ©matiques
- â Les dĂ©finitions dâappels dâoutils/fonctions
- â Les invites systĂšme (en mode lite)
La rĂ©cupĂ©ration de sortie brute RTK masque les clĂ©s API courantes, les jetons dâauthentification (bearer tokens), les jetons Slack, les clĂ©s dâaccĂšs AWS, les mots de passe, les jetons et les secrets avant que quoi que ce soit ne soit persistĂ©.
Statistiques de compression
Section intitulĂ©e « Statistiques de compression »Chaque requĂȘte compressĂ©e inclut des statistiques dans les journaux du serveur :
{ "originalTokens": 47200, "compressedTokens": 40120, "savingsPercent": 15.0, "techniquesUsed": ["collapseWhitespace", "dedupSystemPrompt"], "mode": "lite", "engine": "caveman", "compressionComboId": "coding-agent-stack", "durationMs": 0.8, "rtkRawOutputPointers": []}Feuille de route des phases
Section intitulée « Feuille de route des phases »| Phase | Modes | Statut |
|---|---|---|
| Phase 1 | Off, Lite | â LivrĂ© |
| Phase 2 | Standard, Aggressive, Ultra | â LivrĂ© |
| Phase 3 | RTK, Stacked, Compression Combos | â LivrĂ© |
| Phase 4 | Output Styles, SLM-tier Ultra, eval harness | â LivrĂ© |
| Phase 4C | Budget de contexte adaptatif (âdialâ) â moteur de calcul + API (contextBudget sur PUT /api/settings/compression) + contrĂŽles de mode/politique du tableau de bord |
â LivrĂ© |
Remerciements
Section intitulĂ©e « Remerciements »Les rĂšgles de compression en mode standard sont inspirĂ©es de Caveman par JuliusBrussee (â 51K+) â le projet viral « pourquoi utiliser beaucoup de jetons quand peu de jetons font lâaffaire ». Caveman rapporte ~75% de jetons de sortie en moins, 65% dâĂ©conomies moyennes de sortie de rĂ©fĂ©rence, une plage de sortie de 22-87%, et un outil de compression dâentrĂ©e de ~46%.
Le mode RTK est inspirĂ© de RTK - Rust Token Killer par RTK AI â le projet de compression de sortie de commande haute performance pour le filtrage des sorties de terminal, de build, de test, de git et dâoutils. RTK rapporte 60-90% dâĂ©conomies, avec sa session dâexemple README montrant ~80% dâĂ©conomies.
SystÚmes de compression avancés
Section intitulée « SystÚmes de compression avancés »Au-delà des 7 modes standard, OmniRoute inclut plusieurs systÚmes de compression avancés qui fonctionnent automatiquement en fonction du contexte.
Compression consciente du cache
Section intitulĂ©e « Compression consciente du cache »Certains fournisseurs (comme Anthropic avec la mise en cache des invites) prennent en charge la mise en cache des invites, ce qui leur permet de mettre en cache des parties de lâinvite pour rĂ©duire les coĂ»ts et la latence. Lorsque la mise en cache est activĂ©e, une compression agressive peut en fait nuire aux performances car elle modifie les jetons mis en cache, invalidant ainsi le cache.
Le module cachingAware.ts résout ce problÚme en détectant le contexte de mise en cache et en ajustant la stratégie de compression en conséquence.
Comment ça marche
Section intitulĂ©e « Comment ça marche »- DĂ©tecter le contexte de mise en cache â Scanne le corps de la requĂȘte Ă la recherche de marqueurs
cache_control - Identifier les fournisseurs de mise en cache â VĂ©rifie si le fournisseur cible prend en charge la mise en cache
- Ajuster la stratĂ©gie â RĂ©trograde
aggressive/ultraĂstandardpour les fournisseurs de mise en cache - Ignorer lâinvite systĂšme â Les invites systĂšme sont gĂ©nĂ©ralement mises en cache, il ne faut donc pas les compresser
- Utiliser des transformations dĂ©terministes â Nâutiliser que des transformations qui produisent une sortie cohĂ©rente
Exemple de code
Section intitulée « Exemple de code »import { detectCachingContext, getCacheAwareStrategy,} from "@omniroute/open-sse/services/compression/cachingAware";
const body = { model: "anthropic/claude-sonnet-4.5", messages: [{ role: "user", content: "Hello" }], cache_control: { type: "ephemeral" }, // â Cache marker};
const ctx = detectCachingContext(body, { provider: "anthropic" });// â { hasCacheControl: true, provider: "anthropic", isCachingProvider: true }
const strategy = getCacheAwareStrategy("aggressive", ctx);// â { strategy: "standard", skipSystemPrompt: true, deterministicOnly: true }Quand lâutiliser
Section intitulĂ©e « Quand lâutiliser »La compression consciente du cache est toujours activĂ©e â aucune configuration nâest nĂ©cessaire. Elle ne sâactive que lorsque :
- La requĂȘte contient des marqueurs
cache_control - Le fournisseur cible prend en charge la mise en cache des invites (Anthropic, OpenAI, etc.)
Vieillissement progressif
Section intitulée « Vieillissement progressif »Les longues conversations accumulent de nombreux échanges de messages, mais les échanges plus anciens deviennent moins pertinents. Le module progressiveAging.ts dégrade les messages en fonction de la distance des échanges :
- Ăchanges rĂ©cents (0-3) : ConservĂ©s tels quels (dĂ©tail complet)
- Ăchanges moyens (4-8) : Compression lĂ©gĂšre (espaces blancs, nettoyage du formatage)
- Anciens échanges (9+) : Compression Caveman (suppression des remplissages, résumé)
- TrÚs anciens échanges (20+) : Fortement résumés ou supprimés
Exemple de code
Section intitulée « Exemple de code »import { applyAging } from "@omniroute/open-sse/services/compression/progressiveAging";
const messages = [ { role: "system", content: "You are a helpful assistant" }, { role: "user", content: "What is 2+2?" }, { role: "assistant", content: "4" }, // ... 50 more turns ...];
const { messages: aged, saved } = applyAging(messages, { verbatim: 3, // 3 premiers Ă©changes : verbatim light: 8, // Ăchanges 4-8 : compression lĂ©gĂšre moderate: 20, // Ăchanges 9-20 : compression caveman // Ăchanges 21+ : rĂ©sumĂ© intensif});
// saved = nombre de jetons Ă©conomisĂ©sQuand lâutiliser
Section intitulĂ©e « Quand lâutiliser »Le vieillissement progressif est toujours activĂ© pour les modes aggressive et ultra. Il est particuliĂšrement efficace pour :
- Les sessions de codage de longue durée
- Les conversations de plusieurs jours
- Les workflows agentiques avec de nombreux appels dâoutils
Mode de sortie âHomme des cavernesâ
Section intitulĂ©e « Mode de sortie âHomme des cavernesâ »Le module outputMode.ts injecte des instructions de prompt systĂšme pour que le
modĂšle produise lui-mĂȘme une sortie compressĂ©e et concise (un style âhomme des cavernesâ).
Comment ça marche
Section intitulĂ©e « Comment ça marche »Au lieu de compresser lâentrĂ©e, ce mode ajoute un prompt systĂšme comme :
âRĂ©pondez en un minimum de mots. Omettez les amabilitĂ©s. Utilisez des phrases courtes.â
Cela fonctionne particuliĂšrement bien pour :
- La génération de code (sortie plus concise = moins de tokens)
- Les questions-rĂ©ponses rapides (pas besoin dâexplications Ă©laborĂ©es)
- Le traitement par lots (maximiser le débit)
Quand lâutiliser
Section intitulĂ©e « Quand lâutiliser »Le mode de sortie âhomme des cavernesâ est optionnel â configurez-le via la configuration combinĂ©e :
{ "strategy": "auto", "config": { "auto": { "outputMode": "caveman" } }}Styles de sortie (catalogue)
Section intitulĂ©e « Styles de sortie (catalogue) »Le mode de sortie âhomme des cavernesâ ci-dessus est le chemin hĂ©ritĂ© Ă style unique. La Phase 4 lâa gĂ©nĂ©ralisĂ©
en un catalogue de styles de sortie composables : OUTPUT_STYLE_CATALOG dans
open-sse/services/compression/outputStyles/catalog.ts. Chaque style est une instruction de prompt systĂšme
qui fait en sorte que le modĂšle produise une sortie moins coĂ»teuse ; les styles peuvent ĂȘtre activĂ©s
ensemble et sont injectĂ©s dans lâordre du catalogue.
| Style | id |
Ce quâil fait | Langues dâinstruction |
|---|---|---|---|
| Prose concise | terse-prose |
Supprime les mots de remplissage/articles/hĂ©sitations ; conserve la substance technique exacte. MĂȘme texte que le mode de sortie âhomme des cavernesâ hĂ©ritĂ© (rĂ©fĂ©rencĂ©, non re-tapĂ©). | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi |
| Moins de code | less-code |
Ăchelle YAGNI : le plus petit changement fonctionnel, pas dâabstractions non demandĂ©es. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi |
| Ponytail (développeur senior paresseux) | ponytail |
âLe meilleur code est le code jamais Ă©critâ : rĂ©utilisation > réécriture, cause racine > symptĂŽme, diff fonctionnel le plus court. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi |
| Jâai un TDAH (action dâabord) | i-have-adhd |
Action dâabord (commande/chemin/extrait avant la prose), Ă©tapes numĂ©rotĂ©es et dĂ©limitĂ©es, UNE prochaine Ă©tape concrĂšte, pas de prĂ©ambule/rĂ©capitulatif/clĂŽture. AdaptĂ© de ayghri/i-have-adhd (MIT). | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi |
| CJK concis (æèš) | terse-cjk |
Style ultra-concis du chinois classique. | zh (locale-gated : proposé uniquement lorsque la langue résolue est zh) |
Chaque style propose trois niveaux dâintensitĂ© â lite, full, ultra â et chaque niveau
se termine par la clause de limites partagées, qui conserve les blocs de code, les chemins de fichiers, les commandes,
les chaĂźnes dâerreur, les URL et les identifiants tels quels.
Comment fonctionne lâinjection
Section intitulĂ©e « Comment fonctionne lâinjection »applyOutputStyles() (open-sse/services/compression/outputStyles/apply.ts) rĂ©sout
la sélection par rapport au catalogue (les identifiants inconnus et les styles non concordants avec la locale sont
ignorĂ©s, ce nâest jamais une erreur), concatĂšne les instructions sĂ©lectionnĂ©es dans lâordre du catalogue,
ajoute la clause de limites une seule fois, et place le résultat en début de prompt systÚme
derriĂšre un marqueur dâidempotence unique ([OmniRoute Output Styles]) â une rĂ©application
ne fait rien. Lorsque la langue de la requĂȘte dĂ©tectĂ©e a une traduction, lâinstruction localisĂ©e
est injectĂ©e Ă la place de lâanglais.
Comment activer
Section intitulĂ©e « Comment activer »Dans le tableau de bord : Contexte â ParamĂštres â Compression â une ligne par style avec un interrupteur marche/arrĂȘt et un sĂ©lecteur de niveau. Par programmation, la configuration de compression persiste la sĂ©lection comme suit :
{ "outputStyles": [ { "id": "i-have-adhd", "level": "full" }, { "id": "less-code", "level": "lite" } ]}RĂ©trocompatibilitĂ© : le paramĂštre combinĂ© hĂ©ritĂ© outputMode: "caveman" fonctionne toujours et correspond Ă
terse-prose, identique au byte prĂšs Ă lâancienne injection dans toutes les langues hĂ©ritĂ©es.
Sélection de la langue : avec languageConfig.enabled activé, autoDetect choisit la
langue du dernier message utilisateur (mĂȘme dĂ©tecteur que les moteurs dâentrĂ©e) ;
dĂ©sactiver autoDetect fixe defaultLanguage. DĂ©sactivĂ© â Anglais.
La matrice style à langue est fixée par
tests/unit/compression/output-styles-i18n-matrix.test.ts : un nouveau style ne peut pas ĂȘtre livrĂ©
sans au moins une traduction pt-BR (ou une exception explicite suivie), et un
style existant ne peut pas perdre silencieusement une locale. Pour ajouter un style, voir
EXTENDING_COMPRESSION.md.
Compression des rĂ©sultats dâoutils
Section intitulĂ©e « Compression des rĂ©sultats dâoutils »Le module toolResultCompressor.ts fournit 5 stratĂ©gies de compression spĂ©cialisĂ©es
pour les rĂ©sultats dâoutils (appels de fonctions, sorties dâagents, rĂ©sultats de recherche, etc.) :
- Compression des rĂ©sultats de recherche â Supprime les rĂ©sultats redondants, conserve les N meilleurs
- Compression de la lecture de fichiers â Tronque les fichiers volumineux, prĂ©serve les en-tĂȘtes/imports
- Compression de lâexĂ©cution de code â Ne conserve que les sorties stdout/stderr essentielles
- Compression des requĂȘtes de base de donnĂ©es â Limite les lignes, supprime les mĂ©tadonnĂ©es verbeuses
- Compression des rĂ©ponses dâAPI â Supprime les champs nuls, condense les tableaux
Quand lâutiliser
Section intitulĂ©e « Quand lâutiliser »La compression des rĂ©sultats dâoutils est toujours activĂ©e lorsque des appels dâoutils sont prĂ©sents. Aucune configuration nâest nĂ©cessaire.
Pipeline empilé
Section intitulĂ©e « Pipeline empilĂ© »Le mode empilĂ© exĂ©cute plusieurs moteurs en sĂ©quence â gĂ©nĂ©ralement RTK en premier (60-90% dâĂ©conomies sur la sortie de lâoutil), puis Caveman (30% dâĂ©conomies supplĂ©mentaires sur le texte restant). Cela permet dâatteindre 78-95% dâĂ©conomies totales.
Comment ça marche
Section intitulĂ©e « Comment ça marche »EntrĂ©e (1000 tokens) â RTK (filtre sensible aux commandes) â 200 tokens â Caveman (suppression des remplissages) â 140 tokens â Sortie (140 tokens, 86% d'Ă©conomies)Quand lâutiliser
Section intitulĂ©e « Quand lâutiliser »Utilisez le mode empilĂ© pour :
- Workflows gourmands en outils (codage agentique, recherche)
- Traitement par lots sensible aux coûts
- Lorsque vous avez besoin dâĂ©conomies maximales de tokens
Configurez via la combinaison :
{ "strategy": "auto", "config": { "auto": { "modePack": "stacked" } }}Surcharges de compression par combo
Section intitulĂ©e « Surcharges de compression par combo »Vous pouvez surcharger le mode de compression global par combo pour affiner le comportement en fonction de diffĂ©rents cas dâutilisation :
{ "id": "coding-combo", "strategy": "priority", "config": { "auto": { "weights": { "taskFit": 0.5 }, "modePack": "quality-first" } }, "compressionOverride": { "mode": "aggressive", "stackedPipelines": ["rtk", "caveman"], "preserveToolDefinitions": true }}Ceci est utile pour :
- Combos de codage : Utilisez le mode
aggressivepour les longues sessions - Combos de questions-réponses rapides : Utilisez le mode
litepour des réponses rapides - Combos riches en outils : Utilisez le mode
stackedpour des économies maximales - Combos de production : Utilisez le mode
cache-awarepour les fournisseurs de mise en cache
Voir Aussi
Section intitulĂ©e « Voir Aussi »- Configuration de lâenvironnement â Variables dâenvironnement de compression
- Guide dâarchitecture â Internes du pipeline de compression
- Guide de lâutilisateur â DĂ©marrer avec la compression
- Compression RTK â Filtres RTK, modĂšle de confiance, porte de vĂ©rification, rĂ©cupĂ©ration de sortie brute
- Moteurs de compression â Caveman, RTK, stacked, APIs, MCP, dashboard
- Format des rĂšgles de compression â Format de pack de rĂšgles JSON
- Packs linguistiques de compression â RĂšgles Caveman spĂ©cifiques Ă la langue
HagiCode
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.