* 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 (Svenska)
đ 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 · đłđŽ no · đźđł or · đźđł pa · đ”đ phi · đ”đ± pl · đ”đč pt · đ§đ· pt-BR · đ·đŽ ro · đ·đș ru · đ±đ° si · đžđ° sk · đžđź sl · đ·đž sr · đ°đȘ sw · đźđł ta · đźđł te · đčđ th · đčđ· tr · đșđŠ uk-UA · đ”đ° ur · đșđż uz · đ»đł vi · đłđŹ yo · đšđł zh-CN · đčđŒ zh-TW
OmniRoute-komprimering bygger pÄ motorkontrakt. Ett lÀge kan köra en motor direkt
(caveman eller rtk) eller en deterministisk staplad pipeline som kör flera motorer i ordningsföljd.
LĂ€gen
| LÀge | MotorsökvÀg | Avsedd indata |
|---|---|---|
off |
ingen | Exakt bevarande av prompten |
lite |
Caveman lite-hjÀlpfunktioner | Kontinuerlig rensning med lÄg risk |
standard |
Caveman | Komprimering av promptar med naturligt sprÄk |
aggressive |
Caveman + historik-/verktygssammanfattare | LÄnga chattsessioner |
ultra |
Caveman + beskÀrningshjÀlpare | à terstÀllning vid kontextgrÀnsen |
rtk |
RTK | Utdata frÄn terminal, skal, bygge, test och git |
omniglyph |
OmniGlyph | Kontext som bild via leverantörens ursprungliga protokoll |
stacked |
Pipeline, standard rtk -> caveman |
Blandade verktygsloggar och prosa, maximal besparing |
Komprimeringsprofiler för OmniGlyph
Motorn omniglyph (paketet omniglyph, 1.4.0+) accepterar en namngiven semantisk profil, som anges
globalt via omniglyph.profile i komprimeringsinstÀllningarna eller per steg via
stegkonfigurationen för den staplade pipelinen:
| Profil | GrÀns |
|---|---|
aggressive |
Standard. Policyn som de publicerade mĂ€tresultaten baserades pĂ„ â avbildar systemprompt, verktygsdokumentation och tĂ€t historik |
balanced |
BehÄller aktuellt tillstÄnd i ursprungligt format, skyddar de senaste 8 turerna och slÄr ihop Àldre avslutad historik |
coding-safe |
BehÄller auktoritet, verktygsscheman och aktuella verktygsutdata i ursprungligt format samt skyddar de senaste 12 turerna |
passthrough |
Vidarebefordrar utan omvandling; motorn hoppas över |
Profilen Àr ett tak, inte ett golv: mergeCompressionProfileOptions i paketet
vÀgrar lÄta en anroparÄsidosÀttning Äteröppna en informationsförlorande kanal som profilen har stÀngt, sÄ
preserveSystemPrompt: false per steg kan inte Äteraktivera systemkomprimering under coding-safe.
MÀtt pÄ denna kodbas höjer coding-safe och balanced minCompressChars till dess
maxvÀrde och behÄller systemprompt, verktygsscheman och verktygsresultat i ursprungligt format, sÄ en session som Ànnu inte har
samlat pÄ sig historik stannar vid below_min_chars och motorn omvandlar ingenting. Det
Àr dÀrför standardvÀrdet Àr aggressive i stÀllet för den sÀkraste profilen.
Paketet faststÀller sjÀlvt sitt modellomfÄng och sin profil frÄn sin miljökonfiguration. OmniRoute delegerar aldrig beslutet: adaptern lÄser modellgrinden till paketets mest restriktiva omfÄng, sÄ vÀrdmiljöns instÀllningar kan bara begrÀnsa tillÄtelselistan, aldrig utöka den bortom OmniRoutes uppmÀtta resultat.
Motorregister
Registret finns i open-sse/services/compression/engines/registry.ts. Motorerna exponerar ett gemensamt
kontrakt:
id: stabilt motor-id, exempelviscavemanellerrtkapply(text, config): Àldre exekveringsvÀg som anvÀnds av staplade pipelinescompress(input, config): primÀr exekveringsvÀg som returnerar text + statistikgetConfigSchema(): returnerar den JSON-Schema-liknande strukturen för giltig konfigurationvalidateConfig(config): returnerar{ valid, errors[] }
Registrering görs med registerCompressionEngine(engine) (eller registerEngine för avancerade fall),
som anropar assertValidEngine() och validateConfig(defaultConfig) före godkÀnnande.
AnvÀnd unregisterCompressionEngine(id) för att ta bort en motor under körning.
strategySelector.ts registrerar de inbyggda motorerna innan komprimeringen körs. Det gör att förhandsgranskning,
körtidskomprimering, staplat lÀge, tester och framtida motorer kan anvÀnda samma exekveringsvÀg.
Komprimering av MCP-beskrivningar (relaterat)
Ett separat register komprimerar beskrivningsmetadata för MCP-verktyg pĂ„ registernivĂ„ â se
open-sse/mcp-server/descriptionCompressor.ts och MCP-SERVER.md. Det ÄteranvÀnder
Caveman-regler men arbetar med verktygsmetadata, inte nyttolaster i förfrÄgningar.
Ytterligare inbyggda motorer
Utöver Caveman, RTK och LLMLingua-2 innehÄller registret flera specialiserade förlustfria / strukturella motorer (som anvÀnds av staplade pipelines, testmiljön och tester):
| Motor | Id | Vad den gör |
|---|---|---|
| CCR | ccr |
Content-Compress-Retrieve (H4): ersÀtter stora sammanhÀngande textblock med innehÄllsadresserade referenser, sÄ att upprepade/stora block skickas en gÄng och dÀrefter refereras. |
| headroom | headroom |
SmartCrusher (H3 + N5): förlustfri tabellkomprimering av homogena nyttolaster med JSON-arrayer till ett kolumnbaserat [N rows]-format. |
| ionizer | ionizer |
Samplar rader frÄn början, mitten och slutet i mycket stora homogena block och lagrar den utelÀmnade mitten som en innehÄllsadresserad CCR-referens. |
| session-dedup | session-dedup |
InnehÄllsadresserad deduplicering mellan turer (inspirerad av TokenMizer): utelÀmnar text som redan förekommit i tidigare turer under samma session. |
Instruktion för CCR-hĂ€mtningsprotokollet (#8033): första gĂ„ngen CCR ersĂ€tter â„1 block i en
förfrÄgan lÀgger motorn till ett enda idempotent system-meddelande först (som inleds med
sentineln [CCR protocol]) som lÀr anroparen kontraktet mellan markör och verktyg: vad en
[CCR retrieve hash=<24hex> chars=N]-markör betyder, att hashvÀrdet mÄste kopieras ordagrant
(alla 24 hexadecimala tecken â felkopierade hashvĂ€rden Ă€r den sannolika orsaken till
missar av typen "block not found") och att en [dedup:ref sha=...]-markör betyder "titta bakÄt i historiken", inte "anropa
verktyget". Informationen infogas endast nÀr anroparens annonserade tools[] bevisar att den
faktiskt kan nÄ omniroute_ccr_retrieve (callerSupportsCcrRetrieve() i
open-sse/services/compression/engines/ccr/protocolInstruction.ts) â en vanlig
OpenAI-kompatibel anropare utan det verktyget fÄr aldrig en instruktion om att anropa nÄgot
som den inte kan nÄ. Idempotens sÀkerstÀlls genom att meddelandehistoriken genomsöks efter sentineln
före infogning, sÄ att förfrÄgningar med flera turer (som spelar upp tidigare meddelanden igen) inte staplar
informationen en gÄng per tur.
Caveman
Caveman-lÀget fokuserar pÄ semantisk kondensering av vanlig prosa:
- bevarar kodblock, URL:er, JSON, sökvÀgar och strukturerade data
- tar bort utfyllnad, garderingar, upprepad kontext och omstÀndliga sambandsfraser
- stöder sprÄkanpassade filregelpaket i
open-sse/services/compression/rules/ - Àr fortsatt tillgÀngligt via de Àldre lÀgena
standard,aggressiveochultra
Instrumentpanelsvyn finns under Dashboard -> Context & Cache -> Caveman.
Caveman uppströms rapporterar ~75% fÀrre utdatatokens, 65% genomsnittlig utdatabesparing i prestandatester
med ett intervall pÄ 22-87%, samt ett verktyg för indatakomprimering pÄ ~46%. OmniRoute anvÀnder Cavemans siffra för
indatasidan vid dokumentation av kombinerade besparingar för promptar/kontext; Cavemans utdatalÀge förblir en separat
funktion för svarsbeteende.
RTK
RTK-lÀget fokuserar pÄ utdata frÄn kommandon och verktyg:
- identifierar utdataklasser som
git status,git branch,git diff, Vitest/Jest/Pytest, Cargo-/Go-tester, TypeScript-/Vite-/Webpack-byggen, ESLint, npm-granskningar/-installationer, Docker-loggar, skaletsfind/grep, stackspÄrningar och generiska loggar - tillÀmpar 49 JSON-filter frÄn
open-sse/services/compression/engines/rtk/filters/ - stöder den deklarativa pipelinen i RTK-stil: borttagning av ANSI, ersÀttning, kortslutning vid matchande utdata, borttagning/bevarande av rader, trunkering per rad, trunkering av början/slutet/maximalt antal rader samt reservvÀrde vid tomt resultat
- stöder projektfilter som styrs av förtroende i
.rtk/filters.jsonoch globala filter iDATA_DIR/rtk/filters.json - tar bort ANSI-sekvenser, förloppsbrus, upprepade rader och oanvÀndbar standardtext
- bevarar ÄtgÀrdbara fel, varningar, sammanfattningar, Àndrade filer och avslutande kontext
- kan valfritt behÄlla maskerade rÄdata för ÄterstÀllning/felsökning via autentiserade administrationsrutter
Instrumentpanelsvyn finns under Dashboard -> Context & Cache -> RTK.
Driftsinformation om anpassade filter, förtroende, verifiering och ÄterstÀllning av rÄutdata finns i
RTK_COMPRESSION.md.
RTK uppströms rapporterar besparingar pÄ 60-90% för komprimering av kommandoutdata. Exemplet i dess README visar att en
30 minuter lÄng Claude Code-session minskar frÄn ~118,000 tokens till ~23,900, vilket motsvarar en besparing pÄ 79.7%.
LLMLingua-2 (semantisk beskÀrning)
LLMLingua-2-lÀget utför semantisk beskÀrning av tokens i prosa med hjÀlp av en liten ONNX-klassificerare för tokens, som kompletterar de regelbaserade Caveman- och RTK-motorerna:
- komprimerar endast prosa i meddelanden som inte Àr systemmeddelanden; inhÀgnade kodblock och andra bevarade konstruktioner Àndras aldrig
- kör
@atjsh/llmlingua-2-backenddelen (ONNX via@huggingface/transformers) i en arbetstrÄd, sÄ att modellinferens aldrig blockerar begÀrans hÀndelseloop - Àr staplingsbar (
stackPriority35): i en staplad pipeline körs den efter de strukturella motorerna (CCR, session-dedup, headroom, Caveman) men föreultra, eftersom semantisk beskĂ€rning Ă€r effektivast pĂ„ text som redan har komprimerats strukturellt â t.ex.rtk -> caveman -> llmlingua - fortsĂ€tter utan fel vid alla typer av fel (saknade valfria beroenden, start av arbetstrĂ„d, modellinlĂ€sning, inferens eller tidsgrĂ€ns) â originaltexten returneras oförĂ€ndrad, aldrig ett fel
Motorns plats: open-sse/services/compression/engines/llmlingua/. Instrumentpanelsvyn
finns under Dashboard -> Context & Cache -> LLMLingua.
Modeller
Standardmodellen Àr TinyBERT (atjsh/llmlingua-2-js-tinybert-meetingbank, ~57 MB,
snabb). En BERT-base-modell med högre noggrannhet (Arcoldd/llmlingua4j-bert-base-onnx,
~710 MB) Àr tillgÀnglig via fÀltet model i motorkonfigurationen. @huggingface/transformers
hÀmtar den valda modellen vid behov frÄn HuggingFace Hub till
${DATA_DIR}/models/llmlingua vid det första anropet (modelStore.ts); en ÄsidosÀttande modelPath-konfiguration
pekar i stÀllet pÄ en lokal kopia (för offlineinstallationer/installationer utan nÀtverksÄtkomst).
Valfria beroenden och installation vid behov
LLMLinguas beskÀrningsbara stack med körningsberoenden Àr valfri. TvÄ paket deklareras som
optionalDependencies i package.json och hÄlls externa av produktionsbygget
(scripts/build/prepublish.ts paketerar inte dem):
| Paket | Version (lÄst) | AnmÀrkningar |
|---|---|---|
@atjsh/llmlingua-2 |
2.0.5 |
IngÄngspaket; deklarerar de andra som peer-paket |
js-tiktoken |
^1.0.20 |
Tokeniserare |
@huggingface/transformers Àr lÄst till ^4.2.0 (delas med sökvÀgen för lokala inbÀddningar och
spÄras Àven in i det fristÄende paketet); @atjsh/llmlingua-2@2.0.5 anvÀnder det som peer med
"^3.5.2 || ^4.0.0", sÄ bÄde Transformers.js v3 och v4 stöds. Sedan 2.0.4
krÀver @atjsh/llmlingua-2 inte lÀngre @tensorflow/tfjs, vilket tog bort den största enskilda
bidragande komponenten (TensorFlow.js) frÄn SLM-stacken. Endast de tvÄ paketen ovan Àr beskÀrningsbara SLM-
peer-paket. En vanlig npm install (utveckling) installerar automatiskt den valfria stacken om valfria
beroenden inte utelÀmnas.
Varför vid behov: det npm-publicerade paketet, det fristÄende paketet och Docker-avbildningen
levereras utan dessa beroenden för att förbli kompakta. NÀr de saknas misslyckas arbetstrÄdens beroendekontroll
(en uppslagningskontroll av @atjsh/llmlingua-2 i worker.ts) och motorn
fortsĂ€tter tyst utan fel â att vĂ€lja LLMLingua blir en no-op (texten returneras oförĂ€ndrad och inget
fel loggas). Installera den valfria stacken för att aktivera den i en beskuren miljö:
# lÄs till versionerna som deklareras i package.json optionalDependencies
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
Borttagningen av @tensorflow/tfjs (2.0.4+) eliminerar den tidigare dominerande komponenten pÄ ~800 MB
â det Ă„terstĂ„ende utrymmesbehovet utgörs av transformers.js- och onnxruntime-node-körmiljöerna
samt TinyBERT-modellen (~57 MB), som hÀmtas vid första anvÀndningen (inte via npm).
Per miljö:
- Utveckling /
npm installâ installeras automatiskt om du inte angav--omit=optional(eller--no-optional). Ingen Ă„tgĂ€rd krĂ€vs. - Global npm (
npm i -g omniroute) / fristĂ„ende installation â kör installationskommandot ovan i den installerade paketkatalogen eller installera om utan att utelĂ€mna valfria beroenden. - Docker â lĂ€gg till installationskommandot i ett hĂ€rlett avbildningslager; den publicerade avbildningen levereras avsiktligt i ett minimalt utförande.
- VPS (PM2) â installera i programmets
node_modulesoch starta sedan om processen sÄ att workern kontrollerar grinden pÄ nytt. - Obehandlad fristÄende Next-version (
npm run buildâ.build/next/standalone/server.js) â den fristĂ„ende spĂ„rningen inkluderar VARKEN workern eller de valfria beroendena, sĂ„ motorn gĂ„r obemĂ€rkt över till öppet lĂ€ge vid fel.scripts/build/colocate-standalone.mjsĂ„terstĂ€ller bĂ„da (worker-esbuild + de valfria beroendenas transitiva beroenden i det fristĂ„ende katalogtrĂ€det); det körs automatiskt via npm-hookenpostbuildefter varje bygge. Idempotent och fortsĂ€tter utan fel nĂ€r beroenden saknas.
Verifiera att den Àr aktiv: nÀr LLMLingua Àr valt minskar faktisk prosa verkligen i storlek (motorn
slutar gÄ över till öppet lÀge vid fel), och den första begÀran utlöser modellhÀmtningen till
${DATA_DIR}/models/llmlingua. Grinden söker avsiktligt endast efter @atjsh/llmlingua-2 â
de andra peer-beroendena Ă€r endast ESM-baserade och require.resolve genererar ett undantag för dem Ă€ven nĂ€r de finns â sĂ„
workern gÄr fortfarande över till öppet lÀge vid fel om nÄgot peer-beroende faktiskt saknas vid import()-tillfÀllet.
Staplade pipelines
Staplat lÀge kör pipeline-stegen i ordningsföljd. StandardinstÀllningen Àr:
rtk -> caveman
AnvÀnd detta för sessioner med kodningsagenter dÀr en prompt kombinerar kommandoutdata med prosa frÄn en mÀnniska eller assistent. RTK minskar först brusiga verktygsloggar och dÀrefter komprimerar Caveman ÄterstÄende naturligt sprÄk.
Pipeline-stegen konfigureras med stackedPipeline i komprimeringsinstÀllningarna eller via komprimeringskombinationer.
NÀr bÄda motorerna minskar samma kvalificerade nyttolast förstÀrks besparingarna:
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%
MCP-filter för tillgÀnglighetstrÀd
Det smarta MCP-filtret för tillgÀnglighetstrÀd Àr ett komprimeringslager efter körning som tillÀmpas pÄ MCP-verktygens verktygsresultat, inte pÄ prompter eller kontext. Det Àr inriktat pÄ de utförliga nyttolaster för tillgÀnglighetstrÀd och webblÀsarögonblicksbilder som returneras av verktyg som Playwright, computer-use och MCP-servrar för webblÀsarautomatisering.
Vad det gör
- Borttagning av brus â tar bort tomma generiska poster och textposter (
- generic:,- text: "") - Komprimering av syskonelement â nĂ€r â„
collapseThreshold(standardvĂ€rde 30) efterföljande rader Ă€r strukturella upprepningar komprimeras de till de förstacollapseKeepHead(standardvĂ€rde 10) raderna + en sammanfattning av antalet + de sistacollapseKeepTail(standardvĂ€rde 5) raderna - Bevarande av referenser â
[ref=eXX]-ankare som krĂ€vs av Playwright/computer-use Ă€ndras aldrig - HĂ„rd trunkering â om texten efter komprimering fortfarande överskrider
maxTextChars(standardvÀrde 50 000) trunkeras den med en navigeringsanvisning sÄ att agenten kan fortsÀtta arbeta
Motorns plats
open-sse/services/compression/engines/mcpAccessibility/
index.ts â startpunkt för smartFilterText()
collapseRepeated.ts â algoritm för komprimering av syskonelement
constants.ts â DEFAULT_MCP_ACCESSIBILITY_CONFIG
Konfiguration
Styrs av compression.mcpAccessibility i de globala instÀllningarna (migrering 056). Standardkonfiguration:
{
"enabled": true,
"maxTextChars": 50000,
"collapseThreshold": 30,
"collapseKeepHead": 10,
"collapseKeepTail": 5,
"minLengthToProcess": 2000
}
Filtret tillÀmpas endast pÄ nyttolaster med verktygsresultat vars type Àr "text" och vars lÀngd överskrider minLengthToProcess. Det pÄverkar inte promptkomprimering eller nyttolaster i begÀranden.
FörvÀntade besparingar
60â80 % för verktygsresultat med webblĂ€sarögonblicksbilder, beroende pĂ„ sidans komplexitet. Komprimeringsalgoritmen har O(n)-komplexitet rĂ€knat i antal rader och tillför försumbar latens.
Det hÀr filtret jÀmfört med komprimeringsmotorerna ovan
| Aspekt | Caveman / RTK / Stacked | MCP-filter för tillgÀnglighet |
|---|---|---|
| MÄl | Prompter/kontext i begÀranden | MCP-verktygsresultat |
| Utlösare | InstÀllning för komprimeringslÀge | compression.mcpAccessibility.enabled |
| Omfattning | Alla SSE-meddelanden | Endast verktygsresultat |
| Referensankare | Ej tillÀmpligt | Bevaras ovillkorligen |
Komprimeringskombinationer
Komprimeringskombinationer Àr namngivna komprimeringsprofiler som kan tilldelas routningskombinationer:
compression_combos: lagrar lÀge, pipeline, RTK-konfiguration, sprÄkkonfiguration och standardmarkörcompression_combo_assignments: mappar en komprimeringskombination till en routningskombination- körtidsintegrationen löser en tilldelad komprimeringskombination före generiska ÄsidosÀttningar av kombinationer
- analysdata inkluderar
compression_combo_idochengine
Plats i kontrollpanelen: Dashboard -> Context & Cache -> Compression Combos.
API-yta
| Rutt | Syfte |
|---|---|
/api/settings/compression |
Globala komprimeringsinstÀllningar (inkluderar mcpAccessibility-konfiguration) |
/api/compression/preview |
Förhandsgranska valfritt komprimeringslÀge |
/api/compression/language-packs |
Lista tillgÀngliga Caveman-sprÄkpaket |
/api/context/caveman/config |
Alias för Caveman-instÀllningar |
/api/context/rtk/config |
RTK-standardvÀrden och instÀllningar |
/api/context/rtk/filters |
RTK-filterkatalog |
/api/context/rtk/test |
Slutpunkt för RTK-förhandsgranskning/test |
/api/context/rtk/raw-output/[id] |
Autentiserad ÄterstÀllning av maskerad rÄutdata |
/api/context/combos |
CRUD för komprimeringskombinationer |
/api/context/combos/[id]/assignments |
CRUD för tilldelningar av routningskombinationer |
/api/context/analytics |
Alias för komprimeringsanalys |
Hanteringsrutter krÀver hanteringsautentisering eller policykontroller för API-nycklar.
MCP-verktyg
Komprimering exponerar fem MCP-verktyg:
| Verktyg | Omfattning | Syfte |
|---|---|---|
omniroute_compression_status |
read:compression |
InstÀllningar, analysdata, cachestatistik |
omniroute_compression_configure |
write:compression |
Uppdatera globala instÀllningar |
omniroute_set_compression_engine |
write:compression |
Ange lÀge och valfri pipeline |
omniroute_list_compression_combos |
read:compression |
Lista komprimeringskombinationer |
omniroute_compression_combo_stats |
read:compression |
LÀs analysdata för kombinationer/motorer |
Omfattning och undantag
InbÀddningar komprimeras aldrig. open-sse/handlers/embeddings.ts anropar aldrig nÄgon
komprimeringsmotor â innehĂ„llet i begĂ€ran/svaret skickas direkt till exekveraren utan Ă€ndringar.
Detta Àr strukturellt i dag (inbÀddningar och chattkompletteringar har separata hanterare), inte en
körtidskontroll, men det innebÀr att risken för vektorförvrÀngning i #8034 inte har nÄgon exponeringsyta
i inbÀddningsflödet.
Undantagsfilter per modell/slutpunkt (#8034). För chattkompletteringar kan en operatör ange
modell-id:n/provider/model-mĂ„l som aldrig fĂ„r komprimeras â en skyddsmekanism som Ă€r anvĂ€ndbar om
komprimering senare kopplas nÀrmare ett flöde intill inbÀddningar, och generellt anvÀndbar
för alla modeller dÀr en exakt byte-för-byte-prompt Àr viktig (deterministiska utvÀrderingar, cachekÀnsliga
prefix osv.).
- InstÀllningsfÀlt:
exclusions?: string[]i den globala komprimeringskonfigurationen (GET/PUT /api/settings/compression), bestĂ€ndigt lagrad via det befintligakey_value-namnomrĂ„det för komprimering (src/lib/db/compression.ts) â ingen ny tabell. - Flik i kontrollpanelen: Dashboard â Compression â Exclusions
(
/dashboard/compression/exclusions). - Mönstersyntax:
*Ă€r det enda jokertecknet. Alla andra reguljĂ€ra uttrycks metatecken i ett mönster escapes före matchning, sĂ„gpt-5.6matchar endast den bokstavliga strĂ€ngen, aldriggpt-5x6(ReDoS-sĂ€kert, begrĂ€nsat, inga nĂ€stlade kvantifierare). Mönster matchas skiftlĂ€gesokĂ€nsligt mot bĂ„de modell-id:t och den sammansatta strĂ€ngenprovider/modelâgpt-5-6,openai/gpt-5-6ochopenai/*fungerar alla, och enbart*undantar varje modell. - Matchning:
isCompressionExcluded()/normalizeCompressionExclusions()iopen-sse/services/compression/exclusions.ts.chatCore.tskontrollerar det undantagna mĂ„let direkt efter att komprimeringsinstĂ€llningarna har lösts, innan nĂ„gon motor körs, och behandlar en matchning exakt som om komprimering vore globalt inaktiverad â innehĂ„llet i begĂ€ran Ă€r bevisligen byte-identiskt. Ăverhoppningen registreras viawriteCompressionSkip(..., "excluded")för synlighet i analysdata. - StandardvĂ€rde (tom/saknad lista): identiskt med beteendet före #8034 â ingenting undantas.
KÀnda begrÀnsningar
- LLMLingua-2 (SLM) krÀver samlokaliserade valfria beroenden. Workern körs endast i en
produktionsbuild nÀr
@atjsh/llmlingua-2+ peer-beroenden Ă€r samlokaliserade idist/node_modules(sescripts/build/colocateOptionals.mjs, #4286). Utan dem tillĂ€mpar motorn en fail-open-strategi (returnerar originaltexten). Worker-upplösningen Ă€r inte lĂ€ngre beroende avimport.meta.url(det fungerar inte i det fristĂ„ende paketet) â den förankras i körningens cwd /argv[1]. - Caveman-sprĂ„kpaketen
de/fr/jaĂ€r ofullstĂ€ndiga. De innehĂ„ller regler förcontext+filler+structural, men inga paket fördedup/ultra, sĂ„ intensitetenultraĂ€r inte starkare Ă€nfullför dessa sprĂ„k (de anvĂ€nder endast sina egna regler â det finns ingen tyst Ă„tergĂ„ng till de engelska reglerna fördedup/ultra, vilket skulle förvanska utlĂ€ndsk text).en/es/id/pt-BRĂ€r kompletta. Bidrag meddedup.json+ultra.jsonför de ofullstĂ€ndiga paketen vĂ€lkomnas. - Stackad telemetri listar endast motorer som utförde komprimering. Ett steg i en stackad pipeline vars
motor kördes men gav 0 % besparing returnerar
stats:nulloch visas dĂ€rför inte iengineBreakdownâ det gĂ„r inte att skilja frĂ„n ett steg som hoppades över. Att skilja âkördes, 0 %â frĂ„n âhoppades överâ skulle krĂ€va en Ă€ndring av nedbrytningsmodellen och har skjutits upp.
Validering
De fokuserade kontrollerna för detta omrÄde Àr:
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