# Compression Rules Format (Magyar) 🌐 **Languages:** 🇺🇸 [English](../../../../compression/COMPRESSION_RULES_FORMAT.md) · 🇪🇹 [am](../../../am/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇸🇦 [ar](../../../ar/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇦🇿 [az](../../../az/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇧🇬 [bg](../../../bg/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇧🇩 [bn](../../../bn/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇧🇦 [bs](../../../bs/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇨🇿 [cs](../../../cs/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇩🇰 [da](../../../da/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇩🇪 [de](../../../de/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇬🇷 [el](../../../el/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇪🇸 [es](../../../es/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇪🇪 [et](../../../et/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇷 [fa](../../../fa/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇫🇮 [fi](../../../fi/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇫🇷 [fr](../../../fr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇪 [ga](../../../ga/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [gu](../../../gu/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇬 [ha](../../../ha/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇱 [he](../../../he/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [hi](../../../hi/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇭🇷 [hr](../../../hr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇦🇲 [hy](../../../hy/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇩 [id](../../../id/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇬 [ig](../../../ig/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇹 [it](../../../it/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇯🇵 [ja](../../../ja/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇬🇪 [ka](../../../ka/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇰🇭 [km](../../../km/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [kn](../../../kn/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇰🇷 [ko](../../../ko/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇱🇹 [lt](../../../lt/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇱🇻 [lv](../../../lv/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [ml](../../../ml/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [mr](../../../mr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇲🇾 [ms](../../../ms/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇲🇹 [mt](../../../mt/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇲🇲 [my](../../../my/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇵 [ne](../../../ne/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇱 [nl](../../../nl/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇴 [no](../../../no/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [or](../../../or/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [pa](../../../pa/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇵🇭 [phi](../../../phi/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇵🇱 [pl](../../../pl/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇵🇹 [pt](../../../pt/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇷🇴 [ro](../../../ro/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇷🇺 [ru](../../../ru/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇱🇰 [si](../../../si/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇸🇰 [sk](../../../sk/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇸🇮 [sl](../../../sl/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇷🇸 [sr](../../../sr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇸🇪 [sv](../../../sv/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇰🇪 [sw](../../../sw/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [ta](../../../ta/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [te](../../../te/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇹🇭 [th](../../../th/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇹🇷 [tr](../../../tr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇵🇰 [ur](../../../ur/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇺🇿 [uz](../../../uz/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇻🇳 [vi](../../../vi/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇬 [yo](../../../yo/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_RULES_FORMAT.md) --- A tömörítési szabályok futásidőben betöltött JSON-fájlok. Szándékosan csak adatokat tartalmaznak, így az új nyelvi csomagok és RTK-parancsszűrők a motor kódjának módosítása nélkül ellenőrizhetők. > **Kanonikus séma (a hiteles forrás):** [`open-sse/services/compression/rules/_schema.json`](../../open-sse/services/compression/rules/_schema.json) (JSON Schema, 2020-12-es tervezet). > Az alábbi példák csak szemléltető jellegűek — kétség esetén ellenőrizze a csomagot a `_schema.json` alapján. ## Caveman-szabálycsomagok A Caveman-szabálycsomagok itt találhatók: ```txt open-sse/services/compression/rules//.json ``` Minden csomag olyan helyettesítéseket tartalmaz, amelyek a védett régiók elkülönítése után a normál prózára vonatkoznak. ```json { "language": "en", "category": "filler", "rules": [ { "name": "question_to_directive", "pattern": "\\b(?:Can you explain why|Could you show me how)\\b\\s*", "replacement": "Explain why ", "replacementMap": { "can you explain why": "Explain why ", "could you show me how": "Show how " }, "flags": "gi", "context": "all", "category": "context", "minIntensity": "lite", "description": "Convert verbose questions into direct requests." } ] } ``` ### Caveman-mezők | Mező | Kötelező | Leírás | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------- | | `language` | igen | BCP-47-szerű nyelvi kulcs, például `en`, `pt-BR`, `es` | | `category` | igen | A csomag kategóriája/fájlneve, például `filler` vagy `dedup` | | `rules` | igen | Reguláris kifejezésen alapuló helyettesítési szabályok tömbje | | `rules[].name` | igen | Stabil szabálynév | | `rules[].pattern` | igen | JavaScript-reguláris kifejezés forrása | | `rules[].flags` | nem | JavaScript-reguláriskifejezés-jelzők; alapértelmezés: `gi` | | `rules[].replacement` | nem | Helyettesítő karakterlánc vagy tartalékérték, ha nincs találat a `replacementMap` elemei között | | `rules[].replacementMap` | nem | Találatspecifikus helyettesítések, a normalizált egyező szöveg szerint kulcsolva | | `rules[].context` | nem | `all`, `user`, `assistant` vagy `system`; alapértelmezés: `all` | | `rules[].category` | nem | `filler`, `context`, `structural`, `dedup`, `terse` vagy `ultra` | | `rules[].minIntensity` | nem | `lite`, `full` vagy `ultra`; alapértelmezés: `lite` | | `rules[].description` | nem | A szabály ember számára olvasható összefoglalása | A `flags` mezőt akkor használja, ha számít a kis- és nagybetűk megkülönböztetése, például a névelő eltávolításakor kisbetűs próza előtt anélkül, hogy eltávolítaná a `the OpenAI API` kifejezésből. A `replacementMap` mezőt akkor használja, ha egy reguláris kifejezés több alternatívát tartalmaz, amelyekhez eltérő kimenetek szükségesek; így a JSON-szabálycsomagok kizárólag adatokat tartalmaznak, miközben megőrzik az összetettebb, beépített TypeScript-helyettesítő függvények működését. ## RTK-szűrőcsomagok Az RTK-szűrők a következő helyen találhatók: ```txt open-sse/services/compression/engines/rtk/filters/.json ``` Minden szűrő azt írja le, hogyan kell felismerni és tömöríteni egy parancskimenet-családot. ```json { "id": "test-vitest", "label": "Vitest-kimenet", "category": "test", "priority": 92, "match": { "outputTypes": ["test-vitest"], "commands": ["vitest", "npm test", "npm run test"], "patterns": ["\\bFAIL\\b", "\\bPASS\\b", "\\bTest Files\\b"] }, "rules": { "stripAnsi": true, "replace": [{ "pattern": "\\s+\\[[0-9]+ms\\]", "replacement": "" }], "matchOutput": [ { "pattern": "All tests passed", "message": "vitest: rendben", "unless": "FAIL|Error:" } ], "includePatterns": ["FAIL", "Error:", "Test Files", "Tests"], "dropPatterns": ["^\\s*$", "Duration\\s+\\d+"], "collapsePatterns": ["^\\s+at "], "deduplicate": true, "truncateLineAt": 240, "maxLines": 160, "headLines": 24, "tailLines": 40, "onEmpty": "vitest: rendben", "filterStderr": false }, "preserve": { "errorPatterns": ["FAIL", "Error:", "AssertionError"], "summaryPatterns": ["Test Files", "Tests", "Snapshots"] }, "tests": [ { "name": "megőrzi a sikertelen teszteket", "command": "vitest", "input": "FAIL test/a.test.ts\\nError: boom\\nTest Files 1 failed", "expected": "FAIL test/a.test.ts\\nError: boom\\nTest Files 1 failed" } ] } ``` ### RTK-mezők | Mező | Kötelező | Leírás | | -------------------------- | -------- | ----------------------------------------------------------------------------- | | `id` | igen | Stabil szűrőazonosító | | `label` | igen | Az irányítópulton megjeleníthető név | | `category` | igen | Szűrőcsalád: git, test, build, shell, docker, package, infra, cloud, generic | | `priority` | nem | Több egyező szűrő esetén a magasabb prioritású nyer | | `match.outputTypes` | nem | A szűrőt kiválasztó detektorkimeneti azonosítók | | `match.commands` | nem | A szűrőt kiválasztó parancstokenek | | `match.patterns` | nem | A szűrőt a kimeneti szöveg alapján kiválasztó reguláris kifejezések | | `rules.stripAnsi` | nem | Az ANSI escape-szekvenciák eltávolítása a regexfázisok előtt | | `rules.replace` | nem | Soronként alkalmazott, rendezett reguláriskifejezés-helyettesítések | | `rules.matchOutput` | nem | Korai kilépést eredményező kimeneti szabályok opcionális `unless` feltétellel | | `rules.includePatterns` | nem | Elsődlegesen megőrzendő sorok | | `rules.dropPatterns` | nem | Zajként eltávolítandó sorok | | `rules.collapsePatterns` | nem | Összecsukható, ismétlődő egyező sorok | | `rules.deduplicate` | nem | Az ismétlődő normalizált sorok összevonása | | `rules.truncateLineAt` | nem | Unicode-biztos, soronkénti karakterkorlát | | `rules.maxLines` | nem | A végét megőrző feldolgozás előtt megtartott sorok maximális száma | | `rules.headLines` | nem | A csonkolás során megtartott kezdő sorok | | `rules.tailLines` | nem | A legutóbbi kontextus megőrzéséhez megtartott záró sorok | | `rules.onEmpty` | nem | Tartaléküzenet arra az esetre, ha a szűrés minden tartalmat eltávolít | | `rules.filterStderr` | nem | A gyakori stderr-előtagok normalizálása a későbbi szűrési fázisok előtt | | `preserve.errorPatterns` | nem | A csonkolást túlélő hibasorok | | `preserve.summaryPatterns` | nem | A csonkolást túlélő összegző sorok | | `tests[]` | nem | Az RTK ellenőrzési kapuja által használt beágyazott ellenőrzési minták | Az RTK a deklaratív fázisokat a következő sorrendben alkalmazza: `stripAnsi`, `filterStderr`, `replace`, `matchOutput`, `dropPatterns`/`includePatterns`, `truncateLineAt`, `headLines`/`tailLines`, `maxLines`, majd `onEmpty`. Egyéni szűrők a következő helyekről tölthetők be: 1. Projektbeli `.rtk/filters.json` fájlokból, de csak akkor, ha rendelkezésre áll egy egyező `.rtk/trust.json`-kivonat, vagy a `trustProjectFilters` engedélyezve van. 2. A globális `DATA_DIR/rtk/filters.json` fájlból. 3. A beépített szűrők közül. A projekt- és globális egyéni fájlok egyetlen szűrőobjektumot vagy szűrőobjektumok tömbjét tartalmazhatják. Az érvénytelen egyéni szűrők diagnosztikai üzenetek kíséretében kimaradnak; az érvénytelen beépített szűrők miatt az ellenőrzés sikertelen lesz. Projektmegbízhatósági fájl: ```json { "filtersSha256": "0123456789abcdef..." } ``` Az `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=1` környezeti felülbírálás kivonat nélkül is megbízhatónak tekinti a projektszűrőket, ezért használatát ellenőrzött helyi fejlesztési környezetekre kell korlátozni. ## Biztonsági szabályok - A szabályok legyenek idempotensek: ugyanazon szűrő kétszeri futtatása ne rontsa el a kimenetet. - Ahol lehetséges, őrizze meg pontosan a hibaüzenetek szövegét, a fájlútvonalakat, a sorszámokat és a parancsok összefoglalóit. - Kerülje az olyan szabályokat, amelyek kódblokkokat, JSON-adattartalmakat, URL-eket vagy titkos adatokat módosítanak. - Az új parancscsaládokhoz adjon egységteszteket a detektor- és szűrőtesztekhez. - Adjon `tests[]` mintákat minden beépített szűrőhöz és a megosztott egyéni szűrőkhöz. ## Ellenőrzés A szabálycsomagok használat előtt ellenőrzésen esnek át. A beépített Caveman-csomagok és a beépített RTK-szűrők hibás ellenőrzés esetén azonnal leállnak, így a hibás kiadási összetevők még a szállítás előtt észlelhetők. Az egyéni RTK-szűrők diagnosztikai üzenet kíséretében kimaradnak, ha a feldolgozás vagy a megbízhatósági ellenőrzés sikertelen. Célzott ellenőrzés: ```bash node --import tsx/esm --test tests/unit/compression/rule-loader.test.ts tests/unit/compression/language-packs.test.ts node --import tsx/esm --test tests/unit/compression/rtk-verify.test.ts tests/unit/compression/rtk-dsl-pipeline.test.ts ```