* 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 (Slovenščina)
🌐 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 · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Stiskanje v OmniRoute temelji na pogodbah pogonov. Način lahko neposredno izvaja en pogon
(caveman ali rtk) ali determinističen skladovni cevovod, ki zaporedoma izvaja več pogonov.
Načini
| Način | Pot pogona | Predvideni vhod |
|---|---|---|
off |
brez | Natančna ohranitev poziva |
lite |
Lahka pomožna orodja Caveman | Vedno vklopljeno čiščenje z nizkim tveganjem |
standard |
Caveman | Strnjevanje pozivov v naravnem jeziku |
aggressive |
Caveman + povzemalniki zgodovine/orodij | Dolge seje klepeta |
ultra |
Caveman + pomožna orodja za obrezovanje | Obnova ob doseženi omejitvi konteksta |
rtk |
RTK | Izhod terminala, lupine, gradnje, testov in git |
omniglyph |
OmniGlyph | Kontekst kot slika na izvornem kanalu ponudnika |
stacked |
Cevovod, privzeto rtk -> caveman |
Mešani dnevniki orodij in besedilo, največji prihranki |
Profili stiskanja OmniGlyph
Pogon omniglyph (paket omniglyph, 1.4.0+) sprejema poimenovan semantični profil, nastavljen
globalno prek omniglyph.profile v nastavitvah stiskanja ali za posamezni korak prek konfiguracije
koraka skladovnega cevovoda:
| Profil | Meja |
|---|---|
aggressive |
Privzeto. Pravilnik, uporabljen pri objavljenih meritvah — kot slike obravnava sistem, dokumentacijo orodij in gosto zgodovino |
balanced |
Ohrani aktivno stanje v izvorni obliki, zaščiti zadnjih 8 izmenjav in strne starejšo zaključeno zgodovino |
coding-safe |
Ohrani pooblastila, sheme orodij in aktivni izhod orodij v izvorni obliki ter zaščiti zadnjih 12 izmenjav |
passthrough |
Usmerja brez preoblikovanja; pogon je preskočen |
Profil je zgornja meja, ne spodnja: mergeCompressionProfileOptions v paketu
prepreči, da bi preglasitev klicatelja znova odprla izgubni kanal, ki ga je profil zaprl, zato nastavitev
preserveSystemPrompt: false za posamezni korak ne more znova omogočiti stiskanja sistemskega poziva pri profilu coding-safe.
Merjeno na tej kodni zbirki: coding-safe in balanced zvišata minCompressChars na njegovo
najvišjo vrednost ter ohranita sistem, sheme orodij in rezultate orodij v izvorni obliki, zato se seja, v kateri
se zgodovina še ni nakopičila, ustavi pri below_min_chars, pogon pa ne preoblikuje ničesar. Zato je
privzeti profil aggressive in ne najvarnejši profil.
Paket določi lasten obseg modelov in profil iz svoje okoljske konfiguracije. OmniRoute odločitve nikoli ne prenese nanj: vmesnik omeji vrata modelov na najstrožji obseg paketa, zato lahko nastavitve gostiteljskega okolja seznam dovoljenih možnosti le zožijo, nikoli pa ga ne morejo razširiti prek obsega, potrjenega z meritvami OmniRoute.
Register mehanizmov
Register se nahaja v open-sse/services/compression/engines/registry.ts. Mehanizmi izpostavljajo skupno
pogodbo:
id: nespremenljiv ID mehanizma, na primercavemanalirtkapply(text, config): podedovana izvedbena pot, ki jo uporabljajo sestavljeni cevovodicompress(input, config): primarna izvedbena pot, ki vrne besedilo in statistikogetConfigSchema(): vrne strukturo veljavne konfiguracije, podobno shemi JSONvalidateConfig(config): vrne{ valid, errors[] }
Registracija uporablja registerCompressionEngine(engine) (ali registerEngine za napredne primere),
ki pred sprejetjem pokliče assertValidEngine() in validateConfig(defaultConfig).
Za odstranitev mehanizma med izvajanjem uporabite unregisterCompressionEngine(id).
strategySelector.ts pred izvajanjem stiskanja registrira vgrajene mehanizme. Tako lahko predogled,
stiskanje med izvajanjem, sestavljeni način, preizkusi in prihodnji mehanizmi uporabljajo isto izvedbeno pot.
Stiskanje opisov MCP (povezano)
Ločen register stiska metapodatke opisov orodij MCP na ravni registra — glejte
open-sse/mcp-server/descriptionCompressor.ts in MCP-SERVER.md. Ponovno uporablja
pravila Caveman, vendar deluje na metapodatkih orodij in ne na koristnih vsebinah zahtev.
Dodatni vgrajeni mehanizmi
Poleg mehanizmov Caveman, RTK in LLMLingua-2 register vključuje več specializiranih brezizgubnih / strukturnih mehanizmov (uporabljajo jih sestavljeni cevovodi, preizkusno okolje in preizkusi):
| Mehanizem | ID | Kaj počne |
|---|---|---|
| CCR | ccr |
Content-Compress-Retrieve (H4): velike neprekinjene besedilne bloke nadomesti z vsebinsko naslovljenimi sklici, tako da so ponovljeni/veliki bloki poslani enkrat, nato pa se nanje le sklicuje. |
| headroom | headroom |
SmartCrusher (H3 + N5): brezizgubno tabelarično stiskanje koristnih vsebin homogenih polj JSON v stolpčno obliko [N rows]. |
| ionizer | ionizer |
Vzorčenje vrstic z začetka, sredine in konca zelo velikih homogenih blokov, pri čemer je izpuščena sredina shranjena kot vsebinsko naslovljen sklic CCR. |
| session-dedup | session-dedup |
Vsebinsko naslovljeno odstranjevanje podvojitev med koraki (po zgledu TokenMizer): izpusti besedilo, ki je bilo že videno v prejšnjih korakih iste seje. |
Navodilo protokola za pridobivanje CCR (#8033): ko CCR v zahtevi prvič nadomesti ≥1 blok,
mehanizem na začetek doda eno samo idempotentno sporočilo system (ki se začne z
razpoznavnim nizom [CCR protocol]), s katerim klicatelja pouči o pogodbi med oznako in orodjem: kaj pomeni
oznaka [CCR retrieve hash=<24hex> chars=N], da mora biti zgoščena vrednost prekopirana dobesedno
(vseh 24 šestnajstiških znakov — napačno prekopirane zgoščene vrednosti so najverjetnejši vzrok za
napake »bloka ni bilo mogoče najti«) in da oznaka [dedup:ref sha=...] pomeni »poglej nazaj v zgodovino«,
ne pa »pokliči orodje«. Opomba se vstavi samo, ko klicateljev oglaševani tools[] dokazuje, da lahko
dejansko dostopa do omniroute_ccr_retrieve (callerSupportsCcrRetrieve() v
open-sse/services/compression/engines/ccr/protocolInstruction.ts) — običajni
klicatelj, združljiv z OpenAI, brez tega orodja nikoli ne prejme navodila, naj pokliče nekaj,
do česar nima dostopa. Idempotentnost se zagotavlja tako, da se pred vstavljanjem v zgodovini sporočil
poišče razpoznavni niz, zato se pri večkorakovnih zahtevah (ki ponovno predvajajo predhodna sporočila)
opomba ne dodaja znova pri vsakem koraku.
Caveman
Način Caveman se osredotoča na semantično zgoščevanje običajnega besedila:
- ohranja bloke kode, URL-je, JSON, poti in strukturirane podatke
- odstranjuje mašila, izraze negotovosti, ponovljen kontekst in razvlečene povezovalne besedne zveze
- podpira jezikovno prilagojene pakete pravil za datoteke v
open-sse/services/compression/rules/ - ostaja na voljo prek podedovanih načinov
standard,aggressiveinultra
V nadzorni plošči je na voljo pod Dashboard -> Context & Cache -> Caveman.
Izvorni projekt Caveman poroča o ~75% manj izhodnih žetonih, povprečnem 65% prihranku izhoda v primerjalnih preizkusih
z razponom 22-87% in orodju za stiskanje vhoda z ~46% prihrankom. OmniRoute pri dokumentiranju sestavljenih prihrankov poziva/konteksta
uporablja podatek za vhodno stran sistema Caveman; izhodni način Caveman ostaja ločena
funkcija vedenja odzivov.
RTK
Način RTK se osredotoča na izhod ukazov in orodij:
- zaznava razrede izhoda, kot so
git status,git branch,git diff, Vitest/Jest/Pytest, preizkusi Cargo/Go, gradnje TypeScript/Vite/Webpack, ESLint, preverjanja/namestitve npm, dnevniki Docker, lupinska ukazafind/grep, sledi sklada in splošni dnevniki - uporablja 49 filtrov JSON iz
open-sse/services/compression/engines/rtk/filters/ - podpira deklarativni cevovod v slogu RTK: odstranjevanje ANSI, zamenjavo, kratkostično obravnavo ujemanja izhoda, odstranjevanje/ohranjanje vrstic, krajšanje posamezne vrstice, krajšanje glave/repa/največjega števila vrstic in nadomestni izhod ob praznem rezultatu
- podpira projektne filtre z nadzorom zaupanja v
.rtk/filters.jsonin globalne filtre vDATA_DIR/rtk/filters.json - odstranjuje zaporedja ANSI, šum napredka, ponovljene vrstice in nekoristno standardno besedilo
- ohranja napake, ki zahtevajo ukrepanje, opozorila, povzetke, spremenjene datoteke in kontekst na koncu
- lahko izbirno ohrani redigiran neobdelan izhod za obnovitev/razhroščevanje prek overjenih upravljavskih poti
V nadzorni plošči je na voljo pod Dashboard -> Context & Cache -> RTK.
Operativne podrobnosti o filtrih po meri, zaupanju, preverjanju in obnovitvi neobdelanega izhoda so na voljo v
RTK_COMPRESSION.md.
Izvorni projekt RTK poroča o 60-90% prihranku pri stiskanju izhoda ukazov. Primer v njegovi datoteki README prikazuje,
da se je 30-minutna seja Claude Code zmanjšala s ~118,000 žetonov na ~23,900, kar pomeni 79.7% prihranka.
LLMLingua-2 (Semantično obrezovanje)
Način LLMLingua-2 izvaja semantično obrezovanje žetonov v besedilu z uporabo majhnega klasifikatorja žetonov ONNX ter dopolnjuje mehanizma Caveman in RTK, ki temeljita na pravilih:
- stiska besedilo samo v nesistemskih sporočilih; ograjeni bloki kode in drugi ohranjeni konstrukti se nikoli ne spremenijo
- izvaja zaledje
@atjsh/llmlingua-2(ONNX prek@huggingface/transformers) v delovni niti, zato sklepanje modela nikoli ne blokira dogodkovne zanke zahteve - je združljiv v sklad (
stackPriority35): v sestavljenem cevovodu se izvede za strukturnimi mehanizmi (CCR, session-dedup, headroom, Caveman), vendar predultra, saj je semantično obrezovanje najučinkovitejše pri že strukturno stisnjenem besedilu — npr.rtk -> caveman -> llmlingua - se ob kakršni koli napaki varno izklopi (manjkajoče izbirne odvisnosti, zagon delovne niti, nalaganje modela, sklepanje ali časovna omejitev) → izvirno besedilo se vrne nespremenjeno, nikoli pa napaka
Lokacija mehanizma: open-sse/services/compression/engines/llmlingua/. V nadzorni plošči je na voljo
pod Dashboard -> Context & Cache -> LLMLingua.
Modeli
Privzeti model je TinyBERT (atjsh/llmlingua-2-js-tinybert-meetingbank, ~57 MB,
hiter). Natančnejši model BERT-base (Arcoldd/llmlingua4j-bert-base-onnx,
~710 MB) je na voljo prek polja model v konfiguraciji mehanizma. @huggingface/transformers
ob prvem klicu leno prenese izbrani model iz HuggingFace Hub v
${DATA_DIR}/models/llmlingua (modelStore.ts); preglasitev konfiguracije modelPath
ga namesto tega usmeri na lokalno kopijo (za namestitve brez povezave/v izoliranem omrežju).
Izbirne odvisnosti in namestitev na zahtevo
Odstranljiv sklad enakovrednih odvisnosti izvajalnega okolja LLMLingua je izbiren. Dva paketa sta navedena kot
optionalDependencies v package.json in v produkcijski gradnji ostajata zunanja
(scripts/build/prepublish.ts ju ne vključi v paket):
| Paket | Različica (pripeta) | Opombe |
|---|---|---|
@atjsh/llmlingua-2 |
2.0.5 |
Vstopni paket; druge pakete navede kot enakovredne odvisnosti |
js-tiktoken |
^1.0.20 |
Razčlenjevalnik žetonov |
@huggingface/transformers je pripet na ^4.2.0 (v skupni rabi z lokalno potjo vdelav in
vključen tudi v samostojni paket); @atjsh/llmlingua-2@2.0.5 ga uporablja kot enakovredno odvisnost z
"^3.5.2 || ^4.0.0", zato sta podprti različici Transformers.js v3 in v4. Od različice 2.0.4
@atjsh/llmlingua-2 ne potrebuje več paketa @tensorflow/tfjs, s čimer je bil iz sklada SLM odstranjen največji posamezni
porabnik prostora (TensorFlow.js). Odstranljiva enakovredna paketa SLM sta samo zgornja dva.
Običajni npm install (razvoj) samodejno namesti izbirni sklad, razen če so izbirne
odvisnosti izpuščene.
Zakaj na zahtevo: paket, objavljen v npm, samostojni paket in slika Docker so dobavljeni
brez teh odvisnosti, da ostanejo majhni. Če odvisnosti manjkajo, preverjanje odvisnosti delovne niti
(poskus razrešitve @atjsh/llmlingua-2 v worker.ts) spodleti in mehanizem se
tiho varno izklopi — izbira LLMLingua ne izvede ničesar (besedilo se vrne nespremenjeno, brez
zabeležene napake). Če ga želite aktivirati v okolju z odstranjenimi odvisnostmi, namestite izbirni sklad:
# pripnite na različice, navedene v optionalDependencies datoteke package.json
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
Odstranitev paketa @tensorflow/tfjs (2.0.4+) odpravi prej prevladujočega porabnika velikosti ~800 MB
— preostali obseg sestavljajo izvajalna okolja transformers.js + onnxruntime-node
in model TinyBERT (~57 MB), ki se prenese ob prvi uporabi (ne prek npm).
Za posamezna okolja:
- Razvoj /
npm install— samodejno nameščeno, razen če ste podali--omit=optional(ali--no-optional). Ukrepanje ni potrebno. - Globalni npm (
npm i -g omniroute) / samostojna namestitev — zaženite zgornji namestitveni ukaz v imeniku nameščenega paketa ali pa ga znova namestite, ne da bi izpustili izbirne odvisnosti. - Docker — dodajte namestitveni ukaz v plast izpeljane slike; objavljena slika je namenoma okrnjena.
- VPS (PM2) — namestite v
node_modulesaplikacije, nato znova zaženite proces, da delovni proces ponovno preveri varovalo. - Neobdelana samostojna različica Next (
npm run build→.build/next/standalone/server.js) — samostojna sled NE vključuje niti delovnega procesa niti izbirnih odvisnosti, zato se mehanizem ob napaki neopazno odpre.scripts/build/colocate-standalone.mjsznova uporabi oboje (delovni proces esbuild + zaprtje izbirnih odvisnosti v samostojnem drevesu); po vsaki gradnji se samodejno zažene prek npm-kavljapostbuild. Idempotentno; če odvisnosti manjkajo, se napaka obravnava brez prekinitve.
Preverite, ali je aktivno: ko je izbran LLMLingua, se dejansko besedilo resnično skrči (mehanizem
se ob napaki ne odpira več), prva zahteva pa sproži prenos modela v
${DATA_DIR}/models/llmlingua. Varovalo namenoma preverja samo @atjsh/llmlingua-2 —
drugi enakovredni paketi podpirajo samo ESM in require.resolve pri njih sproži izjemo, tudi ko so prisotni — zato
se delovni proces ob napaki še vedno odpre, če ob času import() dejansko manjka kateri koli enakovredni paket.
Zloženi cevovodi
Zloženi način izvaja korake cevovoda po vrstnem redu. Privzeto je:
rtk -> caveman
To uporabite za seje z agentom za programiranje, kjer poziv združuje izhod ukazov s prozo uporabnika ali pomočnika. RTK najprej zmanjša količino nepreglednih dnevnikov orodij, nato pa Caveman stisne preostali naravni jezik.
Koraki cevovoda se konfigurirajo z stackedPipeline v nastavitvah stiskanja ali prek kombinacij stiskanja.
Ko oba mehanizma zmanjšata isto primerno koristno vsebino, se prihranki pomnožijo:
combined = 1 - (1 - prihranek RTK) * (1 - prihranek vhoda Caveman)
average = 1 - (1 - 0.80) * (1 - 0.46) = 89.2%
range = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%
Filter drevesa dostopnosti MCP
Pametni filter drevesa dostopnosti MCP je sloj stiskanja po izvedbi, ki se izvaja na rezultatih orodij MCP, ne pa na pozivih ali kontekstu. Namenjen je obsežnim koristnim vsebinam dreves dostopnosti in posnetkov brskalnika, ki jih vračajo orodja, kot so Playwright, computer-use in strežniki MCP za avtomatizacijo brskalnika.
Kaj počne
- Odstranjevanje šuma — odstrani prazne splošne/besedilne vnose (
- generic:,- text: "") - Strnjevanje sorodnih elementov — ko je ≥
collapseThreshold(privzeto 30) zaporednih vrstic strukturnih ponovitev, jih strne v prvihcollapseKeepHead(privzeto 10) vrstic + povzetek števila + zadnjihcollapseKeepTail(privzeto 5) vrstic - Ohranjanje sklicev — sidra
[ref=eXX], ki jih zahtevata Playwright/computer-use, ostanejo vedno nedotaknjena - Trdo krajšanje — če besedilo po strnjevanju še vedno presega
maxTextChars(privzeto 50,000), ga skrajša in doda namig za krmarjenje, da lahko agent nadaljuje delo
Lokacija mehanizma
open-sse/services/compression/engines/mcpAccessibility/
index.ts ← vstopna točka smartFilterText()
collapseRepeated.ts ← algoritem strnjevanja sorodnih elementov
constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG
Konfiguracija
Nadzira jo compression.mcpAccessibility v globalnih nastavitvah (migracija 056). Privzeta konfiguracija:
{
"enabled": true,
"maxTextChars": 50000,
"collapseThreshold": 30,
"collapseKeepHead": 10,
"collapseKeepTail": 5,
"minLengthToProcess": 2000
}
Filter se uporabi samo za koristne vsebine rezultatov orodij, katerih type je "text" in katerih dolžina presega minLengthToProcess. Ne vpliva na stiskanje pozivov ali koristne vsebine zahtev.
Pričakovani prihranki
60–80 % pri rezultatih orodij za posnetke brskalnika, odvisno od kompleksnosti strani. Časovna zahtevnost algoritma strnjevanja je O(n) glede na število vrstic, zakasnitev pa je zanemarljiva.
Ta filter v primerjavi z zgornjimi mehanizmi stiskanja
| Vidik | Caveman / RTK / Stacked | Filter dostopnosti MCP |
|---|---|---|
| Cilj | Pozivi zahtev / kontekst | Rezultati orodij MCP |
| Sprožilec | Nastavitev načina stiskanja | compression.mcpAccessibility.enabled |
| Obseg | Vsa sporočila SSE | Samo rezultati orodij |
| Sidra sklicev | Ni relevantno | Brezpogojno ohranjena |
Kombinacije stiskanja
Kombinacije stiskanja so poimenovani profili stiskanja, ki jih je mogoče dodeliti kombinacijam usmerjanja:
compression_combos: hrani način, cevovod, konfiguracijo RTK, jezikovno konfiguracijo in oznako privzete vrednosticompression_combo_assignments: preslika kombinacijo stiskanja v kombinacijo usmerjanja- integracija med izvajanjem razreši dodeljeno kombinacijo stiskanja pred splošnimi preglasitvami kombinacij
- analitika vključuje
compression_combo_idinengine
Mesto na nadzorni plošči: Dashboard -> Context & Cache -> Compression Combos.
Površina API-ja
| Pot | Namen |
|---|---|
/api/settings/compression |
Globalne nastavitve stiskanja (vključuje konfiguracijo mcpAccessibility) |
/api/compression/preview |
Predogled katerega koli načina stiskanja |
/api/compression/language-packs |
Seznam razpoložljivih jezikovnih paketov Caveman |
/api/context/caveman/config |
Vzdevek nastavitev Caveman |
/api/context/rtk/config |
Privzete vrednosti in nastavitve RTK |
/api/context/rtk/filters |
Katalog filtrov RTK |
/api/context/rtk/test |
Končna točka za predogled/preizkus RTK |
/api/context/rtk/raw-output/[id] |
Overjeno obnovitev redigiranega neobdelanega izhoda |
/api/context/combos |
CRUD kombinacij stiskanja |
/api/context/combos/[id]/assignments |
CRUD dodelitev kombinacij usmerjanja |
/api/context/analytics |
Vzdevek analitike stiskanja |
Poti za upravljanje zahtevajo overjanje za upravljanje ali preverjanje pravilnika ključa API.
Orodja MCP
Stiskanje ponuja pet orodij MCP:
| Orodje | Obseg | Namen |
|---|---|---|
omniroute_compression_status |
read:compression |
Nastavitve, analitika, statistika predpomnilnika |
omniroute_compression_configure |
write:compression |
Posodobitev globalnih nastavitev |
omniroute_set_compression_engine |
write:compression |
Nastavitev načina in izbirnega cevovoda |
omniroute_list_compression_combos |
read:compression |
Seznam kombinacij stiskanja |
omniroute_compression_combo_stats |
read:compression |
Branje analitike kombinacij/mehanizmov |
Obseg in izključitve
Vdelave niso nikoli stisnjene. open-sse/handlers/embeddings.ts nikoli ne pokliče nobenega
mehanizma za stiskanje — telesi zahteve in odgovora gresta neposredno do izvajalnika brez sprememb.
To je trenutno strukturno (vdelave in dokončanja klepeta imajo ločene obdelovalnike), ne gre za
preverjanje med izvajanjem, vendar to pomeni, da pomislek glede popačenja vektorjev iz #8034 nima
nobene izpostavljene površine na poti vdelav.
Filter izključitev glede na model/končno točko (#8034). Pri dokončanjih klepeta lahko upravljavec navede
ID-je modelov/cilje provider/model, ki ne smejo biti nikoli stisnjeni — zaščitni ukrep, uporaben, če
bo stiskanje pozneje kdaj povezano bližje poti, ki meji na vdelave, in na splošno uporaben
za vsak model, pri katerem je pomemben poziv, ki je do bajta povsem nespremenjen (deterministična vrednotenja, na
predpomnilnik občutljive predpone itd.).
- Polje nastavitev:
exclusions?: string[]v globalni konfiguraciji stiskanja (GET/PUT /api/settings/compression), shranjeno prek obstoječega imenskega prostora stiskanjakey_value(src/lib/db/compression.ts) — brez nove tabele. - Zavihek nadzorne plošče: Dashboard → Compression → Exclusions
(
/dashboard/compression/exclusions). - Sintaksa vzorca:
*je edini nadomestni znak. Vsak drug metaznak regularnega izraza v vzorcu je pred ujemanjem ubežan, zato segpt-5.6ujema samo z dobesednim nizom, nikoli zgpt-5x6(varno pred ReDoS, omejeno, brez ugnezdenih kvantifikatorjev). Vzorci se brez razlikovanja med velikimi in malimi črkami ujemajo tako z golim ID-jem modela kot s sestavljenim nizomprovider/model—gpt-5-6,openai/gpt-5-6inopenai/*vsi delujejo,*sam pa izključi vsak model. - Ujemanje:
isCompressionExcluded()/normalizeCompressionExclusions()vopen-sse/services/compression/exclusions.ts.chatCore.tspreveri izključeni cilj takoj po razrešitvi nastavitev stiskanja, pred zagonom katerega koli mehanizma, in ujemanje obravnava natanko tako, kot če bi bilo stiskanje globalno onemogočeno — telo zahteve je dokazljivo bajt za bajtom enako. Preskok se zabeleži prekwriteCompressionSkip(..., "excluded")za vidnost v analitiki. - Privzeto (prazen/manjkajoč seznam): enako vedenju pred #8034 — nič ni izključeno.
Znane omejitve
- LLMLingua-2 (SLM) zahteva kolocirane izbirne odvisnosti. Delovni proces se v
produkcijski gradnji zažene samo, če so
@atjsh/llmlingua-2in enakovredne odvisnosti kolocirane vdist/node_modules(glejtescripts/build/colocateOptionals.mjs, #4286). Brez njih mehanizem ob napaki vrne izvirno besedilo. Razreševanje delovnega procesa ni več odvisno odimport.meta.url(ta v samostojnem svežnju preneha delovati) — opira se na izvajalni cwd /argv[1]. - Jezikovni paketi Caveman
de/fr/jaso delni. Vključujejo pravilacontext+filler+structural, vendar ne paketovdedup/ultra, zato intenzivnostultrapri teh jezikih ni močnejša odfull(uporabljajo samo lastna pravila — ni tihega nadomestnega preklopa na angleška praviladedup/ultra, ki bi popačila tujejezično besedilo). Paketien/es/id/pt-BRso popolni. Prispevki datotekdedup.json+ultra.jsonza delne pakete so dobrodošli. - Telemetrija zloženega cevovoda navaja samo mehanizme, ki so izvedli stiskanje. Korak zloženega cevovoda,
katerega mehanizem se je izvedel, vendar je dosegel 0 % prihranka, vrne
stats:null, zato ni prikazan vengineBreakdown— ni ga mogoče razlikovati od preskočenega koraka. Razlikovanje med »izvedeno, 0 %« in »preskočeno« bi zahtevalo spremembo modela razčlenitve in je odloženo.
Preverjanje
Ciljno usmerjena preverjanja za to področje so:
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