# RTK Compression (Magyar) 🌐 **Languages:** đŸ‡ș🇾 [English](../../../../compression/RTK_COMPRESSION.md) · đŸ‡ȘđŸ‡č [am](../../../am/docs/compression/RTK_COMPRESSION.md) · 🇾🇩 [ar](../../../ar/docs/compression/RTK_COMPRESSION.md) · 🇩🇿 [az](../../../az/docs/compression/RTK_COMPRESSION.md) · 🇧🇬 [bg](../../../bg/docs/compression/RTK_COMPRESSION.md) · đŸ‡§đŸ‡© [bn](../../../bn/docs/compression/RTK_COMPRESSION.md) · 🇧🇩 [bs](../../../bs/docs/compression/RTK_COMPRESSION.md) · 🇹🇿 [cs](../../../cs/docs/compression/RTK_COMPRESSION.md) · đŸ‡©đŸ‡° [da](../../../da/docs/compression/RTK_COMPRESSION.md) · đŸ‡©đŸ‡Ș [de](../../../de/docs/compression/RTK_COMPRESSION.md) · đŸ‡ŹđŸ‡· [el](../../../el/docs/compression/RTK_COMPRESSION.md) · đŸ‡Ș🇾 [es](../../../es/docs/compression/RTK_COMPRESSION.md) · đŸ‡ȘđŸ‡Ș [et](../../../et/docs/compression/RTK_COMPRESSION.md) · đŸ‡źđŸ‡· [fa](../../../fa/docs/compression/RTK_COMPRESSION.md) · đŸ‡«đŸ‡ź [fi](../../../fi/docs/compression/RTK_COMPRESSION.md) · đŸ‡«đŸ‡· [fr](../../../fr/docs/compression/RTK_COMPRESSION.md) · 🇼đŸ‡Ș [ga](../../../ga/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [gu](../../../gu/docs/compression/RTK_COMPRESSION.md) · 🇳🇬 [ha](../../../ha/docs/compression/RTK_COMPRESSION.md) · đŸ‡źđŸ‡± [he](../../../he/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [hi](../../../hi/docs/compression/RTK_COMPRESSION.md) · đŸ‡­đŸ‡· [hr](../../../hr/docs/compression/RTK_COMPRESSION.md) · 🇩đŸ‡Č [hy](../../../hy/docs/compression/RTK_COMPRESSION.md) · đŸ‡źđŸ‡© [id](../../../id/docs/compression/RTK_COMPRESSION.md) · 🇳🇬 [ig](../../../ig/docs/compression/RTK_COMPRESSION.md) · 🇼đŸ‡č [it](../../../it/docs/compression/RTK_COMPRESSION.md) · đŸ‡ŻđŸ‡” [ja](../../../ja/docs/compression/RTK_COMPRESSION.md) · 🇬đŸ‡Ș [ka](../../../ka/docs/compression/RTK_COMPRESSION.md) · 🇰🇭 [km](../../../km/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [kn](../../../kn/docs/compression/RTK_COMPRESSION.md) · đŸ‡°đŸ‡· [ko](../../../ko/docs/compression/RTK_COMPRESSION.md) · đŸ‡±đŸ‡č [lt](../../../lt/docs/compression/RTK_COMPRESSION.md) · đŸ‡±đŸ‡» [lv](../../../lv/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [ml](../../../ml/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [mr](../../../mr/docs/compression/RTK_COMPRESSION.md) · đŸ‡ČđŸ‡Ÿ [ms](../../../ms/docs/compression/RTK_COMPRESSION.md) · đŸ‡ČđŸ‡č [mt](../../../mt/docs/compression/RTK_COMPRESSION.md) · đŸ‡ČđŸ‡Č [my](../../../my/docs/compression/RTK_COMPRESSION.md) · đŸ‡łđŸ‡” [ne](../../../ne/docs/compression/RTK_COMPRESSION.md) · đŸ‡łđŸ‡± [nl](../../../nl/docs/compression/RTK_COMPRESSION.md) · 🇳🇮 [no](../../../no/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [or](../../../or/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [pa](../../../pa/docs/compression/RTK_COMPRESSION.md) · đŸ‡”đŸ‡­ [phi](../../../phi/docs/compression/RTK_COMPRESSION.md) · đŸ‡”đŸ‡± [pl](../../../pl/docs/compression/RTK_COMPRESSION.md) · đŸ‡”đŸ‡č [pt](../../../pt/docs/compression/RTK_COMPRESSION.md) · đŸ‡§đŸ‡· [pt-BR](../../../pt-BR/docs/compression/RTK_COMPRESSION.md) · đŸ‡·đŸ‡Ž [ro](../../../ro/docs/compression/RTK_COMPRESSION.md) · đŸ‡·đŸ‡ș [ru](../../../ru/docs/compression/RTK_COMPRESSION.md) · đŸ‡±đŸ‡° [si](../../../si/docs/compression/RTK_COMPRESSION.md) · 🇾🇰 [sk](../../../sk/docs/compression/RTK_COMPRESSION.md) · 🇾🇼 [sl](../../../sl/docs/compression/RTK_COMPRESSION.md) · đŸ‡·đŸ‡ž [sr](../../../sr/docs/compression/RTK_COMPRESSION.md) · 🇾đŸ‡Ș [sv](../../../sv/docs/compression/RTK_COMPRESSION.md) · 🇰đŸ‡Ș [sw](../../../sw/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [ta](../../../ta/docs/compression/RTK_COMPRESSION.md) · 🇼🇳 [te](../../../te/docs/compression/RTK_COMPRESSION.md) · đŸ‡č🇭 [th](../../../th/docs/compression/RTK_COMPRESSION.md) · đŸ‡čđŸ‡· [tr](../../../tr/docs/compression/RTK_COMPRESSION.md) · đŸ‡ș🇩 [uk-UA](../../../uk-UA/docs/compression/RTK_COMPRESSION.md) · đŸ‡”đŸ‡° [ur](../../../ur/docs/compression/RTK_COMPRESSION.md) · đŸ‡ș🇿 [uz](../../../uz/docs/compression/RTK_COMPRESSION.md) · đŸ‡»đŸ‡ł [vi](../../../vi/docs/compression/RTK_COMPRESSION.md) · 🇳🇬 [yo](../../../yo/docs/compression/RTK_COMPRESSION.md) · 🇹🇳 [zh-CN](../../../zh-CN/docs/compression/RTK_COMPRESSION.md) · đŸ‡čđŸ‡Œ [zh-TW](../../../zh-TW/docs/compression/RTK_COMPRESSION.md) --- Az RTK-tömörĂ­tĂ©s az OmniRoute parancsĂ©rzĂ©keny tömörĂ­tƑmotorja terminĂĄl- Ă©s eszközkimenetekhez. Olyan kĂłdolĂĄsiĂŒgynök-munkamenetekhez kĂ©szĂŒlt, amelyekben a kontextus növekedĂ©sĂ©nek legnagyobb rĂ©szĂ©t tesztnaplĂłk, buildkimenetek, csomagkezelƑi zaj, shell-ĂĄtiratok, Docker-kimenetek, git-kimenetek Ă©s veremkövetĂ©sek okozzĂĄk. Az RTK közvetlenĂŒl futtathatĂł a `defaultMode: "rtk"` beĂĄllĂ­tĂĄssal, vagy egy egymĂĄsra Ă©pĂŒlƑ feldolgozĂĄsi folyamat elsƑ lĂ©pĂ©sekĂ©nt, ĂĄltalĂĄban Ă­gy: ```txt rtk -> caveman ``` Ez a sorrend elƑször a zajos gĂ©pi kimenetet tömörĂ­ti, majd lehetƑvĂ© teszi, hogy a Caveman tömörĂ­tse a fennmaradĂł prĂłzai szöveget. Az upstream RTK `60-90%`-os megtakarĂ­tĂĄsrĂłl szĂĄmol be a parancskimeneteknĂ©l. A README mintamunkamenete `~118,000` szabvĂĄnyos tokenrƑl `~23,900` RTK-tokenre csökken, ami `79.7%`-os megtakarĂ­tĂĄs (`~80%`). Az OmniRoute ezt az upstream ĂĄtlagot hasznĂĄlja a Caveman bemeneti tömörĂ­tĂ©sĂ©vel kombinĂĄlt megtakarĂ­tĂĄs kiszĂĄmĂ­tĂĄsĂĄhoz: ```txt RTK-ĂĄtlag: 80% megtakarĂ­tĂĄs Caveman-bemenet: 46% megtakarĂ­tĂĄs KombinĂĄlt: 1 - (1 - 0.80) * (1 - 0.46) = 89.2% megtakarĂ­tĂĄs TartomĂĄny: 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6% ``` ## Mit tömörĂ­t? A beĂ©pĂ­tett katalĂłgus jelenleg 49 szƱrƑt tartalmaz a következƑ kategĂłriĂĄkban: | KategĂłria | PĂ©ldĂĄk | | --------- | ----------------------------------------------------------------- | | `git` | `git status`, `git branch`, `git diff`, `git log` | | `test` | Vitest, Jest, Pytest, Playwright, Go-tesztek, Cargo-tesztek | | `build` | TypeScript, ESLint, Biome, Prettier, Vite, Webpack, Turbo, Nx | | `package` | `npm install`, `npm audit`, `pip`, `uv sync`, Poetry, Bundler | | `shell` | `ls`, `find`, `grep`, ĂĄltalĂĄnos shellnaplĂłk | | `docker` | `docker ps`, Docker-naplĂłk | | `infra` | Terraform, OpenTofu, `systemctl status` | | `generic` | JSON-kimenet, veremkövetĂ©sek, ĂĄltalĂĄnos kimeneti tartalĂ©kmegoldĂĄs | Az `open-sse/services/compression/engines/rtk/commandDetector.ts` fĂĄjlban talĂĄlhatĂł Ă©rzĂ©kelƑ a szƱrƑ kivĂĄlasztĂĄsa elƑtt osztĂĄlyozza a kimenetet. A szƱrƑk parancsminta vagy kimeneti regulĂĄris kifejezĂ©s alapjĂĄn is illeszkedhetnek, ha egy parancsosztĂĄly önmagĂĄban nem elegendƑ. ## SzƱrƑfeloldĂĄs Az RTK a következƑ sorrendben tölti be a szƱrƑket: 1. ProjektszƱrƑk a `.rtk/filters.toml` Ă©s `.rtk/filters.json` fĂĄjlokbĂłl, kizĂĄrĂłlag megbĂ­zhatĂłkĂ©nt valĂł megjelölĂ©s esetĂ©n. 2. GlobĂĄlis szƱrƑk a `DATA_DIR/rtk/filters.toml` Ă©s `DATA_DIR/rtk/filters.json` fĂĄjlokbĂłl. 3. BeĂ©pĂ­tett szƱrƑk az `open-sse/services/compression/engines/rtk/filters/` könyvtĂĄrbĂłl. Ugyanazon hatĂłkörön belĂŒl az RTK TOML schema v1 szƱrƑi elsƑbbsĂ©get Ă©lveznek az OmniRoute JSON-szƱrƑivel szemben. A TOML `match_command` kifejezĂ©seinek ellenƑrzĂ©se a parancstĂ­pus szerinti illesztĂ©s elƑtt törtĂ©nik, Ă­gy egy importĂĄlt, parancsspecifikus szƱrƑ felĂŒlĂ­rhat egy tĂĄgabb szƱrƑt az adott hatĂłkörben. A projekthatĂłkör a fĂĄjlformĂĄtumtĂłl fĂŒggetlenĂŒl tovĂĄbbra is elsƑbbsĂ©get Ă©lvez a globĂĄlis hatĂłkörrel szemben. A projektszƱrƑk szĂĄndĂ©kosan bizalmi ellenƑrzĂ©shez kötöttek, mivel a regulĂĄris kifejezĂ©seket hasznĂĄlĂł szƱrƑk megvĂĄltoztathatjĂĄk, hogyan jelenik meg az eszközkimenet az ĂŒgynökök szĂĄmĂĄra. A projektszƱrƑ-fĂĄjl akkor kerĂŒl elfogadĂĄsra, ha a következƑk egyike teljesĂŒl: - Az `rtkConfig.trustProjectFilters` Ă©rtĂ©ke `true`. - Az `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=1` be van ĂĄllĂ­tva. - A `.rtk/trust.json` tartalmazza a projektszƱrƑ-fĂĄjl megfelelƑ SHA-256-kivonatĂĄt. PĂ©lda bizalmi fĂĄjlra: ```json { "filtersSha256": "0123456789abcdef...", "filtersTomlSha256": "fedcba9876543210..." } ``` A kivonatok elkĂŒlönĂŒlnek: a `filtersSha256` a `.rtk/filters.json`, mĂ­g a `filtersTomlSha256` a `.rtk/filters.toml` fĂĄjlt jelöli megbĂ­zhatĂłkĂ©nt. BĂĄrmelyik fĂĄjl szerkesztĂ©se csak a hozzĂĄ tartozĂł bizalmi bejegyzĂ©st Ă©rvĂ©nytelenĂ­ti. A globĂĄlis fĂĄjlokat a rendszergazda telepĂ­ti, Ă©s ezek a globĂĄlis szƱrƑk meglĂ©vƑ bizalmi mƱködĂ©sĂ©t hasznĂĄljĂĄk. Az egyĂ©ni szƱrƑk megadhatĂłk egyetlen szƱrƑobjektumkĂ©nt vagy szƱrƑobjektumok tömbjekĂ©nt. Az Ă©rvĂ©nytelen egyĂ©ni szƱrƑket a rendszer kihagyja, Ă©s az `/api/context/rtk/filters` diagnosztikĂĄja jelenti Ƒket. Az Ă©rvĂ©nytelen beĂ©pĂ­tett szƱrƑk azonnali hibĂĄt okoznak. ## RTK TOML-sĂ©ma v1 kompatibilitĂĄs Az OmniRoute kĂ©pes az RTK TOML-sĂ©ma v1 formĂĄtumĂĄt hasznĂĄlĂł deklaratĂ­v szƱrƑfĂĄjlok elemzĂ©sĂ©re, ellenƑrzĂ©sĂ©re, tesztelĂ©sĂ©re Ă©s telepĂ­tĂ©sĂ©re. A tĂĄmogatott mezƑk: `description`, `match_command`, `strip_ansi`, `filter_stderr`, `strip_lines_matching`, `keep_lines_matching`, `replace`, `match_output`, `truncate_lines_at`, `head_lines`, `tail_lines`, `max_lines`, `on_empty`, valamint a `[[tests.]]` beĂĄgyazott tesztek. Az ismeretlen mezƑket, az Ă©rvĂ©nytelen vagy nem biztonsĂĄgos regulĂĄris kifejezĂ©seket, az egyidejƱ eltĂĄvolĂ­tĂĄsi/megƑrzĂ©si szabĂĄlyokat, az 1 MiB-nĂĄl nagyobb fĂĄjlokat, valamint az ismeretlen szƱrƑkre mutatĂł hivatkozĂĄsokat a rendszer elutasĂ­tja. Az a fĂĄjl, amelynek beĂĄgyazott tesztjei sikertelenek, vizsgĂĄlati cĂ©lbĂłl ellenƑrizhetƑ, de nem telepĂ­thetƑ Ă©s nem tölthetƑ be. Az egyĂ©ni fĂĄjlok betöltĂ©si hibĂĄi tovĂĄbbra is nyitott hibakezelĂ©sƱek: az Ă©rvĂ©nytelen fĂĄjlt a rendszer kihagyja, a többi szƱrƑ pedig tovĂĄbb mƱködik. Az OmniRoute az eszköz kimenetĂ©t azutĂĄn kapja meg, hogy a kliens mĂĄr rögzĂ­tette azt, ezĂ©rt a `filter_stderr = true` nem mĂłdosĂ­thatja a folyamat kimenetĂ©nek rögzĂ­tĂ©sĂ©t. A mezƑt a rendszer hatĂĄs nĂ©lkĂŒli mƱveletkĂ©nt elfogadja, az ellenƑrzĂ©s pedig figyelmeztetĂ©st ad vissza. Ezt szĂĄndĂ©kosan **RTK TOML-sĂ©ma v1 kompatibilitĂĄskĂ©nt** Ă­rjuk le, nem pedig az RTK futtathatĂł ĂĄllomĂĄnyĂĄval, a shell-hookokkal, a Rust-parancsimplementĂĄciĂłkkal vagy a megbĂ­zhatĂłsĂĄgi tĂĄr elrendezĂ©sĂ©vel valĂł teljes kompatibilitĂĄskĂ©nt. Az irĂĄnyĂ­tĂłpult speciĂĄlis RTK-nĂ©zete beillesztett vagy feltöltött TOML-t fogad el. Az ellenƑrzĂ©s csak olvasĂĄsi mƱvelet. A telepĂ­tĂ©s korlĂĄtozĂł jogosultsĂĄgokkal, atomi mĂłdon Ă­rja ki a `DATA_DIR/rtk/filters.toml` fĂĄjlt, Ă©s ĂșjraindĂ­tĂĄs nĂ©lkĂŒl frissĂ­ti az aktĂ­v szƱrƑkatalĂłgust. Egy meglĂ©vƑ fĂĄjl lecserĂ©lĂ©sĂ©hez kifejezett `overwrite` megerƑsĂ­tĂ©s szĂŒksĂ©ges, Ă©s a rendszer elƑször lĂ©trehozza a `DATA_DIR/rtk/filters.toml.bak` fĂĄjlt. ## SzƱrƑ DSL A szƱrƑk a [TömörĂ­tĂ©si szabĂĄlyok formĂĄtuma](./COMPRESSION_RULES_FORMAT.md) cĂ­mƱ dokumentumban ismertetett JSON-sĂ©mĂĄt hasznĂĄljĂĄk. A futtatĂłkörnyezet a következƑ szakaszokat alkalmazza sorrendben: ```txt stripAnsi -> filterStderr -> replace -> matchOutput -> sorok elvetĂ©se/bevĂ©tele -> truncateLineAt -> head/tail/maxLines -> onEmpty ``` Fontos mezƑk: | MezƑ | RendeltetĂ©s | | ---------------------------- | ----------------------------------------------------------------------- | | `rules.stripAnsi` | TerminĂĄlszĂ­n- Ă©s vezĂ©rlƑszekvenciĂĄk eltĂĄvolĂ­tĂĄsa az illesztĂ©s elƑtt | | `rules.filterStderr` | Gyakori stderr-elƑtagok normalizĂĄlĂĄsa az illesztĂ©s/szƱrĂ©s elƑtt | | `rules.replace` | Rendezett regex-helyettesĂ­tĂ©sek alkalmazĂĄsa | | `rules.matchOutput` | Tömör összegzĂ©s visszaadĂĄsa, ha a kimenet ismert feltĂ©telre illeszkedik | | `rules.matchOutput[].unless` | A rövidĂ­tett feldolgozĂĄs kihagyĂĄsa hiba-/meghiĂșsulĂĄsi minta esetĂ©n | | `rules.dropPatterns` | Zajos sorok eltĂĄvolĂ­tĂĄsa | | `rules.includePatterns` | VĂ©grehajthatĂł mƱveletet jelzƑ sorok elƑnyben rĂ©szesĂ­tĂ©se | | `rules.collapsePatterns` | IsmĂ©tlƑdƑ, illeszkedƑ sorok összevonĂĄsa | | `rules.deduplicate` | SzƱrƑnkĂ©nt engedĂ©lyezhetƑ: az egymĂĄst követƑ azonos sorok összevonĂĄsa | | `rules.truncateLineAt` | Unicode-biztos, soronkĂ©nti csonkolĂĄs | | `rules.onEmpty` | TartalĂ©kĂŒzenet, ha minden sort kiszƱrtek | | `tests[]` | Az ellenƑrzĂ©si kapu ĂĄltal hasznĂĄlt beĂĄgyazott mintĂĄk | A beĂ©pĂ­tett szƱrƑknek ajĂĄnlott beĂĄgyazott `tests[]` mintĂĄkat tartalmazniuk. Az egyĂ©ni szƱrƑknek is Ă©rdemes ilyeneket tartalmazniuk, kĂŒlönösen akkor, ha több projekt között vannak megosztva. ## Sorok deduplikĂĄlĂĄsa (kĂ©t rĂ©tegben) Az RTK kĂ©t egymĂĄstĂłl fĂŒggetlen rĂ©tegben vonja össze az ismĂ©tlƑdƑ sorokat: 1. **SzƱrƑnkĂ©nti `deduplicate` (kĂŒlön engedĂ©lyezendƑ, alapĂ©rtelmezett Ă©rtĂ©ke `false`).** Egy szƱrƑ beĂĄllĂ­thatja a `rules.deduplicate: true` Ă©rtĂ©ket, hogy a csonkolĂĄs elƑtt összevonja az egymĂĄst követƑ ismĂ©tlƑdƑ sorokat _az adott szƱrƑ ĂĄltal illesztett kimeneten belĂŒl_. Ez a `lineFilter.ts` fĂĄjlban fut. A rĂ©gi szƱrƑknĂ©l automatikusan engedĂ©lyezƑdik, ha a szƱrƑ definiĂĄl `collapsePatterns` Ă©rtĂ©ket. SĂ©ma: `deduplicate: z.boolean().default(false)` az `open-sse/services/compression/engines/rtk/filterSchema.ts` fĂĄjlban. 2. **MotorszintƱ `deduplicateThreshold` (alapĂ©rtelmezett Ă©rtĂ©ke `3`).** Az összes szƱrƑ lefutĂĄsa utĂĄn a motor a teljes eredmĂ©nyben összevonja az azonos, egymĂĄst követƑ sorok minden olyan sorozatĂĄt, amely legalĂĄbb `deduplicateThreshold` hosszĂșsĂĄgĂș (`deduplicateRepeatedLines`, alkalmazĂĄsi helye: `engines/rtk/index.ts`). NormalizĂĄlĂĄskor az Ă©rtĂ©k a 2–100 tartomĂĄnyra van korlĂĄtozva. ElƑször a szƱrƑnkĂ©nti menet fut le (a szƱrƑn belĂŒl), utoljĂĄra pedig a motorszintƱ menet (az összefƱzött kimeneten), Ă­gy a kettƑ kettƑs szĂĄmlĂĄlĂĄs nĂ©lkĂŒl mƱködik egyĂŒtt. ## Sorok csoportosĂ­tĂĄsa (`enableGrouping`) Ha az `rtkConfig.enableGrouping` Ă©rtĂ©ke `true` (alapĂ©rtelmezett Ă©rtĂ©ke `false`), az RTK egy tovĂĄbbi `groupSimilarLines` menetet futtat a deduplikĂĄlĂĄs utĂĄni eredmĂ©nyen, amely összevonja a _közel azonos_ (nem bĂĄjtrĂłl bĂĄjtra megegyezƑ), egymĂĄst követƑ sorok sorozatait. Az `rtkConfig.groupingThreshold` (alapĂ©rtelmezett Ă©rtĂ©ke `3`) a csoportosĂ­tĂĄst kivĂĄltĂł minimĂĄlis sorozathossz. Ez a `deduplicateThreshold` strukturĂĄlis megfelelƑje: a deduplikĂĄlĂĄs a pontos ismĂ©tlƑdĂ©seket, a csoportosĂ­tĂĄs pedig az „azonos alakĂș, kis eltĂ©rĂ©seket tartalmazó” sorokat kezeli. MindkĂ©t jelzƑ a `key_value` tĂĄblĂĄban tĂĄrolt `rtkConfig` JSON rĂ©sze (lĂĄsd fent a KonfigurĂĄciĂł cĂ­mƱ rĂ©szt), Ă­gy a beĂĄllĂ­tĂĄs az ĂșjraindĂ­tĂĄsok utĂĄn is megmarad. ## KĂłdmegjegyzĂ©sek eltĂĄvolĂ­tĂĄsa (`stripCodeComments` / `preserveDocstrings`) Ha az `rtkConfig.applyToCodeBlocks` engedĂ©lyezve van, az RTK a körĂŒlhatĂĄrolt kĂłdblokkokbĂłl is eltĂĄvolĂ­thatja a megjegyzĂ©seket: - `stripCodeComments` (alapĂ©rtelmezett Ă©rtĂ©ke `false`) — kĂŒlön engedĂ©lyezendƑ. Ha az Ă©rtĂ©ke `true`, az RTK eltĂĄvolĂ­tja a megjegyzĂ©seket a JavaScript- Ă©s TypeScript-kĂłdblokkokbĂłl. KorĂĄbban a jelzƑ Ă©rtĂ©kĂ©t beolvastĂĄk, de soha nem alkalmaztĂĄk, ezĂ©rt az alapĂ©rtelmezett beĂĄllĂ­tĂĄs tovĂĄbbra is a „megƑrzĂ©s”, elkerĂŒlve ezzel egy Ă©szrevĂ©tlen Ă©les környezeti vĂĄltozĂĄst. - `preserveDocstrings` (alapĂ©rtelmezett Ă©rtĂ©ke `true`) — a megjegyzĂ©sek eltĂĄvolĂ­tĂĄsakor a JSDoc/`/** 
 */` blokkmegjegyzĂ©sek megmaradnak (az ĂĄltaluk hordozott API-dokumentĂĄciĂł többet Ă©r az ĂĄltaluk elfoglalt bĂĄjtoknĂĄl). Ezek eltĂĄvolĂ­tĂĄsĂĄhoz ĂĄllĂ­tsa `false` Ă©rtĂ©kre. A megjegyzĂ©sek eltĂĄvolĂ­tĂĄsa az `open-sse/services/compression/engines/rtk/codeStripper.ts` fĂĄjlban van megvalĂłsĂ­tva. A **TypeScript-elemzƑt** hasznĂĄlja (nem regulĂĄris kifejezĂ©st), Ă­gy a karakterlĂĄnc-, sablon- Ă©s regulĂĄriskifejezĂ©s-literĂĄlokat soha nem tĂ©veszti össze megjegyzĂ©sekkel, JSX Ă©szlelĂ©sekor pedig teljesen megszakĂ­tja a mƱveletet (Ă­gy a JSX-kifejezĂ©stĂĄrolĂłk megjegyzĂ©sei soha nem sĂ©rĂŒlnek). A megjegyzĂ©sek eltĂĄvolĂ­tĂĄsa jelenleg **csak JavaScriptre Ă©s TypeScriptre** vonatkozik — az eltĂĄvolĂ­tĂł `CodeLanguage` halmazĂĄban szereplƑ mĂĄs nyelveknĂ©l (Python, Rust, Go, Ruby, Java) az ĂŒres sorok Ă©s a tĂ©rközök összevonĂĄsa megtörtĂ©nik, de a megjegyzĂ©sek eltĂĄvolĂ­tĂĄsa nem. Az eltĂĄvolĂ­tĂĄst vĂ©gzƑ kĂłdblokkfuttatĂĄs az `rtk:code-strip` cĂ­mkĂ©t kapja a `rulesApplied` mezƑben. > **MegjegyzĂ©s — a GCF / tĂĄblĂĄzatos kĂłdolĂĄs kĂŒlön motor.** Az RTK **nem** tartalmazza a „GCF” > (Graph Compact Format) tĂĄblĂĄzatos/oszlopalapĂș JSON-kĂłdolĂłt. Ez a kĂłdolĂł — amely egy rĂ©gebbi > `omni-tabular` kĂłdolĂłt vĂĄltott fel — a **headroom** motorban talĂĄlhatĂł > (`open-sse/services/compression/engines/headroom/`, a beĂĄgyazott kodekkel a > `headroom/gcf/` alatt). Nem kapcsolĂłdik az itt dokumentĂĄlt RTK-szƱrƑfolyamathoz. ## KonfigurĂĄciĂł A globĂĄlis beĂĄllĂ­tĂĄsok a `/api/settings/compression` vĂ©gponton keresztĂŒl Ă©rhetƑk el. Az RTK-specifikus beĂĄllĂ­tĂĄsok szintĂ©n elĂ©rhetƑk az `/api/context/rtk/config` vĂ©gponton keresztĂŒl. ```json { "defaultMode": "stacked", "autoTriggerMode": "stacked", "autoTriggerTokens": 32000, "stackedPipeline": [ { "engine": "rtk", "intensity": "standard" }, { "engine": "caveman", "intensity": "full" } ], "rtkConfig": { "enabled": true, "intensity": "standard", "applyToToolResults": true, "applyToCodeBlocks": false, "applyToAssistantMessages": false, "enabledFilters": [], "disabledFilters": [], "maxLinesPerResult": 120, "maxCharsPerResult": 12000, "deduplicateThreshold": 3, "customFiltersEnabled": true, "trustProjectFilters": false, "rawOutputRetention": "never", "rawOutputMaxBytes": 1048576, "enableGrouping": false, "groupingThreshold": 3, "stripCodeComments": false, "preserveDocstrings": true } } ``` Az `enabledFilters` Ă©s a `disabledFilters` szƱrƑazonosĂ­tĂłkat hasznĂĄl, pĂ©ldĂĄul `test-vitest` vagy `git-diff`. Az `rtkConfig` teljes szerkezetĂ©t az `RtkConfig` / `DEFAULT_RTK_CONFIG` hatĂĄrozza meg az `open-sse/services/compression/types.ts` fĂĄjlban. A teljes objektum egyetlen JSON-Ă©rtĂ©kkĂ©nt marad meg az SQLite `key_value` tĂĄblĂĄjĂĄban a `namespace = "compression"`, `key = "rtkConfig"` Ă©rtĂ©kek alatt (`src/lib/db/compression.ts`), Ă©s beolvasĂĄskor a `normalizeRtkConfig` normalizĂĄlja. Így az alĂĄbbi összes mezƑ — beleĂ©rtve az `enableGrouping`, `groupingThreshold`, `stripCodeComments` Ă©s `preserveDocstrings` mezƑket — ugyanazon tĂĄrolĂłn keresztĂŒl jĂĄrja meg az oda-vissza utat, Ă©s ĂșjraindĂ­tĂĄs utĂĄn is megmarad. | Kulcs | AlapĂ©rtelmezĂ©s | RendeltetĂ©s | | ---------------------- | -------------- | ---------------------------------------------------------------------------------------------------- | | `deduplicateThreshold` | `3` | Teljes motorra Ă©rvĂ©nyes: az összevonandĂł egymĂĄst követƑ azonos sorok minimĂĄlis szĂĄma (2–100 között) | | `enableGrouping` | `false` | OpcionĂĄlis: a közel azonos, egymĂĄst követƑ sorok sorozatainak összevonĂĄsa | | `groupingThreshold` | `3` | A csoportosĂ­tĂĄst kivĂĄltĂł, egymĂĄst követƑ hasonlĂł sorok minimĂĄlis szĂĄma | | `stripCodeComments` | `false` | OpcionĂĄlis: megjegyzĂ©sek eltĂĄvolĂ­tĂĄsa az elkerĂ­tett kĂłdblokkokbĂłl (az `applyToCodeBlocks` szĂŒksĂ©ges) | | `preserveDocstrings` | `true` | MegjegyzĂ©sek eltĂĄvolĂ­tĂĄsakor a JSDoc-/`/** 
 */`-blokkok megƑrzĂ©se | ## API | Útvonal | MetĂłdus | RendeltetĂ©s | | ---------------------------------- | ------- | ------------------------------------------------------ | | `/api/context/rtk/config` | GET | Az RTK-konfigurĂĄciĂł beolvasĂĄsa | | `/api/context/rtk/config` | PUT | Az RTK-konfigurĂĄciĂł frissĂ­tĂ©se | | `/api/context/rtk/filters` | GET | A szƱrƑkatalĂłgus Ă©s a betöltĂ©si diagnosztika listĂĄzĂĄsa | | `/api/context/rtk/import` | POST | RTK TOML v1 sĂ©mafĂĄjlok ellenƑrzĂ©se vagy telepĂ­tĂ©se | | `/api/context/rtk/test` | POST | Az RTK-tömörĂ­tĂ©s elƑnĂ©zete egy szöveges adatcsomaghoz | | `/api/context/rtk/raw-output/[id]` | GET | A megƑrzött, kitakart nyers kimenet beolvasĂĄsa | | `/api/compression/preview` | POST | BĂĄrmely tömörĂ­tĂ©si mĂłd elƑnĂ©zete | RTK tesztadatcsomag: ```json { "command": "npm test", "text": "FAIL tests/example.test.ts\nAssertionError: expected true\nTest Files 1 failed", "config": { "intensity": "standard" } } ``` TömörĂ­tĂ©si elƑnĂ©zet adatcsomagja: ```json { "mode": "stacked", "messages": [ { "role": "tool", "content": "FAIL tests/example.test.ts\nAssertionError: expected true\nTest Files 1 failed" } ], "config": { "rtkConfig": { "rawOutputRetention": "failures" } } } ``` A felĂŒgyeleti Ăștvonalakhoz az irĂĄnyĂ­tĂłpult felĂŒgyeleti hitelesĂ­tĂ©se vagy a megfelelƑ API-kulcs-szabĂĄlyzat szĂŒksĂ©ges. RTK TOML-ellenƑrzĂ©si adatcsomag: ```json { "action": "validate", "content": "schema_version = 1\n\n[filters.my-tool]\nmatch_command = \"^my-tool\\\\b\"\nmax_lines = 20\n" } ``` Az ellenƑrzött fĂĄjl globĂĄlis telepĂ­tĂ©sĂ©hez hasznĂĄlja az `"action": "install"` Ă©rtĂ©ket. Az `"overwrite": true` beĂĄllĂ­tĂĄst csak egy meglĂ©vƑ globĂĄlis fĂĄjl lecserĂ©lĂ©sĂ©nek ĂĄttekintĂ©se Ă©s megerƑsĂ­tĂ©se utĂĄn adja hozzĂĄ. ## Nyers kimenet helyreĂĄllĂ­tĂĄsa Az RTK ĂĄltalĂĄban csak tömörĂ­tett szöveget ad vissza. HibakeresĂ©shez a `rawOutputRetention` megƑrizheti a kitakart nyers kimenetet: | ÉrtĂ©k | ViselkedĂ©s | | ---------- | ------------------------------------------------------------- | | `never` | Nem Ƒrzi meg a nyers kimenetet | | `failures` | Csak a valĂłszĂ­nƱsĂ­thetƑen hibĂĄs kimenetet Ƒrzi meg | | `always` | Minden tömörĂ­tett RTK-nyerskimenetet megƑriz a kitakarĂĄs utĂĄn | A megƑrzött fĂĄjlok ide kerĂŒlnek: ```txt DATA_DIR/rtk/raw-output/ ``` A bizalmas adatok a tartĂłs tĂĄrolĂĄs elƑtt kitakarĂĄsra kerĂŒlnek, beleĂ©rtve a gyakori bearer tokeneket, API-kulcsokat, Slack-tokeneket, AWS-hozzĂĄfĂ©rĂ©si kulcsokat, valamint az Ă©rtĂ©kadĂĄs jellegƱ `token=...`, `secret=...`, `password=...` Ă©rtĂ©keket. Az analitika csak a mutatĂł azonosĂ­tĂłjĂĄt, a mĂ©retet Ă©s a hash metaadatait tĂĄrolja. ## EllenƑrzĂ©si kapu A cĂ©lzott ellenƑrzĂ©si kapu a beĂ©pĂ­tett inline szƱrƑteszteket kĂŒlsƑ parancsok meghĂ­vĂĄsa nĂ©lkĂŒl futtatja: ```bash node --import tsx/esm --test tests/unit/compression/rtk-verify.test.ts ``` A szĂ©lesebb körƱ RTK-kapu: ```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 ``` KiadĂĄs elƑtt futtasd a szĂ©les körƱ tömörĂ­tĂ©si kaput: ```bash 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 ``` ## Az RTK kibƑvĂ­tĂ©se 1. Adj hozzĂĄ vagy frissĂ­ts egy szƱrƑket tartalmazĂł JSON-fĂĄjlt. 2. Adj meg legalĂĄbb egy olyan `tests[]` mintĂĄt, amely igazolja a fontos mƱködĂ©st. 3. Új parancscsalĂĄdokhoz adj hozzĂĄ egy tesztadatot a `tests/unit/compression/fixtures/rtk/` alatt. 4. Új kimeneti osztĂĄly bevezetĂ©sekor egĂ©szĂ­tsd ki a parancsĂ©szlelĂ©s lefedettsĂ©gĂ©t. 5. Futtasd az ellenƑrzĂ©si Ă©s a szĂ©lesebb körƱ RTK-kapukat. 6. Ha a szƱrƑ projektlokĂĄlis, vĂ©glegesĂ­tsd a `.rtk/filters.json` fĂĄjlt, Ă©s csak felĂŒlvizsgĂĄlat utĂĄn frissĂ­tsd a `.rtk/trust.json` fĂĄjlt. --- ## IntenzitĂĄsi szintek (v3.8.16+) Az RTK **3 intenzitĂĄsi szintet** tĂĄmogat, amelyek kĂŒlönbözƑ kompromisszumot kĂ­nĂĄlnak a **tömörĂ­tĂ©s agresszivitĂĄsa** Ă©s a **biztonsĂĄg** között. A szint a motor konfigurĂĄciĂłjĂĄnak `config.intensity` beĂĄllĂ­tĂĄsĂĄval adhatĂł meg. ### A 3 szint | Szint | CsonkĂ­tĂĄsi kĂŒszöb | TokenmegtakarĂ­tĂĄs | KockĂĄzat | LeginkĂĄbb ehhez ajĂĄnlott | | ---------------------- | -------------------- | ----------------- | --------------- | ------------------------------------------- | | `minimal` | 24 sor szakaszonkĂ©nt | ~20-40% | Nagyon alacsony | Éles környezet kritikus kontextussal | | `standard` (alapĂ©rtĂ©k) | 24 sor szakaszonkĂ©nt | ~50-70% | Alacsony | Mindennapi kĂłdolĂĄsi munkamenetek | | `aggressive` | 16 sor szakaszonkĂ©nt | ~70-90% | Közepes | HosszĂș munkamenetek, maximĂĄlis megtakarĂ­tĂĄs | ### Hol törtĂ©nik a csonkĂ­tĂĄs A csonkĂ­tĂĄsi kĂŒszöb a `lineFilter.ts` mƱködĂ©sĂ©re van hatĂĄssal: ```ts // Az open-sse/services/compression/engines/rtk/index.ts:329-330 fĂĄjlbĂłl config.intensity === "aggressive" ? 16 : 24, config.intensity === "aggressive" ? 16 : 24, ``` Minden szakasz **eleje** Ă©s **vĂ©ge** megmarad; a közĂ©psƑ tartalom kiesik, amikor a csonkĂ­tĂĄs Ă©letbe lĂ©p. ### Mi marad meg, Ă©s mi kerĂŒl eltĂĄvolĂ­tĂĄsra | Tartalom | minimal | standard | aggressive | | --------------------------------------- | ------------- | ------------- | ------------- | | HibĂĄk / veremkövetĂ©sek | ✅ megmarad | ✅ megmarad | ✅ megmarad | | Sikertelen tesztek | ✅ megmarad | ✅ megmarad | ✅ megmarad | | BuildelĂ©si hibĂĄk | ✅ megmarad | ✅ megmarad | ✅ megmarad | | Sikeres tesztek (rĂ©szletes) | ✅ megmarad | 🟡 összevonva | 🟡 összevonva | | RutinszerƱ kimenet (informĂĄciĂłs naplĂłk) | 🟡 összevonva | 🟡 összevonva | ❌ eldobva | | FolyamatjelzƑ sĂĄvok | 🟡 összevonva | ❌ eldobva | ❌ eldobva | | FejlĂ©c / ASCII-grafika | 🟡 összevonva | ❌ eldobva | ❌ eldobva | ### A megfelelƑ intenzitĂĄs kivĂĄlasztĂĄsa ``` KatasztrofĂĄlis lenne a kontextus elvesztĂ©se? │ ┌───────────┌───────────┐ │ │ │ IGEN NEM NEM BIZTOS │ │ │ â–Œ │ │ minimal │ │ │ │ │ │ â–Œ â–Œ │ Mennyire fontos ElƑször prĂłbĂĄld a `standard` │ az ĂĄteresztĂ©s? szintet (az esetek 80%-ĂĄban │ │ mƱködik) │ ┌────┮────┐ │ │ │ │ ALACSONY MAGAS │ │ │ │ â–Œ â–Œ │ standard aggressive │ │ │ └──────┮─────────┘ ``` ### Az intenzitĂĄs konfigurĂĄlĂĄsa **KombinĂĄciĂłnkĂ©nt** (a kombinĂĄciĂł konfigurĂĄciĂłjĂĄban): ```json { "combo": "my-coding-combo", "routing": {/* ... */}, "compression": { "engine": "rtk", "intensity": "aggressive" } } ``` **Programozottan**: Az `rtkEngine` (`@omniroute/open-sse/services/compression/engines/rtk`) egy `CompressionEngine`, Ă©s nem rendelkezik `updateConfig` metĂłdussal. Ehelyett a regisztrĂĄciĂłs segĂ©dfĂŒggvĂ©nyen keresztĂŒl frissĂ­tsd a motor konfigurĂĄciĂłjĂĄt: ```ts import { updateEngineConfig } from "@omniroute/open-sse/services/compression/engines/registry"; updateEngineConfig("rtk", { intensity: "aggressive" }); ``` ### A hatĂĄs ellenƑrzĂ©se HasznĂĄld az **ellenƑrzĂ©si kaput** (lĂĄsd alĂĄbb) annak megerƑsĂ­tĂ©sĂ©hez, hogy a szƱrƑ biztonsĂĄgos a kivĂĄlasztott intenzitĂĄssal: ```ts import { runRtkFilterTests } from "omniroute/compression/engines/rtk/verify"; const result = runRtkFilterTests({ intensity: "aggressive" }); if (!result.passed) { console.error("A szƱrƑk meghiĂșsultak agresszĂ­v intenzitĂĄs mellett"); } ``` --- ## EgyĂ©ni szƱrƑk fejlesztĂ©se (v3.8.16+) Az `engines/rtk/filters/` könyvtĂĄr **több mint 49 beĂ©pĂ­tett szƱrƑ JSON-fĂĄjlt** tartalmaz. SajĂĄt szƱrƑket is hozzĂĄadhat az alapĂ©rtelmezett szƱrƑk ĂĄltal nem kezelt egyĂ©ni eszközök kimenetĂ©nek tömörĂ­tĂ©sĂ©hez. ### SzƱrƑsĂ©ma (Zod) ```ts { "id": "string", // KötelezƑ. SzƱrƑazonosĂ­tĂł (kebab-case, pĂ©ldĂĄul "python-traceback") "label": "string", // KötelezƑ. Ember ĂĄltal olvashatĂł szƱrƑnĂ©v "description": "string", // OpcionĂĄlis (alapĂ©rtelmezĂ©s: ""). A szƱrƑ mƱködĂ©sĂ©nek rövid leĂ­rĂĄsa "category": "git|test|build|shell|docker|package|infra|cloud|generic", "priority": number, // OpcionĂĄlis (0–100, alapĂ©rtelmezĂ©s: 50). VĂ©grehajtĂĄsi sorrend (a magasabb kerĂŒl elƑre) "match": { "commands": ["string"], // Az illesztendƑ parancsnevek (pĂ©ldĂĄul "python", "pytest") "patterns": ["string"], // A kimenetre illesztendƑ regulĂĄris kifejezĂ©sek "outputTypes": ["string"] // Felismert kimeneti osztĂĄlyok (pĂ©ldĂĄul "test-failure") }, "rules": { "stripAnsi": boolean, // OpcionĂĄlis (alapĂ©rtelmezĂ©s: false). EltĂĄvolĂ­tja az ANSI-szĂ­nkĂłdokat "replace": [ // KeresĂ©si Ă©s csereszabĂĄlyok (alapĂ©rtelmezĂ©s: []) { "pattern": "regex", "replacement": "..." } ], "matchOutput": [ // MintaegyezĂ©s esetĂ©n megszakĂ­tja a tovĂĄbbi feldolgozĂĄst (alapĂ©rtelmezĂ©s: []) { "pattern": "regex", "message": "short summary", "unless": "regex" // KihagyĂĄs, ha ez a minta illeszkedik } ], "includePatterns": ["string"], // MegtartandĂł sorok (regulĂĄris kifejezĂ©sek, alapĂ©rtelmezĂ©s: []) "dropPatterns": ["string"], // EldobandĂł sorok (regulĂĄris kifejezĂ©sek, alapĂ©rtelmezĂ©s: []) "collapsePatterns": ["string"], // Egyetlen elƑfordulĂĄsra összevonandĂł sorok (alapĂ©rtelmezĂ©s: []) "deduplicate": boolean, // OpcionĂĄlis (alapĂ©rtelmezĂ©s: false). EltĂĄvolĂ­tja az ismĂ©tlƑdƑ sorokat "truncateLineAt": number, // OpcionĂĄlis (alapĂ©rtelmezĂ©s: 0). A sorokat legfeljebb ennyi karakterre csonkolja "maxLines": number, // OpcionĂĄlis (alapĂ©rtelmezĂ©s: 0). A sorok teljes szĂĄmĂĄnak szigorĂș felsƑ korlĂĄtja "headLines": number, // OpcionĂĄlis (alapĂ©rtelmezĂ©s: 20). Megtartja az illeszkedƑ kimenet elsƑ N sorĂĄt "tailLines": number, // OpcionĂĄlis (alapĂ©rtelmezĂ©s: 20). Megtartja az illeszkedƑ kimenet utolsĂł N sorĂĄt "onEmpty": "string", // OpcionĂĄlis (alapĂ©rtelmezĂ©s: ""). TartalĂ©kĂŒzenet, ha minden sort kiszƱrt "filterStderr": boolean // OpcionĂĄlis (alapĂ©rtelmezĂ©s: false). A stderr kimenetet is szƱri }, "preserve": { "errorPatterns": ["string"], // Mindig megƑrzendƑ mintĂĄk (alapĂ©rtelmezĂ©s: []) "summaryPatterns": ["string"] // A vĂ©gsƑ összegzƑ sor mintĂĄi (alapĂ©rtelmezĂ©s: []) }, "tests": [ // BeĂĄgyazott ellenƑrzƑ tesztek (alapĂ©rtelmezĂ©s: []) { "name": "string", // KötelezƑ. A teszt neve "input": "sample output", // KötelezƑ. Minta bemeneti szöveg "expected": "expected output", // KötelezƑ. VĂĄrt tömörĂ­tett kimenet "command": "optional command" // OpcionĂĄlis. Parancskörnyezet } ] } ``` ### PĂ©lda: Python-visszakövetĂ©si szƱrƑ ```json { "id": "python-traceback", "label": "Python Traceback Filter", "description": "Compresses Python tracebacks to essential file/line locations and error type", "category": "test", "priority": 60, "match": { "commands": ["python", "python3", "pytest", "uv", "poetry"], "patterns": ["Traceback \\(most recent call last\\)", "Error", "Exception"], "outputTypes": ["error-traceback"] }, "rules": { "stripAnsi": true, "includePatterns": [ "Traceback \\(most recent call last\\)", "^\\s*File \".+\", line \\d+", "^\\s*[A-Z][a-zA-Z]+Error:", "^\\s*[A-Z][a-zA-Z]+Exception" ], "dropPatterns": ["site-packages/", "^\\s+[a-z_]+\\([^)]*\\)$"], "headLines": 5, "tailLines": 3, "maxLines": 25, "filterStderr": true }, "preserve": { "errorPatterns": ["Error:", "Exception:", "Traceback"], "summaryPatterns": ["^[A-Z][a-zA-Z]+(?:Error|Exception):"] }, "tests": [ { "name": "preserves-error-type-and-location", "input": "Traceback (most recent call last):\n File \"app.py\", line 42, in main\n do_thing()\n File \"lib/utils.py\", line 17, in helper\n return 1 / 0\nZeroDivisionError: division by zero", "expected": "Traceback (most recent call last):\n File \"app.py\", line 42, in main\n File \"lib/utils.py\", line 17, in helper\nZeroDivisionError: division by zero", "command": "python app.py" } ] } ``` ### EgyĂ©ni szƱrƑk betöltĂ©se Helyezze a fĂĄjlt egy felismert helyre: ``` ~/.omniroute/rtk/filters/my-filter.json # FelhasznĂĄlĂłi szintƱ /.rtk/filters/my-filter.json # ProjektszintƱ ``` A szƱrƑk indĂ­tĂĄskor automatikusan betöltƑdnek az `open-sse/services/compression/engines/rtk/filterLoader.ts` fĂĄjlban talĂĄlhatĂł `loadRtkFilters()` hasznĂĄlatĂĄval. A betöltƑ a következƑ helyeken keresi a szƱrƑket: - BeĂ©pĂ­tett katalĂłgus: `open-sse/services/compression/engines/rtk/filters/` - FelhasznĂĄlĂłi könyvtĂĄr: `~/.omniroute/rtk/filters/` - ProjektkönyvtĂĄr: `/.rtk/filters/` A szƱrƑk programozott betöltĂ©sĂ©hez: ```ts import { loadRtkFilters } from "@omniroute/open-sse/services/compression/engines/rtk/filterLoader"; // BeĂĄllĂ­tĂĄsok: customFiltersEnabled (felhasznĂĄlĂłi-/projektszƱrƑk betöltĂ©se, alapĂ©rtelmezĂ©s szerint engedĂ©lyezve), // trustProjectFilters, refresh. const filters = loadRtkFilters({ customFiltersEnabled: true }); ``` ### EllenƑrzĂ©s A szƱrƑket betöltĂ©skor a Zod-sĂ©ma alapjĂĄn ellenƑrzi a rendszer. A hibĂĄs szerkezetƱ szƱrƑ betöltĂ©se sikertelen lesz, Ă©s a rendszer hibĂĄt naplĂłz: ``` RTK_FILTER_LOADER: a(z) "my-filter" szƱrƑ ellenƑrzĂ©se sikertelen: - rules.replace.0.pattern: ÉrvĂ©nytelen regulĂĄris kifejezĂ©s - match.commands: nem lehet ĂŒres ``` Az összes telepĂ­tett szƱrƑ ellenƑrzĂ©sĂ©hez hĂ­vja meg az `open-sse/services/compression/engines/rtk/verify.ts` ĂĄltal exportĂĄlt `runRtkFilterTests()` fĂŒggvĂ©nyt. ### BevĂĄlt gyakorlatok 1. **Mindig add meg a `tests[]` elemet** — ezek bizonyĂ­tjĂĄk, hogy a szƱrƑd mƱködik, Ă©s megakadĂĄlyozzĂĄk a regressziĂłkat 2. **HasznĂĄld a `matchOutput` elemet rövidre zĂĄrĂĄshoz** — ha egyetlen sor is elmond mindent, cserĂ©ld le vele az egĂ©sz blokkot 3. **RĂ©szesĂ­tsd elƑnyben a `keep` elemet a `strip` helyett** — a kifejezett „mindig megƑrzendƑ” szabĂĄlyok biztonsĂĄgosabbak, mint a „mindig eltĂĄvolĂ­tandó” szabĂĄlyok 4. **Tesztelj mindhĂĄrom intenzitĂĄsi szinten** — a `minimal` ne vĂ©gezzen mĂłdosĂ­tĂĄst, az `aggressive` pedig tovĂĄbbra is Ƒrizze meg a hibĂĄkat 5. **HasznĂĄld az `unless` mezƑt** — vĂ©dd a rövidre zĂĄrĂĄsokat a „ne aktivĂĄlĂłdjon, ha X jelen van” feltĂ©tellel --- ## Nyers kimenet helyreĂĄllĂ­tĂĄsa Ă©s ellenƑrzĂ©si kapu Amikor az RTK agresszĂ­ven tömörĂ­ti a kimenetet, hibakeresĂ©si, auditĂĄlĂĄsi vagy visszajĂĄtszĂĄsi cĂ©lbĂłl **helyreĂĄllĂ­thatja az eredeti szöveget**. ### A nyers kimenet helyreĂĄllĂ­tĂĄsĂĄnak mƱködĂ©se ``` Eredeti kimenet (10K token) │ â–Œ RTK-tömörĂ­tĂ©s (rawOutput.enabled=true beĂĄllĂ­tĂĄssal) │ ├─▶ TömörĂ­tett kimenet (2K token) ──▶ az LLM-nek │ └─▶ Eredeti kimenet (10K token) ──▶ adatbĂĄzisban tĂĄrolva (request_id alapjĂĄn kapcsolva) ``` ### A nyers kimenet tĂĄrolĂĄsĂĄnak engedĂ©lyezĂ©se **KĂ©rĂ©senkĂ©nt** (a kombinĂĄlt konfigurĂĄciĂłban): ```json { "compression": { "engine": "rtk", "intensity": "aggressive", "rawOutput": { "enabled": true, "maxBytes": 1048576 // 1 MB-os korlĂĄt } } } ``` **AlapĂ©rtelmezĂ©s**: `rawOutput.enabled: false` (tĂĄrhelyet takarĂ­t meg). ### TĂĄrhelyköltsĂ©g | KĂ©rĂ©senkĂ©nt | 1 MB-os korlĂĄt | 10 MB-os korlĂĄt | | -------------------------- | -------------- | --------------- | | Átlagos tömörĂ­tett kimenet | ~5KB | ~5KB | | TĂĄrolt nyers kimenet | ~50-500KB | ~500KB-5MB | | Napi 1000 kĂ©rĂ©s esetĂ©n | 50-500MB/nap | 500MB-5GB/nap | > **Javaslat**: A nyers kimenetet csak **hibakeresĂ©si munkamenetekhez** vagy **mintavĂ©telezett auditĂĄlĂĄshoz** engedĂ©lyezze, ne folyamatosan. ### Az eredeti kimenet helyreĂĄllĂ­tĂĄsa ```ts import { readRtkRawOutput } from "omniroute/compression/engines/rtk/rawOutput"; const raw = readRtkRawOutput(pointerId); // pointerId a tömörĂ­tĂ©si statisztikĂĄkbĂłl if (raw) { console.log("Original output:", raw); } ``` A `pointerId` a tömörĂ­tĂ©s utĂĄn a `CompressionStats.rtkRawOutputPointers[]` mezƑben talĂĄlhatĂł. A fĂŒggvĂ©ny szignatĂșrĂĄjĂĄt lĂĄsd itt: `open-sse/services/compression/engines/rtk/rawOutput.ts:102`. ### Az ellenƑrzĂ©si kapu Az **RTK-szƱrƑk ellenƑrzĂ©se** (`open-sse/services/compression/engines/rtk/verify.ts`) minden szƱrƑt ellenƑriz a hozzĂĄ tartozĂł `tests[]` alapjĂĄn, Ă©s biztosĂ­tja a helyes mƱködĂ©st mindhĂĄrom intenzitĂĄsi szinten. Az ellenƑrzĂ©s futtatĂĄsĂĄhoz **hĂ­vja meg a `runRtkFilterTests()` fĂŒggvĂ©nyt**: ```ts import { runRtkFilterTests } from "open-sse/services/compression/engines/rtk/verify"; const result = runRtkFilterTests(); console.log(`Passed: ${result.outcomes.filter((o) => o.passed).length}`); console.log(`Failed: ${result.outcomes.filter((o) => !o.passed).length}`); if (!result.passed) { console.error("Filters failed verification"); result.outcomes .filter((o) => !o.passed) .forEach((o) => { console.error( ` - ${o.filterId} / ${o.testName}: expected "${o.expected}", got "${o.actual}"` ); }); } ``` **Amit ellenƑriz**: 1. Minden szƱrƑ betöltƑdik Ă©s megfelel a sĂ©maellenƑrzĂ©snek 2. Minden `tests[]` bejegyzĂ©s az elvĂĄrt kimenetet ĂĄllĂ­tja elƑ 3. A `minimal` intenzitĂĄs nem vĂ©gez mĂłdosĂ­tĂĄst (megƑrzi az eredetit, Ă©s csak strukturĂĄlis szƱrƑket alkalmaz) 4. Az `aggressive` intenzitĂĄs megƑrzi a hibĂĄkat, a teszthibĂĄkat Ă©s a veremkivonatokat 5. A tömörĂ­tett kimenet soha nem nagyobb az eredeti bemenetnĂ©l - ForrĂĄs: `open-sse/services/compression/engines/rtk/` (63 fĂĄjl, ~70KB) - **SzƱrƑmĂłdosĂ­tĂĄs egyesĂ­tĂ©se elƑtt** — mindig gyƑzƑdjön meg arrĂłl, hogy a tesztek sikeresek - **Az RTK-motor frissĂ­tĂ©se utĂĄn** — elƑfordulhat, hogy a sĂ©ma megvĂĄltozott - **Rendszeresen, a monitorozĂĄs rĂ©szekĂ©nt** — vĂ©delmet nyĂșjt a tesztrögzĂ­tĂ©sek eltĂ©rĂ©sei ellen - **Új eszköz- vagy parancscsalĂĄd hozzĂĄadĂĄsakor** — bizonyĂ­tja, hogy az Ășj szƱrƑ mƱködik --- ## LĂĄsd mĂ©g - [COMPRESSION_GUIDE.md](./COMPRESSION_GUIDE.md) — A teljes tömörĂ­tĂ©si folyamat ĂĄttekintĂ©se - [COMPRESSION_ENGINES.md](./COMPRESSION_ENGINES.md) — Motorregiszter Ă©s beĂ©pĂ­tett motorok - [EXTENDING_COMPRESSION.md](./EXTENDING_COMPRESSION.md) — EgyĂ©ni motorok, nyelvi csomagok, egymĂĄsra Ă©pĂŒlƑ folyamatok - ForrĂĄs: `open-sse/services/compression/engines/rtk/` (63 fĂĄjl, ~70 KB)