* 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.
33 KiB
Compression Engines (Română)
🌐 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 · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Compresia OmniRoute este construită în jurul contractelor motoarelor. Un mod poate rula direct un singur motor
(caveman sau rtk) ori o conductă stivuită deterministă care execută mai multe motoare în ordine.
Moduri
| Mod | Traseul motorului | Intrare preconizată |
|---|---|---|
off |
niciunul | Păstrarea exactă a promptului |
lite |
Utilitare Caveman lite | Curățare permanentă cu risc redus |
standard |
Caveman | Condensarea prompturilor în limbaj natural |
aggressive |
Caveman + rezumatoare de istoric/instrumente | Sesiuni lungi de chat |
ultra |
Caveman + utilitare de eliminare | Recuperarea după atingerea limitei de context |
rtk |
RTK | Ieșiri de terminal, shell, compilare, testare și git |
omniglyph |
OmniGlyph | Context sub formă de imagine pe protocolul nativ al furnizorului |
stacked |
Conductă, implicit rtk -> caveman |
Jurnale mixte de instrumente și proză, economii maxime |
Profiluri de compresie OmniGlyph
Motorul omniglyph (pachetul omniglyph, 1.4.0+) acceptă un profil semantic denumit, configurat
global prin omniglyph.profile în setările de compresie sau pentru fiecare pas prin configurația
pasului din conducta stivuită:
| Profil | Limită |
|---|---|
aggressive |
Implicit. Politica măsurată de rezultatele publicate — transformă în imagini sistemul, documentația instrumentelor și istoricul dens |
balanced |
Păstrează starea activă în format nativ, protejează ultimele 8 schimburi și restrânge istoricul închis mai vechi |
coding-safe |
Păstrează în format nativ autoritatea, schemele instrumentelor și ieșirea activă a instrumentelor, protejând ultimele 12 schimburi |
passthrough |
Rutează fără transformare; motorul este omis |
Profilul este un plafon, nu un prag minim: mergeCompressionProfileOptions din pachet
nu permite unei suprascrieri efectuate de apelant să redeschidă un canal cu pierderi pe care profilul l-a închis, astfel încât
preserveSystemPrompt: false configurat pentru un anumit pas nu poate reactiva compresia sistemului în cadrul profilului coding-safe.
Conform măsurătorilor efectuate pe această bază de cod: coding-safe și balanced ridică minCompressChars la valoarea sa
maximă și păstrează sistemul, schemele instrumentelor și rezultatele instrumentelor în format nativ, astfel încât o sesiune care încă nu a
acumulat istoric se oprește la below_min_chars, iar motorul nu transformă nimic. Acesta
este motivul pentru care valoarea implicită este aggressive, nu profilul cel mai sigur.
Pachetul își determină propriul domeniu de modele și propriul profil din configurația sa de mediu. OmniRoute nu deleagă niciodată această decizie: adaptorul fixează filtrul pentru modele la domeniul cel mai restrictiv al pachetului, astfel încât setările mediului gazdă pot doar să restrângă lista de permisiuni, fără a o putea extinde vreodată dincolo de rezultatele măsurate de OmniRoute.
Registrul motoarelor
Registrul se află în open-sse/services/compression/engines/registry.ts. Motoarele expun un contract
comun:
id: ID stabil al motorului, precumcavemansaurtkapply(text, config): calea de execuție moștenită, utilizată de pipeline-urile stivuitecompress(input, config): calea principală de execuție, care returnează textul + statisticilegetConfigSchema(): returnează structura similară cu JSON Schema a configurației validevalidateConfig(config): returnează{ valid, errors[] }
Înregistrarea utilizează registerCompressionEngine(engine) (sau registerEngine pentru cazuri avansate),
care apelează assertValidEngine() și validateConfig(defaultConfig) înainte de acceptare.
Utilizați unregisterCompressionEngine(id) pentru a elimina un motor în timpul execuției.
strategySelector.ts înregistrează motoarele încorporate înainte de rularea comprimării. Astfel, previzualizarea,
comprimarea în timpul execuției, modul stivuit, testele și motoarele viitoare pot utiliza aceeași cale de execuție.
Comprimarea descrierilor MCP (subiect asociat)
Un registru separat comprimă metadatele descrierilor instrumentelor MCP la nivelul registrului — consultați
open-sse/mcp-server/descriptionCompressor.ts și MCP-SERVER.md. Acesta reutilizează
regulile Caveman, dar operează asupra metadatelor instrumentelor, nu asupra sarcinilor utile ale cererilor.
Motoare încorporate suplimentare
Pe lângă Caveman, RTK și LLMLingua-2, registrul include mai multe motoare specializate fără pierderi / structurale (utilizate de pipeline-urile stivuite, mediul de testare interactiv și teste):
| Motor | ID | Ce face |
|---|---|---|
| CCR | ccr |
Content-Compress-Retrieve (H4): înlocuiește blocurile mari de text contiguu cu referințe adresate după conținut, astfel încât blocurile repetate/mari să fie trimise o singură dată și referite ulterior. |
| headroom | headroom |
SmartCrusher (H3 + N5): compactare tabelară fără pierderi a sarcinilor utile constând în matrice JSON omogene, într-o formă columnară [N rows]. |
| ionizer | ionizer |
Eșantionează rânduri de la începutul/mijlocul/sfârșitul blocurilor omogene foarte mari, stocând secțiunea mediană omisă ca referință CCR adresată după conținut. |
| session-dedup | session-dedup |
Deduplicare adresată după conținut între interacțiuni (inspirată de TokenMizer): omite textul deja întâlnit în interacțiunile anterioare ale aceleiași sesiuni. |
Instrucțiune privind protocolul de recuperare CCR (#8033): prima dată când CCR înlocuiește ≥1 bloc dintr-o
cerere, motorul adaugă la început un singur mesaj system idempotent (începând cu santinela
[CCR protocol]), care explică apelantului contractul marcaj → instrument: ce înseamnă un marcaj
[CCR retrieve hash=<24hex> chars=N], faptul că hash-ul trebuie copiat textual
(toate cele 24 de caractere hexazecimale — hash-urile copiate greșit reprezintă cauza probabilă a erorilor
„blocul nu a fost găsit”) și faptul că un marcaj [dedup:ref sha=...] înseamnă „caută înapoi în istoric”, nu „apelează
instrumentul”. Nota este injectată numai atunci când tools[] declarate de apelant demonstrează că acesta poate
accesa efectiv omniroute_ccr_retrieve (callerSupportsCcrRetrieve() din
open-sse/services/compression/engines/ccr/protocolInstruction.ts) — un apelant simplu,
compatibil cu OpenAI, fără acel instrument, nu primește niciodată instrucțiunea de a apela ceva
ce nu poate accesa. Idempotența este asigurată prin scanarea istoricului mesajelor pentru santinelă
înainte de injectare, astfel încât cererile cu mai multe interacțiuni (care redau mesajele anterioare) să nu adauge
nota încă o dată la fiecare interacțiune.
Caveman
Modul Caveman se concentrează pe condensarea semantică a prozei obișnuite:
- păstrează blocurile de cod, URL-urile, JSON-ul, căile și datele structurate
- elimină textul de umplutură, formulările ezitante, contextul repetat și expresiile de legătură verbose
- acceptă pachete de reguli specifice limbii pentru fișiere în
open-sse/services/compression/rules/ - rămâne disponibil prin modurile vechi
standard,aggressiveșiultra
Secțiunea din panoul de control este Dashboard -> Context & Cache -> Caveman.
Proiectul Caveman din amonte raportează cu ~75% mai puțini tokeni de ieșire, economii medii de 65% pentru ieșire în testele de performanță, cu un interval de 22-87%, și un instrument de comprimare a intrării de ~46%. OmniRoute utilizează valoarea Caveman pentru partea de intrare atunci când documentează economiile cumulate pentru prompt/context; modul de ieșire Caveman rămâne o funcționalitate separată privind comportamentul răspunsului.
RTK
Modul RTK se concentrează pe ieșirea comenzilor și a instrumentelor:
- detectează clase de ieșire precum
git status,git branch,git diff, Vitest/Jest/Pytest, testele Cargo/Go, buildurile TypeScript/Vite/Webpack, ESLint, auditurile/instalările npm, jurnalele Docker, comenzile shellfind/grep, traseele stivei și jurnalele generice - aplică 49 de filtre JSON din
open-sse/services/compression/engines/rtk/filters/ - acceptă pipeline-ul declarativ în stil RTK: eliminarea ANSI, înlocuire, scurtcircuitarea la potrivirea ieșirii, eliminarea/păstrarea liniilor, trunchierea fiecărei linii, trunchierea începutului/sfârșitului/numărului maxim de linii și revenirea alternativă când rezultatul este gol
- acceptă filtre de proiect condiționate de încredere în
.rtk/filters.jsonși filtre globale înDATA_DIR/rtk/filters.json - elimină secvențele ANSI, zgomotul indicatorilor de progres, liniile repetate și textul standard inutil
- păstrează erorile asupra cărora se poate acționa, avertismentele, rezumatele, fișierele modificate și contextul final
- poate păstra opțional ieșirea brută redactată pentru recuperare/depanare prin rute de administrare autentificate
Secțiunea din panoul de control este Dashboard -> Context & Cache -> RTK.
Detaliile operaționale pentru filtrele personalizate, încredere, verificare și recuperarea ieșirii brute se găsesc în
RTK_COMPRESSION.md.
Proiectul RTK din amonte raportează economii de 60-90% pentru comprimarea ieșirii comenzilor. Exemplul din README prezintă o sesiune Claude Code de 30 de minute care scade de la ~118,000 de tokeni la ~23,900, adică o economie de 79.7%.
LLMLingua-2 (Eliminare semantică)
Modul LLMLingua-2 efectuează eliminarea semantică a tokenilor din proză folosind un mic clasificator ONNX de tokeni, completând motoarele Caveman și RTK bazate pe reguli:
- comprimă proza numai în mesajele care nu sunt de sistem; blocurile de cod delimitate și celelalte elemente păstrate nu sunt modificate niciodată
- rulează backendul
@atjsh/llmlingua-2(ONNX prin@huggingface/transformers) într-un fir de execuție worker, astfel încât inferența modelului să nu blocheze niciodată bucla de evenimente a cererii - este combinabil (
stackPriority35): într-un pipeline combinat rulează după motoarele structurale (CCR, session-dedup, headroom, Caveman), dar înainte deultra, deoarece eliminarea semantică este cea mai eficientă pentru textul deja comprimat structural — de exemplu,rtk -> caveman -> llmlingua - continuă fără efect la orice eroare (dependențe opționale lipsă, pornirea workerului, încărcarea modelului, inferență sau expirarea timpului) → textul original este returnat nemodificat, niciodată o eroare
Locația motorului: open-sse/services/compression/engines/llmlingua/. Secțiunea din panoul de control
este Dashboard -> Context & Cache -> LLMLingua.
Modele
Modelul implicit este TinyBERT (atjsh/llmlingua-2-js-tinybert-meetingbank, ~57 MB,
rapid). Un model BERT-base cu acuratețe mai mare (Arcoldd/llmlingua4j-bert-base-onnx,
~710 MB) este disponibil prin câmpul model din configurația motorului. @huggingface/transformers
descarcă în mod leneș modelul selectat din HuggingFace Hub în
${DATA_DIR}/models/llmlingua la primul apel (modelStore.ts); o suprascriere prin opțiunea
modelPath din configurație indică în schimb o copie locală (pentru instalări offline / izolate de rețea).
Dependențe opționale și instalare la cerere
Stiva de peer dependencies pentru runtime-ul LLMLingua eliminabil este opțională. Două pachete sunt declarate ca
optionalDependencies în package.json și sunt păstrate externe de buildul de producție
(scripts/build/prepublish.ts nu le include în bundle):
| Pachet | Versiune (fixată) | Observații |
|---|---|---|
@atjsh/llmlingua-2 |
2.0.5 |
Pachet de intrare; le declară pe celelalte ca peers |
js-tiktoken |
^1.0.20 |
Tokenizator |
@huggingface/transformers este fixat la ^4.2.0 (partajat cu ruta locală pentru embeddings și
inclus, de asemenea, prin urmărire în bundle-ul autonom); @atjsh/llmlingua-2@2.0.5 îl declară ca peer cu
"^3.5.2 || ^4.0.0", astfel încât sunt acceptate atât Transformers.js v3, cât și v4. Începând cu 2.0.4,
@atjsh/llmlingua-2 nu mai necesită @tensorflow/tfjs, ceea ce a eliminat cel mai mare
contributor individual (TensorFlow.js) din stiva SLM. Numai cele două pachete de mai sus sunt peers SLM
eliminabili. Un npm install standard (dezvoltare) instalează automat stiva opțională, cu excepția cazului în care dependențele
opționale sunt omise.
De ce la cerere: pachetul publicat pe npm, bundle-ul autonom și imaginea Docker
sunt livrate fără aceste dependențe pentru a rămâne compacte. Când acestea lipsesc, verificarea
dependențelor efectuată de worker (o încercare de rezolvare pentru @atjsh/llmlingua-2 în worker.ts) eșuează, iar motorul
continuă silențios fără efect — selectarea LLMLingua nu produce nicio modificare (textul este returnat nemodificat, fără
înregistrarea vreunei erori). Pentru a-l activa într-un mediu redus, instalați stiva opțională:
# fixați versiunile la cele declarate în optionalDependencies din package.json
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
Eliminarea @tensorflow/tfjs (2.0.4+) înlătură componenta anterior dominantă, de ~800 MB
— spațiul rămas este ocupat de runtime-urile transformers.js + onnxruntime-node,
plus modelul TinyBERT (~57 MB), descărcat la prima utilizare (nu prin npm).
Pentru fiecare mediu:
- Dezvoltare /
npm install— instalat automat, cu excepția cazului în care ați folosit--omit=optional(sau--no-optional). Nu este necesară nicio acțiune. - npm global (
npm i -g omniroute) / autonom — rulați comanda de instalare de mai sus în directorul pachetului instalat sau reinstalați fără a omite dependențele opționale. - Docker — adăugați comanda de instalare într-un strat al unei imagini derivate; imaginea publicată este livrată în mod intenționat într-o formă minimală.
- VPS (PM2) — instalați în
node_modulesal aplicației, apoi reporniți procesul pentru ca workerul să verifice din nou mecanismul de control. - Next autonom neprelucrat (
npm run build→.build/next/standalone/server.js) — trasarea autonomă nu include NICI workerul, NICI dependențele opționale, astfel că motorul permite în mod silențios continuarea în caz de eroare.scripts/build/colocate-standalone.mjsle adaugă din nou pe ambele (workerul esbuild + închiderea dependențelor opționale în arborele autonom); acesta rulează automat prin hookul npmpostbuilddupă fiecare compilare. Idempotent, tolerează erorile atunci când dependențele lipsesc.
Verificați dacă este activ: când LLMLingua este selectat, textul real chiar se comprimă (motorul
nu mai permite continuarea în caz de eroare), iar prima solicitare declanșează descărcarea modelului în
${DATA_DIR}/models/llmlingua. Mecanismul de control verifică în mod intenționat doar @atjsh/llmlingua-2 —
celelalte pachete peer sunt exclusiv ESM, iar require.resolve generează o excepție pentru ele chiar și atunci când sunt prezente — astfel că
workerul permite în continuare continuarea în caz de eroare dacă vreun pachet peer lipsește cu adevărat la momentul apelului import().
Pipeline-uri stivuite
Modul stivuit execută pașii pipeline-ului în ordine. Ordinea implicită este:
rtk -> caveman
Utilizați acest mod pentru sesiunile cu agenți de programare în care un prompt combină rezultatul comenzilor cu proză scrisă de utilizator sau de asistent. RTK reduce mai întâi jurnalele zgomotoase ale instrumentelor, apoi Caveman comprimă limbajul natural rămas.
Pașii pipeline-ului sunt configurați prin stackedPipeline în setările de compresie sau prin combinații de compresie.
Când ambele motoare reduc aceeași sarcină utilă eligibilă, economiile se cumulează:
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%
Filtrul arborelui de accesibilitate MCP
Filtrul inteligent pentru arborele de accesibilitate MCP este un strat de compresie aplicat după execuție, care operează asupra rezultatelor instrumentelor MCP, nu asupra prompturilor sau contextului. Acesta vizează sarcinile utile detaliate ale arborelui de accesibilitate și instantaneele browserului returnate de instrumente precum Playwright, computer-use și serverele MCP pentru automatizarea browserului.
Ce face
- Eliminarea zgomotului — elimină intrările generice/textuale goale (
- generic:,- text: "") - Comprimarea elementelor vecine — când ≥
collapseThreshold(implicit 30) linii consecutive reprezintă repetări structurale, le comprimă la primelecollapseKeepHead(implicit 10) linii + un rezumat al numărului + ultimelecollapseKeepTail(implicit 5) linii - Păstrarea referințelor — ancorele
[ref=eXX]necesare pentru Playwright/computer-use nu sunt modificate niciodată - Trunchiere strictă — dacă textul rezultat după comprimare depășește în continuare
maxTextChars(implicit 50.000), acesta este trunchiat și se adaugă un indiciu de navigare, astfel încât agentul să își poată continua activitatea
Locația motorului
open-sse/services/compression/engines/mcpAccessibility/
index.ts ← punctul de intrare smartFilterText()
collapseRepeated.ts ← algoritmul de comprimare a elementelor vecine
constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG
Configurare
Controlat prin compression.mcpAccessibility în setările globale (migrarea 056). Configurația implicită:
{
"enabled": true,
"maxTextChars": 50000,
"collapseThreshold": 30,
"collapseKeepHead": 10,
"collapseKeepTail": 5,
"minLengthToProcess": 2000
}
Filtrul este aplicat numai sarcinilor utile ale rezultatelor instrumentelor al căror type este "text" și a căror lungime depășește minLengthToProcess. Acesta nu afectează compresia prompturilor sau sarcinile utile ale cererilor.
Economii estimate
60–80% pentru rezultatele instrumentelor care conțin instantanee ale browserului, în funcție de complexitatea paginii. Algoritmul de comprimare are complexitatea O(n) în raport cu numărul de linii și adaugă o latență neglijabilă.
Acest filtru comparativ cu motoarele de compresie de mai sus
| Aspect | Caveman / RTK / Stacked | Filtrul de accesibilitate MCP |
|---|---|---|
| Țintă | Prompturi / context cerere | Rezultatele instrumentelor MCP |
| Declanșator | Setarea modului de compresie | compression.mcpAccessibility.enabled |
| Domeniu de aplicare | Toate mesajele SSE | Numai rezultatele instrumentelor |
| Ancore de referință | Nu se aplică | Păstrate necondiționat |
Combinații de compresie
Combinațiile de compresie sunt profiluri de compresie denumite care pot fi atribuite combinațiilor de rutare:
compression_combos: stochează modul, pipeline-ul, configurația RTK, configurația de limbă și marcajul implicitcompression_combo_assignments: asociază o combinație de compresie cu o combinație de rutare- integrarea în timpul execuției rezolvă o combinație de compresie atribuită înaintea suprascrierilor generice ale combinației
- datele analitice includ
compression_combo_idșiengine
Locație în panoul de control: Dashboard -> Context & Cache -> Compression Combos.
Suprafața API
| Rută | Scop |
|---|---|
/api/settings/compression |
Setări globale de compresie (include configurația mcpAccessibility) |
/api/compression/preview |
Previzualizarea oricărui mod de compresie |
/api/compression/language-packs |
Listează pachetele lingvistice Caveman disponibile |
/api/context/caveman/config |
Alias pentru setările Caveman |
/api/context/rtk/config |
Valori implicite și setări RTK |
/api/context/rtk/filters |
Catalogul de filtre RTK |
/api/context/rtk/test |
Endpoint RTK pentru previzualizare/testare |
/api/context/rtk/raw-output/[id] |
Recuperarea autentificată a ieșirii brute cu date sensibile eliminate |
/api/context/combos |
Operații CRUD pentru combinațiile de compresie |
/api/context/combos/[id]/assignments |
Operații CRUD pentru atribuirea combinațiilor de rutare |
/api/context/analytics |
Alias pentru datele analitice privind compresia |
Rutele de administrare necesită autentificare de administrare sau verificări ale politicii privind cheia API.
Instrumente MCP
Compresia expune cinci instrumente MCP:
| Instrument | Domeniu | Scop |
|---|---|---|
omniroute_compression_status |
read:compression |
Setări, date analitice, statistici cache |
omniroute_compression_configure |
write:compression |
Actualizarea setărilor globale |
omniroute_set_compression_engine |
write:compression |
Setarea modului și a pipeline-ului opțional |
omniroute_list_compression_combos |
read:compression |
Listează combinațiile de compresie |
omniroute_compression_combo_stats |
read:compression |
Citește datele analitice despre combinații/motoare |
Domeniu de aplicare și excluderi
Încorporările nu sunt comprimate niciodată. open-sse/handlers/embeddings.ts nu apelează niciodată niciun
motor de compresie — corpurile cererilor/răspunsurilor sunt transmise direct executorului, fără modificări.
În prezent, acest lucru este structural (încorporările și completările conversaționale au gestionari separați), nu o
verificare în timpul execuției, dar înseamnă că problema distorsionării vectorilor din #8034 nu are nicio suprafață de expunere
pe calea încorporărilor.
Filtru de excludere per model/endpoint (#8034). Pentru completările conversaționale, un operator poate specifica
ID-uri de modele / destinații provider/model care nu trebuie comprimate niciodată — o măsură de protecție utilă dacă,
ulterior, compresia este conectată mai aproape de o cale adiacentă încorporărilor și, în general, utilă
pentru orice model în cazul căruia contează ca promptul să fie identic octet cu octet (evaluări deterministe, prefixe
sensibile la cache etc.).
- Câmp de setări:
exclusions?: string[]în configurația globală de compresie (GET/PUT /api/settings/compression), păstrat prin spațiul de nume existentkey_valuepentru compresie (src/lib/db/compression.ts) — fără tabel nou. - Filă în panoul de control: Dashboard → Compression → Exclusions
(
/dashboard/compression/exclusions). - Sintaxa modelelor:
*este singurul metacaracter. Orice alt metacaracter de expresie regulată dintr-un model este escap-at înainte de potrivire, astfel încâtgpt-5.6se potrivește numai cu șirul literal, niciodată cugpt-5x6(sigur împotriva ReDoS, limitat, fără cuantificatori imbricați). Modelele sunt comparate fără a ține cont de majuscule și minuscule atât cu ID-ul simplu al modelului, cât și cu forma compusăprovider/model—gpt-5-6,openai/gpt-5-6șiopenai/*funcționează toate, iar*singur exclude fiecare model. - Potrivire:
isCompressionExcluded()/normalizeCompressionExclusions()înopen-sse/services/compression/exclusions.ts.chatCore.tsverifică destinația exclusă imediat după rezolvarea setărilor de compresie, înainte de rularea oricărui motor, și tratează o potrivire exact ca și cum compresia ar fi dezactivată global — corpul cererii este în mod demonstrabil identic octet cu octet. Omiterea este înregistrată prinwriteCompressionSkip(..., "excluded")pentru vizibilitate în datele analitice. - Valoare implicită (listă goală/absentă): comportament identic cu cel anterior #8034 — nimic nu este exclus.
Limitări cunoscute
- LLMLingua-2 (SLM) necesită dependențe opționale colocate. Workerul rulează într-un
build de producție numai atunci când
@atjsh/llmlingua-2și dependențele peer sunt colocate îndist/node_modules(consultațiscripts/build/colocateOptionals.mjs, #4286). Fără acestea, motorul continuă în mod sigur (returnează textul original). Rezolvarea workerului nu mai depinde deimport.meta.url(aceasta eșuează în bundle-ul independent) — se ancorează în directorul de lucru din timpul execuției /argv[1]. - Pachetele lingvistice Caveman
de/fr/jasunt parțiale. Acestea includ regulicontext+filler+structural, dar nu și pachetededup/ultra, astfel încât intensitateaultranu este mai puternică decâtfullpentru limbile respective (acestea utilizează exclusiv propriile reguli — nu există nicio revenire implicită la regulilededup/ultrapentru limba engleză, care ar altera textul în limbi străine).en/es/id/pt-BRsunt complete. Contribuțiile cudedup.json+ultra.jsonpentru pachetele parțiale sunt binevenite. - Telemetria stivuită enumeră numai motoarele care au comprimat. Un pas al pipeline-ului
stivuit al cărui motor a rulat, dar a produs economii de 0 %, returnează
stats:nullși, prin urmare, nu apare înengineBreakdown— fiind imposibil de diferențiat de un pas omis. Diferențierea dintre „a rulat, 0 %” și „omis” ar necesita o modificare a modelului de detaliere și este amânată.
Validare
Verificările specifice pentru această zonă sunt:
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