* 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.
31 KiB
Compression Engines (Norsk)
🌐 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 · 🇳🇱 nl · 🇮🇳 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
OmniRoute-komprimering er bygget rundt motorkontrakter. En modus kan kjøre én motor direkte
(caveman eller rtk) eller en deterministisk, stablet pipeline som kjører flere motorer i rekkefølge.
Moduser
| Modus | Motorbane | Tiltenkt inndata |
|---|---|---|
off |
ingen | Nøyaktig bevaring av ledeteksten |
lite |
Caveman lite-hjelpere | Alltid aktiv opprydding med lav risiko |
standard |
Caveman | Komprimering av ledetekster i naturlig språk |
aggressive |
Caveman + historikk-/verktøysammendrag | Lange chatteøkter |
ultra |
Caveman + beskjæringshjelpere | Gjenoppretting ved kontekstgrensen |
rtk |
RTK | Utdata fra terminal, skall, bygging, tester og git |
omniglyph |
OmniGlyph | Kontekst som bilde via leverandørens opprinnelige grensesnitt |
stacked |
Pipeline, standard rtk -> caveman |
Blandede verktøylogger og prosa, maksimal besparelse |
OmniGlyph-komprimeringsprofiler
omniglyph-motoren (pakken omniglyph, 1.4.0+) godtar en navngitt semantisk profil, som angis
globalt via omniglyph.profile i komprimeringsinnstillingene eller per trinn via
trinnkonfigurasjonen til den stablede pipelinen:
| Profil | Avgrensning |
|---|---|
aggressive |
Standard. Policyen som de publiserte målingene målte — avbilder system, verktøydokumentasjon og tett historikk |
balanced |
Beholder aktiv tilstand i opprinnelig format, beskytter de siste 8 rundene og slår sammen eldre, avsluttet historikk |
coding-safe |
Beholder autoritet, verktøyskjemaer og aktive verktøyutdata i opprinnelig format, og beskytter de siste 12 rundene |
passthrough |
Ruter uten å transformere; motoren hoppes over |
Profilen er et tak, ikke et gulv: mergeCompressionProfileOptions i pakken
nekter å la en overstyring fra en innringer gjenåpne en tapsutsatt kanal som profilen har lukket, slik at en
trinnspesifikk preserveSystemPrompt: false ikke kan aktivere systemkomprimering på nytt under coding-safe.
Målt på denne kodebasen: coding-safe og balanced hever minCompressChars til
maksimumsverdien og beholder system, verktøyskjemaer og verktøyresultater i opprinnelig format, slik at en økt som ennå ikke
har akkumulert historikk, stopper ved below_min_chars, og motoren transformerer ingenting. Det
er derfor standarden er aggressive i stedet for den sikreste profilen.
Pakken fastsetter sitt eget modellomfang og sin egen profil fra miljøkonfigurasjonen. OmniRoute delegerer aldri avgjørelsen: adapteren låser modellporten til pakkens mest restriktive omfang, slik at innstillinger i vertsmiljøet bare kan begrense tillatelseslisten, aldri utvide den utover OmniRoutes målte resultater.
Motorregister
Registeret finnes i open-sse/services/compression/engines/registry.ts. Motorene tilbyr en felles
kontrakt:
id: stabil motor-ID, for eksempelcavemanellerrtkapply(text, config): eldre kjøringssti brukt av stablede pipelinescompress(input, config): primær kjøringssti som returnerer tekst + statistikkgetConfigSchema(): returnerer den JSON-Schema-lignende strukturen for gyldig konfigurasjonvalidateConfig(config): returnerer{ valid, errors[] }
Registrering bruker registerCompressionEngine(engine) (eller registerEngine for avanserte tilfeller),
som kaller assertValidEngine() og validateConfig(defaultConfig) før motoren godtas.
Bruk unregisterCompressionEngine(id) for å fjerne en motor under kjøring.
strategySelector.ts registrerer de innebygde motorene før komprimeringen kjøres. Dette gjør at forhåndsvisning,
kjøretidskomprimering, stablet modus, tester og fremtidige motorer kan bruke den samme kjøringsstien.
Komprimering av MCP-beskrivelser (relatert)
Et separat register komprimerer beskrivelsesmetadata for MCP-verktøy på registernivå – se
open-sse/mcp-server/descriptionCompressor.ts og MCP-SERVER.md. Det gjenbruker
Caveman-regler, men opererer på verktøymetadata, ikke forespørselsnyttelaster.
Ytterligere innebygde motorer
I tillegg til Caveman, RTK og LLMLingua-2 inneholder registeret flere spesialiserte tapsfrie / strukturelle motorer (brukt av stablede pipelines, testmiljøet og tester):
| Motor | ID | Hva den gjør |
|---|---|---|
| CCR | ccr |
Content-Compress-Retrieve (H4): erstatter store sammenhengende tekstblokker med innholdsadresserte referanser, slik at gjentatte/store blokker sendes én gang og deretter refereres til. |
| headroom | headroom |
SmartCrusher (H3 + N5): tapsfri tabellkomprimering av homogene JSON-array-nyttelaster til et kolonnebasert [N rows]-format. |
| ionizer | ionizer |
Utvalg av rader fra begynnelsen, midten og slutten av svært store homogene blokker, der den utelatte midtdelen lagres som en CCR-innholdsadressert referanse. |
| session-dedup | session-dedup |
Innholdsadressert deduplisering på tvers av dialogrunder (inspirert av TokenMizer): utelater tekst som allerede er sett i tidligere dialogrunder i samme økt. |
Instruksjon for CCR-henteprotokollen (#8033): Første gang CCR erstatter ≥1 blokk i en
forespørsel, legger motoren til én enkelt, idempotent system-melding først (som begynner med
sentinelen [CCR protocol]) for å lære opp den som kaller, i kontrakten mellom markør og verktøy: hva en
[CCR retrieve hash=<24hex> chars=N]-markør betyr, at hashen må kopieres ordrett
(alle 24 heksadesimale tegn – feilkopierte hasher er den sannsynlige årsaken til treff med «blokk ikke funnet»),
og at en [dedup:ref sha=...]-markør betyr «se tilbake i historikken», ikke «kall
verktøyet». Merknaden settes inn bare når den som kaller, sine annonserte tools[] beviser at den
faktisk kan nå omniroute_ccr_retrieve (callerSupportsCcrRetrieve() i
open-sse/services/compression/engines/ccr/protocolInstruction.ts) – en vanlig
OpenAI-kompatibel klient uten dette verktøyet mottar aldri en instruksjon om å kalle noe
den ikke kan nå. Idempotens håndheves ved å søke gjennom meldingshistorikken etter sentinelen
før innsetting, slik at forespørsler over flere dialogrunder (som spiller av tidligere meldinger på nytt) ikke stabler
merknaden én gang per dialogrunde.
Caveman
Caveman-modus fokuserer på semantisk kondensering av vanlig prosa:
- bevarer kodeblokker, URL-er, JSON, stier og strukturerte data
- fjerner fyllord, forbehold, gjentatt kontekst og omstendelige bindeformuleringer
- støtter språktilpassede filregelpakker i
open-sse/services/compression/rules/ - er fortsatt tilgjengelig gjennom de eldre modusene
standard,aggressiveogultra
Dashbordvisningen er Dashboard -> Context & Cache -> Caveman.
Oppstrømsprosjektet Caveman rapporterer ~75% færre utdata-tokener, gjennomsnittlig 65% reduksjon i utdata i referansetester
med et spenn på 22-87%, og et verktøy med ~46% komprimering av inndata. OmniRoute bruker Cavemans tall for inndatasiden
ved dokumentasjon av kombinerte besparelser for ledetekst/kontekst. Cavemans utdatamodus er fortsatt en separat
funksjon for responsatferd.
RTK
RTK-modus fokuserer på utdata fra kommandoer og verktøy:
- oppdager utdataklasser som
git status,git branch,git diff, Vitest/Jest/Pytest, Cargo-/Go-tester, TypeScript-/Vite-/Webpack-bygg, ESLint, npm-revisjoner/installasjoner, Docker-logger, skallkommandoenefind/grep, stakkspor og generiske logger - bruker 49 JSON-filtre fra
open-sse/services/compression/engines/rtk/filters/ - støtter den deklarative pipelinen i RTK-stil: fjerning av ANSI, erstatning, kortslutning ved samsvarende utdata, fjerning/bevaring av linjer, avkorting per linje, avkorting av begynnelse/slutt/maksimalt antall linjer og reserveverdi ved tomt resultat
- støtter prosjektfiltre underlagt tillitskontroll i
.rtk/filters.jsonog globale filtre iDATA_DIR/rtk/filters.json - fjerner ANSI-sekvenser, fremdriftsstøy, gjentatte linjer og lite nyttig standardtekst
- bevarer feil som kan følges opp, advarsler, sammendrag, endrede filer og kontekst på slutten
- kan valgfritt beholde sladdede rådata for gjenoppretting/feilsøking gjennom autentiserte administrasjonsruter
Dashbordvisningen er Dashboard -> Context & Cache -> RTK.
Driftsdetaljer for egendefinerte filtre, tillit, verifisering og gjenoppretting av rådata finnes i
RTK_COMPRESSION.md.
Oppstrømsprosjektet RTK rapporterer 60-90% besparelse ved komprimering av kommandoutdata. Eksempelet i README-filen viser at en
30-minutters Claude Code-økt går fra ~118,000 tokener til ~23,900, eller en besparelse på 79.7%.
LLMLingua-2 (semantisk beskjæring)
LLMLingua-2-modus utfører semantisk tokenbeskjæring på prosa ved hjelp av en liten ONNX-tokenklassifikator, som utfyller de regelbaserte Caveman- og RTK-motorene:
- komprimerer bare prosa i meldinger som ikke er systemmeldinger; inngjerdede kodeblokker og andre bevarte konstruksjoner endres aldri
- kjører
@atjsh/llmlingua-2-bakenden (ONNX via@huggingface/transformers) i en arbeidertråd, slik at modellinferens aldri blokkerer forespørselens hendelsesløkke - kan stables (
stackPriority35): I en stablet pipeline kjører den etter de strukturelle motorene (CCR, session-dedup, headroom, Caveman), men førultra, siden semantisk beskjæring er mest effektiv på tekst som allerede er strukturelt komprimert – f.eks.rtk -> caveman -> llmlingua - går videre ved enhver feil (manglende valgfrie avhengigheter, oppstart av arbeider, modellinnlasting, inferens eller tidsavbrudd) → originalteksten returneres uendret, aldri en feil
Motorplassering: open-sse/services/compression/engines/llmlingua/. Dashbordvisningen
er Dashboard -> Context & Cache -> LLMLingua.
Modeller
Standardmodellen er TinyBERT (atjsh/llmlingua-2-js-tinybert-meetingbank, ~57 MB,
rask). En mer nøyaktig BERT-base-modell (Arcoldd/llmlingua4j-bert-base-onnx,
~710 MB) er tilgjengelig via feltet model i motorkonfigurasjonen. @huggingface/transformers
laster den valgte modellen ned ved behov fra HuggingFace Hub til
${DATA_DIR}/models/llmlingua ved første kall (modelStore.ts); en overstyring med modelPath i konfigurasjonen
peker i stedet til en lokal kopi (for frakoblede / isolerte installasjoner).
Valgfrie avhengigheter og behovsstyrt installasjon
Den fjernbare LLMLingua-kjøretidsstakken med peer-avhengigheter er valgfri. To pakker er deklarert som
optionalDependencies i package.json og holdes eksterne av produksjonsbygget
(scripts/build/prepublish.ts inkluderer dem ikke i pakken):
| Pakke | Versjon (låst) | Merknader |
|---|---|---|
@atjsh/llmlingua-2 |
2.0.5 |
Inngangspakke; deklarerer de andre som peer-pakker |
js-tiktoken |
^1.0.20 |
Tokenisator |
@huggingface/transformers er låst til ^4.2.0 (deles med den lokale banen for innebygginger og
spores også inn i den frittstående pakken); @atjsh/llmlingua-2@2.0.5 bruker den som peer-avhengighet med
"^3.5.2 || ^4.0.0", så både Transformers.js v3 og v4 støttes. Fra og med 2.0.4
krever @atjsh/llmlingua-2 ikke lenger @tensorflow/tfjs, noe som fjernet den største enkeltstående
bidragsyteren (TensorFlow.js) fra SLM-stakken. Bare de to pakkene ovenfor er fjernbare SLM-
peer-avhengigheter. En standard npm install (utvikling) installerer den valgfrie stakken automatisk med mindre valgfrie
avhengigheter utelates.
Hvorfor behovsstyrt: Den npm-publiserte pakken, den frittstående pakken og Docker-avbildningen
leveres uten disse avhengighetene for å holde størrelsen nede. Når de mangler, mislykkes arbeiderens
avhengighetskontroll (en @atjsh/llmlingua-2-oppløsningskontroll i worker.ts), og motoren
går stille videre – valg av LLMLingua blir en no-op (teksten returneres uendret, og ingen
feil logges). Installer den valgfrie stakken for å aktivere den i et redusert miljø:
# lås til versjonene som er deklarert i package.json optionalDependencies
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
Fjerningen av @tensorflow/tfjs (2.0.4+) eliminerer den tidligere dominerende bidragsyteren på ~800 MB
– det gjenværende fotavtrykket består av kjøretidsmiljøene transformers.js + onnxruntime-node,
samt TinyBERT-modellen (~57 MB), som lastes ned ved første gangs bruk (ikke via npm).
Per miljø:
- Utvikling /
npm install— installeres automatisk med mindre du brukte--omit=optional(eller--no-optional). Ingen handling er nødvendig. - Global npm (
npm i -g omniroute) / frittstående — kjør installasjonskommandoen ovenfor i katalogen til den installerte pakken, eller installer på nytt uten å utelate valgfrie avhengigheter. - Docker — legg til installasjonskommandoen i et avledet bildelag; det publiserte bildet leveres bevisst i en minimal utgave.
- VPS (PM2) — installer i appens
node_modules, og start deretter prosessen på nytt slik at arbeidsprosessen kontrollerer porten på nytt. - Rå Next-frittstående (
npm run build→.build/next/standalone/server.js) — den frittstående sporingen leveres VERKEN med arbeidsprosessen eller de valgfrie avhengighetene, så motoren går stille over til åpen modus ved feil.scripts/build/colocate-standalone.mjslegger til begge deler på nytt (esbuild for arbeidsprosessen + rekursiv inkludering av valgfrie avhengigheter i det frittstående treet); det kjøres automatisk via npm-hookenpostbuildetter hver bygging. Idempotent og fortsetter uten feil når avhengigheter mangler.
Bekreft at den er aktiv: Når LLMLingua er valgt, blir faktisk prosa reelt forkortet (motoren
slutter å gå over til åpen modus ved feil), og den første forespørselen utløser nedlasting av modellen til
${DATA_DIR}/models/llmlingua. Porten kontrollerer med hensikt bare @atjsh/llmlingua-2 —
de andre peer-avhengighetene er kun ESM, og require.resolve kaster feil for dem selv når de finnes — så
arbeidsprosessen går fortsatt over til åpen modus ved feil hvis en peer-avhengighet faktisk mangler på import()-tidspunktet.
Stablede pipelines
Stablet modus kjører pipeline-trinn i rekkefølge. Standardrekkefølgen er:
rtk -> caveman
Bruk dette for økter med kodeagenter der en ledetekst kombinerer utdata fra kommandoer med tekst fra mennesker eller assistenter. RTK reduserer først støyende verktøylogger, og deretter komprimerer Caveman det gjenværende naturlige språket.
Pipeline-trinn konfigureres med stackedPipeline i komprimeringsinnstillingene eller gjennom komprimeringskombinasjoner.
Når begge motorene reduserer den samme kvalifiserte nyttelasten, forsterkes besparelsene:
kombinert = 1 - (1 - RTK-besparelse) * (1 - Caveman-inndatabesparelse)
gjennomsnitt = 1 - (1 - 0.80) * (1 - 0.46) = 89.2%
intervall = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%
MCP-filter for tilgjengelighetstre
MCP-smartfilteret for tilgjengelighetstrær er et komprimeringslag som kjøres etter utførelse på MCP-verktøyresultater, ikke på ledetekster eller kontekst. Det er rettet mot de omfattende nyttelastene med tilgjengelighetstrær og nettleserøyeblikksbilder som returneres av verktøy som Playwright, computer-use og MCP-servere for nettleserautomatisering.
Hva det gjør
- Fjerning av støy — fjerner tomme generiske oppføringer og tekstoppføringer (
- generic:,- text: "") - Sammenfolding av sideordnede elementer — når ≥
collapseThreshold(standardverdi 30) sammenhengende linjer er strukturelle gjentakelser, foldes de sammen til de førstecollapseKeepHead(standardverdi 10) linjene + et sammendrag med antall + de sistecollapseKeepTail(standardverdi 5) linjene - Bevaring av referanser —
[ref=eXX]-ankre som kreves av Playwright/computer-use, blir aldri endret - Fast avkorting — hvis teksten etter sammenfolding fortsatt overstiger
maxTextChars(standardverdi 50 000), avkortes den med et navigasjonstips slik at agenten kan fortsette arbeidet
Plassering av motoren
open-sse/services/compression/engines/mcpAccessibility/
index.ts ← inngangspunkt for smartFilterText()
collapseRepeated.ts ← algoritme for sammenfolding av sideordnede elementer
constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG
Konfigurasjon
Styres av compression.mcpAccessibility i de globale innstillingene (migrering 056). Standardkonfigurasjon:
{
"enabled": true,
"maxTextChars": 50000,
"collapseThreshold": 30,
"collapseKeepHead": 10,
"collapseKeepTail": 5,
"minLengthToProcess": 2000
}
Filteret brukes bare på nyttelaster med verktøyresultater der type er "text", og der lengden overstiger minLengthToProcess. Det påvirker ikke komprimering av ledetekster eller forespørselsnyttelaster.
Forventede besparelser
60–80 % på verktøyresultater med nettleserøyeblikksbilder, avhengig av sidens kompleksitet. Sammenfoldingsalgoritmen er O(n) i antall linjer og gir ubetydelig ekstra forsinkelse.
Dette filteret sammenlignet med komprimeringsmotorene ovenfor
| Aspekt | Caveman / RTK / stablet | MCP-filter for tilgjengelighet |
|---|---|---|
| Mål | Ledetekster/kontekst i forespørsler | MCP-verktøyresultater |
| Utløser | Innstilling for komprimeringsmodus | compression.mcpAccessibility.enabled |
| Omfang | Alle SSE-meldinger | Bare verktøyresultater |
| Referanseankre | Ikke relevant | Bevares uten unntak |
Komprimeringskombinasjoner
Komprimeringskombinasjoner er navngitte komprimeringsprofiler som kan tilordnes rutingskombinasjoner:
compression_combos: lagrer modus, pipeline, RTK-konfigurasjon, språkkonfigurasjon og standardmarkørcompression_combo_assignments: knytter en komprimeringskombinasjon til en rutingskombinasjon- kjøretidsintegrasjonen løser en tilordnet komprimeringskombinasjon før generelle overstyringer for kombinasjoner
- analyse inkluderer
compression_combo_idogengine
Plassering i kontrollpanelet: Dashboard -> Context & Cache -> Compression Combos.
API-grensesnitt
| Rute | Formål |
|---|---|
/api/settings/compression |
Globale komprimeringsinnstillinger (inkluderer mcpAccessibility-oppsett) |
/api/compression/preview |
Forhåndsvis en hvilken som helst komprimeringsmodus |
/api/compression/language-packs |
Vis tilgjengelige Caveman-språkpakker |
/api/context/caveman/config |
Alias for Caveman-innstillinger |
/api/context/rtk/config |
RTK-standardverdier og -innstillinger |
/api/context/rtk/filters |
RTK-filterkatalog |
/api/context/rtk/test |
Endepunkt for RTK-forhåndsvisning/-testing |
/api/context/rtk/raw-output/[id] |
Autentisert gjenoppretting av sladdet råutdata |
/api/context/combos |
CRUD for komprimeringskombinasjoner |
/api/context/combos/[id]/assignments |
CRUD for tilordning av rutingskombinasjoner |
/api/context/analytics |
Alias for komprimeringsanalyse |
Administrasjonsruter krever administrasjonsautentisering eller kontroll av API-nøkkelpolicy.
MCP-verktøy
Komprimering eksponerer fem MCP-verktøy:
| Verktøy | Omfang | Formål |
|---|---|---|
omniroute_compression_status |
read:compression |
Innstillinger, analyse og hurtigbufferstatistikk |
omniroute_compression_configure |
write:compression |
Oppdater globale innstillinger |
omniroute_set_compression_engine |
write:compression |
Angi modus og valgfri pipeline |
omniroute_list_compression_combos |
read:compression |
Vis komprimeringskombinasjoner |
omniroute_compression_combo_stats |
read:compression |
Les analyse for kombinasjoner/motorer |
Omfang og ekskluderinger
Embeddings komprimeres aldri. open-sse/handlers/embeddings.ts kaller aldri noen
komprimeringsmotor — forespørsels-/responskroppene sendes rett til eksekveringskomponenten uten endringer.
Dette er strukturelt i dag (embeddings og chat-fullføringer har separate håndteringskomponenter), ikke en
kjøretidskontroll, men det betyr at bekymringen for vektorforvrengning i #8034 ikke har noen eksponeringsflate
i embeddings-flyten.
Ekskluderingsfilter per modell/endepunkt (#8034). For chat-fullføringer kan en operatør angi
modell-ID-er / provider/model-mål som aldri skal komprimeres — et sikkerhetstiltak som er nyttig hvis
komprimering senere kobles nærmere en embeddings-tilgrensende flyt, og generelt nyttig
for alle modeller der en eksakt byte-for-byte-prompt er viktig (deterministiske evalueringer, hurtigbufferfølsomme
prefikser osv.).
- Innstillingsfelt:
exclusions?: string[]i den globale komprimeringskonfigurasjonen (GET/PUT /api/settings/compression), lagret via det eksisterendekey_value-navnerommet for komprimering (src/lib/db/compression.ts) — ingen ny tabell. - Fane i kontrollpanelet: Dashboard → Compression → Exclusions
(
/dashboard/compression/exclusions). - Mønstersyntaks:
*er det eneste jokertegnet. Alle andre regex-metategn i et mønster blir escapet før samsvarskontroll, slik atgpt-5.6bare samsvarer med den bokstavelige strengen, aldrigpt-5x6(ReDoS-sikkert, avgrenset, ingen nestede kvantifikatorer). Mønstre samsvares uten hensyn til store og små bokstaver mot både den rene modell-ID-en og den sammensatteprovider/model-verdien —gpt-5-6,openai/gpt-5-6ogopenai/*fungerer alle, og*alene ekskluderer alle modeller. - Samsvarskontroll:
isCompressionExcluded()/normalizeCompressionExclusions()iopen-sse/services/compression/exclusions.ts.chatCore.tskontrollerer det ekskluderte målet rett etter at komprimeringsinnstillingene er løst, før noen motor kjører, og behandler et samsvar nøyaktig som om komprimering var globalt deaktivert — forespørselskroppen er beviselig byte-for-byte-identisk. Hoppet registreres viawriteCompressionSkip(..., "excluded")for synlighet i analysen. - Standard (tom/manglende liste): identisk med oppførselen før #8034 — ingenting ekskluderes.
Kjente begrensninger
- LLMLingua-2 (SLM) krever samlokaliserte valgfrie avhengigheter. Workeren kjører bare i et
produksjonsbygg når
@atjsh/llmlingua-2+ peer-avhengigheter er samlokalisert idist/node_modules(sescripts/build/colocateOptionals.mjs, #4286). Uten dem går motoren over til sikker standardatferd (returnerer originalteksten). Worker-oppløsning avhenger ikke lenger avimport.meta.url(den feiler i den frittstående pakken) — den forankres i kjøretidsmiljøets cwd /argv[1]. - Caveman-språkpakkene
de/fr/jaer ufullstendige. De leveres med regler forcontext+filler+structural, men uten pakker fordedup/ultra, så intensitetenultraer ikke sterkere ennfullfor disse språkene (de bruker bare sine egne regler — det finnes ingen skjult tilbakefall til de engelskededup/ultra-reglene, som ville ha ødelagt fremmedspråklig tekst).en/es/id/pt-BRer komplette. Bidrag meddedup.json+ultra.jsonfor de ufullstendige pakkene er velkomne. - Stablet telemetri viser bare motorer som utførte komprimering. Et trinn i en stablet pipeline der
motoren kjørte, men ga 0 % besparelse, returnerer
stats:nullog vises derfor ikke iengineBreakdown— det kan ikke skilles fra et trinn som ble hoppet over. Å skille mellom «kjørte, 0 %» og «hoppet over» ville kreve en endring i oversiktsmodellen og er utsatt.
Validering
De målrettede kontrollene for dette området er:
node --import tsx/esm --test tests/unit/compression/rtk-*.test.ts tests/unit/compression/pipeline-integration.test.ts tests/unit/compression/context-compression-api.test.ts
node --import tsx/esm --test tests/unit/compression/*.test.ts tests/golden-set/*.test.ts tests/integration/compression-pipeline.test.ts tests/unit/api/compression/compression-api.test.ts
node --import tsx/esm --test tests/unit/compression/mcpAccessibility*.test.ts
npm run typecheck:core