Aller au contenu
OmniRoute source

đŸ—œïž Prompt Compression Guide — OmniRoute (Français)

Aucune compression appliquée. Tous les messages passent sans modification.

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é.

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.

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_result restent 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.

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.

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.toml de 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.

Le mode empilé exécute plusieurs moteurs de compression dans un ordre déterministe. Le pipeline par défaut est :

RTK -> Caveman

Cet 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.


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

Les é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.

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.


Sans compression : 47K jetons envoyés au LLM
Avec 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%)

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

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

Cela 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}.

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: &lt;mode&gt;; source=<source>, oĂč <source> est l’un des suivants : request-header, routing-override, active-profile, auto-trigger, default, ou off.

FenĂȘtre de terminal
# Get compression settings
curl http://localhost:20128/api/settings/compression
# Update compression settings
curl -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 payload
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"}]}'
# List RTK filter packs
curl http://localhost:20128/api/context/rtk/filters
# Test RTK directly with optional command metadata
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"}'

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Ă©.


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": []
}

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Ă©

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.


Au-delà des 7 modes standard, OmniRoute inclut plusieurs systÚmes de compression avancés qui fonctionnent automatiquement en fonction du contexte.

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.

  1. DĂ©tecter le contexte de mise en cache — Scanne le corps de la requĂȘte Ă  la recherche de marqueurs cache_control
  2. Identifier les fournisseurs de 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 Ă  standard pour les fournisseurs de mise en cache
  4. Ignorer l’invite systĂšme — Les invites systĂšme sont gĂ©nĂ©ralement mises en cache, il ne faut donc pas les compresser
  5. Utiliser des transformations dĂ©terministes — N’utiliser que des transformations qui produisent une sortie cohĂ©rente
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 }

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.)

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
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és

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

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”).

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)

Le mode de sortie “homme des cavernes” est optionnel — configurez-le via la configuration combinĂ©e :

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

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.

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.

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.

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.) :

  1. Compression des rĂ©sultats de recherche — Supprime les rĂ©sultats redondants, conserve les N meilleurs
  2. Compression de la lecture de fichiers — Tronque les fichiers volumineux, prĂ©serve les en-tĂȘtes/imports
  3. Compression de l’exĂ©cution de code — Ne conserve que les sorties stdout/stderr essentielles
  4. Compression des requĂȘtes de base de donnĂ©es — Limite les lignes, supprime les mĂ©tadonnĂ©es verbeuses
  5. Compression des rĂ©ponses d’API — Supprime les champs nuls, condense les tableaux

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.

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.

Entrée (1000 tokens)
→ RTK (filtre sensible aux commandes) → 200 tokens
→ Caveman (suppression des remplissages) → 140 tokens
→ Sortie (140 tokens, 86% d'Ă©conomies)

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"
}
}
}

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 aggressive pour les longues sessions
  • Combos de questions-rĂ©ponses rapides : Utilisez le mode lite pour des rĂ©ponses rapides
  • Combos riches en outils : Utilisez le mode stacked pour des Ă©conomies maximales
  • Combos de production : Utilisez le mode cache-aware pour les fournisseurs de mise en cache


Code source d’OmniRoute (a58000c7685f)

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.

Interface principale de HagiCode en thĂšme clair
  • 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.
Visiter HagiCode