# đŸ—œïž Prompt Compression Guide — OmniRoute (Magyar) 🌐 **Languages:** đŸ‡ș🇾 [English](../../../../compression/COMPRESSION_GUIDE.md) · đŸ‡ȘđŸ‡č [am](../../../am/docs/compression/COMPRESSION_GUIDE.md) · 🇾🇩 [ar](../../../ar/docs/compression/COMPRESSION_GUIDE.md) · 🇩🇿 [az](../../../az/docs/compression/COMPRESSION_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡§đŸ‡© [bn](../../../bn/docs/compression/COMPRESSION_GUIDE.md) · 🇧🇩 [bs](../../../bs/docs/compression/COMPRESSION_GUIDE.md) · 🇹🇿 [cs](../../../cs/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡©đŸ‡° [da](../../../da/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡©đŸ‡Ș [de](../../../de/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡ŹđŸ‡· [el](../../../el/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡Ș🇾 [es](../../../es/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡ȘđŸ‡Ș [et](../../../et/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡źđŸ‡· [fa](../../../fa/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡«đŸ‡ź [fi](../../../fi/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡«đŸ‡· [fr](../../../fr/docs/compression/COMPRESSION_GUIDE.md) · 🇼đŸ‡Ș [ga](../../../ga/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [gu](../../../gu/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡źđŸ‡± [he](../../../he/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [hi](../../../hi/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡­đŸ‡· [hr](../../../hr/docs/compression/COMPRESSION_GUIDE.md) · 🇩đŸ‡Č [hy](../../../hy/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡źđŸ‡© [id](../../../id/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/compression/COMPRESSION_GUIDE.md) · 🇼đŸ‡č [it](../../../it/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡ŻđŸ‡” [ja](../../../ja/docs/compression/COMPRESSION_GUIDE.md) · 🇬đŸ‡Ș [ka](../../../ka/docs/compression/COMPRESSION_GUIDE.md) · 🇰🇭 [km](../../../km/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [kn](../../../kn/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡°đŸ‡· [ko](../../../ko/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡±đŸ‡č [lt](../../../lt/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡±đŸ‡» [lv](../../../lv/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [ml](../../../ml/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [mr](../../../mr/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡ČđŸ‡Ÿ [ms](../../../ms/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡ČđŸ‡č [mt](../../../mt/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡ČđŸ‡Č [my](../../../my/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡łđŸ‡” [ne](../../../ne/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡łđŸ‡± [nl](../../../nl/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇮 [no](../../../no/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [or](../../../or/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [pa](../../../pa/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡”đŸ‡­ [phi](../../../phi/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡”đŸ‡± [pl](../../../pl/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡”đŸ‡č [pt](../../../pt/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡§đŸ‡· [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡·đŸ‡Ž [ro](../../../ro/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡·đŸ‡ș [ru](../../../ru/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡±đŸ‡° [si](../../../si/docs/compression/COMPRESSION_GUIDE.md) · 🇾🇰 [sk](../../../sk/docs/compression/COMPRESSION_GUIDE.md) · 🇾🇼 [sl](../../../sl/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡·đŸ‡ž [sr](../../../sr/docs/compression/COMPRESSION_GUIDE.md) · 🇾đŸ‡Ș [sv](../../../sv/docs/compression/COMPRESSION_GUIDE.md) · 🇰đŸ‡Ș [sw](../../../sw/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [ta](../../../ta/docs/compression/COMPRESSION_GUIDE.md) · 🇼🇳 [te](../../../te/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡č🇭 [th](../../../th/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡čđŸ‡· [tr](../../../tr/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡ș🇩 [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡”đŸ‡° [ur](../../../ur/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡ș🇿 [uz](../../../uz/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡»đŸ‡ł [vi](../../../vi/docs/compression/COMPRESSION_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/compression/COMPRESSION_GUIDE.md) · 🇹🇳 [zh-CN](../../../zh-CN/docs/compression/COMPRESSION_GUIDE.md) · đŸ‡čđŸ‡Œ [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_GUIDE.md) --- > Automatikusan 15–95%-ot takarĂ­that meg az alkalmas kontextuson. Gyors ĂĄttekintĂ©sĂ©rt lĂĄsd a [README tömörĂ­tĂ©srƑl szĂłlĂł szakaszĂĄt](../README.md#%EF%B8%8F-prompt-compression--save-15-95-eligible-tokens-automatically). ## ÁttekintĂ©s Az OmniRoute modulĂĄris prompttömörĂ­tĂ©si folyamatot valĂłsĂ­t meg, amely **proaktĂ­van**, mĂ©g azelƑtt fut le, hogy a kĂ©rĂ©sek elĂ©rnĂ©k a hĂĄttĂ©rszolgĂĄltatĂłkat. Ez azt jelenti, hogy a tokenmegtakarĂ­tĂĄs ĂĄtlĂĄthatĂł mĂłdon törtĂ©nik — a munkafolyamatot nem kell mĂłdosĂ­tani. ``` ÜgyfĂ©lkĂ©rĂ©s → TömörĂ­tĂ©si stratĂ©gia kivĂĄlasztĂłja → Van kombinĂĄciĂłs felĂŒlbĂ­rĂĄlĂĄs? → A kombinĂĄciĂł beĂĄllĂ­tĂĄsĂĄnak hasznĂĄlata → ElĂ©rte az automatikus aktivĂĄlĂĄsi kĂŒszöbĂ©rtĂ©ket? → Automatikus mĂłd hasznĂĄlata → Van alapĂ©rtelmezett mĂłd? → GlobĂĄlis beĂĄllĂ­tĂĄs hasznĂĄlata → Ki van kapcsolva? → TömörĂ­tĂ©s kihagyĂĄsa → KivĂĄlasztott tömörĂ­tĂ©si mĂłd → Kikapcsolva: Nincs tömörĂ­tĂ©s → Enyhe: BiztonsĂĄgos tĂ©rköz- Ă©s formĂĄzĂĄstisztĂ­tĂĄs (~15%) → NormĂĄl: TĂĄvirati stĂ­lusĂș töltelĂ©kszĂł-eltĂĄvolĂ­tĂĄs (~30%) → AgresszĂ­v: ElƑzmĂ©nyek öregĂ­tĂ©se + összegzĂ©s (~50%) → Ultra: Heurisztikus ritkĂ­tĂĄs + kĂłdblokkok ritkĂ­tĂĄsa (~75%) → RTK: ParancsĂ©rzĂ©keny terminĂĄl-/eszközkimenet-szƱrĂ©s (60–90%-os tartomĂĄny a hĂĄttĂ©rszolgĂĄltatĂł felĂ©) → Halmozott: Rendezett, többmotoros folyamat, ĂĄltalĂĄban elƑször RTK, majd Caveman (78–95%-os tartomĂĄny az alkalmas tartalmon) → TömörĂ­tett kĂ©rĂ©s → SzolgĂĄltatĂł ``` --- ## TömörĂ­tĂ©si mĂłdok ### Kikapcsolva Nincs alkalmazva tömörĂ­tĂ©s. Minden ĂŒzenet vĂĄltozatlanul halad ĂĄt. ### Enyhe mĂłd (~15%-os megtakarĂ­tĂĄs, <1 ms kĂ©sleltetĂ©s) A legbiztonsĂĄgosabb mĂłd — nulla szemantikai vĂĄltoztatĂĄs, csak formĂĄzĂĄstisztĂ­tĂĄs: | Technika | LeĂ­rĂĄs | | ------------------------ | ----------------------------------------------------------- | | `collapseWhitespace` | Az egymĂĄst követƑ ĂŒres sorok Ă©s a zĂĄrĂł szĂłközök összevonĂĄsa | | `dedupSystemPrompt` | Az ismĂ©tlƑdƑ rendszerĂŒzenetek eltĂĄvolĂ­tĂĄsa | | `compressToolResults` | A rĂ©szletes eszköz-/fĂŒggvĂ©nykimenetek tömörĂ­tĂ©se | | `removeRedundantContent` | Az ismĂ©tlƑdƑ utasĂ­tĂĄsok eltĂĄvolĂ­tĂĄsa | | `replaceImageUrls` | A base64-kĂłdolĂĄsĂș kĂ©padat-URI-k rövidĂ­tĂ©se | **IdeĂĄlis ehhez:** Folyamatos hasznĂĄlat, biztonsĂĄgkritikus munkafolyamatok. ### NormĂĄl mĂłd (~30%-os megtakarĂ­tĂĄs) A [Caveman](https://github.com/JuliusBrussee/caveman) ĂĄltal ihletett mĂłd — eltĂĄvolĂ­tja a töltelĂ©kszavakat Ă©s a terjengƑs megfogalmazĂĄst, miközben megƑrzi a jelentĂ©st: - EltĂĄvolĂ­tja a töltelĂ©kszavakat („kĂ©rem”, „azt hiszem”, „alapvetƑen”, „valĂłjĂĄban”) - TömörĂ­ti a terjengƑs kifejezĂ©seket („annak Ă©rdekĂ©ben, hogy” → „hogy”, „annak eredmĂ©nyekĂ©nt” → „mert”) - EltĂĄvolĂ­tja az udvarias ĂłvatoskodĂĄst („MegtennĂ©, hogy...”, „Ha esetleg meg tudnĂĄ...”) - Több mint 30, programozĂĄsi promptokra hangolt regulĂĄris kifejezĂ©si szabĂĄly **IdeĂĄlis ehhez:** Mindennapi programozĂĄsi munkafolyamatok, költsĂ©gtudatos csapatok. ### AgresszĂ­v mĂłd (~50%-os megtakarĂ­tĂĄs) Intelligens elƑzmĂ©nykezelĂ©s hosszĂș munkamenetekhez: - **Üzenetek öregĂ­tĂ©se** — a rĂ©gebbi ĂŒzenetek fokozatosan egyre erƑsebb tömörĂ­tĂ©st kapnak - **EszközeredmĂ©nyek tömörĂ­tĂ©se** — a hosszĂș eszközkimenetek csonkolĂĄsa vagy kihagyĂĄsa (elsƑ/utolsĂł sorok, egyezƑ sorok szerinti szƱrĂ©s, JSON-kulcsok tömörĂ­tĂ©se) - **Szerkezeti integritĂĄst vĂ©dƑ mechanizmusok** — biztosĂ­tjĂĄk, hogy a `tool_use` + `tool_result` pĂĄrok konzisztensek maradjanak - **Kontextusablak figyelembevĂ©tele** — tiszteletben tartja az egyes modellek tokenkorlĂĄtait **IdeĂĄlis ehhez:** Hosszabb hibakeresĂ©si munkamenetek, nagy kĂłdbĂĄzisok. ### Ultra mĂłd (~75%-os megtakarĂ­tĂĄs) MaximĂĄlis tömörĂ­tĂ©s a tokentakarĂ©kossĂĄgot igĂ©nylƑ helyzetekhez: - **Heurisztikus ritkĂ­tĂĄs** — a prĂłza pontszĂĄmalapĂș tokenritkĂ­tĂĄsa - **SzerkezetmegƑrzĂ©s** — a keretezett kĂłdblokkokat, a soron belĂŒli kĂłdot, az URL-eket Ă©s az azonosĂ­tĂłkat helyƑrzƑkkel vĂĄltja ki, majd vĂĄltozatlanul visszailleszti; ezeket soha nem ritkĂ­tja - **OpcionĂĄlis SLM-szint** — konfigurĂĄlĂĄs esetĂ©n egy kis helyi modell finomĂ­thatja a ritkĂ­tĂĄst - FĂŒggetlen az AgresszĂ­v mĂłdtĂłl: nem futtat ĂŒzenetöregĂ­tĂ©st, eszközeredmĂ©ny-tömörĂ­tĂ©st vagy tartalĂ©k összegzƑt (csak az SLM-szint meghibĂĄsodĂĄsa irĂĄnyĂ­that egy tartalĂ©k feldolgozĂĄsi menetet az agresszĂ­v mĂłdon keresztĂŒl) **IdeĂĄlis ehhez:** Ha rendszeresen elĂ©ri a kontextuskorlĂĄtokat. ### RTK mĂłd (60–90%-os tartomĂĄny a hĂĄttĂ©rszolgĂĄltatĂł felĂ©) Az RTK mĂłd a programozĂĄsi ĂŒgynökök munkameneteiben megjelenƑ terjengƑs eszközkimenetekre van optimalizĂĄlva: - Felismeri az olyan parancs-/kimenetosztĂĄlyokat, mint a `git status`, `git diff`, `git log`, tesztfuttatĂłk, TypeScript-/Vite-/Webpack-buildek, ESLint/Biome/Prettier, npm-auditok/-telepĂ­tĂ©sek, Docker-naplĂłk, infrastruktĂșra- kimenetek Ă©s ĂĄltalĂĄnos shellkimenetek - JSON-szƱrƑcsomagokat alkalmaz az `open-sse/services/compression/engines/rtk/filters/` könyvtĂĄrbĂłl - Projekt- vagy globĂĄlis `filters.toml` fĂĄjlokbĂłl importĂĄl RTK TOML sĂ©ma v1 szerinti szƱrƑket, beĂĄgyazott tesztesetek ellenƑrzĂ©sĂ©vel Ă©s a projektfĂĄjlokra vonatkozĂł bizalmi kapuval - 55 beĂ©pĂ­tett szƱrƑt tartalmaz beĂĄgyazott ellenƑrzĂ©si mintĂĄkkal - EltĂĄvolĂ­tja az ANSI vezĂ©rlƑszekvenciĂĄkat, folyamatjelzƑ sĂĄvokat, ismĂ©tlƑdƑ sorokat Ă©s a beavatkozĂĄst nem igĂ©nylƑ zajt - MegƑrzi a sikertelensĂ©geket, hibĂĄkat, figyelmeztetĂ©seket, mĂłdosĂ­tott fĂĄjlokat, összegzĂ©seket Ă©s a hosszĂș kimenetek vĂ©gĂ©t - TĂĄmogatja a bizalmi kapuval vĂ©dett projektszƱrƑket, a globĂĄlis szƱrƑket Ă©s az opcionĂĄlis, kitakart nyerskimenet-visszaĂĄllĂ­tĂĄst **IdeĂĄlis ehhez:** Shell-, build-, teszt-, git-, grep- Ă©s fĂĄjlkimeneti ĂĄtiratokat tartalmazĂł ĂŒgynökmunkamenetek. ### Halmozott mĂłd (78–95%-os tartomĂĄny az alkalmas tartalmon) A Halmozott mĂłd több tömörĂ­tƑmotort futtat determinisztikus sorrendben. Az alapĂ©rtelmezett folyamat: ```txt RTK -> Caveman ``` Ez a sorrend elƑször a terminĂĄl-/eszközkimenetet tömörĂ­ti, majd Caveman szemantikai tömörĂ­tĂ©st alkalmaz a fennmaradĂł termĂ©szetes nyelvƱ promptra. A halmozott folyamatok globĂĄlisan vagy az ĂștvĂĄlasztĂĄsi kombinĂĄciĂłkhoz rendelt tömörĂ­tĂ©si kombinĂĄciĂłkon keresztĂŒl konfigurĂĄlhatĂłk. **IdeĂĄlis ehhez:** Nagy eszköznaplĂłkat, valamint emberi utasĂ­tĂĄsokat vagy asszisztensi összegzĂ©seket egyarĂĄnt tartalmazĂł vegyes kontextus. --- ## Upstream megtakarĂ­tĂĄsok szĂĄmĂ­tĂĄsa Az OmniRoute kĂ©t forrĂĄs alapjĂĄn dokumentĂĄlja a tömörĂ­tĂ©si megtakarĂ­tĂĄsokat: az upstream projektek teljesĂ­tmĂ©nytesztjei Ă©s az OmniRoute sajĂĄt motor-összeĂĄllĂ­tĂĄsa alapjĂĄn. | ForrĂĄs | Az itt hasznĂĄlt szĂĄm az upstream README-bƑl | | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | Caveman | `~75%`-kal kevesebb kimeneti token, `65%` ĂĄtlagos kimeneti megtakarĂ­tĂĄs a teljesĂ­tmĂ©nyteszteken, `22-87%`-os tartomĂĄny Ă©s `~46%`-os bemenettömörĂ­tƑ eszköz | | RTK | `60-90%`-os megtakarĂ­tĂĄs a parancskimeneteken; a mintamenetben `~118,000 -> ~23,900` token, vagyis `79.7%` megtakarĂ­tĂĄs (`~80%`) | Az egymĂĄst ĂĄtfedƑ eszköz-/kontextustartalmak esetĂ©n az alapĂ©rtelmezett OmniRoute-kombinĂĄciĂł egymĂĄs utĂĄn alkalmazza a motorokat: ```txt RTK -> Caveman ``` Az egyĂŒttes megtakarĂ­tĂĄsok szorzĂłdnak, nem pedig összeadĂłdnak: ```txt combined = 1 - (1 - RTK-megtakarĂ­tĂĄs) * (1 - Caveman bemeneti megtakarĂ­tĂĄs) ĂĄtlag = 1 - (1 - 0.80) * (1 - 0.46) = 89.2% tartomĂĄny = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6% ``` Ez a `78-95%`-os Ă©rtĂ©k akkor Ă©rvĂ©nyes, amikor az RTK Ă©s a Caveman is kĂ©pes csökkenteni ugyanazt a bemeneti-/kontextustartalmat. A Caveman vĂĄlaszkimeneti mĂłdja ettƑl elkĂŒlönĂŒl: amikor engedĂ©lyezve van, a Caveman sajĂĄt kimeneti megtakarĂ­tĂĄsait kell figyelembe venni (`65%` ĂĄtlagosan, `~75%` a kiemelt Ă©rtĂ©k, `22-87%`-os tartomĂĄny). A teljes szĂĄmlĂĄzĂĄsi megtakarĂ­tĂĄs a promptok Ă©s kimenetek arĂĄnyĂĄtĂłl fĂŒgg. ### Mit jelent valĂłjĂĄban a „jogosult” A kiemelt 15-95%-os tartomĂĄny valĂłs, de csak a **redundĂĄns vagy tĂșl rĂ©szletes** tartalmakra vonatkozik — ismĂ©tlƑdƑ hibaĂŒzenetekre, ugyanazt a figyelmeztetĂ©st ontĂł buildnaplĂłra, tĂșlmĂ©retezett `grep`-kimenetre vagy fĂĄjlbeolvasĂĄsi adathalmazra. Ez **nem** jelenti azt, hogy minden kĂ©rĂ©s ennyit takarĂ­t meg. Empirikusan ellenƑrizve (`tests/unit/compression/stacked-compression-tool-result-savings.test.ts`): egy `stacked` (RTK + Caveman) futtatĂĄs egy Anthropic-formĂĄjĂș, 300 azonos hibasort tartalmazĂł `tool_result` blokkon **95.93%-os tokenmegtakarĂ­tĂĄst / 96.26%-os karaktermegtakarĂ­tĂĄst** eredmĂ©nyezett — egyĂ©rtelmƱen a meghirdetett tartomĂĄnyon belĂŒl. Ugyanez a folyamat azonban normĂĄl, nem redundĂĄns eszközkimeneten (egy tiszta `grep`-talĂĄlati listĂĄn, egy rövid fĂĄjlbeolvasĂĄson vagy hĂ©tköznapi tĂĄrsalgĂĄsi szövegen) helyesen **közel nulla megtakarĂ­tĂĄst** eredmĂ©nyez, mivel nincs eltĂĄvolĂ­thatĂł ismĂ©tlƑdĂ©s, Ă©s a `validateCompression()` (`validation.ts`) nem engedĂ©lyez olyan ĂĄtalakĂ­tĂĄst, amely kihagynĂĄ vagy mĂłdosĂ­tanĂĄ a kĂłdblokkokat, URL-eket, cĂ­msorokat, verziĂłkat vagy a csupa nagybetƱs konstansazonosĂ­tĂłkat. Ez elvĂĄrt Ă©s biztonsĂĄgos mƱködĂ©s, nem hiba: egy olyan kĂłdolĂĄsi munkamenet, amely fƑkĂ©nt tiszta fĂĄjlokat olvas vagy keres bennĂŒk, mĂ©g teljesen engedĂ©lyezett tömörĂ­tĂ©s mellett is csak mĂ©rsĂ©kelt összesĂ­tett megtakarĂ­tĂĄst Ă©r el, mĂ­g egy hibĂĄs ciklusba vagy bƑbeszĂ©dƱ linterbe ĂŒtközƑ munkamenet az ilyen forgalmon a teljes 78-95%-os tartomĂĄnyt elĂ©rheti. Ne tekintsd egyetlen munkamenet alacsony összesĂ­tett megtakarĂ­tĂĄsi arĂĄnyĂĄt annak bizonyĂ­tĂ©kakĂ©nt, hogy a tömörĂ­tĂ©s hibĂĄsan van konfigurĂĄlva — elƑször ellenƑrizd, hogy az alapul szolgĂĄlĂł eszközkimenet valĂłban redundĂĄns volt-e. --- ## TokenmegtakarĂ­tĂĄs vizualizĂĄciĂłja ``` TömörĂ­tĂ©s nĂ©lkĂŒl: 47K token elkĂŒldve az LLM-nek Lite mĂłddal: 40K token elkĂŒldve (15% megtakarĂ­tĂĄs — biztonsĂĄgos, mindig aktĂ­v) Standard mĂłddal: 33K token elkĂŒldve (30% megtakarĂ­tĂĄs — caveman-speak szabĂĄlyok) Aggressive mĂłddal: 24K token elkĂŒldve (50% megtakarĂ­tĂĄs — öregĂ­tĂ©s + összefoglalĂĄs) Ultra mĂłddal: 12K token elkĂŒldve (75% megtakarĂ­tĂĄs — heurisztikus ritkĂ­tĂĄs) RTK-val: 19K-5K token elkĂŒldve (60-90% megtakarĂ­tĂĄs a parancs-/eszközkimeneten) Stacked mĂłddal: 10K-2.5K token elkĂŒldve (78-95%-os tartomĂĄny az arra jogosult RTK+Caveman-tartalmaknĂĄl) ``` --- ## KonfigurĂĄciĂł ### IrĂĄnyĂ­tĂłpult LĂ©pjen az `IrĂĄnyĂ­tĂłpult → Kontextus Ă©s gyorsĂ­tĂłtĂĄr` menĂŒpontra: - **Caveman** — mĂłdvĂĄlasztĂĄs, nyelvi csomagok, elƑnĂ©zet Ă©s globĂĄlis alapĂ©rtelmezĂ©sek - **RTK** — parancsszƱrƑk elƑnĂ©zete, RTK biztonsĂĄgi beĂĄllĂ­tĂĄsok Ă©s szƱrƑkatalĂłgus - **TömörĂ­tĂ©si kombinĂĄciĂłk** — ĂștvĂĄlasztĂĄsi kombinĂĄciĂłkhoz rendelt, nĂ©vvel ellĂĄtott motorfolyamatok - **Automatikus aktivĂĄlĂĄsi kĂŒszöbĂ©rtĂ©k** — automatikusan bekapcsolja a tömörĂ­tĂ©st, amikor a tokenek szĂĄma meghaladja a kĂŒszöbĂ©rtĂ©ket ### KombinĂĄciĂłnkĂ©nti felĂŒlbĂ­rĂĄlĂĄs Az `IrĂĄnyĂ­tĂłpult → Kontextus Ă©s gyorsĂ­tĂłtĂĄr → TömörĂ­tĂ©si kombinĂĄciĂłk` menĂŒpontban rendeljen hozzĂĄ egy tömörĂ­tĂ©si kombinĂĄciĂłt egy ĂștvĂĄlasztĂĄsi kombinĂĄciĂłhoz: ```txt KombinĂĄciĂł: "free-tier-fallback" TömörĂ­tĂ©si kombinĂĄciĂł: "coding-agent-stack" Folyamat: RTK -> Caveman CĂ©lok: 1. if/kimi-k2.7-code 2. if/qwen3.8-max-preview ``` Ez lehetƑvĂ© teszi a halmozott tömörĂ­tĂ©s hasznĂĄlatĂĄt ingyenes/kĂłdolĂĄsi szolgĂĄltatĂłknĂĄl, miközben a fizetƑs elƑfizetĂ©seknĂ©l megtartja a Lite mĂłdot. Ez a „KombinĂĄciĂłnkĂ©nti felĂŒlbĂ­rĂĄlĂĄs” hozzĂĄrendelĂ©s eltĂ©rƑ vezĂ©rlƑelem, mint az **ĂștvĂĄlasztĂĄsi kombinĂĄciĂł tömörĂ­tĂ©si mĂłdjĂĄnak** felĂŒlbĂ­rĂĄlĂĄsa (Default/Off/Lite/Standard/Aggressive/Ultra/Codex Responses — a mezƑ sĂ©mĂĄja az `rtk`, `stacked` Ă©s `omniglyph` Ă©rtĂ©keket is elfogadja) — ez a felĂŒlbĂ­rĂĄlĂĄs nem vĂĄlaszt ki nĂ©vvel ellĂĄtott tömörĂ­tĂ©sikombinĂĄciĂł-folyamatot; csupĂĄn beĂĄllĂ­tja a `resolveCompressionPlan` ĂĄltal figyelembe vett `compressionMode` mezƑt. BeĂĄllĂ­thatĂł a kombinĂĄciĂł kĂĄrtyĂĄjĂĄn (`IrĂĄnyĂ­tĂłpult → KombinĂĄciĂłk`), illetve a #6760 Ăłta ĂștvĂĄlasztĂĄsi kombinĂĄciĂłnkĂ©nt az „ÚtvĂĄlasztĂĄshoz rendelĂ©s” listĂĄban is, az `IrĂĄnyĂ­tĂłpult → Kontextus Ă©s gyorsĂ­tĂłtĂĄr → TömörĂ­tĂ©si kombinĂĄciĂłk` menĂŒpontban, közvetlenĂŒl a fent dokumentĂĄlt folyamathoz-rendelĂ©si jelölƑnĂ©gyzet mellett. MindkĂ©t felĂŒleten vĂ©gzett mĂłdosĂ­tĂĄs ugyanazon a `PUT /api/combos/{id}` vĂ©gponton keresztĂŒl marad meg. ### KĂ©rĂ©senkĂ©nti felĂŒlbĂ­rĂĄlĂĄs KĂŒldje el az `x-omniroute-compression` kĂ©rĂ©sfejlĂ©cet, ha egyetlen kĂ©rĂ©sre szeretnĂ© felĂŒlbĂ­rĂĄlni a tömörĂ­tĂ©si tervet. Ennek van a legmagasabb prioritĂĄsa — felĂŒlĂ­rja az ĂștvĂĄlasztĂĄsi kombinĂĄciĂł felĂŒlbĂ­rĂĄlĂĄsĂĄt, az aktĂ­v profilt, az automatikus aktivĂĄlĂĄst Ă©s a panel Default beĂĄllĂ­tĂĄsĂĄt. Az ismeretlen Ă©rtĂ©keket a rendszer figyelmen kĂ­vĂŒl hagyja (a kĂ©rĂ©st soha nem utasĂ­tja el), Ă©s tovĂĄbbra is a globĂĄlis fƑkapcsolĂł vezĂ©rel mindent: ha a tömörĂ­tĂ©s globĂĄlisan ki van kapcsolva, a fejlĂ©c nem kapcsolhatja be. ÉrtĂ©kek: | ÉrtĂ©k | HatĂĄs | | ------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `off` | EnnĂ©l a kĂ©rĂ©snĂ©l nincs tömörĂ­tĂ©s. | | `default` | A panelbƑl szĂĄrmaztatott Default profil (figyelmen kĂ­vĂŒl hagyja az aktĂ­v profilt). A vesztesĂ©ges motorok kikapcsolva maradnak. | | `safe` | Ugyanaz, mintha kihagynĂĄ a fejlĂ©cet: csak deduplikĂĄciĂł Ă©s szĂłköz-összevonĂĄs. | | `allow-lossy` | Megtartja a kĂ©rĂ©s operĂĄtori tervĂ©t, beleĂ©rtve az összegzĂ©seket, a relevanciaszƱrƑket Ă©s a stĂ­lusĂĄtĂ­rĂĄsokat. | | `engine:` | Egyetlen motor, ha engedĂ©lyezve van, pĂ©ldĂĄul `engine:rtk`. Ez az adott motor kĂ©rĂ©senkĂ©nti engedĂ©lyezĂ©se. | | `` | Egy nĂ©vvel ellĂĄtott kombinĂĄciĂł; elƑször nĂ©v alapjĂĄn, kis- Ă©s nagybetƱktƑl fĂŒggetlenĂŒl, majd azonosĂ­tĂł alapjĂĄn törtĂ©nik az egyeztetĂ©s. | Az `allow-lossy`, az `engine:` vagy egy nĂ©vvel ellĂĄtott kombinĂĄciĂł nĂ©lkĂŒl a vesztesĂ©ges motorok nem kerĂŒlnek alkalmazĂĄsra. Ha a tömörĂ­tĂ©s be van kapcsolva, a kĂ©rĂ©s tovĂĄbbra is munkamenet-szintƱ deduplikĂĄciĂłt Ă©s szĂłköz-összevonĂĄst kap. Az alkalmazott tervet a vĂĄlasz az `X-OmniRoute-Compression: ; source=` fejlĂ©cben kĂŒldi vissza, ahol a `` a következƑk egyike: `request-header`, `routing-override`, `active-profile`, `auto-trigger`, `default` vagy `off`. ### API ```bash # TömörĂ­tĂ©si beĂĄllĂ­tĂĄsok lekĂ©rĂ©se curl http://localhost:20128/api/settings/compression # TömörĂ­tĂ©si beĂĄllĂ­tĂĄsok frissĂ­tĂ©se curl -X PUT http://localhost:20128/api/settings/compression \ -H "Content-Type: application/json" \ -d '{"defaultMode":"stacked","autoTriggerMode":"stacked","autoTriggerTokens":32000}' # Egy adott RTK/stacked adattartalom elƑnĂ©zete curl -X POST http://localhost:20128/api/compression/preview \ -H "Content-Type: application/json" \ -d '{"mode":"rtk","messages":[{"role":"tool","content":"npm test output here"}]}' # RTK szƱrƑcsomagok listĂĄzĂĄsa curl http://localhost:20128/api/context/rtk/filters # Az RTK közvetlen tesztelĂ©se opcionĂĄlis parancsmetaadatokkal curl -X POST http://localhost:20128/api/context/rtk/test \ -H "Content-Type: application/json" \ -d '{"command":"npm test","text":"FAIL tests/example.test.ts\nError: boom"}' ``` --- ## Mi kerĂŒl vĂ©delem alĂĄ A tömörĂ­tƑmotor **mindig megƑrzi a következƑket:** - ✅ KĂłdblokkok (elkerĂ­tett Ă©s soron belĂŒli) - ✅ URL-ek Ă©s fĂĄjlelĂ©rĂ©si utak - ✅ JSON-struktĂșrĂĄk Ă©s strukturĂĄlt adatok - ✅ AzonosĂ­tĂłk Ă©s vĂ©dett technikai tokenek - ✅ Matematikai kifejezĂ©sek - ✅ Eszköz- Ă©s fĂŒggvĂ©nyhĂ­vĂĄsok definĂ­ciĂłi - ✅ Rendszerpromptok (lite mĂłdban) Az RTK nyerskimenet-visszaĂĄllĂ­tĂĄsa kitakarja a gyakori API-kulcsokat, bearer tokeneket, Slack-tokeneket, AWS-hozzĂĄfĂ©rĂ©si kulcsokat, jelszavakat, tokeneket Ă©s titkos adatokat, mielƑtt bĂĄrmi tartĂłsan tĂĄrolĂĄsra kerĂŒlne. --- ## TömörĂ­tĂ©si statisztikĂĄk Minden tömörĂ­tett kĂ©rĂ©s statisztikĂĄkat tartalmaz a szervernaplĂłkban: ```json { "originalTokens": 47200, "compressedTokens": 40120, "savingsPercent": 15.0, "techniquesUsed": ["collapseWhitespace", "dedupSystemPrompt"], "mode": "lite", "engine": "caveman", "compressionComboId": "coding-agent-stack", "durationMs": 0.8, "rtkRawOutputPointers": [] } ``` --- ## FĂĄzisĂŒtemterv | FĂĄzis | MĂłdok | Állapot | | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | | 1. fĂĄzis | Off, Lite | ✅ Kiadva | | 2. fĂĄzis | Standard, Aggressive, Ultra | ✅ Kiadva | | 3. fĂĄzis | RTK, Stacked, Compression Combos | ✅ Kiadva | | 4. fĂĄzis | Output Styles, SLM-szintƱ Ultra, kiĂ©rtĂ©kelĂ©si keretrendszer | ✅ Kiadva | | 4C fĂĄzis | AdaptĂ­v kontextuskeret („tĂĄrcsa”) — szĂĄmĂ­tĂĄsi motor + API (`contextBudget` a `PUT /api/settings/compression` vĂ©gponton) + irĂĄnyĂ­tĂłpulti mĂłd- Ă©s hĂĄzirendvezĂ©rlƑk | ✅ Kiadva | --- ## KöszönetnyilvĂĄnĂ­tĂĄs A Standard mĂłd tömörĂ­tĂ©si szabĂĄlyait **[JuliusBrussee](https://github.com/JuliusBrussee)** **[Caveman](https://github.com/JuliusBrussee/caveman)** (⭐ 51K+) projektje ihlette — a virĂĄlissĂĄ vĂĄlt „minek sok token, ha kevĂ©s token is elĂ©g” projekt. A Caveman beszĂĄmolĂłja szerint `~75%`-kal kevesebb kimeneti tokent hasznĂĄl, a benchmarkok ĂĄtlagĂĄban `65%`-os kimeneti megtakarĂ­tĂĄst Ă©r el, a kimeneti megtakarĂ­tĂĄs tartomĂĄnya `22-87%`, a bemenettömörĂ­tƑ eszköz pedig `~46%`-os eredmĂ©nyt nyĂșjt. Az RTK mĂłdot az **[RTK AI](https://github.com/rtk-ai)** **[RTK - Rust Token Killer](https://github.com/rtk-ai/rtk)** projektje ihlette — ez egy nagy teljesĂ­tmĂ©nyƱ parancskimenet-tömörĂ­tĂ©si projekt terminĂĄl-, build-, teszt-, git- Ă©s eszközkimenetek szƱrĂ©sĂ©re. Az RTK `60-90%`-os megtakarĂ­tĂĄsrĂłl szĂĄmol be, a README-ben szereplƑ mintamunkamenet pedig `~80%`-os megtakarĂ­tĂĄst mutat. --- ## Fejlett tömörĂ­tĂ©si rendszerek A fent ismertetett 7 mĂłdon tĂșl (a forrĂĄs elfogadja a `codex-responses` Ă©s az `omniglyph` mĂłdokat is, amelyekre ez az ĂștmutatĂł nem tĂ©r ki) az alĂĄbbi szakaszok azokat a funkciĂłkat mutatjĂĄk be, amelyek e mĂłdokon belĂŒl vagy azok mellett mƱködnek: a Tool Result Compression Ă©s a Progressive Aging az agresszĂ­v motor 1. Ă©s 2. lĂ©pĂ©se (Aggressive mĂłd, illetve egy összefƱzött feldolgozĂĄsi folyamat `aggressive` lĂ©pĂ©se), a Stacked Pipeline hatĂĄrozza meg a Stacked mĂłd mƱködĂ©sĂ©t, a Cache-Aware Compression az `aggressive` Ă©s `ultra` mĂłdokat `standard` mĂłdra fokozza vissza a gyorsĂ­tĂłtĂĄrazĂĄst hasznĂĄlĂł szolgĂĄltatĂłknĂĄl, amikor a tömörĂ­tĂ©s be van kapcsolva, a Caveman Output Mode Ă©s az Output Styles pedig alapĂ©rtelmezĂ©s szerint kikapcsolt, opcionĂĄlis rendszerprompt- utasĂ­tĂĄsok, amelyek a kĂ©rĂ©s tömörĂ­tĂ©se helyett a modell kimenetĂ©t alakĂ­tjĂĄk. ### GyorsĂ­tĂłtĂĄr-tudatos tömörĂ­tĂ©s Egyes szolgĂĄltatĂłk (pĂ©ldĂĄul az Anthropic promptgyorsĂ­tĂłtĂĄrazĂĄssal) tĂĄmogatjĂĄk a **promptgyorsĂ­tĂłtĂĄrazĂĄst**, amely lehetƑvĂ© teszi szĂĄmukra a prompt egyes rĂ©szeinek gyorsĂ­tĂłtĂĄrazĂĄsĂĄt a költsĂ©gek Ă©s a kĂ©sleltetĂ©s csökkentĂ©se Ă©rdekĂ©ben. Ha a gyorsĂ­tĂłtĂĄrazĂĄs engedĂ©lyezve van, az agresszĂ­v tömörĂ­tĂ©s valĂłjĂĄban **ronthatja** a teljesĂ­tmĂ©nyt, mert megvĂĄltoztatja a gyorsĂ­tĂłtĂĄrazott tokeneket, Ă©s ezzel Ă©rvĂ©nytelenĂ­ti a gyorsĂ­tĂłtĂĄrat. A `cachingAware.ts` modul ezt a **gyorsĂ­tĂłtĂĄrazĂĄsi környezet Ă©szlelĂ©sĂ©vel** Ă©s a **tömörĂ­tĂ©si stratĂ©gia megfelelƑ mĂłdosĂ­tĂĄsĂĄval** oldja meg. #### MƱködĂ©se 1. **GyorsĂ­tĂłtĂĄrazĂĄsi környezet Ă©szlelĂ©se** — ÁtvizsgĂĄlja a kĂ©rĂ©s törzsĂ©t `cache_control` jelölƑk utĂĄn 2. **GyorsĂ­tĂłtĂĄrazĂĄst tĂĄmogatĂł szolgĂĄltatĂłk azonosĂ­tĂĄsa** — EllenƑrzi, hogy a cĂ©lszolgĂĄltatĂł tĂĄmogatja-e a gyorsĂ­tĂłtĂĄrazĂĄst 3. **StratĂ©gia mĂłdosĂ­tĂĄsa** — Az `aggressive`/`ultra` mĂłdot `standard` mĂłdra fokozza vissza a gyorsĂ­tĂłtĂĄrazĂĄst tĂĄmogatĂł szolgĂĄltatĂłknĂĄl 4. **Rendszerprompt kihagyĂĄsa** — A rendszerpromptokat ĂĄltalĂĄban gyorsĂ­tĂłtĂĄrazzĂĄk, ezĂ©rt ezeket nem tömörĂ­ti A stratĂ©giasegĂ©d egy `deterministicOnly` jelzƑt is visszaad, de a tervkĂ©szĂ­tƑ csak a stratĂ©giĂĄt hasznĂĄlja fel — jelenleg a feldolgozĂĄsi lĂĄnc kĂ©sƑbbi rĂ©szein semmi sem olvassa ezt a jelzƑt. #### KĂłdpĂ©lda ```ts import { detectCachingContext, getCacheAwareStrategy, } from "@omniroute/open-sse/services/compression/cachingAware"; const body = { model: "anthropic/claude-sonnet-4.5", messages: [{ role: "user", content: "Hello" }], cache_control: { type: "ephemeral" }, // ← GyorsĂ­tĂłtĂĄrjelölƑ }; const ctx = detectCachingContext(body, { provider: "anthropic" }); // → { hasCacheControl: true, provider: "anthropic", targetFormat: null, isCachingProvider: true } const strategy = getCacheAwareStrategy("aggressive", ctx); // → { strategy: "standard", skipSystemPrompt: true, deterministicOnly: true } ``` #### Mikor hasznĂĄlja A gyorsĂ­tĂłtĂĄr-tudatos tömörĂ­tĂ©s **mindig be van kapcsolva** — nincs szĂŒksĂ©g konfigurĂĄciĂłra. Akkor lĂ©p mƱködĂ©sbe, amikor a tömörĂ­tĂ©s be van kapcsolva, Ă©s a cĂ©lszolgĂĄltatĂł tĂĄmogatja a promptgyorsĂ­tĂłtĂĄrazĂĄst (Anthropic, OpenAI stb.); explicit `cache_control` jelölƑk nem szĂŒksĂ©gesek — mĂĄr önmagĂĄban egy gyorsĂ­tĂłtĂĄrazĂĄst tĂĄmogatĂł szolgĂĄltatĂł is kivĂĄltja a visszafokozĂĄst, mĂ­g a jelölƑk önmagukban soha nem teszik ezt (a jelölƑk Ă©szlelĂ©se a gyorsĂ­tĂłtĂĄr telemetriĂĄjĂĄhoz szolgĂĄltat adatokat, nem a stratĂ©giai döntĂ©shez). ### ProgresszĂ­v öregĂ­tĂ©s A hosszĂș beszĂ©lgetĂ©sekben sok ĂŒzenetfordulĂł halmozĂłdik fel, de a rĂ©gebbi fordulĂłk egyre kevĂ©sbĂ© relevĂĄnsak. A `progressiveAging.ts` modul **a fordulĂłtĂĄvolsĂĄg alapjĂĄn egyszerƱsĂ­ti az ĂŒzeneteket** (a tĂĄvolsĂĄgot a beszĂ©lgetĂ©s vĂ©gĂ©tƑl mĂ©rve). A mellĂ©kelt alapĂ©rtelmezĂ©sekkel (`verbatim: 2, light: 2, moderate: 3`): - **UtolsĂł 2 fordulĂł (tĂĄvolsĂĄg ≀ 2)**: VĂĄltoztatĂĄs nĂ©lkĂŒl marad - **3-as tĂĄvolsĂĄg**: Ɛsember-tömörĂ­tĂ©s (a töltelĂ©kszavak eltĂĄvolĂ­tĂĄsa) - **4-es vagy nagyobb tĂĄvolsĂĄg**: Az asszisztens ĂŒzeneteit összegzi; a felhasznĂĄlĂłi ĂŒzeneteket az elsƑ sorukra rövidĂ­ti, legfeljebb 120 karakterre; a többi szerepkört vĂĄltozatlanul hagyja. A rendszerpromptok, a mĂĄr öregĂ­tett ĂŒzenetek Ă©s a legutĂłbbi felhasznĂĄlĂłi ĂŒzenet a tĂĄvolsĂĄgtĂłl fĂŒggetlenĂŒl mindig vĂĄltoztatĂĄs nĂ©lkĂŒl maradnak. Semmit sem dob el teljesen, a `light` sĂĄv pedig nem Ă©rhetƑ el a mellĂ©kelt alapĂ©rtelmezĂ©sekkel (a `light` Ă©rtĂ©ke megegyezik a `verbatim` Ă©rtĂ©kĂ©vel). #### KĂłdpĂ©lda ```ts import { applyAging } from "@omniroute/open-sse/services/compression/progressiveAging"; const messages = [ { role: "system", content: "You are a helpful assistant" }, { role: "user", content: "What is 2+2?" }, { role: "assistant", content: "4" }, // ... tovĂĄbbi 50 fordulĂł ... ]; const { messages: aged, saved } = applyAging(messages, { verbatim: 3, // utolsĂł 3 fordulĂł: vĂĄltoztatĂĄs nĂ©lkĂŒl light: 8, // tĂĄvolsĂĄg <= 8: könnyƱ tömörĂ­tĂ©s moderate: 20, // tĂĄvolsĂĄg <= 20: Ƒsember-tömörĂ­tĂ©s fullSummary: 5, // a tĂ­pus megköveteli, de a sĂĄvkezelƑ kĂłd nem olvassa // tĂĄvolsĂĄg > 20: összegzĂ©s (asszisztens) / az elsƑ sor megtartĂĄsa (felhasznĂĄlĂł) }); // saved = a megtakarĂ­tott tokenek szĂĄma ``` #### Mikor hasznĂĄlja A progresszĂ­v öregĂ­tĂ©s **mindig be van kapcsolva** az `aggressive` mĂłdban — ez a `compressAggressive()` 2. lĂ©pĂ©se. Az Ultra mĂłd nem futtatja. KĂŒlönösen hatĂ©kony a következƑ esetekben: - Hosszan futĂł programozĂĄsi munkamenetek - Többnapos beszĂ©lgetĂ©sek - Sok eszközhĂ­vĂĄst tartalmazĂł ĂŒgynöki munkafolyamatok ### Ɛsember kimeneti mĂłd Az Ƒsember kimeneti mĂłd **rendszerprompt-utasĂ­tĂĄsokat** ad hozzĂĄ, amelyek tömör kimenetet kĂ©rnek magĂĄtĂłl a modelltƑl — a `lite` szint tömör, de teljes mondatokat megƑrzƑ vĂĄlaszokat kĂ©r, a `full` arra kĂ©ri, hogy „vĂĄlaszolj tömören, mint egy okos Ƒsember”, az `ultra` pedig tĂĄvirati stĂ­lusĂș kimenetet kĂ©r; az utasĂ­tĂĄsok csak kĂ©rik ezt, garantĂĄlni nem tudjĂĄk. A kĂ©rĂ©sek az `applyOutputStyles()` fĂŒggvĂ©nyen (`open-sse/services/compression/outputStyles/apply.ts`) keresztĂŒl kapjĂĄk meg ezeket: az `open-sse/handlers/chatCore.ts` elƑször a visszafelĂ© kompatibilitĂĄsi segĂ©drĂ©teggel oldja fel a kivĂĄlasztĂĄst (`resolveOutputStyleSelection()` az `open-sse/services/compression/outputStyles/backCompat.ts` fĂĄjlban), amely ĂŒres `outputStyles` esetĂ©n az engedĂ©lyezett `cavemanOutputMode` beĂĄllĂ­tĂĄst a `terse-prose` kimeneti stĂ­lusra kĂ©pezi le a `cavemanOutputMode.intensity` intenzitĂĄssal (lĂĄsd alĂĄbb a VisszafelĂ© kompatibilitĂĄs cĂ­mƱ rĂ©szt); a nem ĂŒres `outputStyles` kivĂĄlasztĂĄst vĂĄltoztatĂĄs nĂ©lkĂŒl hasznĂĄlja, Ă©s ekkor a `cavemanOutputMode.enabled` Ă©s az `intensity` nincs hatĂĄssal, mĂ­g az `autoClarity` kapcsolĂłja tovĂĄbbra is Ă©rvĂ©nyesĂŒl. Az `outputMode.ts` tartalmazza az utasĂ­tĂĄsszövegeket (`CAVEMAN_INSTRUCTION_BY_LANGUAGE`), a tartalmi megkerĂŒlĂ©st Ă©s az elhelyezĂ©si segĂ©dfĂŒggvĂ©nyt, amelyet a beszĂșrĂĄs hasznĂĄl; a sajĂĄt `applyCavemanOutputMode()` beszĂșrĂłjĂĄnak nincs Ă©les környezetben hasznĂĄlt hĂ­vĂłja. #### MƱködĂ©se Ez a mĂłd nem tömörĂ­ti a bemenetet. Egy utasĂ­tĂĄsblokkot ad a rendszerprompthoz (lĂĄsd alĂĄbb: Hogyan mƱködik a beillesztĂ©s), Ă©s a kĂ©rĂ©shez kivĂĄlasztott bĂĄrmely bemenettömörĂ­tĂ©si mĂłd ezutĂĄn tovĂĄbbra is lefut az immĂĄr blokkot tartalmazĂł törzsön. A minden szint vĂ©gĂ©n szereplƑ közös korlĂĄtozĂĄsi zĂĄradĂ©k elƑtt az angol `full` szint szövege: > "VĂĄlaszolj tömören, mint okos Ƒsember. Hagyd el a nĂ©velƑket (a/an/the), a töltelĂ©kszavakat (just/really/basically/actually/simply), az udvariaskodĂĄst Ă©s az ĂłvatoskodĂĄst. TöredĂ©kek rendben. Rövid szinonimĂĄk (big, nem extensive; fix, nem implement). Minden technikai tartalmat, kĂłdot, hibĂĄt, URL-t Ă©s azonosĂ­tĂłt Ƒrizz meg pontosan." Ez kĂŒlönösen jĂłl mƱködik a következƑkhöz: - KĂłdgenerĂĄlĂĄs (tömörebb kimenet = kevesebb token) - Gyors kĂ©rdĂ©sek Ă©s vĂĄlaszok (nincs szĂŒksĂ©g rĂ©szletes magyarĂĄzatokra) - Kötegelt feldolgozĂĄs (maximĂĄlis ĂĄteresztƑkĂ©pessĂ©g) #### Mikor hasznĂĄld A caveman kimeneti mĂłd hasznĂĄlata **kĂŒlön engedĂ©lyezendƑ**. Bekapcsolt tömörĂ­tĂ©s mellett (`enabled: true`, a Compression Settings oldalon lĂ©vƑ fƑkapcsolĂł bekapcsolva) a `cavemanOutputMode.enabled` beĂĄllĂ­tĂĄssal kapcsolhatĂł be; az `intensity` vĂĄlasztja ki a `lite`, `full` vagy `ultra` szintet: ```json { "enabled": true, "cavemanOutputMode": { "enabled": true, "intensity": "full" } } ``` Egy tömörĂ­tĂ©si kombinĂĄciĂł **Output Mode** kapcsolĂłja (`outputMode`, a szint pedig az `outputModeIntensity`) ugyanezt a kapcsolĂłt ĂĄllĂ­tja be azokra a kĂ©rĂ©sekre, amelyekre a kombinĂĄciĂł vonatkozik, az `omniroute_set_compression_engine` MCP-eszköz pedig a logikai `outputMode` argumentumĂĄn keresztĂŒl Ă­rja azt. Egy nem ĂŒres `outputStyles`-kivĂĄlasztĂĄs elsƑbbsĂ©get Ă©lvez ezzel a kapcsolĂłval szemben. Az irĂĄnyĂ­tĂłpulton a **Terse prose** kimeneti stĂ­lus engedĂ©lyezĂ©se ugyanezt a blokkot illeszti be (lĂĄsd alĂĄbb: Kimeneti stĂ­lusok). ### Kimeneti stĂ­lusok (katalĂłgus) A fenti caveman kimeneti mĂłd a **rĂ©gi, egyetlen stĂ­lust hasznĂĄlĂł Ăștvonal**. A 4. fĂĄzis ezt komponĂĄlhatĂł kimeneti stĂ­lusok katalĂłgusĂĄvĂĄ ĂĄltalĂĄnosĂ­totta: `OUTPUT_STYLE_CATALOG` az `open-sse/services/compression/outputStyles/catalog.ts` fĂĄjlban. Minden stĂ­lus egy rendszerprompt- utasĂ­tĂĄs, amely olcsĂłbb kimenetet kĂ©r magĂĄtĂłl a modelltƑl; a stĂ­lusok egyĂŒtt is engedĂ©lyezhetƑk, Ă©s katalĂłgusbeli sorrendben lesznek beillesztve. | StĂ­lus | `id` | Mit csinĂĄl | UtasĂ­tĂĄsok nyelvei | | --------------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | Tömör prĂłza | `terse-prose` | Elhagyja a töltelĂ©kszavakat/nĂ©velƑket/ĂłvatoskodĂĄst; a technikai tartalmat pontosan megƑrzi. Ugyanaz a szöveg, mint a rĂ©gi caveman kimeneti mĂłdban (hivatkozva, nem ismĂ©telten leĂ­rva). | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | Kevesebb kĂłd | `less-code` | YAGNI-lĂ©tra: a legkisebb mƱködƑ mĂłdosĂ­tĂĄs, nem kĂ©rt absztrakciĂłk nĂ©lkĂŒl. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | LĂłfarok (lusta senior fejlesztƑ) | `ponytail` | „A legjobb kĂłd az, amelyet sosem Ă­rtak meg”: ĂșjrafelhasznĂĄlĂĄs > ĂșjraĂ­rĂĄs, kivĂĄltĂł ok > tĂŒnet, legrövidebb mƱködƑ diff. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | ADHD-m van (cselekvĂ©sközpontĂș) | `i-have-adhd` | ElƑször a mƱvelet (parancs/Ăștvonal/kĂłdrĂ©szlet a prĂłza elƑtt), szĂĄmozott Ă©s korlĂĄtozott lĂ©pĂ©sek, EGY konkrĂ©t következƑ lĂ©pĂ©s, nincs bevezetĂ©s/összefoglalĂĄs/lezĂĄrĂĄs. Az [ayghri/i-have-adhd](https://github.com/ayghri/i-have-adhd) alapjĂĄn adaptĂĄlva (MIT). | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | Antislop UI-szƱrƑ | `antislop-ui` | Minden vizuĂĄlis technikĂĄnak ĂĄt kell mennie egy cĂ©lszerƱsĂ©gi teszten (hierarchia, identitĂĄs, olvashatĂłsĂĄg); nincsenek alapĂ©rtelmezett szĂ­nĂĄtmenetek/ĂŒveghatĂĄs/ragyogĂĄs, korlĂĄtozott paletta, nincsenek sablonelrendezĂ©sek. MindkĂ©t antislop stĂ­lus hozzĂĄad egy nem mƱködƑ vezĂ©rlƑelemeket Ă©s kitalĂĄlt ĂĄllĂ­tĂĄsokat tiltĂł korlĂĄtozĂĄst. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | Antislop szöveg- Ă©s emberközpontĂș szƱrƑ | `antislop-copy` | KonkrĂ©t szöveg (nincs gondolatjel, ĂĄltalĂĄnos CTA, divatszĂł, chatbothoz illƑ lezĂĄrĂĄs vagy kitalĂĄlt tĂ©ny), valamint emberekre vonatkozĂł szabĂĄlyok: WCAG AA kontraszt, lĂĄthatĂł fĂłkusz, billentyƱzetes elĂ©rhetƑsĂ©g, ĂŒres/betöltĂ©si/hibaĂĄllapotok, mobilos ĂșjratördelĂ©s. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | Tömör CJK (文蚀) | `terse-cjk` | `full`/`ultra` vĂĄlasz klasszikus kĂ­nai nyelven (文蚀); a `lite` csak rövid vĂĄlaszokat kĂ©r funkciĂłszavak, udvariaskodĂĄs vagy dĂ­szĂ­tĂ©s nĂ©lkĂŒl. | zh (terĂŒleti beĂĄllĂ­tĂĄshoz kötött, lĂĄsd alĂĄbb) | Minden stĂ­lus hĂĄrom intenzitĂĄsi szinttel Ă©rkezik — `lite`, `full`, `ultra` —, Ă©s minden szint a közös korlĂĄtozĂĄsi zĂĄradĂ©kkal vĂ©gzƑdik (`SHARED_BOUNDARIES` az `outputMode.ts` fĂĄjlban), amely pontosan megƑrzi a kĂłdblokkokat, fĂĄjlĂștvonalakat, parancsokat, hibĂĄkat Ă©s URL-eket. A `terse-prose` Ă©s `terse-cjk` szintek szövegei az azonosĂ­tĂłkat is hozzĂĄadjĂĄk ehhez a listĂĄhoz. A `terse-cjk` kĂ©t helyen is a `zh` terĂŒleti beĂĄllĂ­tĂĄshoz van kötve. A Compression Settings oldal csak akkor jelenĂ­ti meg a sorĂĄt, ha az irĂĄnyĂ­tĂłpult felhasznĂĄlĂłi felĂŒletĂ©nek nyelve kĂ­nai (`zh-CN` vagy `zh-TW`), az `applyOutputStyles()` pedig csak akkor illeszti be, ha a kĂ©rĂ©s feloldott nyelve (lĂĄsd alĂĄbb: NyelvvĂĄlasztĂĄs) `zh`. A sor elrejtĂ©se nem törli a mentett `terse-cjk`-kivĂĄlasztĂĄst: a beĂĄllĂ­tĂĄsi API bĂĄrmely stĂ­lusazonosĂ­tĂłt elfogad, Ă©s mĂĄs stĂ­lusok mentĂ©se az oldalon megtartja azt. A kĂ©rĂ©s feldolgozĂĄsakor az `applyOutputStyles()` nyelvi ellenƑrzĂ©se az egyetlen terĂŒleti korlĂĄtozĂĄs. #### Hogyan mƱködik a beillesztĂ©s Az `applyOutputStyles()` (`open-sse/services/compression/outputStyles/apply.ts`) feloldja a kivĂĄlasztĂĄst a katalĂłgus alapjĂĄn (az ismeretlen azonosĂ­tĂłk Ă©s a terĂŒleti beĂĄllĂ­tĂĄssal nem egyezƑ stĂ­lusok el lesznek vetve, ez soha nem eredmĂ©nyez hibĂĄt; ha a kivĂĄlasztĂĄs feloldĂĄsa egyetlen stĂ­lust sem eredmĂ©nyez, a törzs vĂĄltozatlan marad, Ă©s `no_styles` okkal lesz kihagyva), a kivĂĄlasztott utasĂ­tĂĄsokat katalĂłgusbeli sorrendben összefƱzi, **egyszer** hozzĂĄfƱzi a korlĂĄtokra vonatkozĂł zĂĄradĂ©kot (valamint a biztonsĂĄgi zĂĄradĂ©kot, a `SAFETY_BOUNDARIES` Ă©rtĂ©kĂ©t vagy annak fordĂ­tĂĄsĂĄt, ha a `less-code` vagy a `ponytail` van kivĂĄlasztva), Ă©s a blokkot egyetlen idempotenciajelölƑvel (`[OmniRoute Output Styles]`) kezdi, Ă­gy az ismĂ©telt alkalmazĂĄs nem jĂĄr mĂłdosĂ­tĂĄssal. Ha a feloldott nyelvhez (lĂĄsd alĂĄbb a NyelvvĂĄlasztĂĄs rĂ©szt) lĂ©tezik fordĂ­tĂĄs, az angol helyett a lokalizĂĄlt utasĂ­tĂĄs kerĂŒl beillesztĂ©sre. Nem ĂŒres `messages` tömböt tartalmazĂł törzsön az idempotencia-ellenƑrzĂ©s a tartalomalapĂș megkerĂŒlĂ©s elƑtt fut le: ha az `[OmniRoute Output Styles]` jelölƑ mĂĄr szerepel a felsƑ szintƱ `system` mezƑben (amely lehet karakterlĂĄnc vagy tartalomblokkokbĂłl ĂĄllĂł tömb), illetve karakterlĂĄnc tĂ­pusĂș tartalommal rendelkezƑ rendszerĂŒzenetben, a törzs `already_applied` okkal vĂĄltozatlan marad, Ă©s kulcsszĂł-ellenƑrzĂ©s sem fut le. EllenkezƑ esetben egy tartalomalapĂș megkerĂŒlĂ©s (`shouldBypassCavemanOutputMode()` az `open-sse/services/compression/outputMode.ts` fĂĄjlban) ellenƑrzi az utolsĂł hĂĄrom ĂŒzenet szövegĂ©t, a szerepĂŒktƑl fĂŒggetlenĂŒl, Ă©s az egĂ©sz fordulĂłra kihagyja a stĂ­lusokat, ha a szöveg megfelel a biztonsĂĄgi, visszafordĂ­thatatlan mƱveletekre vagy pontosĂ­tĂĄsra vonatkozĂł kulcsszavaknak, illetve egy sorrendĂ©rzĂ©keny sorozatnak: `first`, `then`, `after that`, `before`, `rollback` vagy `backup`, amelyet 240 karakteren belĂŒl `delete`, `drop`, `migrate`, `deploy` vagy `release` követ. A megkerĂŒlĂ©s addig fut, amĂ­g az **Automatikus egyĂ©rtelmƱsĂ­tĂ©si megkerĂŒlĂ©s** kapcsolĂł (`cavemanOutputMode.autoClarity`, alapĂ©rtelmezĂ©s szerint bekapcsolva) be van kapcsolva; a kapcsolĂł kikapcsolĂĄsĂĄval a kulcsszĂł-ellenƑrzĂ©s kimarad. Ha a megkerĂŒlĂ©s ĂĄtengedi a fordulĂłt, a `placeSystemInstruction()` (ugyanabban a fĂĄjlban), amely soha nem hoz lĂ©tre Ășj `messages[0]` elemet, a blokkot az alĂĄbbiak közĂŒl az elsƑ megtalĂĄlt helyre teszi: 1. Egy kezdƑ, karakterlĂĄnc tĂ­pusĂș tartalommal rendelkezƑ rendszerĂŒzenet: a blokk annak szövege utĂĄn lesz hozzĂĄfƱzve. 2. A felsƑ szintƱ `system` mezƑ: a blokk egy karakterlĂĄnc szövege utĂĄn lesz hozzĂĄfƱzve, vagy Ășj szövegblokkĂ©nt kerĂŒl egy tartalomblokkokbĂłl ĂĄllĂł tömbbe. 3. Az elsƑ kĂ©sƑbbi, karakterlĂĄnc tĂ­pusĂș tartalommal rendelkezƑ rendszerĂŒzenet: a blokk annak szövege utĂĄn lesz hozzĂĄfƱzve. 4. Ha a fentiek egyike sem talĂĄlhatĂł: a blokk a `messages` vĂ©gĂ©n lĂ©trehozott Ășj rendszerĂŒzenetbe kerĂŒl. `messages` tömb nĂ©lkĂŒli (vagy ĂŒres tömbbel rendelkezƑ) törzsön nem fut tartalomalapĂș megkerĂŒlĂ©s, Ă©s a felsƑ szintƱ `system` mezƑt sem veszi figyelembe a rendszer. A blokk egy karakterlĂĄnc tĂ­pusĂș `instructions` mezƑ szövege utĂĄn lesz hozzĂĄfƱzve, kivĂ©ve, ha az a mezƑ mĂĄr tartalmazza az `[OmniRoute Output Styles]` jelölƑt; ebben az esetben a törzs `already_applied` okkal vĂĄltozatlan marad. Ha a törzs nem rendelkezik karakterlĂĄnc tĂ­pusĂș `instructions` mezƑvel, de tartalmaz `input` mezƑt (karakterlĂĄncot vagy tömböt), akkor a blokk lesz az `instructions` Ă©rtĂ©ke, felĂŒlĂ­rva a mezƑ esetleges nem karakterlĂĄnc tĂ­pusĂș Ă©rtĂ©kĂ©t. Az olyan törzs, amely sem karakterlĂĄnc tĂ­pusĂș `instructions` mezƑvel, sem karakterlĂĄnc vagy tömb tĂ­pusĂș `input` mezƑvel nem rendelkezik, vĂĄltozatlan marad, Ă©s `no_messages` okkal lesz kihagyva. #### EngedĂ©lyezĂ©s Az irĂĄnyĂ­tĂłpulton: **TömörĂ­tĂ©si kontextus → TömörĂ­tĂ©si beĂĄllĂ­tĂĄsok** (`/dashboard/context/settings`), a Kimeneti stĂ­lusok szakaszban: stĂ­lusonkĂ©nt egy sor, egy be-/kikapcsolĂłval Ă©s egy szintvĂĄlasztĂłval. A stĂ­lusok addig kerĂŒlnek beillesztĂ©sre, amĂ­g maga a tömörĂ­tĂ©s be van kapcsolva (az oldal `enabled` fƑkapcsolĂłja). Az **Automatikus egyĂ©rtelmƱsĂ­tĂ©si megkerĂŒlĂ©s** kapcsolĂł a **Caveman** oldalon (`/dashboard/context/caveman`), annak **Kimeneti mĂłd** kĂĄrtyĂĄjĂĄn talĂĄlhatĂł. Programozott hasznĂĄlat esetĂ©n a tömörĂ­tĂ©si konfigurĂĄciĂł a következƑkĂ©ppen tĂĄrolja a kivĂĄlasztĂĄst: ```json { "outputStyles": [ { "id": "i-have-adhd", "level": "full" }, { "id": "less-code", "level": "lite" } ] } ``` VisszafelĂ© kompatibilitĂĄs: amĂ­g az `outputStyles` ĂŒres, a rĂ©gi `cavemanOutputMode.enabled` beĂĄllĂ­tĂĄs a `terse-prose` stĂ­lusra kĂ©pezƑdik le a `cavemanOutputMode.intensity` intenzitĂĄssal. Ekkor a blokk az `[OmniRoute Output Styles]` jelölƑvel kezdƑdik, mĂ­g a rĂ©gi `applyCavemanOutputMode()` beillesztƑ az `[OmniRoute Caveman Output Mode]` jelölƑt Ă­rta. A jelölƑ alatt a szöveg megegyezik a rĂ©gi beillesztĂ©s szövegĂ©vel en, pt-BR, es, de, fr, it, ru, id Ă©s vi nyelven; ja Ă©s zh nyelven egy tovĂĄbbi szĂłközt tartalmaz a korlĂĄtokra vonatkozĂł zĂĄradĂ©k elƑtt. A `terse-prose` rendelkezik pt-BR, es, de, fr, it, ru, zh, ja, id Ă©s vi fordĂ­tĂĄssal, ezĂ©rt a `hu` feloldott nyelvƱ kĂ©rĂ©s angol szöveget kap ott, ahol a rĂ©gi beillesztƑ a magyar vĂĄltozatot hasznĂĄlta. A kimeneti stĂ­lus nyelvĂ©nek kivĂĄlasztĂĄsa (`resolveOutputStyleLanguage()` az `outputStyles/apply.ts` fĂĄjlban): ha a `languageConfig.enabled` be van kapcsolva, az `autoDetect` mintĂĄt vesz a kĂ©rĂ©s `messages` tömbjĂ©nek legutĂłbbi, szöveget tartalmazĂł felhasznĂĄlĂłi ĂŒzenetĂ©bƑl (karakterlĂĄnc tĂ­pusĂș tartalombĂłl vagy a tartalomrĂ©szek `text` Ă©rtĂ©kĂ©bƑl), Ă©s lefuttatja rajta a Caveman motor Ă©rzĂ©kelƑjĂ©t (`detectCompressionLanguage()`). Az Ă©rzĂ©kelƑ `zh` Ă©rtĂ©ket ad vissza a Han-Ă­rĂĄsjegyeket, de kanĂĄt nem tartalmazĂł szövegekhez; egyĂ©bkĂ©nt az `it`, `pt-BR`, `es`, `de`, `fr`, `ru`, `ja`, `hu` Ă©s `id` közĂŒl azt adja vissza, amelyiknĂ©l a legtöbb utalĂĄs egyezik, Ă©s `en` Ă©rtĂ©ket, ha nincs egyezĂ©s — az osztĂĄlyozhatatlan szöveg mindig angol lesz, soha nem a `defaultLanguage`, a `vi` nyelvet pedig soha nem Ă©rzĂ©keli, noha a stĂ­lusokhoz tartozik `vi` nyelvƱ szöveg. A Responses API törzse az `input` mezƑben tĂĄrolja a fordulĂłit, amelybƑl nem törtĂ©nik mintavĂ©tel, Ă­gy az elƑször a `defaultLanguage`, majd az angol nyelvet kapja. Ha a `messages` egyetlen felhasznĂĄlĂłi ĂŒzenete sem tartalmaz szöveget, vagy az `autoDetect` ki van kapcsolva, a `defaultLanguage`, majd az angol nyelv lesz alkalmazva. Ha a `languageConfig.enabled` ki van kapcsolva, a nyelv angol — kivĂ©ve, ha egy tömörĂ­tĂ©si kombinĂĄciĂł vonatkozik a kĂ©rĂ©sre (a kĂ©rĂ©s ĂștvĂĄlasztĂĄsi kombinĂĄciĂłjĂĄhoz rendelt kombinĂĄciĂł, vagy az alapĂ©rtelmezett tömörĂ­tĂ©si kombinĂĄciĂł, amelyre a chatCore visszaĂĄll a beĂ©pĂ­tett, rĂ©tegzett feldolgozĂĄsi folyamat esetĂ©n): egy kombinĂĄciĂł alkalmazĂĄsa az adott kĂ©rĂ©shez bekapcsolja a `languageConfig.enabled` beĂĄllĂ­tĂĄst, Ă©s a kombinĂĄciĂł nyelvi csomagjai alapjĂĄn ĂĄllĂ­tja be a `defaultLanguage` Ă©rtĂ©kĂ©t (a mentett Ă©rtĂ©ket, ha az szerepel a kombinĂĄciĂł csomagjai között, egyĂ©bkĂ©nt a kombinĂĄciĂł elsƑ csomagjĂĄt, amely alapĂ©rtelmezĂ©s szerint `en`), miközben a mentett `autoDetect` (alapĂ©rtelmezĂ©s szerint bekapcsolva) tovĂĄbbra is Ă©rvĂ©nyes. A Caveman bemeneti motor eltĂ©rƑen vĂĄlasztja ki a szabĂĄlycsomag nyelvĂ©t — szövegrĂ©szenkĂ©nt, kikapcsolt automatikus Ă©rzĂ©kelĂ©s esetĂ©n pedig az `enabledPacks` alapjĂĄn korlĂĄtozva. A stĂ­lus × nyelv mĂĄtrixot a `tests/unit/compression/output-styles-i18n-matrix.test.ts` rögzĂ­ti: minden katalĂłgusstĂ­lushoz kell tartoznia egy bejegyzĂ©snek a teszt `BASELINE_LANGUAGES` Ă©rtĂ©kĂ©ben; a terĂŒleti beĂĄllĂ­tĂĄshoz nem kötött stĂ­lusokhoz pt-BR fordĂ­tĂĄst kell biztosĂ­tani (a terĂŒleti beĂĄllĂ­tĂĄshoz kötött `terse-cjk` mentesĂŒl e szabĂĄly alĂłl), kivĂ©ve, ha a stĂ­lus szerepel a `KNOWN_ENGLISH_ONLY` listĂĄban, amely kizĂĄrĂłlag olyan stĂ­lusokat tartalmazhat, amelyekhez egyĂĄltalĂĄn nincs fordĂ­tĂĄs — ha egy felsorolt stĂ­lushoz bĂĄrmilyen fordĂ­tĂĄs tartozik, a teszt sikertelen lesz; tovĂĄbbĂĄ egy stĂ­lus tesztje akkor is sikertelen, ha elveszĂ­t egy olyan nyelvet, amely szerepel a hozzĂĄ tartozĂł `BASELINE_LANGUAGES` bejegyzĂ©sben. Új stĂ­lus hozzĂĄadĂĄsĂĄhoz lĂĄsd: [EXTENDING_COMPRESSION.md](./EXTENDING_COMPRESSION.md#adding-an-output-style). ### EszközeredmĂ©nyek tömörĂ­tĂ©se Az `open-sse/services/compression/toolResultCompressor.ts` fĂĄjlban talĂĄlhatĂł `compressToolResult()` **5 stratĂ©giĂĄval** tömörĂ­ti az eszközeredmĂ©nyek szövegĂ©t. Ezeket ebben a sorrendben prĂłbĂĄlja ki, Ă©s az elsƑ olyan engedĂ©lyezett stratĂ©gia hatĂĄrozza meg az eredmĂ©nyt, amelynek ellenƑrzĂ©se illeszkedik a tartalomra: 1. **`fileContent`**: legalĂĄbb 3 sorbĂłl ĂĄllĂł tartalom, amelyben legalĂĄbb egy sor — a kezdƑ behĂșzĂĄst figyelmen kĂ­vĂŒl hagyva — `import `, `export `, `function `, `class `, `const `, `let `, `var ` vagy `return ` karakterlĂĄnccal (a kulcsszĂł Ă©s egy szĂłköz), illetve `if`, `for` vagy `while` karakterlĂĄnccal kezdƑdik, amelyet `(` vagy ` (` követ; megtartja az elsƑ 20 Ă©s az utolsĂł 5 sort, a kihagyott közĂ©psƑ rĂ©szt pedig megjelöli. 2. **`grepSearch`**: olyan tartalom, amelyben legalĂĄbb egy `::` alakĂș sor talĂĄlhatĂł, ahol az elsƑ kettƑspont elƑtti szövegben nincs tĂ©rköz; csak ezeket a sorokat tartja meg, legfeljebb 30-at, majd feltĂŒnteti a tovĂĄbbi talĂĄlatok szĂĄmĂĄt Ă©s az egyezƑ fĂĄjlok listĂĄjĂĄt; minden mĂĄs sort eldob. MĂĄr egyetlen ilyen sor elegendƑ a stratĂ©gia aktivĂĄlĂĄsĂĄhoz, ezĂ©rt egy idƑbĂ©lyeggel, pĂ©ldĂĄul `12:30:45` Ă©rtĂ©kkel kezdƑdƑ naplĂłsor is talĂĄlatnak szĂĄmĂ­t. 3. **`shellOutput`**: az olyan kimenetbƑl, amely ANSI CSI-szekvenciĂĄt tartalmaz (`ESC[`, majd szĂĄmjegyek vagy pontosvesszƑk, vĂ©gĂŒl egy betƱ, mint a szĂ­nkĂłdokban), vagy amelyben a szöveg bĂĄrmely rĂ©szĂ©n egy `$` jelet tĂ©rköz követ, eltĂĄvolĂ­tja ezeket a szekvenciĂĄkat (a többi escape-szekvenciĂĄt, pĂ©ldĂĄul az `ESC[?25l` Ă©rtĂ©ket vagy egy OSC-ablakcĂ­m-szekvenciĂĄt megtartja), Ă©s az utolsĂł 50 sort tartja meg, az egymĂĄst követƑ ismĂ©tlƑdƑ sorokat összevonva. Mivel ez az ellenƑrzĂ©s a `json` Ă©s az `errorMessage` elƑtt fut le, az ilyen `$` jelet tartalmazĂł JSON- vagy hibakimenet soha nem jut el hozzĂĄjuk, amĂ­g a `shellOutput` be van kapcsolva. 4. **`json`**: a 2 000 karakternĂ©l hosszabb, `{` vagy `[` karakterrel kezdƑdƑ (az opcionĂĄlis tĂ©rközök utĂĄn), sikeresen elemezhetƑ JSON-adat rövidĂ­tett összegzĂ©st kap: a 7-nĂ©l több elemet tartalmazĂł tömbbƑl megmarad az elsƑ 5 Ă©s az utolsĂł 2 elem, valamint az elemek teljes szĂĄma; egy objektumbĂłl pedig az elsƑ 20 kulcs marad meg, miközben minden beĂĄgyazott objektum- vagy tömbĂ©rtĂ©ket egy `{
N keys}` helyƑrzƑ vĂĄlt fel (tömb esetĂ©n N a tömb hossza), Ă©s egy `_remaining__keys` jelölƑ mutatja az elsƑ 20 utĂĄn eldobott kulcsok szĂĄmĂĄt. A skalĂĄrĂ©rtĂ©keket teljes egĂ©szĂ©ben ĂĄtmĂĄsolja, Ă­gy egy legfeljebb 20 kulcsbĂłl ĂĄllĂł, beĂĄgyazott Ă©rtĂ©kek nĂ©lkĂŒli objektum csupĂĄn Ășj behĂșzĂĄst kap — a tömörĂ­tett vĂĄltozat karaktereinek szĂĄma nƑ, ezĂ©rt vĂĄltozatlan marad. 5. **`errorMessage`**: az olyan kimenet, amely bĂĄrhol Ă©s a kis- Ă©s nagybetƱktƑl fĂŒggetlenĂŒl tartalmazza az `error:`, `error ` (a szĂł, amelyet szĂłköz követ, pĂ©ldĂĄul `no error found`), `[error]`, `exception:`, `exception `, `[exception]` vagy `traceback` karakterlĂĄncot, megtartja az elsƑ sort, a következƑ 10 sort Ă©s az utolsĂł 3 sort, a közöttĂŒk lĂ©vƑ sorokat pedig egy `
 [N frames elided] 
` jelölƑvel helyettesĂ­ti. A jelölƑ csak akkor jelenik meg, ha az elsƑ sort több mint 13 sor követi, ezĂ©rt a legfeljebb 14 soros hibakimenet nem rövidĂŒl (12 vagy 13 sor esetĂ©n az utolsĂł 3 sor megismĂ©tli a mĂĄr megtartott sorokat). Ha egy stratĂ©gia illeszkedik, a kĂ©sƑbbi stratĂ©giĂĄkat mĂĄr nem prĂłbĂĄlja ki, mĂ©g akkor sem, ha az adott stratĂ©gia semmit sem takarĂ­t meg. Ha az illeszkedƑ stratĂ©gia becslĂ©s szerint egyetlen tokent sem takarĂ­t meg (hossz Ă· 4, felfelĂ© kerekĂ­tve) — pĂ©ldĂĄul egy legfeljebb 25 soros, kĂłdszerƱ fĂĄjl vagy egy 2 000 karakternĂ©l hosszabb, legfeljebb 7 elembƑl ĂĄllĂł JSON-tömb esetĂ©n —, az agresszĂ­v motor megtartja az eredeti eszközeredmĂ©nyt: mindkĂ©t hĂ­vĂł (`compressAggressive()` Ă©s `compressAnthropicToolResultBlock()`) megtartja az eredetit, ha a `saved` Ă©rtĂ©ke 0 vagy kisebb, miközben maga a `compressToolResult()` tovĂĄbbra is az adott stratĂ©gia kimenetĂ©t adja vissza. Az eszközeredmĂ©ny lĂ©pĂ©se nem feltĂ©tlenĂŒl a vĂ©gsƑ döntĂ©s: a motor tartalĂ©k összegzƑje tovĂĄbbra is lerövidĂ­theti a 8 192 karakternĂ©l hosszabb `tool` vagy `function` ĂŒzeneteket (`maxTokensPerMessage`, 2 048, szorozva 4-gyel). #### Mikor Ă©rdemes hasznĂĄlni Az eszközeredmĂ©nyek tömörĂ­tĂ©se az agresszĂ­v motor 1. lĂ©pĂ©se (`compressAggressive()` az `open-sse/services/compression/aggressive.ts` fĂĄjlban), ezĂ©rt Aggressive mĂłdban Ă©s egy halmozott folyamat `aggressive` lĂ©pĂ©sĂ©ben fut. TömörĂ­ti az OpenAI-formĂĄtumĂș `tool` Ă©s `function` ĂŒzeneteket, valamint az Anthropic `tool_result` blokkokban lĂ©vƑ szöveget. Minden stratĂ©giĂĄnak sajĂĄt kapcsolĂłja van az `aggressive.toolStrategies` alatt, Ă©s alapĂ©rtelmezĂ©s szerint mindegyik be van kapcsolva. Az irĂĄnyĂ­tĂłpulton a kapcsolĂłk a Caveman oldal **Advanced** nĂ©zetĂ©ben talĂĄlhatĂłk, amikor a tömörĂ­tĂ©s be van kapcsolva, Ă©s az alapĂ©rtelmezett mĂłd Aggressive. ### Halmozott folyamat A halmozott mĂłd **több motort futtat egymĂĄs utĂĄn** — ĂĄltalĂĄban elƑször az RTK-t (60–90%-os megtakarĂ­tĂĄs az eszközkimeneten), majd a Cavemant a fennmaradĂł szövegen (~46%-os bemeneti megtakarĂ­tĂĄs). Ezek egyĂŒtt a **78–95%-os alkalmazhatĂł tartomĂĄnyt** adjĂĄk (lĂĄsd fentebb az upstream megtakarĂ­tĂĄsok szĂĄmĂ­tĂĄsĂĄt): `1 - (1 - 0.60..0.90) × (1 - 0.46)` ĂĄtlaga ≈89%. #### MƱködĂ©se ``` Bemenet (1000 token) → RTK (parancsĂ©rzĂ©keny szƱrƑ) → 200 token → Caveman (töltelĂ©kszöveg eltĂĄvolĂ­tĂĄsa) → 108 token → Kimenet (108 token, ~89%-os megtakarĂ­tĂĄs) ``` #### Mikor Ă©rdemes hasznĂĄlni A halmozott mĂłdot a következƑkhöz hasznĂĄlja: - EszközigĂ©nyes munkafolyamatok (ĂĄgensalapĂș kĂłdolĂĄs, kutatĂĄs) - KöltsĂ©gĂ©rzĂ©keny kötegelt feldolgozĂĄs - Amikor maximĂĄlis tokenmegtakarĂ­tĂĄsra van szĂŒksĂ©ge A halmozott folyamatokat a globĂĄlis `stackedPipeline` tömörĂ­tĂ©si beĂĄllĂ­tĂĄssal, vagy egy ĂștvĂĄlasztĂĄsi kombinĂĄciĂłhoz rendelt, elnevezett tömörĂ­tĂ©si kombinĂĄciĂłval lehet konfigurĂĄlni (lĂĄsd fentebb a kombinĂĄciĂłnkĂ©nti felĂŒlbĂ­rĂĄlĂĄst) — nem pedig egy automatikus kombinĂĄciĂł `modePack` mezƑjĂ©n keresztĂŒl (ez a mezƑ csak ĂșjrasĂșlyozza az automatikus kombinĂĄciĂł modellvĂĄlasztĂĄsĂĄt, Ă©s a `stacked` nem Ă©rvĂ©nyes csomagnĂ©v). --- ## KombinĂĄciĂłnkĂ©nti tömörĂ­tĂ©si felĂŒlbĂ­rĂĄlĂĄsok A globĂĄlis tömörĂ­tĂ©si mĂłdot **kombinĂĄciĂłnkĂ©nt** felĂŒlbĂ­rĂĄlhatja, hogy finomhangolja a mƱködĂ©st a kĂŒlönbözƑ felhasznĂĄlĂĄsi esetekhez: ```json { "id": "coding-combo", "strategy": "priority", "config": { "weights": { "taskFit": 0.5 }, "modePack": "quality-first" }, "compressionOverride": "aggressive" } ``` Ez a következƑ esetekben hasznos: - **KĂłdolĂĄsi kombinĂĄciĂłk**: HosszĂș munkamenetekhez hasznĂĄlja az `aggressive` mĂłdot - **Gyors kĂ©rdĂ©s-vĂĄlasz kombinĂĄciĂłk**: A gyors vĂĄlaszokhoz hasznĂĄlja a `lite` mĂłdot - **EszközigĂ©nyes kombinĂĄciĂłk**: A maximĂĄlis megtakarĂ­tĂĄshoz hasznĂĄlja a `stacked` mĂłdot - **Éles környezetben hasznĂĄlt kombinĂĄciĂłk**: gyorsĂ­tĂłtĂĄrazĂĄst vĂ©gzƑ szolgĂĄltatĂłk esetĂ©n hagyja kikapcsolva a felĂŒlbĂ­rĂĄlĂĄst — a mindig aktĂ­v, gyorsĂ­tĂłtĂĄr-tudatos beĂĄllĂ­tĂĄs automatikusan `standard` szintre csökkenti az `aggressive`/`ultra` mĂłdot (nem vĂĄlaszthatĂł `cache-aware` mĂłd) --- ## LĂĄsd mĂ©g - [Környezeti konfigurĂĄciĂł](../reference/ENVIRONMENT.md) — A tömörĂ­tĂ©s környezeti vĂĄltozĂłi - [ArchitekturĂĄlis ĂștmutatĂł](../architecture/ARCHITECTURE.md) — A tömörĂ­tĂ©si folyamat belsƑ mƱködĂ©se - [FelhasznĂĄlĂłi ĂștmutatĂł](../guides/USER_GUIDE.md) — ElsƑ lĂ©pĂ©sek a tömörĂ­tĂ©ssel - [RTK-tömörĂ­tĂ©s](./RTK_COMPRESSION.md) — RTK-szƱrƑk, megbĂ­zhatĂłsĂĄgi modell, ellenƑrzĂ©si kapu, nyers kimenet helyreĂĄllĂ­tĂĄsa - [TömörĂ­tĂ©si motorok](./COMPRESSION_ENGINES.md) — Caveman, RTK, stacked, API-k, MCP, irĂĄnyĂ­tĂłpult - [TömörĂ­tĂ©si szabĂĄlyok formĂĄtuma](./COMPRESSION_RULES_FORMAT.md) — JSON-szabĂĄlycsomag formĂĄtuma - [TömörĂ­tĂ©si nyelvi csomagok](./COMPRESSION_LANGUAGE_PACKS.md) — Nyelvspecifikus Caveman-szabĂĄlyok