Files
OmniRoute/docs/i18n/sv/docs/compression/COMPRESSION_ENGINES.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

31 KiB
Raw Blame History

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, exempelvis caveman eller rtk
  • apply(text, config): Ă€ldre exekveringsvĂ€g som anvĂ€nds av staplade pipelines
  • compress(input, config): primĂ€r exekveringsvĂ€g som returnerar text + statistik
  • getConfigSchema(): returnerar den JSON-Schema-liknande strukturen för giltig konfiguration
  • validateConfig(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, aggressive och ultra

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, skalets find/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.json och globala filter i DATA_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 (stackPriority 35): i en staplad pipeline körs den efter de strukturella motorerna (CCR, session-dedup, headroom, Caveman) men före ultra, 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_modules och 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-hooken postbuild efter 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

  1. Borttagning av brus — tar bort tomma generiska poster och textposter (- generic:, - text: "")
  2. Komprimering av syskonelement — nĂ€r ≄ collapseThreshold (standardvĂ€rde 30) efterföljande rader Ă€r strukturella upprepningar komprimeras de till de första collapseKeepHead (standardvĂ€rde 10) raderna + en sammanfattning av antalet + de sista collapseKeepTail (standardvĂ€rde 5) raderna
  3. Bevarande av referenser — [ref=eXX]-ankare som krĂ€vs av Playwright/computer-use Ă€ndras aldrig
  4. 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ör
  • compression_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_id och engine

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 befintliga key_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.6 matchar endast den bokstavliga strĂ€ngen, aldrig gpt-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Ă€ngen provider/model – gpt-5-6, openai/gpt-5-6 och openai/* fungerar alla, och enbart * undantar varje modell.
  • Matchning: isCompressionExcluded() / normalizeCompressionExclusions() i open-sse/services/compression/exclusions.ts. chatCore.ts kontrollerar 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 via writeCompressionSkip(..., "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 i dist/node_modules (se scripts/build/colocateOptionals.mjs, #4286). Utan dem tillĂ€mpar motorn en fail-open-strategi (returnerar originaltexten). Worker-upplösningen Ă€r inte lĂ€ngre beroende av import.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ör context + filler + structural, men inga paket för dedup / ultra, sĂ„ intensiteten ultra Ă€r inte starkare Ă€n full för dessa sprĂ„k (de anvĂ€nder endast sina egna regler — det finns ingen tyst Ă„tergĂ„ng till de engelska reglerna för dedup/ultra, vilket skulle förvanska utlĂ€ndsk text). en / es / id / pt-BR Ă€r kompletta. Bidrag med dedup.json + ultra.json fö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:null och visas dĂ€rför inte i engineBreakdown — 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