* 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.
30 KiB
Compression Engines (Hrvatski)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇺 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 · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Kompresija u OmniRouteu temelji se na ugovorima mehanizama. Način rada može izravno pokretati jedan mehanizam
(caveman ili rtk) ili deterministički složeni cjevovod koji redom izvršava više mehanizama.
Načini rada
| Način rada | Putanja mehanizma | Predviđeni ulaz |
|---|---|---|
off |
nijedan | Točno očuvanje upita |
lite |
Pomoćne funkcije Caveman lite | Stalno čišćenje niskog rizika |
standard |
Caveman | Sažimanje upita na prirodnom jeziku |
aggressive |
Caveman + sažimatelji povijesti/alata | Duge sesije razgovora |
ultra |
Caveman + pomoćne funkcije za obrezivanje | Oporavak od ograničenja konteksta |
rtk |
RTK | Izlaz terminala, ljuske, izgradnje, testova i gita |
omniglyph |
OmniGlyph | Kontekst kao slika na izvornom sučelju pružatelja |
stacked |
Cjevovod, zadano rtk -> caveman |
Mješoviti zapisnici alata i proza, najveća ušteda |
Profili kompresije OmniGlyph
Mehanizam omniglyph (paket omniglyph, 1.4.0+) prihvaća imenovani semantički profil, postavljen
globalno putem omniglyph.profile u postavkama kompresije ili za svaki korak putem konfiguracije
koraka složenog cjevovoda:
| Profil | Granica |
|---|---|
aggressive |
Zadano. Pravilo prema kojem su mjerene objavljene potvrde — slike sustava, dokumentacija alata i gusta povijest |
balanced |
Zadržava aktivno stanje u izvornom obliku, štiti posljednjih 8 krugova i sažima stariju zatvorenu povijest |
coding-safe |
Zadržava ovlasti, sheme alata i aktivni izlaz alata u izvornom obliku te štiti posljednjih 12 krugova |
passthrough |
Usmjerava bez transformacije; mehanizam se preskače |
Profil je gornja granica, a ne donja: mergeCompressionProfileOptions u paketu
ne dopušta da nadjačavanje pozivatelja ponovno otvori kanal s gubicima koji je profil zatvorio, pa postavka
preserveSystemPrompt: false za pojedinačni korak ne može ponovno omogućiti kompresiju sustava u profilu coding-safe.
Prema mjerenjima na ovoj bazi koda: coding-safe i balanced podižu minCompressChars na njegovu
najveću vrijednost i zadržavaju sustav, sheme alata i rezultate alata u izvornom obliku, pa se sesija koja još nije
prikupila povijest zaustavlja na below_min_chars, a mehanizam ništa ne transformira. Zato je zadani profil
aggressive, a ne najsigurniji profil.
Paket razrješava vlastiti opseg modela i profil iz konfiguracije okruženja. OmniRoute nikada ne delegira tu odluku: prilagodnik ograničava pristup modelu na najrestriktivniji opseg paketa, pa postavke okruženja glavnog sustava mogu samo suziti popis dopuštenih, ali ga nikada ne mogu proširiti izvan izmjerenih potvrda OmniRoutea.
Registar mehanizama
Registar se nalazi u open-sse/services/compression/engines/registry.ts. Mehanizmi izlažu zajednički
ugovor:
id: stabilni ID mehanizma, kao što jecavemanilirtkapply(text, config): zastarjeli put izvršavanja koji upotrebljavaju složeni cjevovodicompress(input, config): primarni put izvršavanja koji vraća tekst i statistikugetConfigSchema(): vraća strukturu valjane konfiguracije nalik JSON shemivalidateConfig(config): vraća{ valid, errors[] }
Registracija se izvodi pomoću registerCompressionEngine(engine) (ili registerEngine za napredne slučajeve),
koji prije prihvaćanja poziva assertValidEngine() i validateConfig(defaultConfig).
Upotrijebite unregisterCompressionEngine(id) za uklanjanje mehanizma tijekom izvođenja.
strategySelector.ts registrira ugrađene mehanizme prije pokretanja kompresije. To omogućuje pretpregledu,
kompresiji tijekom izvođenja, složenom načinu rada, testovima i budućim mehanizmima da upotrebljavaju isti put izvršavanja.
Kompresija MCP opisa (povezano)
Zaseban registar komprimira metapodatke opisa MCP alata na razini registra — pogledajte
open-sse/mcp-server/descriptionCompressor.ts i MCP-SERVER.md. Ponovno upotrebljava
pravila Cavemana, ali djeluje na metapodacima alata, a ne na sadržaju zahtjeva.
Dodatni ugrađeni mehanizmi
Uz Caveman, RTK i LLMLingua-2, registar uključuje nekoliko specijaliziranih mehanizama bez gubitaka / strukturnih mehanizama (koje upotrebljavaju složeni cjevovodi, razvojno okruženje i testovi):
| Mehanizam | Id | Što radi |
|---|---|---|
| CCR | ccr |
Content-Compress-Retrieve (H4): zamjenjuje velike susjedne blokove teksta referencama adresiranima sadržajem, tako da se ponovljeni/veliki blokovi šalju jednom, a zatim referenciraju. |
| headroom | headroom |
SmartCrusher (H3 + N5): tablična kompakcija bez gubitaka homogenih sadržaja JSON polja u stupčani oblik [N rows]. |
| ionizer | ionizer |
Uzorkovanje redaka s početka/sredine/kraja za vrlo velike homogene blokove, uz pohranu izostavljene sredine kao CCR reference adresirane sadržajem. |
| session-dedup | session-dedup |
Deduplikacija između interakcija adresirana sadržajem (nadahnuta TokenMizerom): izostavlja tekst koji se već pojavio u ranijim interakcijama iste sesije. |
Uputa protokola dohvaćanja CCR-a (#8033): kada CCR prvi put zamijeni ≥1 blok u
zahtjevu, mehanizam dodaje na početak jednu idempotentnu poruku system (koja počinje
sentinelom [CCR protocol]) i poučava pozivatelja ugovoru oznaka → alat: što znači
oznaka [CCR retrieve hash=<24hex> chars=N], da se hash mora kopirati doslovno
(svih 24 heksadecimalnih znakova — pogrešno kopirani hashovi vjerojatan su uzrok pogrešaka
"block not found") te da oznaka [dedup:ref sha=...] znači "pogledaj unatrag u povijest", a ne "pozovi
alat". Napomena se umeće samo kada oglašeni tools[] pozivatelja dokazuje da on doista može
pristupiti omniroute_ccr_retrieve (callerSupportsCcrRetrieve() u
open-sse/services/compression/engines/ccr/protocolInstruction.ts) — običan
pozivatelj kompatibilan s OpenAI-jem bez tog alata nikada ne prima uputu da pozove nešto
čemu ne može pristupiti. Idempotentnost se osigurava pretraživanjem povijesti poruka u potrazi za sentinelom
prije umetanja, tako da zahtjevi s više interakcija (koji ponovno reproduciraju prethodne poruke) ne gomilaju
napomenu jednom po interakciji.
Caveman
Način rada Caveman usmjeren je na semantičko sažimanje obične proze:
- čuva blokove koda, URL-ove, JSON, putanje i strukturirane podatke
- uklanja poštapalice, ublažavajuće izraze, ponovljeni kontekst i opširne povezne formulacije
- podržava jezično prilagođene pakete pravila za datoteke u
open-sse/services/compression/rules/ - ostaje dostupan putem naslijeđenih načina rada
standard,aggressiveiultra
Površina nadzorne ploče nalazi se na Dashboard -> Context & Cache -> Caveman.
Izvorni Caveman navodi ~75% manje izlaznih tokena, prosječnu uštedu izlaza od 65% u referentnim testovima
s rasponom od 22-87% te alat za kompresiju ulaza od ~46%. OmniRoute upotrebljava broj
za ulaznu kompresiju Cavemana pri dokumentiranju kombiniranih ušteda na upitima/kontekstu; izlazni način
Cavemana ostaje zasebna značajka ponašanja odgovora.
RTK
Način rada RTK usmjeren je na izlaz naredbi i alata:
- otkriva klase izlaza kao što su
git status,git branch,git diff, Vitest/Jest/Pytest, Cargo/Go testovi, TypeScript/Vite/Webpack međuverzije, ESLint, npm provjere/instalacije, Docker zapisnici,find/grepljuske, tragovi stoga i generički zapisnici - primjenjuje 49 JSON filtara iz
open-sse/services/compression/engines/rtk/filters/ - podržava deklarativni cjevovod u stilu RTK-a: uklanjanje ANSI-ja, zamjenu, prečac za podudaranje izlaza, uklanjanje/zadržavanje redaka, skraćivanje po retku, skraćivanje početka/kraja/maksimalnog broja redaka i pričuvni sadržaj za prazan rezultat
- podržava projektne filtre uvjetovane povjerenjem u
.rtk/filters.jsoni globalne filtre uDATA_DIR/rtk/filters.json - uklanja ANSI sekvence, šum pokazatelja napretka, ponovljene retke i nekorisni tipski tekst
- čuva pogreške na temelju kojih se može djelovati, upozorenja, sažetke, promijenjene datoteke i završni kontekst
- po želji može zadržati redigirani neobrađeni izlaz za oporavak/otklanjanje pogrešaka putem autentificiranih ruta za upravljanje
Površina nadzorne ploče nalazi se na Dashboard -> Context & Cache -> RTK.
Operativne pojedinosti o prilagođenim filtrima, povjerenju, provjeri i oporavku neobrađenog izlaza nalaze se u
RTK_COMPRESSION.md.
Izvorni RTK navodi uštedu od 60-90% pri kompresiji izlaza naredbi. Primjer u njegovoj datoteci README prikazuje
kako se 30-minutna sesija Claude Codea smanjuje s ~118,000 tokena na ~23,900, odnosno uštedu od 79.7%.
LLMLingua-2 (semantičko obrezivanje)
Način rada LLMLingua-2 provodi semantičko obrezivanje tokena u prozi pomoću malog ONNX klasifikatora tokena, nadopunjujući Caveman i RTK pogone temeljene na pravilima:
- komprimira prozu samo u porukama koje nisu sistemske; ograđeni blokovi koda i druge sačuvane konstrukcije nikad se ne mijenjaju
- pokreće pozadinski sustav
@atjsh/llmlingua-2(ONNX putem@huggingface/transformers) u radnoj niti, tako da zaključivanje modela nikad ne blokira petlju događaja zahtjeva - može se slagati (
stackPriority35): u složenom cjevovodu pokreće se nakon strukturnih pogona (CCR, uklanjanje duplikata sesije, rezerva prostora, Caveman), ali prijeultra, jer je semantičko obrezivanje najučinkovitije na već strukturno komprimiranom tekstu — npr.rtk -> caveman -> llmlingua - u slučaju bilo koje pogreške nastavlja s izvornim sadržajem (nedostajuće neobavezne ovisnosti, pokretanje radnika, učitavanje modela, zaključivanje ili istek vremena) → izvorni tekst vraća se nepromijenjen, nikad kao pogreška
Lokacija pogona: open-sse/services/compression/engines/llmlingua/. Površina nadzorne ploče
nalazi se na Dashboard -> Context & Cache -> LLMLingua.
Modeli
Zadani model je TinyBERT (atjsh/llmlingua-2-js-tinybert-meetingbank, ~57 MB,
brz). Precizniji model BERT-base (Arcoldd/llmlingua4j-bert-base-onnx,
~710 MB) dostupan je putem polja model u konfiguraciji pogona. @huggingface/transformers
lijeno preuzima odabrani model s HuggingFace Huba u
${DATA_DIR}/models/llmlingua pri prvom pozivu (modelStore.ts); konfiguracijska opcija
modelPath umjesto toga usmjerava na lokalnu kopiju (izvanmrežne / mrežno izolirane instalacije).
Neobavezne ovisnosti i instalacija na zahtjev
Obrezivi stog istovjetnih ovisnosti izvršnog okruženja LLMLingua nije obavezan. Dva su paketa deklarirana kao
optionalDependencies u package.json i ostaju vanjski u produkcijskoj međuverziji
(scripts/build/prepublish.ts ih ne uključuje):
| Paket | Verzija (fiksirana) | Napomene |
|---|---|---|
@atjsh/llmlingua-2 |
2.0.5 |
Ulazni paket; ostale deklarira kao istovjetne ovisnosti |
js-tiktoken |
^1.0.20 |
Tokenizator |
@huggingface/transformers fiksiran je na ^4.2.0 (dijeli se s putanjom lokalnih ugradnji i
također se prati u samostalnom paketu); @atjsh/llmlingua-2@2.0.5 oslanja se na njega uz
"^3.5.2 || ^4.0.0", pa su podržani i Transformers.js v3 i v4. Od verzije 2.0.4,
@atjsh/llmlingua-2 više ne zahtijeva @tensorflow/tfjs, čime je iz SLM stoga uklonjen najveći
pojedinačni doprinositelj (TensorFlow.js). Samo su prethodno navedena dva paketa obrezive SLM
istovjetne ovisnosti. Standardni npm install (razvoj) automatski instalira neobavezni stog osim ako su neobavezne
ovisnosti izostavljene.
Zašto na zahtjev: paket objavljen na npm-u, samostalni paket i Docker slika
isporučuju se bez tih ovisnosti kako bi ostali maleni. Kada ih nema, provjera ovisnosti
radnika (probno razrješavanje @atjsh/llmlingua-2 u worker.ts) ne uspijeva i pogon
tiho nastavlja s izvornim sadržajem — odabir LLMLingue ne obavlja nikakvu radnju (tekst se vraća nepromijenjen, bez
zabilježene pogreške). Da biste ga aktivirali u obrezanom okruženju, instalirajte neobavezni stog:
# fiksirajte na verzije deklarirane u package.json optionalDependencies
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
Uklanjanje paketa @tensorflow/tfjs (2.0.4+) eliminira prethodno dominantan doprinos od ~800 MB
— preostali otisak čine izvršna okruženja transformers.js + onnxruntime-node
te model TinyBERT (~57 MB) koji se preuzima pri prvoj uporabi (ne putem npm-a).
Za svako okruženje:
- Razvoj /
npm install— instalira se automatski, osim ako ste proslijedili--omit=optional(ili--no-optional). Nije potrebna nikakva radnja. - Globalni npm (
npm i -g omniroute) / samostalna instalacija — pokrenite gornju naredbu za instalaciju unutar direktorija instaliranog paketa ili ponovno instalirajte bez izostavljanja neobaveznih ovisnosti. - Docker — dodajte naredbu za instalaciju u sloj izvedene slike; objavljena slika namjerno je minimalna.
- VPS (PM2) — instalirajte u
node_modulesaplikacije, a zatim ponovno pokrenite proces kako bi radnik ponovno provjerio kontrolni mehanizam. - Izvorni samostalni Next (
npm run build→.build/next/standalone/server.js) — samostalni trag NE sadrži ni radnika ni neobavezne ovisnosti, pa mehanizam neprimjetno nastavlja rad bez njih.scripts/build/colocate-standalone.mjsponovno dodaje oboje (radnika izgrađenog pomoću esbuilda + zatvoren skup neobaveznih ovisnosti u samostalno stablo); automatski se pokreće putem npm kukepostbuildnakon svake izgradnje. Idempotentan je i nastavlja bez prekida kada ovisnosti nedostaju.
Provjerite je li aktivan: kada je odabran LLMLingua, stvarni se prozni tekst doista skraćuje (mehanizam
više ne nastavlja rad bez ovisnosti), a prvi zahtjev pokreće preuzimanje modela u
${DATA_DIR}/models/llmlingua. Kontrolni mehanizam namjerno provjerava samo @atjsh/llmlingua-2 —
ostali ravnopravni paketi podržavaju samo ESM, a require.resolve za njih izbacuje pogrešku čak i kada su prisutni — pa
radnik i dalje nastavlja rad bez njih ako bilo koji ravnopravni paket doista nedostaje tijekom poziva import().
Složeni cjevovodi
Složeni način rada izvršava korake cjevovoda redom. Zadani redoslijed je:
rtk -> caveman
Upotrijebite ovo za sesije agenata za programiranje u kojima upit kombinira izlaz naredbi s tekstom koji je napisao korisnik ili asistent. RTK najprije smanjuje opširne zapisnike alata, a zatim Caveman sažima preostali prirodni jezik.
Koraci cjevovoda konfiguriraju se putem opcije stackedPipeline u postavkama sažimanja ili kroz
kombinacije sažimanja.
Kada oba mehanizma smanjuju isti prihvatljivi sadržaj, uštede se multipliciraju:
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 filtar stabla pristupačnosti
Pametni MCP filtar stabla pristupačnosti sloj je sažimanja nakon izvršavanja koji se primjenjuje na rezultate alata, a ne na upite ili kontekst. Namijenjen je opširnim sadržajima stabla pristupačnosti i snimki preglednika koje vraćaju alati kao što su Playwright, computer-use i MCP poslužitelji za automatizaciju preglednika.
Što radi
- Uklanjanje šuma — uklanja prazne generičke/tekstne unose (
- generic:,- text: "") - Sažimanje susjednih elemenata — kada je ≥
collapseThreshold(zadano 30) uzastopnih redaka strukturno ponovljeno, sažima ih na prvihcollapseKeepHead(zadano 10) redaka + sažetak broja + posljednjihcollapseKeepTail(zadano 5) redaka - Očuvanje referenci — sidra
[ref=eXX]koja zahtijevaju Playwright/computer-use nikada se ne mijenjaju - Strogo skraćivanje — ako tekst nakon sažimanja i dalje premašuje
maxTextChars(zadano 50.000), skraćuje ga uz navigacijsku uputu kako bi agent mogao nastaviti s radom
Lokacija mehanizma
open-sse/services/compression/engines/mcpAccessibility/
index.ts ← ulazna točka smartFilterText()
collapseRepeated.ts ← algoritam sažimanja susjednih elemenata
constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG
Konfiguracija
Upravlja se putem compression.mcpAccessibility u globalnim postavkama (migracija 056). Zadana
konfiguracija:
{
"enabled": true,
"maxTextChars": 50000,
"collapseThreshold": 30,
"collapseKeepHead": 10,
"collapseKeepTail": 5,
"minLengthToProcess": 2000
}
Filtar se primjenjuje samo na sadržaje rezultata alata čiji je type "text" i čija duljina
premašuje minLengthToProcess. Ne utječe na sažimanje upita ni na sadržaje zahtjeva.
Očekivane uštede
60–80% na rezultatima alata za snimke preglednika, ovisno o složenosti stranice. Algoritam sažimanja ima složenost O(n) prema broju redaka i dodaje zanemarivo kašnjenje.
Ovaj filtar u usporedbi s prethodno navedenim mehanizmima sažimanja
| Aspekt | Caveman / RTK / Stacked | MCP filtar pristupačnosti |
|---|---|---|
| Cilj | Upiti zahtjeva / kontekst | Rezultati MCP alata |
| Okidač | Postavka načina sažimanja | compression.mcpAccessibility.enabled |
| Opseg | Sve SSE poruke | Samo rezultati alata |
| Referentna sidra | Nije primjenjivo | Bezuvjetno se čuvaju |
Kombinacije kompresije
Kombinacije kompresije imenovani su profili kompresije koji se mogu dodijeliti kombinacijama usmjeravanja:
compression_combos: pohranjuje način rada, cjevovod, RTK konfiguraciju, jezičnu konfiguraciju i oznaku zadanog profilacompression_combo_assignments: mapira kombinaciju kompresije na kombinaciju usmjeravanja- integracija tijekom izvođenja razrješava dodijeljenu kombinaciju kompresije prije generičkih nadjačavanja kombinacije
- analitika uključuje
compression_combo_idiengine
Lokacija na nadzornoj ploči: Dashboard -> Context & Cache -> Compression Combos.
API sučelje
| Ruta | Svrha |
|---|---|
/api/settings/compression |
Globalne postavke kompresije (uključuju konfiguraciju mcpAccessibility) |
/api/compression/preview |
Pretpregled bilo kojeg načina kompresije |
/api/compression/language-packs |
Popis dostupnih jezičnih paketa Caveman |
/api/context/caveman/config |
Pseudonim za postavke Caveman |
/api/context/rtk/config |
Zadane vrijednosti i postavke RTK-a |
/api/context/rtk/filters |
Katalog RTK filtara |
/api/context/rtk/test |
Krajnja točka za pretpregled/testiranje RTK-a |
/api/context/rtk/raw-output/[id] |
Autentificirani oporavak redigiranog neobrađenog izlaza |
/api/context/combos |
CRUD za kombinacije kompresije |
/api/context/combos/[id]/assignments |
CRUD za dodjelu kombinacija usmjeravanja |
/api/context/analytics |
Pseudonim za analitiku kompresije |
Rute za upravljanje zahtijevaju autentifikaciju za upravljanje ili provjere pravila API ključa.
MCP alati
Kompresija izlaže pet MCP alata:
| Alat | Opseg | Svrha |
|---|---|---|
omniroute_compression_status |
read:compression |
Postavke, analitika i statistika predmemorije |
omniroute_compression_configure |
write:compression |
Ažuriranje globalnih postavki |
omniroute_set_compression_engine |
write:compression |
Postavljanje načina rada i izbornog cjevovoda |
omniroute_list_compression_combos |
read:compression |
Popis kombinacija kompresije |
omniroute_compression_combo_stats |
read:compression |
Čitanje analitike kombinacija/mehanizama |
Opseg i izuzeci
Ugradnje se nikada ne komprimiraju. open-sse/handlers/embeddings.ts nikada ne poziva nijedan
mehanizam kompresije — tijela zahtjeva/odgovora prolaze izravno do izvršitelja bez izmjena.
To je trenutačno strukturno svojstvo (ugradnje i dovršavanja razgovora imaju odvojene rukovatelje), a ne
provjera tijekom izvođenja, no to znači da problem izobličenja vektora iz #8034 nema površinu izloženosti
u putanji ugradnji.
Filtar izuzimanja po modelu/krajnjoj točki (#8034). Za dovršavanja razgovora operator može navesti
ID-jeve modela / ciljeve provider/model koji se nikada ne smiju komprimirati — zaštitna mjera korisna ako
se kompresija kasnije poveže bliže putanji povezanoj s ugradnjama, a općenito je korisna
za svaki model kod kojeg je važan potpuno identičan upit na razini bajtova (determinističke evaluacije, prefiksi
osjetljivi na predmemoriju itd.).
- Polje postavki:
exclusions?: string[]u globalnoj konfiguraciji kompresije (GET/PUT /api/settings/compression), trajno pohranjeno putem postojećeg prostora nazivakey_valueza kompresiju (src/lib/db/compression.ts) — bez nove tablice. - Kartica nadzorne ploče: Nadzorna ploča → Kompresija → Izuzeci
(
/dashboard/compression/exclusions). - Sintaksa uzorka:
*je jedini zamjenski znak. Svaki drugi metaznak regularnog izraza u uzorku escapira se prije podudaranja, pa segpt-5.6podudara samo s doslovnim nizom, a nikada sgpt-5x6(sigurno od ReDoS-a, ograničeno, bez ugniježđenih kvantifikatora). Uzorci se podudaraju bez obzira na veličinu slova i sa samostalnim ID-jem modela i s kompozitomprovider/model—gpt-5-6,openai/gpt-5-6iopenai/*svi funkcioniraju, a sam*izuzima svaki model. - Podudaranje:
isCompressionExcluded()/normalizeCompressionExclusions()uopen-sse/services/compression/exclusions.ts.chatCore.tsprovjerava izuzeti cilj odmah nakon razrješavanja postavki kompresije, prije pokretanja bilo kojeg mehanizma, i podudaranje tretira potpuno jednako kao da je kompresija globalno onemogućena — tijelo zahtjeva dokazivo je identično na razini bajtova. Preskakanje se bilježi putemwriteCompressionSkip(..., "excluded")radi vidljivosti u analitici. - Zadana vrijednost (prazan/nepostojeći popis): identično ponašanju prije #8034 — ništa nije izuzeto.
Poznata ograničenja
- LLMLingua-2 (SLM) zahtijeva da neobavezne ovisnosti budu smještene zajedno. Radni proces pokreće se u
produkcijskoj međuverziji samo kada su
@atjsh/llmlingua-2i povezane ovisnosti smještene zajedno udist/node_modules(pogledajtescripts/build/colocateOptionals.mjs, #4286). Bez njih mehanizam nastavlja rad bez obrade (vraća izvorni tekst). Razrješavanje radnog procesa više ne ovisi oimport.meta.url(koji ne radi u samostalnom paketu) — kao osnovu koristi izvršni cwd /argv[1]. - Jezični paketi Caveman
de/fr/jadjelomični su. Isporučuju pravilacontext+filler+structural, ali ne i paketededup/ultra, pa intenzitetultranije snažniji od intenzitetafullza te jezike (koriste samo vlastita pravila — nema prešutnog povratka na engleska praviladedup/ultra, koja bi izobličila strani tekst). Paketien/es/id/pt-BRpotpuni su. Doprinosi datotekadedup.json+ultra.jsonza djelomične pakete dobrodošli su. - Složena telemetrija navodi samo mehanizme koji su izvršili kompresiju. Korak složenog kanala obrade čiji
se mehanizam pokrenuo, ali je ostvario uštedu od 0 %, vraća
stats:nulli zato se ne prikazuje uengineBreakdown— nije ga moguće razlikovati od preskočenog koraka. Razlikovanje stanja „pokrenuto, 0 %” od „preskočeno” zahtijevalo bi promjenu modela raščlambe te je odgođeno.
Provjera valjanosti
Ciljane provjere za ovo područje su:
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