Files
OmniRoute/docs/i18n/nl/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

33 KiB
Raw Blame History

🗜️ Prompt Compression Guide — OmniRoute (Nederlands)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇴 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


Bespaar automatisch 15-95% op geschikte context. Zie voor een snel overzicht de sectie over compressie in de README.

Overzicht

OmniRoute implementeert een modulaire pipeline voor promptcompressie die proactief wordt uitgevoerd voordat verzoeken upstreamproviders bereiken. Dit betekent dat tokens transparant worden bespaard — er zijn geen wijzigingen in je workflow nodig.

Clientverzoek
  → Selectie van compressiestrategie
    → Combo-overschrijving? → Gebruik combo-instelling
    → Drempelwaarde voor automatische activering? → Gebruik automatische modus
    → Standaardmodus? → Gebruik globale instelling
    → Uit? → Sla compressie over
  → Geselecteerde compressiemodus
    → Uit: Geen compressie
    → Lite: Veilige opschoning van witruimte/opmaak (~15%)
    → Standard: Verwijdering van stopwoorden in telegramstijl (~30%)
    → Aggressive: Veroudering en samenvatting van geschiedenis (~50%)
    → Ultra: Heuristisch snoeien en uitdunnen van codeblokken (~75%)
    → RTK: Opdrachtherkenning voor het filteren van terminal-/tooluitvoer (upstreambereik van 60-90%)
    → Stacked: Geordende pipeline met meerdere engines, doorgaans eerst RTK en dan Caveman (geschikt bereik van 78-95%)
  → Gecomprimeerd verzoek → Provider

Compressiemodi

Uit

Er wordt geen compressie toegepast. Alle berichten worden ongewijzigd doorgegeven.

Lite-modus (~15% besparing, <1ms latentie)

De veiligste modus — geen semantische wijzigingen, alleen opschoning van de opmaak:

Techniek Beschrijving
collapseWhitespace Opeenvolgende lege regels en afsluitende spaties samenvoegen
dedupSystemPrompt Dubbele systeemberichten verwijderen
compressToolResults Uitvoerige tool-/functie-uitvoer comprimeren
removeRedundantContent Herhaalde instructies verwijderen
replaceImageUrls Base64-data-URI's van afbeeldingen verkorten

Meest geschikt voor: Altijd ingeschakeld gebruik, veiligheidskritieke workflows.

Standard-modus (~30% besparing)

Geïnspireerd door Caveman — verwijdert stopwoorden en omslachtige formuleringen met behoud van de betekenis:

  • Verwijdert stopwoorden ("please", "I think", "basically", "actually")
  • Verkort omslachtige formuleringen ("in order to" → "to", "as a result of" → "because")
  • Verwijdert beleefde afzwakkingen ("Would you mind...", "If you could possibly...")
  • Meer dan 30 regex-regels, afgestemd op programmeerprompts

Meest geschikt voor: Dagelijkse programmeerworkflows, kostenbewuste teams.

Aggressive-modus (~50% besparing)

Slim beheer van de geschiedenis voor lange sessies:

  • Berichtveroudering — oudere berichten worden steeds verder gecomprimeerd
  • Samenvatting van toolresultaten — lange tooluitvoer wordt vervangen door samenvattingen
  • Bewaking van structurele integriteit — zorgt ervoor dat paren van tool_use en tool_result consistent blijven
  • Bewustzijn van het contextvenster — houdt rekening met tokenlimieten per model

Meest geschikt voor: Langdurige foutopsporingssessies, grote codebases.

Ultra-modus (~75% besparing)

Maximale compressie voor scenario's waarin tokens kritiek zijn:

  • Heuristisch snoeien — verwijdert berichten onder de relevantiedrempel
  • Uitdunnen van codeblokken — comprimeert repetitieve codevoorbeelden
  • Afkapping via binair zoeken — vindt het optimale afkappunt voor het contextvenster
  • Bevat alle functies van de Aggressive-modus

Meest geschikt voor: Wanneer je herhaaldelijk de contextlimieten bereikt.

RTK-modus (upstreambereik van 60-90%)

De RTK-modus is geoptimaliseerd voor uitvoerige tooluitvoer die voorkomt in sessies met programmeeragents:

  • Detecteert klassen van opdrachten/uitvoer, zoals git status, git diff, git log, test-runners, builds van TypeScript/Vite/Webpack, ESLint/Biome/Prettier, npm-audits/-installaties, Docker-logboeken, infrastructuuruitvoer en algemene shell-uitvoer
  • Past JSON-filterpakketten uit open-sse/services/compression/engines/rtk/filters/ toe
  • Importeert filters volgens RTK TOML-schema v1 uit filters.toml-bestanden van het project of uit globale bestanden, met validatie via inline-tests en vertrouwenscontrole voor projectbestanden
  • Bevat 49 ingebouwde filters met inline-verificatievoorbeelden
  • Verwijdert ANSI-besturingssequenties, voortgangsbalken, herhaalde regels en niet-relevante ruis
  • Behoudt mislukkingen, fouten, waarschuwingen, gewijzigde bestanden, samenvattingen en het einde van lange uitvoer
  • Ondersteunt projectfilters met vertrouwenscontrole, globale filters en optioneel herstel van geredigeerde onbewerkte uitvoer

Meest geschikt voor: Agentsessies met transcripties van shell-, build-, test-, git-, grep- en bestandsuitvoer.

Stacked-modus (geschikt bereik van 78-95%)

De Stacked-modus voert meerdere compressie-engines in een deterministische volgorde uit. De standaardpipeline is:

RTK -> Caveman

Door deze volgorde wordt terminal-/tooluitvoer eerst compact gehouden, waarna Caveman semantische condensatie toepast op de resterende prompt in natuurlijke taal. Stacked-pipelines kunnen globaal worden geconfigureerd of via compressiecombo's die aan routeringscombo's zijn toegewezen.

Meest geschikt voor: Gemengde context met grote toollogboeken plus menselijke instructies of assistentsamenvattingen.


Berekening van upstreambesparingen

OmniRoute documenteert compressiebesparingen uit twee bronnen: benchmarks van upstreamprojecten en de eigen enginecompositie van OmniRoute.

Bron Getal uit upstream-README dat hier wordt gebruikt
Caveman ~75% minder uitvoertokens, gemiddeld 65% uitvoerbesparing in benchmarks, een bereik van 22-87% en een invoercompressietool van ~46%
RTK 60-90% besparing op opdrachtuitvoer; voorbeeldsessie van ~118,000 -> ~23,900 tokens, oftewel 79.7% bespaard (~80%)

Voor overlappende tool-/contextpayloads stapelt de standaardcombinatie van OmniRoute de engines:

RTK -> Caveman

De gecombineerde besparingen zijn multiplicatief, niet additief:

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

Dat getal van 78-95% is van toepassing wanneer zowel RTK als Caveman dezelfde invoer-/contextpayload kunnen verkleinen. De Caveman-modus voor responsuitvoer staat hiervan los: gebruik wanneer deze is ingeschakeld de eigen uitvoerbesparingen van Caveman (gemiddeld 65%, ~75% als hoofdgetal, bereik van 22-87%). De totale besparing op factureringskosten hangt af van uw verhouding tussen prompts en uitvoer.

Wat "geschikt" daadwerkelijk betekent

Het genoemde bereik van 15-95% is reëel, maar geldt alleen voor redundante of breedsprakige inhoud — herhaalde foutregels, een buildlogboek dat steeds dezelfde waarschuwing spamt, een buitensporig grote grep-/bestandsleesdump. Het betekent niet dat elk verzoek zoveel bespaart.

Empirisch geverifieerd (tests/unit/compression/stacked-compression-tool-result-savings.test.ts): een stacked-uitvoering (RTK + Caveman) op een tool_result-blok in Anthropic-indeling met 300 identieke foutregels leverde 95.93% tokenbesparing / 96.26% tekenbesparing op — precies binnen het geadverteerde bereik. Maar dezelfde pipeline levert bij normale, niet-redundante tooluitvoer (een overzichtelijke lijst met grep-overeenkomsten, een korte bestandslezing, gewone gesprekstekst) terecht vrijwel geen besparing op, omdat er niets repetitiefs te verwijderen valt en validateCompression() (validation.ts) weigert een herschreven versie te verzenden die codeblokken, URL's, koppen, versies of constante-identificatoren in ALL-CAPS zou weglaten of wijzigen.

Dit is verwacht en veilig gedrag, geen bug: een programmeersessie waarin voornamelijk overzichtelijke bestanden worden gelezen/doorzocht, zal zelfs met volledig ingeschakelde compressie een bescheiden totale besparing opleveren, terwijl een sessie die in een foutlus terechtkomt of een breedsprakige linter gebruikt, op dat verkeer het volledige bereik van 78-95% zal behalen. Gebruik het lage totale besparingspercentage van één sessie niet als bewijs dat compressie verkeerd is geconfigureerd — controleer eerst of de onderliggende tooluitvoer daadwerkelijk redundant was.


Visualisatie van tokenbesparingen

Zonder compressie: 47K tokens naar LLM verzonden
Met Lite:          40K tokens verzonden          (15% bespaard — veilig, altijd actief)
Met Standard:      33K tokens verzonden          (30% bespaard — Caveman-spraakregels)
Met Aggressive:    24K tokens verzonden          (50% bespaard — veroudering + samenvatting)
Met Ultra:         12K tokens verzonden          (75% bespaard — heuristisch snoeien)
Met RTK:           19K-5K tokens verzonden       (60-90% bespaard op opdracht-/tooluitvoer)
Met Stacked:       10K-2.5K tokens verzonden     (78-95% geschikt RTK+Caveman-bereik)

Configuratie

Dashboard

Ga naar Dashboard → Context & Cache:

  • Caveman — modusselectie, taalpakketten, voorbeeldweergave en algemene standaardinstellingen
  • RTK — voorbeeldweergave van opdrachtfilters, RTK-veiligheidsinstellingen en filtercatalogus
  • Compression Combos — benoemde enginepipelines die aan routeringscombinaties zijn toegewezen
  • Auto-Trigger Threshold — activeert automatisch compressie wanneer het aantal tokens de drempel overschrijdt

Overschrijving per combinatie

Wijs in Dashboard → Context & Cache → Compression Combos een compressiecombinatie toe aan een routeringscombinatie:

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

Hiermee kun je gestapelde compressie gebruiken voor gratis programmeerproviders, terwijl je de lite-modus behoudt voor betaalde abonnementen.

Deze toewijzing via "Per-Combo Override" is een andere instelling dan de overschrijving van de compressiemodus voor routeringscombinaties (Default/Off/Lite/Standard/Aggressive/Ultra) — die overschrijving selecteert geen benoemde pipeline voor een compressiecombinatie, maar stelt alleen het veld compressionMode in dat door resolveCompressionPlan wordt geraadpleegd. Dit kan worden ingesteld op de combinatiekaart (Dashboard → Combos) of, sinds #6760, per routeringscombinatie in de lijst "Assign to routing" onder Dashboard → Context & Cache → Compression Combos, direct naast het hierboven beschreven selectievakje voor pipelinetoewijzing. Beide interfaces slaan de instelling op via hetzelfde PUT /api/combos/{id}-endpoint.

Overschrijving per aanvraag

Stuur de requestheader x-omniroute-compression om het compressieplan voor één aanvraag te overschrijven. Deze heeft de hoogste prioriteit — boven de overschrijving voor routeringscombinaties, het actieve profiel, de automatische activering en de Default-instelling van het paneel. Onbekende waarden worden genegeerd (de aanvraag wordt nooit afgewezen) en de algemene hoofdschakelaar blijft altijd bepalend: wanneer compressie algemeen is uitgeschakeld, kan de header deze niet inschakelen. Waarden:

Waarde Effect
off Geen compressie voor deze aanvraag.
default Het van het paneel afgeleide Default-profiel (negeert het actieve profiel).
engine:<id> Eén engine, indien ingeschakeld, bijvoorbeeld engine:rtk.
<combo> Een benoemde combinatie, eerst gezocht op naam (hoofdletterongevoelig) en daarna op id.

Het toegepaste plan wordt teruggestuurd in de responseheader X-OmniRoute-Compression: <mode>; source=<source>, waarbij <source> een van request-header, routing-override, active-profile, auto-trigger, default of off is.

API

# Compressie-instellingen ophalen
curl http://localhost:20128/api/settings/compression

# Compressie-instellingen bijwerken
curl -X PUT http://localhost:20128/api/settings/compression \
  -H "Content-Type: application/json" \
  -d '{"defaultMode":"stacked","autoTriggerMode":"stacked","autoTriggerTokens":32000}'

# Een specifieke RTK-/gestapelde payload vooraf bekijken
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"}]}'

# RTK-filterpakketten weergeven
curl http://localhost:20128/api/context/rtk/filters

# RTK rechtstreeks testen met optionele opdrachtmetadata
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"}'

Wat wordt beschermd

De compressie-engine behoudt altijd:

  • Codeblokken (omheind en inline)
  • URL's en bestandspaden
  • JSON-structuren en gestructureerde gegevens
  • Identifiers en beschermde technische tokens
  • Wiskundige uitdrukkingen
  • Definities van tool-/functieaanroepen
  • Systeemprompts (in lite-modus)

RTK-herstel van onbewerkte uitvoer censureert veelvoorkomende API-sleutels, bearer-tokens, Slack-tokens, AWS-toegangssleutels, wachtwoorden, tokens en geheimen voordat er iets wordt opgeslagen.


Compressiestatistieken

Elke gecomprimeerde aanvraag bevat statistieken in de serverlogboeken:

{
  "originalTokens": 47200,
  "compressedTokens": 40120,
  "savingsPercent": 15.0,
  "techniquesUsed": ["collapseWhitespace", "dedupSystemPrompt"],
  "mode": "lite",
  "engine": "caveman",
  "compressionComboId": "coding-agent-stack",
  "durationMs": 0.8,
  "rtkRawOutputPointers": []
}

Roadmap per fase

Fase Modi Status
Fase 1 Off, Lite Uitgebracht
Fase 2 Standard, Aggressive, Ultra Uitgebracht
Fase 3 RTK, Stacked, Compression Combos Uitgebracht
Fase 4 Output Styles, SLM-tier Ultra, evaluatieframework Uitgebracht
Fase 4C Adaptief contextbudget ("dial") — rekenengine + API (contextBudget op PUT /api/settings/compression) + besturingselementen voor modus/beleid in het dashboard Uitgebracht

Dankbetuigingen

De compressieregels van de Standard-modus zijn geïnspireerd op Caveman van JuliusBrussee ( 51K+) — het virale project "waarom veel tokens gebruiken als weinig tokens ook werken". Caveman rapporteert ~75% minder uitvoertokens, een gemiddelde uitvoerbesparing van 65% in benchmarks, een uitvoerbereik van 22-87% en een tool voor invoercompressie van ~46%.

De RTK-modus is geïnspireerd op RTK - Rust Token Killer van RTK AI — het hoogwaardige project voor compressie van opdrachtuitvoer voor terminal-, build-, test-, git- en tooluitvoerfiltering. RTK rapporteert een besparing van 60-90%, waarbij de voorbeeldsessie in de README een besparing van ~80% laat zien.


Geavanceerde compressiesystemen

Naast de 7 standaardmodi bevat OmniRoute verschillende geavanceerde compressiesystemen die automatisch werken op basis van de context.

Cachebewuste compressie

Sommige providers (zoals Anthropic met promptcaching) ondersteunen promptcaching, waarmee ze delen van de prompt in de cache kunnen opslaan om kosten en latentie te verlagen. Wanneer caching is ingeschakeld, kan agressieve compressie de prestaties juist verslechteren, omdat hierdoor de gecachte tokens veranderen en de cache ongeldig wordt.

De module cachingAware.ts lost dit op door de cachingcontext te detecteren en de compressiestrategie dienovereenkomstig aan te passen.

Hoe het werkt

  1. Cachingcontext detecteren — Scant de aanvraagbody op cache_control-markeringen
  2. Cachingproviders identificeren — Controleert of de doelprovider caching ondersteunt
  3. Strategie aanpassen — Schakelt aggressive/ultra terug naar standard voor cachingproviders
  4. Systeemprompt overslaan — Systeemprompts worden doorgaans gecacht, dus comprimeer ze niet
  5. Deterministische transformaties gebruiken — Gebruik alleen transformaties die consistente uitvoer produceren

Codevoorbeeld

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" }, // ← Cachemarkering
};

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

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

Wanneer te gebruiken

Cachebewuste compressie staat altijd aan — er is geen configuratie nodig. Deze wordt alleen actief wanneer:

  • De aanvraag cache_control-markeringen bevat
  • De doelprovider promptcaching ondersteunt (Anthropic, OpenAI enz.)

Progressieve veroudering

Lange gesprekken stapelen veel gespreksbeurten op, maar oudere beurten worden minder relevant. De module progressiveAging.ts vermindert de gedetailleerdheid van berichten op basis van de afstand in gespreksbeurten:

  • Recente beurten (0-3): Ongewijzigd behouden (volledige details)
  • Middellange beurten (4-8): Lite-compressie (opschonen van witruimte en opmaak)
  • Oude beurten (9+): Caveman-compressie (verwijderen van opvulling, samenvatten)
  • Zeer oude beurten (20+): Sterk samengevat of verwijderd

Codevoorbeeld

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" },
  // ... nog 50 beurten ...
];

const { messages: aged, saved } = applyAging(messages, {
  verbatim: 3, // Eerste 3 beurten: ongewijzigd
  light: 8, // Beurten 4-8: lite-compressie
  moderate: 20, // Beurten 9-20: caveman-compressie
  // Beurten 21+: sterke samenvatting
});

// saved = aantal bespaarde tokens

Wanneer te gebruiken

Progressieve veroudering staat altijd aan voor de modi aggressive en ultra. Dit is met name effectief voor:

  • Langdurige programmeersessies
  • Gesprekken die meerdere dagen duren
  • Agentische workflows met veel toolaanroepen

Caveman-uitvoermodus

De module outputMode.ts injecteert systeempromptinstructies om het model zelf gecomprimeerde, beknopte uitvoer te laten produceren (een "caveman"-stijl).

Hoe het werkt

In plaats van de invoer te comprimeren, voegt deze modus een systeemprompt zoals deze toe:

"Antwoord met zo min mogelijk woorden. Sla beleefdheden over. Gebruik korte zinnen."

Dit werkt met name goed voor:

  • Codegeneratie (beknoptere uitvoer = minder tokens)
  • Snelle vragen en antwoorden (geen uitgebreide uitleg nodig)
  • Batchverwerking (maximaliseert de doorvoer)

Wanneer te gebruiken

De Caveman-uitvoermodus is optioneel — stel deze in via de comboconfiguratie:

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

Uitvoerstijlen (catalogus)

De bovenstaande Caveman-uitvoermodus is het verouderde pad met één stijl. Fase 4 heeft dit veralgemeniseerd tot een catalogus met combineerbare uitvoerstijlen: OUTPUT_STYLE_CATALOG in open-sse/services/compression/outputStyles/catalog.ts. Elke stijl is een systeempromptinstructie die het model zelf goedkopere uitvoer laat produceren; stijlen kunnen samen worden ingeschakeld en worden in catalogusvolgorde geïnjecteerd.

Stijl id Wat deze doet Instructietalen
Beknopt proza terse-prose Verwijdert opvulling/lidwoorden/voorbehouden; houdt de technische inhoud exact. Dezelfde tekst als de verouderde Caveman-uitvoermodus (ernaar verwezen, niet opnieuw uitgeschreven). en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Minder code less-code YAGNI-ladder: kleinste werkende wijziging, geen niet-gevraagde abstracties. en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Paardenstaart (luie senior ontwikkelaar) ponytail "De beste code is code die nooit is geschreven": hergebruik > herschrijven, hoofdoorzaak > symptoom, kortste werkende diff. en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Ik heb ADHD (actie eerst) i-have-adhd Actie eerst (opdracht/pad/fragment vóór proza), genummerde begrensde stappen, ÉÉN concrete volgende stap, geen inleiding/samenvatting/afsluiting. Aangepast van ayghri/i-have-adhd (MIT). en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Beknopt CJK (文言) terse-cjk Ultrakorte klassiek-Chinese stijl. zh (locale-beperkt: alleen aangeboden wanneer de vastgestelde taal zh is)

Elke stijl wordt geleverd met drie intensiteitsniveaus — lite, full, ultra — en elk niveau eindigt met de gedeelde grensclausule, die codeblokken, bestandspaden, opdrachten, foutteksten, URL's en identifiers letterlijk behoudt.

Hoe injectie werkt

applyOutputStyles() (open-sse/services/compression/outputStyles/apply.ts) vergelijkt de selectie met de catalogus (onbekende ids en stijlen met een niet-overeenkomende locale worden weggelaten, nooit als fout behandeld), voegt de geselecteerde instructies in catalogusvolgorde samen, voegt de grensclausule eenmaal toe en plaatst het resultaat vooraan in de systeemprompt achter één idempotentiemarkering ([OmniRoute Output Styles]) — opnieuw toepassen doet niets. Wanneer er een vertaling voor de gedetecteerde taal van de aanvraag bestaat, wordt de gelokaliseerde instructie geïnjecteerd in plaats van de Engelse.

Hoe in te schakelen

In het dashboard: Context → Instellingen → Compressie — één rij per stijl met een aan/uit-schakelaar en een niveaukiezer. Programmatisch slaat de compressieconfiguratie de selectie als volgt op:

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

Achterwaartse compatibiliteit: de verouderde combo-instelling outputMode: "caveman" werkt nog steeds en wordt gekoppeld aan terse-prose, byte-identiek aan de oude injectie in elke verouderde taal.

Taalselectie: wanneer languageConfig.enabled is ingeschakeld, kiest autoDetect de taal van het meest recente gebruikersbericht (dezelfde detector als de invoerengines); als autoDetect wordt uitgeschakeld, wordt defaultLanguage vastgezet. Uit → Engels.

De stijl × taal-matrix wordt vastgelegd door tests/unit/compression/output-styles-i18n-matrix.test.ts: een nieuwe stijl kan niet worden uitgebracht zonder ten minste een pt-BR-vertaling (of een expliciet bijgehouden uitzonderingsgeval), en een bestaande stijl kan niet ongemerkt een locale verliezen. Raadpleeg voor het toevoegen van een stijl EXTENDING_COMPRESSION.md.

Compressie van toolresultaten

De module toolResultCompressor.ts biedt 5 gespecialiseerde compressiestrategieën voor toolresultaten (functieaanroepen, agentuitvoer, zoekresultaten enz.):

  1. Compressie van zoekresultaten — Verwijdert redundante resultaten en behoudt de top-N
  2. Compressie van ingelezen bestanden — Kapt grote bestanden af en behoudt headers/imports
  3. Compressie van code-uitvoering — Behoudt alleen essentiële stdout/stderr
  4. Compressie van databasequery's — Beperkt rijen en verwijdert uitgebreide metadata
  5. Compressie van API-responsen — Verwijdert null-velden en comprimeert arrays

Wanneer te gebruiken

Compressie van toolresultaten staat altijd aan wanneer toolaanroepen aanwezig zijn. Er is geen configuratie nodig.

Gestapelde pipeline

De gestapelde modus voert meerdere engines na elkaar uit — meestal eerst RTK (60-90% besparing op tooluitvoer), gevolgd door Caveman (30% extra besparing op de resterende tekst). Hiermee wordt een totale besparing van 78-95% bereikt.

Hoe het werkt

Invoer (1000 tokens)
  → RTK (opdrachtbewust filter) → 200 tokens
    → Caveman (verwijdering van opvulling) → 140 tokens
  → Uitvoer (140 tokens, 86% besparing)

Wanneer te gebruiken

Gebruik de gestapelde modus voor:

  • Workflows met veel toolgebruik (agentisch programmeren, onderzoek)
  • Kostengevoelige batchverwerking
  • Wanneer u maximale tokenbesparing nodig hebt

Configureer via combo:

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

Overschrijvingen voor compressiecombinaties

Je kunt de globale compressiemodus per combinatie overschrijven om het gedrag voor verschillende gebruikssituaties nauwkeurig af te stemmen:

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

Dit is nuttig voor:

  • Codeercombinaties: Gebruik de modus aggressive voor lange sessies
  • Snelle vraag-en-antwoordcombinaties: Gebruik de modus lite voor snelle antwoorden
  • Combinaties met veel tools: Gebruik de modus stacked voor maximale besparingen
  • Productiecombinaties: Gebruik de modus cache-aware voor providers met caching

Zie ook