* 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.
32 KiB
Compression Engines (Oʻzbekcha)
🌐 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 · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
OmniRoute siqish mexanizmi engine shartnomalari asosida qurilgan. Rejim bitta engine’ni bevosita
(caveman yoki rtk) yoxud bir nechta engine’ni belgilangan tartibda ishga tushiradigan deterministik ketma-ket pipeline’ni bajarishi mumkin.
Rejimlar
| Rejim | Engine yo‘li | Mo‘ljallangan kirish ma’lumoti |
|---|---|---|
off |
yo‘q | Promptni aynan saqlab qolish |
lite |
Caveman lite yordamchilari | Xavfi past, doimiy tozalash |
standard |
Caveman | Tabiiy tildagi promptni ixchamlashtirish |
aggressive |
Caveman + tarix/vosita xulosachilari | Uzoq chat seanslari |
ultra |
Caveman + qisqartirish yordamchilari | Kontekst chegarasidan tiklanish |
rtk |
RTK | Terminal, shell, build, test va git chiqishi |
omniglyph |
OmniGlyph | Mahalliy provayder kanalida tasvir ko‘rinishidagi kontekst |
stacked |
Pipeline, standart rtk -> caveman |
Aralash vosita jurnallari va nasriy matn, maksimal tejash |
OmniGlyph siqish profillari
omniglyph engine’i (omniglyph paketi, 1.4.0+) nomlangan semantik profilni qabul qiladi; u
siqish sozlamalaridagi omniglyph.profile orqali global miqyosda yoki stacked pipeline’ning
qadam konfiguratsiyasi orqali har bir qadam uchun alohida o‘rnatiladi:
| Profil | Chegara |
|---|---|
aggressive |
Standart. E’lon qilingan o‘lchovlarda ishlatilgan siyosat — system, vosita hujjatlari va zich tarixni tasvirga aylantiradi |
balanced |
Faol holatni asl ko‘rinishda saqlaydi, oxirgi 8 ta navbatni himoya qiladi, eski yopilgan tarixni ixchamlashtiradi |
coding-safe |
Vakolatlarni, vosita sxemalarini va faol vosita chiqishini asl ko‘rinishda saqlaydi, oxirgi 12 ta navbatni himoya qiladi |
passthrough |
O‘zgartirmasdan yo‘naltiradi; engine o‘tkazib yuboriladi |
Profil quyi chegara emas, yuqori chegara: paketdagi mergeCompressionProfileOptions
chaqiruvchi tomonidan berilgan override’ga profil yopgan yo‘qotishli kanalni qayta ochishga
ruxsat bermaydi, shu sababli har bir qadam uchun berilgan preserveSystemPrompt: false
coding-safe ostida system siqishni qayta yoqa olmaydi.
Ushbu kod bazasida o‘lchanganda: coding-safe va balanced minCompressChars qiymatini
maksimal darajaga oshiradi hamda system, vosita sxemalari va vosita natijalarini asl
ko‘rinishda saqlaydi, shuning uchun hali tarix to‘planmagan seans below_min_chars holatida
to‘xtaydi va engine hech narsani o‘zgartirmaydi. Shu sababli standart profil eng xavfsiz
profil emas, balki aggressive hisoblanadi.
Paket o‘z model qamrovi va profilini muhit konfiguratsiyasidan mustaqil ravishda aniqlaydi. OmniRoute qarorni hech qachon boshqa tomonga topshirmaydi: adapter model darvozasini paketning eng cheklovchi qamroviga mahkamlaydi, shu sababli xost muhiti sozlamalari ruxsat ro‘yxatini faqat toraytirishi mumkin, uni OmniRoute o‘lchovlarida tasdiqlangan chegaradan kengaytira olmaydi.
Dvigatellar reyestri
Reyestr open-sse/services/compression/engines/registry.ts faylida joylashgan. Dvigatellar umumiy
shartnomani taqdim etadi:
id:cavemanyokirtkkabi barqaror dvigatel identifikatoriapply(text, config): ketma-ket quvurlar tomonidan ishlatiladigan eski bajarish yoʻlicompress(input, config): matn + statistikani qaytaruvchi asosiy bajarish yoʻligetConfigSchema(): yaroqli konfiguratsiyaning JSON-Schema-ga oʻxshash shaklini qaytaradivalidateConfig(config):{ valid, errors[] }ni qaytaradi
Roʻyxatdan oʻtkazishda registerCompressionEngine(engine) (yoki murakkab holatlar uchun registerEngine)
ishlatiladi; u qabul qilishdan oldin assertValidEngine() va validateConfig(defaultConfig) ni chaqiradi.
Dvigatelni bajarilish vaqtida olib tashlash uchun unregisterCompressionEngine(id) dan foydalaning.
strategySelector.ts siqish bajarilishidan oldin ichki dvigatellarni roʻyxatdan oʻtkazadi. Bu dastlabki koʻrish,
bajarilish vaqtidagi siqish, ketma-ket rejim, testlar va kelajakdagi dvigatellarga bir xil bajarish yoʻlidan foydalanish imkonini beradi.
MCP tavsifini siqish (aloqador)
Alohida reyestr MCP vositalari tavsifi metamaʼlumotlarini reyestr darajasida siqadi — qarang:
open-sse/mcp-server/descriptionCompressor.ts va MCP-SERVER.md. U Caveman
qoidalarini qayta ishlatadi, ammo soʻrov foydali yuklari bilan emas, vosita metamaʼlumotlari bilan ishlaydi.
Qoʻshimcha ichki dvigatellar
Caveman, RTK va LLMLingua-2 dan tashqari, reyestr bir nechta ixtisoslashgan yoʻqotishsiz / tuzilmaviy dvigatellarni ham taqdim etadi (ular ketma-ket quvurlar, sinov maydonchasi va testlarda ishlatiladi):
| Dvigatel | Id | Nima qiladi |
|---|---|---|
| CCR | ccr |
Content-Compress-Retrieve (H4): yirik uzluksiz matn bloklarini kontentga asoslangan havolalar bilan almashtiradi, natijada takroriy/yirik bloklar bir marta yuborilib, keyinchalik ularga havola qilinadi. |
| headroom | headroom |
SmartCrusher (H3 + N5): bir xil tuzilishga ega JSON massiv foydali yuklarini ustunli [N rows] shakliga yoʻqotishsiz jadvalli ixchamlaydi. |
| ionizer | ionizer |
Juda katta bir xil tuzilishga ega bloklardan bosh/oʻrta/oxir qatorlarni tanlab oladi va chiqarib tashlangan oʻrta qismni CCR kontentga asoslangan havolasi sifatida saqlaydi. |
| session-dedup | session-dedup |
Seans davomida navbatlararo kontentga asoslangan takrorlarni olib tashlash (TokenMizer-dan ilhomlangan): ayni seansning oldingi navbatlarida allaqachon uchragan matnni chiqarib tashlaydi. |
CCR olish protokoli koʻrsatmasi (#8033): CCR soʻrovdagi ≥1 blokni birinchi marta
almashtirganda, dvigatel marker → vosita shartnomasini chaqiruvchiga tushuntiruvchi yagona, idempotent
system xabarini ([CCR protocol] sentinelidan boshlanadigan) boshiga qoʻshadi:
[CCR retrieve hash=<24hex> chars=N] markeri nimani anglatishi, xesh aynan oʻz holicha
(barcha 24 ta oʻn oltilik belgi — notoʻgʻri koʻchirilgan xeshlar "blok topilmadi"
xatolarining ehtimoliy sababidir) koʻchirilishi shartligi va [dedup:ref sha=...] markeri
"vositani chaqirish" emas, balki "tarixga qaytib qarash" maʼnosini anglatishi tushuntiriladi.
Izoh faqat chaqiruvchi eʼlon qilgan tools[] uning haqiqatan ham
omniroute_ccr_retrieve ga kira olishini tasdiqlaganda (callerSupportsCcrRetrieve() funksiyasi
open-sse/services/compression/engines/ccr/protocolInstruction.ts ichida) kiritiladi — bu vositasiz oddiy
OpenAI-mos chaqiruvchi oʻzi kira olmaydigan narsani chaqirish koʻrsatmasini hech qachon olmaydi.
Idempotentlik kiritishdan oldin xabarlar tarixida sentinelni qidirish orqali taʼminlanadi,
shuning uchun koʻp navbatli soʻrovlarda (oldingi xabarlar qayta uzatiladi) izoh har bir navbatda
ustma-ust qoʻshilmaydi.
Caveman
Caveman rejimi odatiy nasriy matnni semantik jihatdan ixchamlashtirishga qaratilgan:
- kod bloklari, URL manzillar, JSON, yoʻllar va tuzilmaviy maʼlumotlarni saqlab qoladi
- ortiqcha soʻzlar, noaniq ifodalar, takrorlangan kontekst va choʻziq bogʻlovchi iboralarni olib tashlaydi
open-sse/services/compression/rules/ichidagi tilga mos fayl qoidalari toʻplamlarini qoʻllab-quvvatlaydi- eski
standard,aggressivevaultrarejimlari orqali ham foydalanish mumkin
Boshqaruv panelidagi joylashuvi: Dashboard -> Context & Cache -> Caveman.
Caveman upstream hisobotlariga koʻra, chiqish tokenlari ~75% ga kamayadi, benchmarklarda chiqish hajmi oʻrtacha 65% ga tejaladi,
diapazon esa 22-87% ni tashkil qiladi; kirishni siqish vositasi uchun bu koʻrsatkich ~46%. OmniRoute ustma-ust qoʻllanilgan prompt/kontekst tejashlarini
hujjatlashtirishda Cavemanʼning kirish tomonidagi koʻrsatkichidan foydalanadi; Caveman chiqish rejimi esa alohida
javob xatti-harakati xususiyati boʻlib qoladi.
RTK
RTK rejimi buyruq va vosita chiqishlariga qaratilgan:
git status,git branch,git diff, Vitest/Jest/Pytest, Cargo/Go testlari, TypeScript/Vite/Webpack buildlari, ESLint, npm audit/oʻrnatishlari, Docker loglari, shellfind/grep, stek izlari va umumiy loglar kabi chiqish sinflarini aniqlaydiopen-sse/services/compression/engines/rtk/filters/ichidagi 49 ta JSON filtrini qoʻllaydi- RTK uslubidagi deklarativ konveyerni qoʻllab-quvvatlaydi: ANSIʼni olib tashlash, almashtirish, chiqish mos kelganda qisqa tutashuv, satrlarni olib tashlash/saqlash, har bir satrni qisqartirish, bosh/oxir/maksimal satr boʻyicha qisqartirish va natija boʻsh boʻlgandagi zaxira variant
.rtk/filters.jsonichidagi ishonch bilan cheklangan loyiha filtrlarini vaDATA_DIR/rtk/filters.jsonichidagi global filtrlarni qoʻllab-quvvatlaydi- ANSI ketma-ketliklari, jarayon shovqini, takroriy satrlar va foydasiz andozaviy matnlarni olib tashlaydi
- amaliy choralar koʻrish mumkin boʻlgan xatolar, ogohlantirishlar, xulosalar, oʻzgartirilgan fayllar va yakuniy kontekstni saqlab qoladi
- tiklash/nosozliklarni aniqlash uchun autentifikatsiyalangan boshqaruv marshrutlari orqali tahrirlangan xom chiqishni ixtiyoriy ravishda saqlab qolishi mumkin
Boshqaruv panelidagi joylashuvi: Dashboard -> Context & Cache -> RTK.
Maxsus filtrlar, ishonch, tekshirish va xom chiqishni tiklash boʻyicha operatsion tafsilotlar
RTK_COMPRESSION.md ichida keltirilgan.
RTK upstream hisobotlariga koʻra, buyruq chiqishini siqishda 60-90% tejaladi. Uning README misolida
30 daqiqalik Claude Code seansi ~118,000 tokendan ~23,900 tokengacha qisqargani, yaʼni 79.7% tejalishi koʻrsatilgan.
LLMLingua-2 (Semantik kesish)
LLMLingua-2 rejimi kichik ONNX token klassifikatoridan foydalanib, nasriy matnda semantik tokenlarni kesishni amalga oshiradi va qoidalarga asoslangan Caveman hamda RTK dvigatellarini toʻldiradi:
- faqat tizimga oid boʻlmagan xabarlardagi nasriy matnni siqadi; chegaralangan kod bloklari va boshqa saqlanadigan tuzilmalar hech qachon oʻzgartirilmaydi
@atjsh/llmlingua-2backendini (ONNX@huggingface/transformersorqali) ishchi oqimda ishga tushiradi, shuning uchun model inferensi soʻrov hodisalari siklini hech qachon bloklamaydi- ustma-ust qoʻllanishi mumkin (
stackPriority35): ustma-ust konveyerda u tuzilmaviy dvigatellardan (CCR, session-dedup, headroom, Caveman) keyin, ammoultradan oldin ishlaydi, chunki semantik kesish avvaldan tuzilmaviy tarzda siqilgan matnda eng samarali — masalan,rtk -> caveman -> llmlingua - har qanday xatoda ishni toʻxtatmaydi (yetishmayotgan ixtiyoriy bogʻliqliklar, ishchi oqimni yaratish, modelni yuklash, inferens yoki vaqt tugashi) → xato oʻrniga asl matn oʻzgartirilmasdan qaytariladi
Dvigatel joylashuvi: open-sse/services/compression/engines/llmlingua/. Boshqaruv panelidagi joylashuvi:
Dashboard -> Context & Cache -> LLMLingua.
Modellar
Standart model — TinyBERT (atjsh/llmlingua-2-js-tinybert-meetingbank, ~57 MB,
tezkor). Aniqligi yuqoriroq BERT-base modeli (Arcoldd/llmlingua4j-bert-base-onnx,
~710 MB) dvigatel konfiguratsiyasidagi model maydoni orqali mavjud. Birinchi chaqiruvda (modelStore.ts)
@huggingface/transformers tanlangan modelni HuggingFace Hubʼdan
${DATA_DIR}/models/llmlingua ichiga kechiktirib yuklab oladi; modelPath konfiguratsiya
almashtirishi esa uni mahalliy nusxaga yoʻnaltiradi (oflayn / tarmoqdan ajratilgan oʻrnatishlar).
Ixtiyoriy bogʻliqliklar va talab boʻyicha oʻrnatish
Kesilishi mumkin boʻlgan LLMLingua ish vaqti peer steki ixtiyoriy. Ikki paket
package.json ichida optionalDependencies sifatida eʼlon qilingan va ishlab chiqarish buildida
tashqi holatda saqlanadi (scripts/build/prepublish.ts ularni paketga qoʻshmaydi):
| Paket | Versiya (qatʼiy) | Izohlar |
|---|---|---|
@atjsh/llmlingua-2 |
2.0.5 |
Kirish paketi; boshqalarini peer sifatida eʼlon qiladi |
js-tiktoken |
^1.0.20 |
Tokenizator |
@huggingface/transformers ^4.2.0 versiyasiga mahkamlangan (mahalliy embedding yoʻli bilan umumiy ishlatiladi va
mustaqil paketga ham kiritiladi); @atjsh/llmlingua-2@2.0.5 u bilan
"^3.5.2 || ^4.0.0" orqali peer bogʻliqlikka ega, shu sababli Transformers.js v3 va v4ʼning ikkalasi ham qoʻllab-quvvatlanadi. 2.0.4 versiyasidan boshlab,
@atjsh/llmlingua-2 endi @tensorflow/tfjsni talab qilmaydi, bu SLM stekidagi eng katta
alohida komponentni (TensorFlow.js) olib tashladi. Faqat yuqoridagi ikki paket kesilishi mumkin boʻlgan SLM
peer paketlaridir. Oddiy npm install (dev), agar ixtiyoriy bogʻliqliklar chiqarib tashlanmasa, ixtiyoriy
stekni avtomatik ravishda oʻrnatadi.
Nima uchun talab boʻyicha: npm orqali chop etilgan paket, mustaqil paket va Docker tasviri
ixcham qolishi uchun bu bogʻliqliklarsiz tarqatiladi. Ular mavjud boʻlmaganda, ishchi oqimning bogʻliqlik
tekshiruvi (worker.ts ichidagi @atjsh/llmlingua-2 resolve tekshiruvi) muvaffaqiyatsiz tugaydi va dvigatel
xatoni bildirmasdan ishni davom ettiradi — LLMLinguaʼni tanlash hech qanday amal bajarmaydi (matn oʻzgartirilmasdan qaytariladi,
xato jurnalga yozilmaydi). Uni qisqartirilgan muhitda faollashtirish uchun ixtiyoriy stekni oʻrnating:
# package.json optionalDependencies ichida eʼlon qilingan versiyalarga mahkamlang
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
@tensorflow/tfjsning olib tashlanishi (2.0.4+) avval ustun boʻlgan ~800 MB hajmdagi
komponentni yoʻq qiladi — qolgan hajm transformers.js + onnxruntime-node ish vaqtlaridan,
shuningdek, birinchi foydalanishda yuklab olinadigan (npm orqali emas) TinyBERT modelidan (~57 MB) iborat.
Har bir muhit uchun:
- Dev /
npm install— agar--omit=optional(yoki--no-optional) parametrini bermagan boʻlsangiz, avtomatik ravishda oʻrnatiladi. Hech qanday amal talab qilinmaydi. - Global npm (
npm i -g omniroute) / mustaqil — yuqoridagi oʻrnatish buyrugʻini oʻrnatilgan paket katalogida ishga tushiring yoki ixtiyoriy bogʻliqliklarni chiqarib tashlamasdan qayta oʻrnating. - Docker — oʻrnatish buyrugʻini hosilaviy tasvir qatlamiga qoʻshing; eʼlon qilingan tasvir ataylab ixcham qilib yetkaziladi.
- VPS (PM2) — ilovaning
node_moduleskatalogiga oʻrnating, soʻng worker gateʼni qayta tekshirishi uchun jarayonni qayta ishga tushiring. - Raw Next mustaqil (
npm run build→.build/next/standalone/server.js) — mustaqil trace na workerʼni, na ixtiyoriy bogʻliqliklarni oʻz ichiga oladi, shu sababli engine indamasdan fail-open rejimiga oʻtadi.scripts/build/colocate-standalone.mjsikkalasini ham qayta qoʻllaydi (worker esbuild + ixtiyoriy bogʻliqliklar closureʼini mustaqil daraxtga joylaydi); u har bir buildʼdan keyinpostbuildnpm hookʼi orqali avtomatik ishga tushadi. Idempotent, bogʻliqliklar mavjud boʻlmaganda fail-soft ishlaydi.
Faolligini tekshirish: LLMLingua tanlanganda, haqiqiy nasriy matn amalda qisqaradi (engine
fail-open rejimiga oʻtishni toʻxtatadi) va birinchi soʻrov modelni
${DATA_DIR}/models/llmlingua katalogiga yuklab olishni boshlaydi. Gate ataylab faqat @atjsh/llmlingua-2 paketini tekshiradi —
boshqa peerʼlar faqat ESMʼga moʻljallangan va ular mavjud boʻlsa ham require.resolve xatolik chiqaradi — shu sababli
import() vaqtida biror peer haqiqatan mavjud boʻlmasa, worker baribir fail-open rejimiga oʻtadi.
Ketma-ket ulangan konveyerlar
Ketma-ket ulangan rejim konveyer bosqichlarini tartib bilan bajaradi. Standart tartib:
rtk -> caveman
Bundan buyruq chiqishini inson yoki yordamchi matni bilan birlashtiradigan soʻrovli kodlash agenti seanslari uchun foydalaning. RTK avval shovqinli vosita jurnallarini kamaytiradi, soʻng Caveman qolgan tabiiy tilni siqadi.
Konveyer bosqichlari siqish sozlamalaridagi stackedPipeline orqali yoki siqish kombinatsiyalari orqali sozlanadi.
Har ikkala mexanizm bir xil mos yuklamani kamaytirganda, tejamkorlik birikadi:
combined = 1 - (1 - RTK tejamkorligi) * (1 - Caveman kirish tejamkorligi)
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 maxsus imkoniyatlar daraxti filtri
MCP maxsus imkoniyatlar daraxtining aqlli filtri — bajarilishdan keyingi siqish qatlami boʻlib, soʻrovlar yoki kontekstda emas, MCP vosita natijalari ustida ishlaydi. U Playwright, computer-use va brauzerni avtomatlashtirish MCP serverlari kabi vositalar qaytaradigan batafsil maxsus imkoniyatlar daraxti hamda brauzer surati yuklamalariga moʻljallangan.
U nima qiladi
- Shovqinni olib tashlash — boʻsh umumiy/matn yozuvlarini (
- generic:,- text: "") olib tashlaydi - Qoʻshni elementlarni yigʻish — ketma-ket ≥
collapseThreshold(standart qiymati 30) qator tuzilmaviy takrorlardan iborat boʻlsa, ularni dastlabkicollapseKeepHead(standart qiymati 10) qator + son boʻyicha xulosa + oxirgicollapseKeepTail(standart qiymati 5) qator koʻrinishida yigʻadi - Havolalarni saqlash — Playwright/computer-use uchun zarur boʻlgan
[ref=eXX]tayanchlariga hech qachon tegilmaydi - Qatʼiy qisqartirish — agar yigʻishdan keyin matn hali ham
maxTextChars(standart qiymati 50,000) chegarasidan oshsa, agent ishni davom ettira olishi uchun navigatsiya koʻrsatmasi bilan qisqartiriladi
Mexanizm joylashuvi
open-sse/services/compression/engines/mcpAccessibility/
index.ts ← smartFilterText() kirish nuqtasi
collapseRepeated.ts ← qoʻshni elementlarni yigʻish algoritmi
constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG
Sozlash
Global sozlamalardagi compression.mcpAccessibility orqali boshqariladi (migratsiya 056). Standart konfiguratsiya:
{
"enabled": true,
"maxTextChars": 50000,
"collapseThreshold": 30,
"collapseKeepHead": 10,
"collapseKeepTail": 5,
"minLengthToProcess": 2000
}
Filtr faqat type qiymati "text" boʻlgan va uzunligi minLengthToProcess qiymatidan oshadigan vosita natijasi yuklamalariga qoʻllanadi. U soʻrovlarni siqish yoki soʻrov yuklamalariga taʼsir qilmaydi.
Kutiladigan tejamkorlik
Sahifa murakkabligiga qarab, brauzer surati vosita natijalarida 60–80%. Yigʻish algoritmi qatorlar soniga nisbatan O(n) murakkablikda ishlaydi va ahamiyatsiz darajada kechikish qoʻshadi.
Ushbu filtr va yuqoridagi siqish mexanizmlari
| Jihat | Caveman / RTK / Stacked | MCP maxsus imkoniyatlar filtri |
|---|---|---|
| Nishon | Soʻrovlar / kontekst | MCP vosita natijalari |
| Faollashuv | Siqish rejimi sozlamasi | compression.mcpAccessibility.enabled |
| Qamrov | Barcha SSE xabarlari | Faqat vosita natijalari |
| Ref tayanchlari | Qoʻllanilmaydi | Shartsiz saqlanadi |
Siqish kombinatsiyalari
Siqish kombinatsiyalari — marshrutlash kombinatsiyalariga tayinlanishi mumkin bo‘lgan nomlangan siqish profillari:
compression_combos: rejim, konveyer, RTK konfiguratsiyasi, til konfiguratsiyasi va standart belgisini saqlaydicompression_combo_assignments: siqish kombinatsiyasini marshrutlash kombinatsiyasiga bog‘laydi- bajarilish vaqtidagi integratsiya umumiy kombinatsiya almashtirishlaridan oldin tayinlangan siqish kombinatsiyasini aniqlaydi
- tahlillar
compression_combo_idvaengineni o‘z ichiga oladi
Boshqaruv panelidagi joylashuvi: Dashboard -> Context & Cache -> Compression Combos.
API interfeysi
| Marshrut | Maqsad |
|---|---|
/api/settings/compression |
Global siqish sozlamalari (mcpAccessibility konfiguratsiyasini o‘z ichiga oladi) |
/api/compression/preview |
Istalgan siqish rejimini oldindan ko‘rish |
/api/compression/language-packs |
Mavjud Caveman til paketlarini ro‘yxatlash |
/api/context/caveman/config |
Caveman sozlamalari uchun muqobil nom |
/api/context/rtk/config |
RTK standart qiymatlari va sozlamalari |
/api/context/rtk/filters |
RTK filtrlari katalogi |
/api/context/rtk/test |
RTK oldindan ko‘rish/sinov endpointi |
/api/context/rtk/raw-output/[id] |
Autentifikatsiyalangan, maxfiy qismlari olib tashlangan xom natijani tiklash |
/api/context/combos |
Siqish kombinatsiyalari uchun CRUD |
/api/context/combos/[id]/assignments |
Marshrutlash kombinatsiyasi tayinlovlari uchun CRUD |
/api/context/analytics |
Siqish tahlillari uchun muqobil nom |
Boshqaruv marshrutlari boshqaruv autentifikatsiyasi yoki API kaliti siyosati tekshiruvlarini talab qiladi.
MCP vositalari
Siqish beshta MCP vositasini taqdim etadi:
| Vosita | Qamrov | Maqsad |
|---|---|---|
omniroute_compression_status |
read:compression |
Sozlamalar, tahlillar, kesh statistikasi |
omniroute_compression_configure |
write:compression |
Global sozlamalarni yangilash |
omniroute_set_compression_engine |
write:compression |
Rejim va ixtiyoriy konveyerni belgilash |
omniroute_list_compression_combos |
read:compression |
Siqish kombinatsiyalarini ro‘yxatlash |
omniroute_compression_combo_stats |
read:compression |
Kombinatsiya/dvigatel tahlillarini o‘qish |
Qamrov va istisnolar
Embeddinglar hech qachon siqilmaydi. open-sse/handlers/embeddings.ts hech qachon hech qanday
siqish dvigatelini chaqirmaydi — so‘rov/javob tanalari o‘zgartirilmagan holda to‘g‘ridan-to‘g‘ri ijrochiga uzatiladi.
Hozirda bu tuzilmaviy xususiyatdir (embeddinglar va chat yakunlashlari alohida ishlov beruvchilarga ega), bajarilish
vaqtidagi tekshiruv emas, ammo bu #8034 dagi vektor buzilishi bilan bog‘liq xavotirning embeddinglar yo‘lida
ta’sir yuzasi yo‘qligini anglatadi.
Har bir model/endpoint uchun istisno filtri (#8034). Chat yakunlashlari uchun operator
hech qachon siqilmasligi kerak bo‘lgan model idlari / provider/model maqsadlarini ko‘rsatishi mumkin — bu
keyinchalik siqish embeddinglarga yaqin yo‘lga ulansa foydali bo‘ladigan himoya chorasi bo‘lib, aniq baytma-bayt
prompti muhim bo‘lgan har qanday model uchun ham foydalidir (deterministik baholashlar, keshga sezgir
prefikslar va hokazo).
- Sozlamalar maydoni: global siqish konfiguratsiyasidagi
exclusions?: string[](GET/PUT /api/settings/compression), mavjudkey_valuesiqish nomlar fazosi orqali saqlanadi (src/lib/db/compression.ts) — yangi jadval yo‘q. - Boshqaruv paneli varag‘i: Dashboard → Compression → Exclusions
(
/dashboard/compression/exclusions). - Andoza sintaksisi:
*yagona joker belgidir. Andozadagi boshqa barcha regex meta-belgilari moslashtirishdan oldin ekranlanadi, shuning uchungpt-5.6faqat aynan shu literal satrga mos keladi,gpt-5x6ga esa hech qachon mos kelmaydi (ReDoS xavfsiz, chegaralangan, ichma-ich kvantifikatorlarsiz). Andozalar registrni hisobga olmagan holda ham model idining o‘ziga, hamprovider/modelkompozitiga moslashtiriladi —gpt-5-6,openai/gpt-5-6vaopenai/*ning barchasi ishlaydi,*ning o‘zi esa barcha modellarni istisno qiladi. - Moslashtirish:
open-sse/services/compression/exclusions.tsichidagiisCompressionExcluded()/normalizeCompressionExclusions().chatCore.tssiqish sozlamalarini aniqlagandan so‘ng, biror dvigatel ishga tushishidan oldin, istisno qilingan maqsadni tekshiradi va moslikni xuddi siqish global miqyosda o‘chirilgandek qayta ishlaydi — so‘rov tanasi isbotlanadigan darajada baytma-bayt aynan bir xil qoladi. O‘tkazib yuborish tahlillarda ko‘rinishi uchunwriteCompressionSkip(..., "excluded")orqali qayd etiladi. - Standart holat (bo‘sh/mavjud bo‘lmagan ro‘yxat): #8034 dan oldingi xatti-harakat bilan bir xil — hech narsa istisno qilinmaydi.
Maʼlum cheklovlar
- LLMLingua-2 (SLM) bir joyga joylashtirilgan ixtiyoriy bogʻliqliklarni talab qiladi. Worker production buildda faqat
@atjsh/llmlingua-2va uning peer bogʻliqliklaridist/node_modulesichiga bir joyga joylashtirilganida ishlaydi (scripts/build/colocateOptionals.mjs, #4286 ga qarang). Ularsiz engine xatoni chetlab oʻtadi (asl matnni qaytaradi). Worker rezolyutsiyasi endiimport.meta.urlga bogʻliq emas (u mustaqil toʻplamda ishlamay qoladi) — u runtimecwd/argv[1]ga tayanadi. - Caveman til paketlari
de/fr/jaqisman toʻliq. Ularcontext+filler+structuralqoidalari bilan taqdim etiladi, ammodedup/ultrapaketlari mavjud emas, shu sababli bu tillar uchunultraintensivligifulldan kuchliroq emas (ular faqat oʻz qoidalaridan foydalanadi — xorijiy matnni buzishi mumkin boʻlgan inglizchadedup/ultraqoidalariga yashirin qaytish mavjud emas).en/es/id/pt-BRtoʻliq. Qisman toʻliq paketlar uchundedup.json+ultra.jsonhissalari mamnuniyat bilan qabul qilinadi. - Ketma-ket telemetriya faqat siqishni amalga oshirgan enginelarni koʻrsatadi. Engine ishga tushgan, ammo 0 % tejashni taʼminlagan ketma-ket pipeline bosqichi
stats:nullqaytaradi va shu sababliengineBreakdownichida koʻrinmaydi — uni oʻtkazib yuborilgan bosqichdan ajratib boʻlmaydi. “Ishga tushdi, 0 %” holatini “oʻtkazib yuborildi” holatidan ajratish breakdown modelini oʻzgartirishni talab qiladi va keyinga qoldirilgan.
Tekshirish
Ushbu soha uchun yoʻnaltirilgan tekshiruvlar:
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