Files
OmniRoute/docs/i18n/fr/docs/compression/COMPRESSION_GUIDE.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

37 KiB
Raw Blame History

🗜️ Prompt Compression Guide — OmniRoute (Français)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Économisez automatiquement 15 à 95 % sur le contexte éligible. Pour un aperçu rapide, consultez la section Compression du README.

Vue densemble

OmniRoute met en œuvre un pipeline modulaire de compression des prompts qui sexécute de manière proactive avant que les requêtes natteignent les fournisseurs en amont. Vos économies de tokens seffectuent donc de manière transparente, sans aucune modification de votre flux de travail.

Requête du client
  → Sélecteur de stratégie de compression
    → Remplacement par une combinaison ? → Utiliser le paramètre de la combinaison
    → Seuil de déclenchement automatique ? → Utiliser le mode automatique
    → Mode par défaut ? → Utiliser le paramètre global
    → Désactivé ? → Ignorer la compression
  → Mode de compression sélectionné
    → Désactivé : aucune compression
    → Léger : nettoyage sûr des espaces blancs et du formatage (~15 %)
    → Standard : suppression des mots de remplissage façon télégraphique (~30 %)
    → Agressif : vieillissement de lhistorique + synthèse (~50 %)
    → Ultra : élagage heuristique + allègement des blocs de code (~75 %)
    → RTK : filtrage des sorties du terminal et des outils tenant compte des commandes (plage de 60 à 90 % en amont)
    → Empilé : pipeline ordonné à plusieurs moteurs, généralement RTK puis Caveman (plage éligible de 78 à 95 %)
  → Requête compressée → Fournisseur

Modes de compression

Désactivé

Aucune compression nest appliquée. Tous les messages sont transmis sans modification.

Mode léger (~15 % déconomies, latence <1 ms)

Le mode le plus sûr : aucune modification sémantique, uniquement un nettoyage du formatage :

Technique Description
collapseWhitespace Fusionne les lignes vides consécutives et supprime les espaces en fin de ligne
dedupSystemPrompt Supprime les messages système en double
compressToolResults Compresse les sorties détaillées des outils et fonctions
removeRedundantContent Supprime les instructions répétées
replaceImageUrls Raccourcit les URI de données dimages en base64

Idéal pour : une utilisation permanente et les flux de travail où la sécurité est critique.

Mode standard (~30 % déconomies)

Inspiré de 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 formulations verbeuses (« in order to » → « to », « as a result of » → « because »)
  • Supprime les tournures de politesse hésitantes (« Would you mind... », « If you could possibly... »)
  • Plus de 30 règles dexpressions régulières optimisées pour les prompts de programmation

Idéal pour : les flux de développement quotidiens et les équipes soucieuses des coûts.

Mode agressif (~50 % déconomies)

Gestion intelligente de lhistorique pour les sessions longues :

  • Vieillissement des messages — les messages les plus anciens sont progressivement compressés
  • Synthèse des résultats doutils — les longues sorties doutils sont remplacées par des résumés
  • Garde-fous dintégrité structurelle — garantissent la cohérence des paires tool_use + tool_result
  • Prise en compte de la fenêtre de contexte — respecte les limites de tokens propres à chaque modèle

Idéal pour : les sessions de débogage prolongées et les bases de code volumineuses.

Mode ultra (~75 % déconomies)

Compression maximale pour les scénarios où les tokens sont critiques :

  • Élagage heuristique — supprime les messages dont la pertinence est inférieure au seuil
  • Allègement des blocs de code — compresse les exemples de code répétitifs
  • Troncature par recherche binaire — détermine le point de coupure optimal pour la fenêtre de contexte
  • Toutes les fonctionnalités du mode agressif sont incluses

Idéal pour : les situations où vous atteignez régulièrement les limites de contexte.

Mode RTK (plage de 60 à 90 % en amont)

Le mode RTK est optimisé pour les sorties doutils détaillées apparaissant dans les sessions dagents de programmation :

  • Détecte les classes de commandes et de sorties telles que git status, git diff, git log, les exécuteurs de tests, les builds TypeScript/Vite/Webpack, ESLint/Biome/Prettier, les audits et installations npm, les journaux Docker, les sorties dinfrastructure et les sorties génériques du shell
  • Applique les ensembles de filtres JSON depuis open-sse/services/compression/engines/rtk/filters/
  • Importe les filtres du schéma TOML v1 de RTK depuis les fichiers filters.toml du projet ou globaux, avec validation par des tests intégrés et contrôle de confiance pour les fichiers du projet
  • Inclut 49 filtres intégrés avec des exemples de vérification
  • Supprime les séquences de contrôle ANSI, les barres de progression, les lignes répétées et le bruit sans action possible
  • Préserve les échecs, les erreurs, les avertissements, les fichiers modifiés, les résumés et la fin des longues sorties
  • Prend en charge les filtres de projet soumis à un contrôle de confiance, les filtres globaux et la récupération facultative des sorties brutes expurgées

Idéal pour : les sessions dagents contenant des transcriptions du shell, de builds, de tests, de git, de grep et de sorties de fichiers.

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 -> Caveman

Cet ordre compacte dabord les sorties du terminal et des outils, puis applique la condensation sémantique de Caveman au reste du prompt en langage naturel. Les pipelines empilés peuvent être configurés globalement ou au moyen de combinaisons de compression affectées à des combinaisons de routage.

Idéal pour : les contextes mixtes comportant de volumineux journaux doutils ainsi que des instructions humaines ou des résumés de lassistant.


Calcul des économies en amont

OmniRoute documente les économies réalisées grâce à la compression à partir de deux sources : les benchmarks des projets en amont et la composition des moteurs dOmniRoute.

Source Chiffre du README en amont utilisé ici
Caveman ~75% de tokens de sortie en moins, 65% déconomies moyennes sur la sortie dans les benchmarks, plage de 22-87% et outil de compression des entrées à ~46%
RTK 60-90% déconomies sur la sortie des commandes ; session dexemple de ~118,000 -> ~23,900 tokens, soit 79.7% déconomies (~80%)

Pour les charges utiles doutil/contexte qui se chevauchent, la combinaison OmniRoute par défaut enchaîne les moteurs :

RTK -> Caveman

Les économies combinées sont multiplicatives, et non additives :

combined = 1 - (1 - RTK savings) * (1 - Caveman input savings)
average  = 1 - (1 - 0.80) * (1 - 0.46) = 89.2%
range    = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%

Ce chiffre de 78-95% sapplique lorsque RTK et Caveman peuvent tous deux réduire la même charge utile dentrée/contexte. Le mode de sortie des réponses de Caveman est distinct : lorsquil est activé, utilisez les économies propres à Caveman sur les sorties (65% en moyenne, ~75% annoncé, plage de 22-87%). Les économies totales sur la facturation dépendent de la répartition entre vos prompts et vos sorties.

Ce que signifie réellement « éligible »

La plage annoncée de 15-95% est réelle, mais elle ne sapplique quau contenu redondant ou verbeux — lignes derreur répétées, journal de compilation qui répète sans cesse le même avertissement, sortie grep/lecture de fichier surdimensionnée. Cela ne signifie pas que chaque requête permet déconomiser autant.

Vérification empirique (tests/unit/compression/stacked-compression-tool-result-savings.test.ts) : une exécution stacked (RTK + Caveman) sur un bloc tool_result au format Anthropic contenant 300 lignes derreur identiques a produit 95.93% déconomies de tokens / 96.26% déconomies de caractères — pleinement dans la plage annoncée. Mais lexécution du même pipeline sur une sortie doutil normale et non redondante (une liste propre de correspondances grep, une courte lecture de fichier, du texte conversationnel ordinaire) produit à juste titre des économies proches de zéro, car il ny a rien de répétitif à supprimer et validateCompression() (validation.ts) refuse de transmettre une réécriture qui supprimerait ou modifierait des blocs de code, des URL, des titres, des versions ou des identifiants de constantes EN MAJUSCULES.

Il sagit dun comportement attendu et sûr, et non dun bug : une session de codage qui consiste principalement à lire/parcourir avec grep des fichiers propres constatera des économies totales modestes même lorsque la compression est entièrement activée, tandis quune session confrontée à une boucle en échec ou à un linter très bavard bénéficiera de toute la plage de 78-95% sur ce trafic. Nutilisez pas le faible pourcentage déconomies globales dune seule session comme preuve que la compression est mal configurée — vérifiez dabord si la sortie doutil sous-jacente était réellement redondante.


Visualisation des économies de tokens

Sans compression : 47K tokens envoyés au LLM
Avec Lite :        40K tokens envoyés         (15% économisés — sûr, toujours actif)
Avec Standard :    33K tokens envoyés         (30% économisés — règles « caveman-speak »)
Avec Aggressive :  24K tokens envoyés         (50% économisés — vieillissement + résumé)
Avec Ultra :       12K tokens envoyés         (75% économisés — élagage heuristique)
Avec RTK :         19K-5K tokens envoyés      (60-90% économisés sur la sortie des commandes/outils)
Avec Stacked :     10K-2.5K tokens envoyés    (plage éligible RTK+Caveman de 78-95%)

Configuration

Tableau de bord

Accédez à Dashboard → Context & Cache :

  • Caveman — sélection du mode, packs linguistiques, aperçu et paramètres globaux par défaut
  • RTK — aperçu du filtrage des commandes, paramètres de sécurité RTK et catalogue de filtres
  • Combinaisons de compression — pipelines de moteurs nommés attribués aux combinaisons de routage
  • Seuil de déclenchement automatique — active automatiquement la compression lorsque le nombre de tokens dépasse le seuil

Remplacement par combinaison

Dans Dashboard → Context & Cache → Compression Combos, attribuez une combinaison de compression à une combinaison de routage :

Combinaison : "free-tier-fallback"
  Combinaison de compression : "coding-agent-stack"
  Pipeline : RTK -> Caveman
  Cibles :
    1. if/kimi-k2.7-code
    2. if/qwen3.8-max-preview

Cela vous permet dutiliser une compression empilée avec les fournisseurs gratuits/de codage, tout en conservant le mode allégé pour les abonnements payants.

Cette attribution de « remplacement par combinaison » est un contrôle distinct du remplacement du mode de compression de la combinaison de routage (Default/Off/Lite/Standard/Aggressive/Ultra) — ce remplacement ne sélectionne pas un pipeline de combinaison de compression nommé ; il définit simplement le champ compressionMode consulté par resolveCompressionPlan. Il peut être défini soit sur la carte de la combinaison (Dashboard → Combos), soit, depuis #6760, pour chaque combinaison de routage dans la liste « Assign to routing » sous Dashboard → Context & Cache → Compression Combos, juste à côté de la case à cocher dattribution du pipeline décrite ci-dessus. Les deux interfaces enregistrent les données via le même endpoint PUT /api/combos/{id}.

Remplacement par requête

Envoyez len-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 prévaut sur le remplacement de la combinaison de routage, le profil actif, le déclenchement automatique et la valeur Default du panneau. Les valeurs inconnues sont ignorées (la requête nest jamais rejetée) et linterrupteur principal global continue de tout contrôler : lorsque la compression est désactivée globalement, len-tête ne peut pas lactiver. Valeurs :

Valeur Effet
off Aucune compression pour cette requête.
default Le profil Default dérivé du panneau (ignore le profil actif).
engine:<id> Un seul moteur lorsquil est activé, par ex. engine:rtk.
<combo> Une combinaison nommée, recherchée dabord par nom (sans distinction entre majuscules et minuscules), puis par identifiant.

Le plan appliqué est renvoyé dans len-tête de réponse X-OmniRoute-Compression: <mode>; source=<source>, où <source> correspond à lune des valeurs suivantes : request-header, routing-override, active-profile, auto-trigger, default ou off.

API

# Obtenir les paramètres de compression
curl http://localhost:20128/api/settings/compression

# Mettre à jour les paramètres de compression
curl -X PUT http://localhost:20128/api/settings/compression \
  -H "Content-Type: application/json" \
  -d '{"defaultMode":"stacked","autoTriggerMode":"stacked","autoTriggerTokens":32000}'

# Prévisualiser une charge utile RTK/empilée spécifique
curl -X POST http://localhost:20128/api/compression/preview \
  -H "Content-Type: application/json" \
  -d '{"mode":"rtk","messages":[{"role":"tool","content":"npm test output here"}]}'

# Répertorier les packs de filtres RTK
curl http://localhost:20128/api/context/rtk/filters

# Tester RTK directement avec des métadonnées de commande facultatives
curl -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é

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 dappels doutils/de fonctions
  • Les prompts système (en mode lite)

La récupération des sorties brutes RTK masque les clés API courantes, les jetons bearer, les jetons Slack, les clés daccès AWS, les mots de passe, les jetons et les secrets avant toute persistance.


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

Phase Modes Statut
Phase 1 Off, Lite Livrée
Phase 2 Standard, Aggressive, Ultra Livrée
Phase 3 RTK, Stacked, combinaisons de compression Livrée
Phase 4 Styles de sortie, Ultra de niveau SLM, infrastructure dévaluation Livrée
Phase 4C Budget de contexte adaptatif (« cadran ») — moteur de calcul + API (contextBudget sur PUT /api/settings/compression) + contrôles du mode/de la politique dans le tableau de bord Livrée

Remerciements

Les règles de compression du mode Standard sont inspirées de Caveman par JuliusBrussee ( 51K+) — le projet viral « pourquoi utiliser beaucoup de jetons quand peu de jetons suffisent ». Caveman annonce ~75% de jetons de sortie en moins, une économie moyenne de 65% sur les sorties des benchmarks, une plage de réduction des sorties de 22-87% et un outil de compression des entrées à ~46%.

Le mode RTK est inspiré de RTK - Rust Token Killer par RTK AI — le projet haute performance de compression des sorties de commandes pour le terminal, la compilation, les tests, git et le filtrage des sorties doutils. RTK annonce des économies de 60-90%, avec ~80% déconomie dans lexemple de session de son README.


Systèmes de compression avancés

Au-delà des 7 modes standard, OmniRoute comprend plusieurs systèmes de compression avancés qui fonctionnent automatiquement selon le contexte.

Compression tenant compte du cache

Certains fournisseurs (comme Anthropic avec la mise en cache des prompts) prennent en charge la mise en cache des prompts, ce qui leur permet de mettre en cache certaines parties du prompt afin de réduire les coûts et la latence. Lorsque la mise en cache est activée, une compression agressive peut en réalité 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.

Fonctionnement

  1. Détecter le contexte de mise en cache — Analyse le corps de la requête à la recherche de marqueurs cache_control
  2. Identifier les fournisseurs prenant en charge la mise en cache — Vérifie si le fournisseur cible prend en charge la mise en cache
  3. Ajuster la stratégie — Rétrograde aggressive/ultra vers standard pour les fournisseurs prenant en charge la mise en cache
  4. Ignorer le prompt système — Les prompts système sont généralement mis en cache, il ne faut donc pas les compresser
  5. Utiliser des transformations déterministes — Utilise uniquement des transformations produisant un résultat cohérent

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" }, // ← Marqueur de cache
};

const ctx = detectCachingContext(body, { provider: "anthropic" });
// → { hasCacheControl: true, provider: "anthropic", isCachingProvider: true }

const strategy = getCacheAwareStrategy("aggressive", ctx);
// → { strategy: "standard", skipSystemPrompt: true, deterministicOnly: true }

Quand lutiliser

La compression tenant compte du cache est toujours activée — aucune configuration nest nécessaire. Elle ne se déclenche que lorsque :

  • La requête contient des marqueurs cache_control
  • Le fournisseur cible prend en charge la mise en cache des prompts (Anthropic, OpenAI, etc.)

Vieillissement progressif

Les longues conversations accumulent de nombreux tours de messages, mais les tours plus anciens deviennent moins pertinents. Le module progressiveAging.ts dégrade les messages selon leur ancienneté en nombre de tours :

  • Tours récents (0-3) : Conservés textuellement (tous les détails)
  • Tours intermédiaires (4-8) : Compression Lite (nettoyage des espaces et de la mise en forme)
  • Anciens tours (9+) : Compression Caveman (suppression du contenu superflu, résumé)
  • Très anciens tours (20+) : Fortement résumés ou supprimés

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 tours supplémentaires ...
];

const { messages: aged, saved } = applyAging(messages, {
  verbatim: 3, // 3 premiers tours : textuels
  light: 8, // Tours 4 à 8 : compression Lite
  moderate: 20, // Tours 9 à 20 : compression Caveman
  // Tours 21 et suivants : résumé approfondi
});

// saved = nombre de jetons économisés

Quand lutiliser

Le vieillissement progressif est toujours activé pour les modes aggressive et ultra. Il est particulièrement efficace pour :

  • Les longues sessions de programmation
  • Les conversations sur plusieurs jours
  • Les workflows agentiques comportant de nombreux appels doutils

Mode de sortie Caveman

Le module outputMode.ts injecte des instructions dans le prompt système afin que le modèle produise lui-même une sortie compressée et concise (un style « homme des cavernes »).

Fonctionnement

Au lieu de compresser lentrée, ce mode ajoute un prompt système tel que :

« Réponds avec un minimum de mots. Évite les formules de politesse. Utilise 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 (aucune explication élaborée nécessaire)
  • Le traitement par lots (pour maximiser le débit)

Quand lutiliser

Le mode de sortie Caveman est facultatif — activez-le via la configuration combinée :

{
  "strategy": "auto",
  "config": {
    "auto": {
      "outputMode": "caveman"
    }
  }
}

Styles de sortie (catalogue)

Le mode de sortie Caveman ci-dessus constitue le mécanisme historique à style unique. La phase 4 la 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 amène le modèle lui-même à produire une sortie moins coûteuse ; plusieurs styles peuvent être activés ensemble et sont injectés dans lordre du catalogue.

Style id Fonction Langues des instructions
Prose concise terse-prose Supprime le remplissage, les articles et les formulations hésitantes ; conserve exactement le contenu technique. Même texte que le mode de sortie Caveman historique (référencé, non recopié). en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Moins de code less-code Échelle YAGNI : la plus petite modification fonctionnelle, sans abstractions non demandées. en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Queue de cheval (développeur senior paresseux) ponytail « Le meilleur code est celui qui na jamais été écrit » : réutiliser plutôt que réécrire, traiter la cause racine plutôt que le symptôme, produire le diff fonctionnel le plus court. en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Jai un TDAH (action dabord) i-have-adhd Action dabord (commande/chemin/extrait avant la prose), étapes numérotées et limitées, UNE prochaine étape concrète, sans préambule, récapitulatif ni formule de conclusion. 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 en chinois classique. zh (limité par les paramètres régionaux : proposé uniquement lorsque la langue résolue est zh)

Chaque style comporte trois niveaux dintensité — lite, full, ultra — et chaque niveau se termine par la clause commune de délimitation, qui conserve tels quels les blocs de code, chemins de fichiers, commandes, chaînes derreur, URL et identifiants.

Fonctionnement de linjection

applyOutputStyles() (open-sse/services/compression/outputStyles/apply.ts) résout la sélection par rapport au catalogue (les identifiants inconnus et les styles ne correspondant pas aux paramètres régionaux sont ignorés, sans jamais provoquer derreur), concatène les instructions sélectionnées dans lordre du catalogue, ajoute la clause de délimitation une seule fois, puis place le résultat au début du prompt système derrière un marqueur unique didempotence ([OmniRoute Output Styles]) — toute nouvelle application est sans effet. Lorsquune traduction existe pour la langue détectée de la requête, linstruction localisée est injectée à la place de linstruction anglaise.

Activation

Dans le tableau de bord : Contexte → Paramètres → Compression — une ligne par style, avec un bouton dactivation/désactivation et un sélecteur de niveau. Par programmation, la configuration de compression conserve la sélection sous la forme suivante :

{
  "outputStyles": [
    { "id": "i-have-adhd", "level": "full" },
    { "id": "less-code", "level": "lite" }
  ]
}

Rétrocompatibilité : lancien paramètre combiné outputMode: "caveman" fonctionne toujours et correspond à terse-prose, avec une injection identique octet par octet à lancienne dans chaque langue historique.

Sélection de la langue : lorsque languageConfig.enabled est activé, autoDetect choisit la langue du dernier message utilisateur (avec le même détecteur que les moteurs dentrée) ; désactiver autoDetect fixe la langue à defaultLanguage. Désactivé → anglais.

La matrice styles × langues est verrouillée par tests/unit/compression/output-styles-i18n-matrix.test.ts : un nouveau style ne peut pas être publié sans au moins une traduction pt-BR (ou une exception explicite faisant lobjet dun suivi), et un style existant ne peut pas perdre silencieusement des paramètres régionaux. Pour ajouter un style, consultez EXTENDING_COMPRESSION.md.

Compression des résultats doutils

Le module toolResultCompressor.ts fournit 5 stratégies de compression spécialisées pour les résultats doutils (appels de fonctions, sorties dagents, résultats de recherche, etc.) :

  1. Compression des résultats de recherche — Supprime les résultats redondants et conserve les N meilleurs
  2. Compression des lectures de fichiers — Tronque les fichiers volumineux et préserve les en-têtes/importations
  3. Compression de lexécution de code — Ne conserve que les éléments essentiels de stdout/stderr
  4. Compression des requêtes de base de données — Limite le nombre de lignes et supprime les métadonnées détaillées
  5. Compression des réponses dAPI — Supprime les champs nuls et condense les tableaux

Quand lutiliser

La compression des résultats doutils est toujours activée lorsque des appels doutils sont présents. Aucune configuration nest nécessaire.

Pipeline empilé

Le mode empilé exécute plusieurs moteurs successivement — généralement RTK en premier (60 à 90 % déconomies sur la sortie des outils), puis Caveman (30 % déconomies supplémentaires sur le texte restant). Cela permet dobtenir 78 à 95 % déconomies totales.

Fonctionnement

Entrée (1000 tokens)
  → RTK (filtre tenant compte des commandes) → 200 tokens
    → Caveman (suppression du remplissage) → 140 tokens
  → Sortie (140 tokens, 86 % déconomies)

Quand lutiliser

Utilisez le mode empilé pour :

  • Les workflows utilisant beaucoup doutils (programmation agentique, recherche)
  • Le traitement par lots sensible aux coûts
  • Les situations nécessitant une économie maximale de tokens

Configurez-le via la configuration combinée :

{
  "strategy": "auto",
  "config": {
    "auto": {
      "modePack": "stacked"
    }
  }
}

Remplacements de compression par combo

Vous pouvez remplacer le mode de compression global pour chaque combo afin daffiner le comportement selon les différents cas dutilisation :

{
  "id": "coding-combo",
  "strategy": "priority",
  "config": {
    "auto": {
      "weights": { "taskFit": 0.5 },
      "modePack": "quality-first"
    }
  },
  "compressionOverride": {
    "mode": "aggressive",
    "stackedPipelines": ["rtk", "caveman"],
    "preserveToolDefinitions": true
  }
}

Cela est utile pour :

  • Combos de programmation : utilisez le mode aggressive pour les longues sessions
  • Combos de questions-réponses rapides : utilisez le mode lite pour des réponses rapides
  • Combos utilisant beaucoup doutils : utilisez le mode stacked pour maximiser les économies
  • Combos de production : utilisez le mode cache-aware pour les fournisseurs prenant en charge la mise en cache

Voir aussi