# Compression Engines (Gaeilge) 🌐 **Languages:** 🇺🇸 [English](../../../../compression/COMPRESSION_ENGINES.md) · 🇪🇹 [am](../../../am/docs/compression/COMPRESSION_ENGINES.md) · 🇸🇦 [ar](../../../ar/docs/compression/COMPRESSION_ENGINES.md) · 🇦🇿 [az](../../../az/docs/compression/COMPRESSION_ENGINES.md) · 🇧🇬 [bg](../../../bg/docs/compression/COMPRESSION_ENGINES.md) · 🇧🇩 [bn](../../../bn/docs/compression/COMPRESSION_ENGINES.md) · 🇧🇦 [bs](../../../bs/docs/compression/COMPRESSION_ENGINES.md) · 🇨🇿 [cs](../../../cs/docs/compression/COMPRESSION_ENGINES.md) · 🇩🇰 [da](../../../da/docs/compression/COMPRESSION_ENGINES.md) · 🇩🇪 [de](../../../de/docs/compression/COMPRESSION_ENGINES.md) · 🇬🇷 [el](../../../el/docs/compression/COMPRESSION_ENGINES.md) · 🇪🇸 [es](../../../es/docs/compression/COMPRESSION_ENGINES.md) · 🇪🇪 [et](../../../et/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇷 [fa](../../../fa/docs/compression/COMPRESSION_ENGINES.md) · 🇫🇮 [fi](../../../fi/docs/compression/COMPRESSION_ENGINES.md) · 🇫🇷 [fr](../../../fr/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [gu](../../../gu/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇬 [ha](../../../ha/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇱 [he](../../../he/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [hi](../../../hi/docs/compression/COMPRESSION_ENGINES.md) · 🇭🇷 [hr](../../../hr/docs/compression/COMPRESSION_ENGINES.md) · 🇭🇺 [hu](../../../hu/docs/compression/COMPRESSION_ENGINES.md) · 🇦🇲 [hy](../../../hy/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇩 [id](../../../id/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇬 [ig](../../../ig/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇹 [it](../../../it/docs/compression/COMPRESSION_ENGINES.md) · 🇯🇵 [ja](../../../ja/docs/compression/COMPRESSION_ENGINES.md) · 🇬🇪 [ka](../../../ka/docs/compression/COMPRESSION_ENGINES.md) · 🇰🇭 [km](../../../km/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [kn](../../../kn/docs/compression/COMPRESSION_ENGINES.md) · 🇰🇷 [ko](../../../ko/docs/compression/COMPRESSION_ENGINES.md) · 🇱🇹 [lt](../../../lt/docs/compression/COMPRESSION_ENGINES.md) · 🇱🇻 [lv](../../../lv/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [ml](../../../ml/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [mr](../../../mr/docs/compression/COMPRESSION_ENGINES.md) · 🇲🇾 [ms](../../../ms/docs/compression/COMPRESSION_ENGINES.md) · 🇲🇹 [mt](../../../mt/docs/compression/COMPRESSION_ENGINES.md) · 🇲🇲 [my](../../../my/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇵 [ne](../../../ne/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇱 [nl](../../../nl/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇴 [no](../../../no/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [or](../../../or/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [pa](../../../pa/docs/compression/COMPRESSION_ENGINES.md) · 🇵🇭 [phi](../../../phi/docs/compression/COMPRESSION_ENGINES.md) · 🇵🇱 [pl](../../../pl/docs/compression/COMPRESSION_ENGINES.md) · 🇵🇹 [pt](../../../pt/docs/compression/COMPRESSION_ENGINES.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_ENGINES.md) · 🇷🇴 [ro](../../../ro/docs/compression/COMPRESSION_ENGINES.md) · 🇷🇺 [ru](../../../ru/docs/compression/COMPRESSION_ENGINES.md) · 🇱🇰 [si](../../../si/docs/compression/COMPRESSION_ENGINES.md) · 🇸🇰 [sk](../../../sk/docs/compression/COMPRESSION_ENGINES.md) · 🇸🇮 [sl](../../../sl/docs/compression/COMPRESSION_ENGINES.md) · 🇷🇸 [sr](../../../sr/docs/compression/COMPRESSION_ENGINES.md) · 🇸🇪 [sv](../../../sv/docs/compression/COMPRESSION_ENGINES.md) · 🇰🇪 [sw](../../../sw/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [ta](../../../ta/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [te](../../../te/docs/compression/COMPRESSION_ENGINES.md) · 🇹🇭 [th](../../../th/docs/compression/COMPRESSION_ENGINES.md) · 🇹🇷 [tr](../../../tr/docs/compression/COMPRESSION_ENGINES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_ENGINES.md) · 🇵🇰 [ur](../../../ur/docs/compression/COMPRESSION_ENGINES.md) · 🇺🇿 [uz](../../../uz/docs/compression/COMPRESSION_ENGINES.md) · 🇻🇳 [vi](../../../vi/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇬 [yo](../../../yo/docs/compression/COMPRESSION_ENGINES.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/compression/COMPRESSION_ENGINES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_ENGINES.md) --- Tá comhbhrú OmniRoute bunaithe ar chonarthaí innill. Is féidir le mód inneall amháin a rith go díreach (`caveman` nó `rtk`) nó píblíne chruachta chinntitheach a ritheann innill iolracha in ord. ## Módanna | Mód | Conair an innill | Ionchur beartaithe | | ------------ | -------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | `off` | ar bith | Caomhnú beacht an phrasa | | `lite` | Cúntóirí éadroma Caveman | Glanadh i gcónaí le riosca íseal | | `standard` | Caveman | Comhdhlúthú pras teanga nádúrtha | | `aggressive` | Caveman + achoimritheoirí staire/uirlisí | Seisiúin chomhrá fada | | `ultra` | Caveman + cúntóirí bearrtha | Aisghabháil teorainn comhthéacs | | `rtk` | RTK | Aschur teirminéil, sliogáin, tógála, tástála, agus git | | `omniglyph` | OmniGlyph | Comhthéacs mar íomhá ar shreang an tsoláthraí dúchais | | `stacked` | Píblíne. Is é `session-dedup -> lite` an réamhshocrú iarratais. Is rogha é `rtk -> caveman`. | Logaí uirlisí measctha agus prós, an coigilt is mó | ### Próifílí comhbhrú OmniGlyph Glacann an t-inneall `omniglyph` (pacáiste `omniglyph`, 1.4.0+) le próifíl sheiminteach ainmnithe, atá socraithe go domhanda trí `omniglyph.profile` sna socruithe comhbhrú nó in aghaidh an chéim tríd an cumraíocht chéim den phíblíne chruachta: | Próifíl | Teorainn | | ------------- | -------------------------------------------------------------------------------------------------------------------- | | `aggressive` | Réamhshocrú. An polasaí a tomhaiseadh na hadmhálacha foilsithe — córas íomhánna, doiciméid uirlisí agus stair dhlúth | | `balanced` | Coinníonn sé staid bheo dúchasach, cosnaíonn sé na 8 seal deireanacha, titeann sé stair níos sine dúnta | | `coding-safe` | Coinníonn sé údarás, scéimeanna uirlisí agus aschur uirlisí beo dúchasach, cosnaíonn sé na 12 seal deireanacha | | `passthrough` | Bealaí gan claochlú; scipeáiltear an t-inneall | Is **uasteorainn, ní urlár**, an phróifíl: diúltaíonn `mergeCompressionProfileOptions` sa phacáiste ligean do ghlaoiteoir lána caillteanach a dhún an phróifíl a athoscailt, mar sin ní féidir le `preserveSystemPrompt: false` in aghaidh an chéim comhbhrú córais a athchumasú faoi `coding-safe`. Tomhaiste ar an gcódchóras seo: ardaíonn `coding-safe` agus `balanced` `minCompressChars` go dtí a uasmhéid agus coinníonn siad córas, scéimeanna uirlisí agus torthaí uirlisí dúchasach, mar sin seisiún nach bhfuil stair carntha aige fós stopann sé ag `below_min_chars` agus ní chlaochlaíonn an t-inneall aon rud. Sin an fáth go bhfuil an réamhshocrú `aggressive` seachas an phróifíl is sábháilte. Réitíonn an pacáiste a scóip mhúnla féin agus a phróifíl óna chumraíocht timpeallachta. Ní tharmligeann OmniRoute an cinneadh riamh: cuireann an t-oiriúnóir an geata múnla chuig an scóip is sriantaí den phacáiste, mar sin ní féidir le socruithe timpeallachta óstach ach an liosta ceadaithe a chúngú, ní féidir leo é a leathnú riamh thar admhálacha tomhaiste OmniRoute. ## Clárlann na nInneall Tá an chlárlann suite in `open-sse/services/compression/engines/registry.ts`. Cuireann na hinnill conradh comhroinnte ar fáil: - `id`: aitheantas cobhsaí innill amhail `caveman` nó `rtk` - `apply(text, config)`: sean-chonair rite a úsáideann píblínte cruachta - `compress(input, config)`: príomhchonair rite a thugann téacs + staitisticí ar ais - `getConfigSchema()`: tugann sí ar ais cruth cosúil le JSON-Schema don chumraíocht bhailí - `validateConfig(config)`: tugann sí `{ valid, errors[] }` ar ais Úsáidtear `registerCompressionEngine(engine)` don chlárú (nó `registerEngine` i gcásanna casta), a ghlaonn `assertValidEngine()` agus `validateConfig(defaultConfig)` sula nglactar leis. Úsáid `unregisterCompressionEngine(id)` chun inneall a bhaint ag am rite. Cláraíonn `strategySelector.ts` na hinnill ionsuite sula ritear an comhbhrú. Fágann sé seo gur féidir leis an réamhamharc, leis an gcomhbhrú ag am rite, leis an mód cruachta, le tástálacha, agus le hinnill amach anseo an chonair rite chéanna a úsáid. ### Comhbhrú tuairiscí MCP (gaolmhar) Déanann clárlann ar leith meiteashonraí tuairiscí uirlisí MCP a chomhbhrú ar leibhéal na clárlainne — féach `open-sse/mcp-server/descriptionCompressor.ts` agus [MCP-SERVER.md](../frameworks/MCP-SERVER.md). Athúsáideann sí rialacha Caveman ach oibríonn sí ar mheiteashonraí uirlisí, seachas ar phálaí iarratais. ### Innill ionsuite bhreise Taobh amuigh de Caveman, RTK, agus LLMLingua-2, soláthraíonn an chlárlann roinnt inneall speisialaithe gan chaillteanas / struchtúrtha (a úsáideann píblínte cruachta, an clós súgartha, agus tástálacha): | Inneall | Aitheantas | A ndéanann sé | | ------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | CCR | `ccr` | Content-Compress-Retrieve (H4): cuireann sé tagairtí atá seolta de réir ábhair in ionad bloic mhóra téacs chomhthadhaill, ionas go seoltar bloic athfhillteacha/móra uair amháin agus go ndéantar tagairt dóibh ina dhiaidh sin. | | headroom | `headroom` | SmartCrusher (H3 + N5): dlúthú táblach gan chaillteanas ar phálaí d'eagair aonchineálacha JSON go foirm cholúnach `[N rows]`. | | ionizer | `ionizer` | Sampláil rónna ag an tús/an lár/an deireadh le haghaidh bloic aonchineálacha an-mhór, agus an chuid láir a fágadh ar lár á stóráil mar thagairt CCR atá seolta de réir ábhair. | | session-dedup | `session-dedup` | Dí-dhúbláil thras-seala bunaithe ar ábhar (arna spreagadh ag TokenMizer): fágann sé ar lár téacs a chonacthas cheana i sealanna níos luaithe den seisiún céanna. | **Treoir phrótacail aisghabhála CCR (#8033):** an chéad uair a chuireann CCR ≥1 bhloc in ionad i iarratas, cuireann an t-inneall teachtaireacht aonair, idéimpitéinseach `system` leis ag an tús (a thosaíonn leis an sentinel `[CCR protocol]`) chun conradh marcóra → uirlise a mhúineadh don ghlaoiteoir: cad is brí le marcóir `[CCR retrieve hash=<24hex> chars=N]`, go gcaithfear an hais a chóipeáil focal ar fhocal (na 24 charachtar heicsidheachúlacha ar fad — is dócha gurb iad haiseanna a cóipeáladh go mícheart is cúis le teipeanna "níor aimsíodh an bloc"), agus go gciallaíonn marcóir `[dedup:ref sha=...]` "féach siar sa stair", seachas "glaoigh ar an uirlis". Ní instealltar an nóta **ach amháin nuair a chruthaíonn `tools[]` fógartha an ghlaoiteora gur féidir leis `omniroute_ccr_retrieve` a bhaint amach i ndáiríre** (`callerSupportsCcrRetrieve()` in `open-sse/services/compression/engines/ccr/protocolInstruction.ts`) — ní fhaigheann glaoiteoir simplí atá comhoiriúnach le OpenAI treoir riamh chun glaoch ar rud nach féidir leis a bhaint amach mura bhfuil an uirlis sin aige. Cuirtear idéimpitéinseacht i bhfeidhm trí stair na dteachtaireachtaí a scanadh don sentinel sula ndéantar instealladh, ionas nach ndéanann iarratais ilseala (a athsheinneann teachtaireachtaí roimhe seo) an nóta a chruachadh uair amháin in aghaidh an tseala. ## Caveman Díríonn mód Caveman ar chomhdhlúthú séimeantach gnáthphróis: - caomhnaíonn sé bloic chóid, URLanna, JSON, conairí agus sonraí struchtúrtha - baineann sé ábhar líonta, maolú cainte, comhthéacs athráite agus nathanna ceangail fadálacha - tacaíonn sé le pacáistí rialacha comhaid atá feasach ar theanga in `open-sse/services/compression/rules/` - tá sé fós ar fáil trí na seanmhóid `standard`, `aggressive` agus `ultra` Is é `Dashboard -> Context & Cache -> Caveman` an comhéadan ar an deais. Tuairiscíonn Caveman réamhtheachtach `~75%` níos lú comharthaí aschuir, meánchoigilteas aschuir de `65%` i dtagarmharcanna le raon `22-87%`, agus uirlis comhbhrú ionchuir de `~46%`. Úsáideann OmniRoute uimhir thaobh ionchuir Caveman agus coigilteas cruachta leid/comhthéacs á dhoiciméadú aige; fanann mód aschuir Caveman ina ghné ar leith d’iompar freagartha. ## RTK Díríonn mód RTK ar aschur orduithe agus uirlisí: - braitheann sé aicmí aschuir amhail `git status`, `git branch`, `git diff`, Vitest/Jest/Pytest, tástálacha Cargo/Go, tiomsúcháin TypeScript/Vite/Webpack, ESLint, iniúchtaí/suiteálacha npm, logaí Docker, `find`/`grep` sliogáin, rianta cruach agus logaí cineálacha - cuireann sé 49 scagaire JSON ó `open-sse/services/compression/engines/rtk/filters/` i bhfeidhm - tacaíonn sé leis an bpíblíne dhearbhaithe ar nós RTK: baint ANSI, ionadú, gearrchiorcadú match-output, baint/coimeád línte, teascadh de réir líne, teascadh ceann/eireaball/uasmhéid líne, agus cúltaca nuair atá sé folamh - tacaíonn sé le scagairí tionscadail atá rialaithe ag iontaoibh in `.rtk/filters.json` agus scagairí domhanda in `DATA_DIR/rtk/filters.json` - baineann sé seichimh ANSI, torann dul chun cinn, línte athráite agus téacs caighdeánach neamhchabhrach - caomhnaíonn sé teipeanna inghníomhaithe, rabhaidh, achoimrí, comhaid athraithe agus comhthéacs deiridh - is féidir leis, go roghnach, aschur amh folaithe a choinneáil le haghaidh aisghabhála/dífhabhtaithe trí bhealaí bainistíochta fíordheimhnithe Is é `Dashboard -> Context & Cache -> RTK` an comhéadan ar an deais. Tá sonraí oibríochtúla maidir le scagairí saincheaptha, iontaoibh, fíorú agus aisghabháil aschuir amh le fáil in [`RTK_COMPRESSION.md`](./RTK_COMPRESSION.md). Tuairiscíonn RTK réamhtheachtach coigilteas `60-90%` i gcomhbhrú aschuir orduithe. Léiríonn sampla a README seisiún 30 nóiméad de Claude Code ag dul ó `~118,000` comhartha go `~23,900`, nó coigilteas `79.7%`. ## LLMLingua-2 (Bearradh Séimeantach) Déanann mód LLMLingua-2 **bearradh séimeantach comharthaí** ar phrós trí aicmitheoir beag comharthaí ONNX a úsáid, mar chomhlánú ar innill riailbhunaithe Caveman agus RTK: - comhbhrúnn sé prós i dteachtaireachtaí neamhchórais amháin; ní athraítear bloic chóid fhálaithe ná déantáin chaomhnaithe eile riamh - ritheann sé inneall `@atjsh/llmlingua-2` (ONNX trí `@huggingface/transformers`) i snáithe oibrí, ionas nach gcuireann tátal na samhla bac riamh ar lúb teagmhas na hiarrata - tá sé **inchruachta** (`stackPriority` 35): i bpíblíne chruachta ritheann sé i ndiaidh na n-inneall struchtúrach (CCR, session-dedup, headroom, Caveman) ach roimh `ultra`, mar is éifeachtaí bearradh séimeantach ar théacs atá comhbhrúite go struchtúrach cheana — e.g. `rtk -> caveman -> llmlingua` - **teipeann sé go hoscailte i gcás aon earráide** (spleáchais roghnacha ar iarraidh, sceitheadh oibrí, lódáil samhla, tátal, nó teorainn ama) → seoltar an buntéacs ar ais gan athrú, agus ní sheoltar earráid riamh Suíomh an innill: `open-sse/services/compression/engines/llmlingua/`. Is é an comhéadan ar an deais `Dashboard -> Context & Cache -> LLMLingua`. ### Samhlacha Is é **TinyBERT** (`atjsh/llmlingua-2-js-tinybert-meetingbank`, ~57 MB, tapa) an tsamhail réamhshocraithe. Tá samhail **BERT-base** níos cruinne (`Arcoldd/llmlingua4j-bert-base-onnx`, ~710 MB) ar fáil trí réimse `model` chumraíocht an innill. Íoslódálann `@huggingface/transformers` an tsamhail roghnaithe go mall ón HuggingFace Hub isteach i `${DATA_DIR}/models/llmlingua` ar an gcéad ghlao (`modelStore.ts`); díríonn sárú cumraíochta `modelPath` ar chóip áitiúil ina ionad sin (suiteálacha as líne / aerbhearnaithe). ### Spleáchais roghnacha & suiteáil ar éileamh Tá cruach spleáchais phiara ama rite LLMLingua inbhearrtha **roghnach**. Dearbhaítear dhá phacáiste mar `optionalDependencies` in `package.json` agus coinnítear **seachtrach** iad sa tiomsúchán táirgeachta (ní chuireann `scripts/build/prepublish.ts` i mbeart iad): | Pacáiste | Leagan (seasta) | Nótaí | | -------------------- | --------------- | ---------------------------------------------------------- | | `@atjsh/llmlingua-2` | `2.0.5` | Pacáiste iontrála; dearbhaíonn sé na cinn eile mar phiaraí | | `js-tiktoken` | `^1.0.20` | Comharthóir | Tá `@huggingface/transformers` socraithe ag `^4.2.0` (roinnte le conair na leabuithe áitiúla agus rianaithe isteach sa bheart neamhspleách freisin); tá `@atjsh/llmlingua-2@2.0.5` ag brath air mar phiara le `"^3.5.2 || ^4.0.0"`, mar sin tacaítear le Transformers.js v3 agus v4 araon. Ó 2.0.4 i leith, ní éilíonn `@atjsh/llmlingua-2` `@tensorflow/tfjs` a thuilleadh, rud a bhain an ranníocóir aonair ba mhó (TensorFlow.js) den chruach SLM. Níl ach an dá phacáiste thuas ina bpiaraí SLM inbhearrtha. Suiteálann `npm install` caighdeánach (forbairt) an chruach roghnach go huathoibríoch mura bhfágtar spleáchais roghnacha ar lár. **Cén fáth ar éileamh:** seoltar an pacáiste atá foilsithe ar npm, an beart neamhspleách agus an íomhá Docker **gan** na spleáchais seo chun iad a choinneáil beag. Nuair nach mbíonn siad ann, teipeann ar gheata spleáchais an oibrí (tóraíocht réitigh `@atjsh/llmlingua-2` in `worker.ts`) agus **teipeann an t-inneall go hoscailte gan torann** — ní dhéanann roghnú LLMLingua tada (seoltar an téacs ar ais gan athrú, ní logáiltear aon earráid). Chun é a ghníomhachtú i dtimpeallacht bhearrtha, suiteáil an chruach roghnach: ```bash # socraigh de réir na leaganacha atá dearbhaithe in package.json optionalDependencies npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken ``` Cuireann baint `@tensorflow/tfjs` (2.0.4+) deireadh leis an ranníocóir ~800 MB ba mhó roimhe seo — is é atá fágtha den lorg ná amanna rite transformers.js + onnxruntime-node, mar aon leis an tsamhail TinyBERT (~57 MB) a íoslódáiltear ar an gcéad úsáid (ní trí npm). De réir timpeallachta: - **Forbairt / `npm install`** — suiteáiltear go huathoibríoch é mura ndearna tú `--omit=optional` (nó `--no-optional`) a shonrú. Ní gá aon ghníomh a dhéanamh. - **npm domhanda (`npm i -g omniroute`) / neamhspleách** — rith an t-ordú suiteála thuas laistigh d'eolaire an phacáiste suiteáilte, nó athshuiteáil gan na spleáchais roghnacha a fhágáil ar lár. - **Docker** — cuir an t-ordú suiteála le sraith íomhá díorthaithe; soláthraítear an íomhá fhoilsithe i bhfoirm éadrom d'aon ghnó. - **VPS (PM2)** — suiteáil isteach i `node_modules` na haipe é, ansin atosaigh an próiseas ionas go ndéanfaidh an t-oibrí an geata a phromhadh arís. - **Next neamhspleách amh (`npm run build` → `.build/next/standalone/server.js`)** — NÍ sholáthraíonn an rian neamhspleách an t-oibrí ná na spleáchais roghnacha, mar sin osclaíonn an t-inneall ar theip gan fógra. Cuireann `scripts/build/colocate-standalone.mjs` an dá rud i bhfeidhm arís (esbuild an oibrí + clabhsúr na spleáchas roghnach isteach sa chrann neamhspleách); ritheann sé go huathoibríoch tríd an gcrúca npm `postbuild` tar éis gach tógála. Idéimpitéinseach, agus teipeann sé go bog nuair nach mbíonn na spleáchais ann. **Deimhnigh go bhfuil sé gníomhach:** agus LLMLingua roghnaithe, crapann fíorphrós i ndáiríre (stopann an t-inneall de bheith ag oscailt ar theip), agus spreagann an chéad iarratas íoslódáil na samhla isteach i `${DATA_DIR}/models/llmlingua`. D'aon ghnó, ní phromhann an geata ach `@atjsh/llmlingua-2` — is ESM amháin iad na piaraí eile agus caitheann `require.resolve` eisceacht orthu fiú nuair atá siad i láthair — mar sin osclaíonn an t-oibrí ar theip fós má bhíonn aon phiara ar iarraidh i ndáiríre ag am `import()`. ## Píblínte Cruachta Ritheann an mód cruachta céimeanna píblíne in ord. Is é seo an réamhshocrú: ```txt rtk -> caveman ``` Úsáid é seo le haghaidh seisiúin oibreáin códaithe ina gcomhcheanglaíonn leid aschur ordaithe le prós daonna nó cúntóra. Laghdaíonn RTK logaí torannacha uirlisí ar dtús, ansin comhbhrúnn Caveman an teanga nádúrtha atá fágtha. Cumraítear céimeanna píblíne le `stackedPipeline` sna socruithe comhbhrúite nó trí theaglamaí comhbhrúite. Nuair a laghdaíonn an dá inneall an pálasta incháilithe céanna, déantar na coigiltis a iolrú: ```txt 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% ``` ## Scagaire Crainn Inrochtaineachta MCP Is ciseal comhbhrúite iar-fhorghníomhaithe é scagaire cliste crainn inrochtaineachta MCP a ritheann ar **thorthaí uirlisí** MCP, ní ar leideanna ná ar chomhthéacs. Díríonn sé ar na pálastaí fadálacha crainn inrochtaineachta agus léargais bhrabhsálaí a sheolann uirlisí ar ais, amhail Playwright, computer-use, agus freastalaithe MCP uathoibrithe brabhsálaí. ### A ndéanann sé 1. **Baint torainn** — baintear iontrálacha cineálacha/téacs folmha (`- generic:`, `- text: ""`) 2. **Crapadh siblíní** — nuair atá ≥ `collapseThreshold` (30 de réir réamhshocraithe) líne struchtúracha athchleachtacha as a chéile, crapann sé iad go dtí na chéad `collapseKeepHead` (10 de réir réamhshocraithe) líne + achoimre chomhairimh + na `collapseKeepTail` (5 de réir réamhshocraithe) líne dheireanacha 3. **Caomhnú tagairtí** — ní dhéantar teagmháil riamh le hancairí `[ref=eXX]` atá riachtanach do Playwright/computer-use 4. **Teascadh docht** — má sháraíonn an téacs tar éis craptha `maxTextChars` fós (50,000 de réir réamhshocraithe), teasctar é le leid nascleanúna ionas gur féidir leis an oibreán leanúint den obair ### Suíomh an innill ```txt open-sse/services/compression/engines/mcpAccessibility/ index.ts ← pointe iontrála smartFilterText() collapseRepeated.ts ← algartam craptha siblíní constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG ``` ### Cumraíocht Rialaítear é le `compression.mcpAccessibility` sna socruithe domhanda (ascnamh 056). Cumraíocht réamhshocraithe: ```json { "enabled": true, "maxTextChars": 50000, "collapseThreshold": 30, "collapseKeepHead": 10, "collapseKeepTail": 5, "minLengthToProcess": 2000 } ``` Ní chuirtear an scagaire i bhfeidhm ach ar phálastaí torthaí uirlisí arb é `"text"` a `type` agus a bhfuil a bhfad níos mó ná `minLengthToProcess`. Ní dhéanann sé difear do chomhbhrú leideanna ná do phálastaí iarratais. ### Coigiltis ionchasacha 60–80% ar thorthaí uirlisí léargais bhrabhsálaí, ag brath ar chastacht an leathanaigh. Tá an t-algartam craptha O(n) de réir líon na línte agus cuireann sé aga folaigh dhiomaibhseach leis. ### An scagaire seo i gcomparáid leis na hinnill chomhbhrúite thuas | Gné | Caveman / RTK / Cruachta | Scagaire inrochtaineachta MCP | | ---------------- | -------------------------------- | -------------------------------------- | | Sprioc | Leideanna iarratais / comhthéacs | Torthaí uirlisí MCP | | Truicear | Socrú móid chomhbhrúite | `compression.mcpAccessibility.enabled` | | Raon | Gach teachtaireacht SSE | Torthaí uirlisí amháin | | Ancairí tagartha | N/B | Caomhnaithe gan choinníoll | --- ## Teaglamaí Comhbhrúite Is próifílí comhbhrúite ainmnithe iad teaglamaí comhbhrúite is féidir a shannadh do theaglamaí ródúcháin: - `compression_combos`: stórálann sé mód, píblíne, cumraíocht RTK, cumraíocht teanga agus marcóir réamhshocraithe - `compression_combo_assignments`: mapálann sé teaglama comhbhrúite chuig teaglama ródúcháin - réitíonn comhtháthú ag am rite teaglama comhbhrúite sannta roimh sháruithe cineálacha teaglama - áirítear `compression_combo_id` agus `engine` san anailísíocht Dromchla an deais: `Deais -> Comhthéacs & Taisce -> Teaglamaí Comhbhrúite`. ## Dromchla API | Bealach | Cuspóir | | -------------------------------------- | ------------------------------------------------------------------------------ | | `/api/settings/compression` | Socruithe comhbhrúite domhanda (lena n-áirítear cumraíocht `mcpAccessibility`) | | `/api/compression/preview` | Réamhamharc ar aon mhód comhbhrúite | | `/api/compression/language-packs` | Liostaigh pacáistí teanga Caveman atá ar fáil | | `/api/context/caveman/config` | Ailias do shocruithe Caveman | | `/api/context/rtk/config` | Réamhshocruithe agus socruithe RTK | | `/api/context/rtk/filters` | Catalóg scagairí RTK | | `/api/context/rtk/test` | Críochphointe réamhamhairc/tástála RTK | | `/api/context/rtk/raw-output/[id]` | Aisghabháil fhíordheimhnithe ar aschur amh folaithe | | `/api/context/combos` | CRUD do theaglamaí comhbhrúite | | `/api/context/combos/[id]/assignments` | CRUD do shannadh teaglama ródúcháin | | `/api/context/analytics` | Ailias d’anailísíocht chomhbhrúite | Éilíonn bealaí bainistíochta fíordheimhniú bainistíochta nó seiceálacha beartais eochrach API. ## Uirlisí MCP Nochtann comhbhrú cúig uirlis MCP: | Uirlis | Scóip | Cuspóir | | ----------------------------------- | ------------------- | ------------------------------------------- | | `omniroute_compression_status` | `read:compression` | Socruithe, anailísíocht, staitisticí taisce | | `omniroute_compression_configure` | `write:compression` | Nuashonraigh socruithe domhanda | | `omniroute_set_compression_engine` | `write:compression` | Socraigh mód agus píblíne roghnach | | `omniroute_list_compression_combos` | `read:compression` | Liostaigh teaglamaí comhbhrúite | | `omniroute_compression_combo_stats` | `read:compression` | Léigh anailísíocht teaglama/innill | ## Scóip & eisiaimh **Ní chomhbhrúitear leabuithe choíche.** Ní ghlaonn `open-sse/handlers/embeddings.ts` ar aon inneall comhbhrúite choíche — téann corp an iarratais/an fhreagra díreach chuig an seiceadóir gan athrú. Tá sé seo struchtúrach faoi láthair (tá láimhseálaithe ar leith ag leabuithe agus comhlánuithe comhrá), ní seiceáil ag am rite, ach ciallaíonn sé nach bhfuil aon dromchla nochta ag an imní faoi shaobhadh veicteora in #8034 i gcosán na leabuithe. **Scagaire eisiaimh de réir samhla/críochphointe (#8034).** I gcás comhlánuithe comhrá, is féidir le hoibreoir aitheantais samhlacha / spriocanna `provider/model` a ainmniú nach ceadmhach iad a chomhbhrú choíche — cosaint atá úsáideach má shreangaítear comhbhrú níos gaire do chonair atá tadhlach le leabuithe amach anseo, agus atá úsáideach go ginearálta d’aon samhail ina bhfuil tábhacht le leid atá cruinn beart ar bheart (meastóireachtaí cinntitheacha, réimíreanna atá íogair don taisce, etc.). - Réimse socruithe: `exclusions?: string[]` ar an gcumraíocht chomhbhrúite dhomhanda (`GET`/`PUT /api/settings/compression`), arna bhuanú tríd an ainmspás comhbhrúite `key_value` atá ann cheana (`src/lib/db/compression.ts`) — gan tábla nua. - Cluaisín deaise: **Deais → Comhbhrú → Eisiaimh** (`/dashboard/compression/exclusions`). - Comhréir patrúin: is é `*` an t-aon saoróg. Éalaítear gach meiteacharachtar slonn rialta eile i bpatrún roimh mheaitseáil, mar sin ní mheaitseálann `gpt-5.6` ach an teaghrán litriúil, agus ní mheaitseálann sé `gpt-5x6` choíche (sábháilte ar ReDoS, teoranta, gan cainníochtóirí neadaithe). Déantar patrúin a mheaitseáil gan beann ar chás i gcoinne aitheantas lom na samhla agus an chomhshuímh `provider/model` araon — oibríonn `gpt-5-6`, `openai/gpt-5-6`, agus `openai/*` go léir, agus eisiann `*` leis féin gach samhail. - Meaitseáil: `isCompressionExcluded()` / `normalizeCompressionExclusions()` in `open-sse/services/compression/exclusions.ts`. Seiceálann `chatCore.ts` an sprioc eisiata díreach tar éis dó na socruithe comhbhrúite a réiteach, **sula ritheann aon inneall**, agus déileálann sé le meaitseáil díreach mar a bheadh comhbhrú díchumasaithe go domhanda — is féidir a chruthú go bhfuil corp an iarratais comhionann beart ar bheart. Taifeadtar an scipeáil trí `writeCompressionSkip(..., "excluded")` chun infheictheacht anailísíochta a sholáthar. - Réamhshocrú (liosta folamh/as láthair): comhionann leis an iompar roimh #8034 — ní eisiatar rud ar bith. ## Teorainneacha aitheanta - **Teastaíonn spleáchais roghnacha comhshuite ó LLMLingua-2 (SLM).** Ní ritheann an t-oibrí i leagan táirgeachta ach amháin nuair a bhíonn `@atjsh/llmlingua-2` + a chomhspleáchais comhshuite in `dist/node_modules` (féach `scripts/build/colocateOptionals.mjs`, #4286). Gan iad, teipeann an t-inneall go hoscailte (cuireann sé an buntéacs ar ais). Ní bhraitheann réiteach an oibrí ar `import.meta.url` a thuilleadh (cliseann sé sa bheart neamhspleách) — tá sé fréamhaithe i cwd / `argv[1]` an ama rite. - **Tá pacáistí teanga Caveman `de` / `fr` / `ja` neamhiomlán.** Seoltar iad le rialacha `context` + `filler` + `structural`, ach gan pacáistí `dedup` / `ultra`, mar sin níl déine `ultra` níos láidre ná `full` do na teangacha sin (ní úsáideann siad ach a rialacha féin — níl aon chúltitim chiúin chuig rialacha Béarla `dedup`/`ultra`, rud a dhéanfadh praiseach de théacs i dteangacha eile). Tá `en` / `es` / `id` / `pt-BR` iomlán. Cuirtear fáilte roimh ranníocaíochtaí de `dedup.json` + `ultra.json` do na pacáistí neamhiomlána. - **Ní liostaíonn teiliméadracht chruachta ach innill a rinne comhbhrú.** Céim i bpíblíne chruachta ar ritheadh a hinneall ach a ghnóthaigh coigilteas 0 %, cuireann sí `stats:null` ar ais agus dá bhrí sin ní bhíonn sí le feiceáil in `engineBreakdown` — ní féidir í a idirdhealú ó chéim a scipeáladh. Chun idirdhealú a dhéanamh idir "ritheadh, 0 %" agus "scipeáladh", bheadh athrú ar an tsamhail miondealaithe ag teastáil agus tá sé curtha siar. ## Bailíochtú Is iad na geataí dírithe don réimse seo: ```bash 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 ```