Files
OmniRoute/docs/i18n/ha/docs/compression/RTK_COMPRESSION.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

37 KiB
Raw Blame History

RTK Compression (Hausa)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Matsawar RTK ita ce injin matsewa na OmniRoute mai fahimtar umarni don fitarwar terminal da kayan aiki. An ƙera ta ne don zaman wakilan coding inda mafi yawan ƙaruwar mahallin ke fitowa daga rajistan gwaji, fitarwar build, hayaniyar package manager, rubutattun bayanan shell, fitarwar Docker, fitarwar git, da stack traces.

RTK na iya aiki kai tsaye da defaultMode: "rtk" ko a matsayin mataki na farko a cikin jerin matsewa, yawanci:

rtk -> caveman

Wannan tsari yana fara matse fitarwar na'ura mai hayaniya, sannan ya bar Caveman ya taƙaita sauran rubutun bayani.

RTK na asali yana bayar da rahoton adana 60-90% na fitarwar umarni. Misalin zaman da ke cikin README ɗinsa ya sauka daga daidaitattun tokens ~118,000 zuwa tokens na RTK ~23,900, wanda ke nufin an adana 79.7% (~80%). OmniRoute yana amfani da wannan matsakaicin na asali don lissafin adanawar matsewa mai jerin matakai tare da matse shigarwar Caveman:

Matsakaicin RTK:  80% an adana
Shigarwar Caveman: 46% an adana
A jere:          1 - (1 - 0.80) * (1 - 0.46) = 89.2% an adana
Kewayo:          1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%

Abin da Take Matsewa

Kundin da aka gina a ciki a halin yanzu yana zuwa da filters 49 a waɗannan rukunan:

Rukuni Misalai
git git status, git branch, git diff, git log
test Vitest, Jest, Pytest, Playwright, gwaje-gwajen Go, gwaje-gwajen Cargo
build TypeScript, ESLint, Biome, Prettier, Vite, Webpack, Turbo, Nx
package npm install, npm audit, pip, uv sync, Poetry, Bundler
shell ls, find, grep, rajistan shell na gama-gari
docker docker ps, rajistan Docker
infra Terraform, OpenTofu, systemctl status
generic Fitarwar JSON, stack traces, madadin fitarwa na gama-gari

Mai gano nau'i da ke cikin open-sse/services/compression/engines/rtk/commandDetector.ts yana rarraba fitarwa kafin zaɓin filter. Filters kuma za su iya daidaitawa bisa tsarin umarni ko regex na fitarwa idan rukunin umarni bai wadatar ba.

Tantance Filter

RTK tana loda filters a wannan tsari:

  1. Filters na project daga .rtk/filters.toml da .rtk/filters.json, kawai idan an amince da su.
  2. Filters na global daga DATA_DIR/rtk/filters.toml da DATA_DIR/rtk/filters.json.
  3. Filters da aka gina a ciki daga open-sse/services/compression/engines/rtk/filters/.

A cikin scope ɗaya, filters na RTK TOML schema v1 suna da fifiko a kan filters na OmniRoute JSON. Ana duba furucin TOML match_command kafin daidaitawa da nau'in umarni domin filter da aka shigo da shi na takamaiman umarni ya iya maye gurbin filter mai faɗi a cikin wannan scope. Scope na project har yanzu yana da fifiko a kan scope na global, ba tare da la'akari da tsarin fayil ba.

Da gangan an sanya filters na project ƙarƙashin sharadin amincewa saboda regex filters na iya sauya yadda ake nuna fitarwar kayan aiki ga wakilai. Ana karɓar fayil ɗin filter na project idan ɗaya daga cikin waɗannan gaskiya ne:

  • rtkConfig.trustProjectFilters yana true.
  • An saita OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=1.
  • .rtk/trust.json yana ɗauke da hash na SHA-256 da ya dace da fayil ɗin filter na project.

Misalin fayil ɗin amincewa:

{
  "filtersSha256": "0123456789abcdef...",
  "filtersTomlSha256": "fedcba9876543210..."
}

Hashes ɗin sun bambanta: filtersSha256 yana amincewa da .rtk/filters.json, yayin da filtersTomlSha256 ke amincewa da .rtk/filters.toml. Gyara kowane fayil yana soke takardar amincewarsa kawai. Masu gudanarwa ne ke girka fayilolin global kuma suna amfani da halin amincewa da global-filter da ake da shi.

Filters na musamman na iya zama object ɗin filter guda ɗaya ko array na objects na filter. Ana tsallake filters na musamman marasa inganci kuma diagnostics na /api/context/rtk/filters yana bayar da rahotonsu. Filters da aka gina a ciki marasa inganci suna dakatar da aiki nan take.

Daidaituwar RTK TOML schema v1

OmniRoute na iya tantancewa, ingantawa, gwadawa, da shigar da fayilolin tacewa na bayani ta amfani da RTK TOML schema v1. Filayen da ake tallafawa su ne 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, da gwaje-gwajen cikin layi na [[tests.<filter>]]. Ana ƙin filayen da ba a sani ba, regular expressions marasa inganci ko haɗari, dokokin cirewa/riƙewa da aka yi amfani da su lokaci guda, fayilolin da suka wuce 1 MiB, da manazarta zuwa matatan da ba a sani ba. Ana iya inganta fayil ɗin da gwaje-gwajensa na cikin layi suka gaza domin dubawa, amma ba za a iya shigar ko loda shi ba. Gazawar loda fayil na musamman tana ci gaba da barin tsarin a buɗe: ana tsallake fayil ɗin da ba shi da inganci, sannan sauran matatan su ci gaba da aiki.

OmniRoute yana karɓar fitarwar kayan aiki bayan abokin ciniki ya riga ya kama ta, don haka filter_stderr = true ba zai iya canza yadda ake kama aikin ba. Ana karɓar filin a matsayin aikin da ba ya yin komai, kuma ingantawa tana dawo da gargadi. Da gangan aka bayyana wannan a matsayin daidaituwar RTK TOML schema v1, ba cikakkiyar daidaituwa da RTK executable, shell hooks, aiwatar da umarnin Rust, ko tsarin trust-store nasa ba.

Babban mahangar RTK ta dashboard tana karɓar TOML da aka liƙa ko aka ɗora. Ingantawa ta karatu kaɗai ce. Shigarwa tana rubuta DATA_DIR/rtk/filters.toml ta atomatik tare da tsauraran izini, sannan ta sabunta kundin matatan da ke aiki ba tare da sake farawa ba. Maye gurbin fayil da yake akwai yana buƙatar tabbatarwar overwrite a sarari, kuma yana fara ƙirƙirar DATA_DIR/rtk/filters.toml.bak.

DSL na Tacewa

Matata suna amfani da JSON schema da aka bayyana a Tsarin Dokokin Matsewa. Lokacin aiki yana aiwatar da waɗannan matakai a jere:

stripAnsi -> filterStderr -> replace -> matchOutput -> sauke/haɗa layuka
  -> truncateLineAt -> head/tail/maxLines -> onEmpty

Muhimman filaye:

Fili Manufa
rules.stripAnsi Cire jerin launi/sarrafa na terminal kafin daidaitawa
rules.filterStderr Daidaita gabatarwar stderr da aka saba amfani da ita kafin daidaitawa/tacewa
rules.replace Aiwatar da sauye-sauyen regex a jere
rules.matchOutput Mayar da taƙaitaccen bayani idan fitarwa ta dace da sanannen yanayi
rules.matchOutput[].unless Tsallake gajeriyar hanyar idan akwai alamar kuskure/gazawa
rules.dropPatterns Cire layukan da ba su da amfani
rules.includePatterns Fifita layukan da za a iya ɗaukar mataki a kansu
rules.collapsePatterns Haɗa layukan da suka dace masu maimaituwa
rules.deduplicate Zaɓin shiga na kowace matata: haɗa layukan kwafi masu jere
rules.truncateLineAt Gajarta kowane layi cikin aminci ga Unicode
rules.onEmpty Saƙon madadin idan an tace dukkan layuka
tests[] Samfuran cikin layi da ƙofar tabbatarwa ke amfani da su

Ana sa ran matatan da aka gina a ciki su ƙunshi samfuran tests[] na cikin layi. Ya kamata matatan musamman su ma ƙunshi su, musamman idan ana amfani da su tare a ayyuka daban-daban.

Cire Maimaituwar Layi (matakai biyu)

RTK yana haɗa layukan da suka maimaitu a matakai biyu masu zaman kansu:

  1. deduplicate na kowane tacewa (sai an kunna, tsoho false). Tacewa na iya saita rules.deduplicate: true don haɗa layuka masu maimaituwa da suke jere a cikin sakamakon da wannan tacewar ta dace da shi, kafin taƙaitawa. Wannan yana gudana a cikin lineFilter.ts. Ga tsofaffin matatu, ana kunna shi ta atomatik idan tacewar ta ayyana collapsePatterns. Tsari: deduplicate: z.boolean().default(false) a cikin open-sse/services/compression/engines/rtk/filterSchema.ts.
  2. deduplicateThreshold na gaba ɗaya injin (tsoho 3). Bayan duk matatu sun gama aiki, injin yana haɗa duk wani jerin layuka iri ɗaya masu jere guda >= deduplicateThreshold a faɗin dukkan sakamakon (deduplicateRepeatedLines, wanda ake amfani da shi a cikin engines/rtk/index.ts). Ana iyakance ƙimar zuwa 2100 yayin daidaitawa.

Aikin kowane tacewa yana gudana da farko (a cikin tacewar), aikin gaba ɗaya injin kuma yana gudana a ƙarshe (a kan sakamakon da aka haɗa), don haka su biyun suna aiki tare ba tare da ƙirga abu sau biyu ba.

Rarraba Layuka Rukuni-rukuni (enableGrouping)

Lokacin da rtkConfig.enableGrouping yake true (tsoho false), RTK yana gudanar da wani ƙarin aikin groupSimilarLines a kan sakamakon bayan cire maimaituwa, wanda ke haɗa jerin layuka masu kusan daidaito (ba masu daidaito iri ɗaya ta kowane byte ba) da suke jere. rtkConfig.groupingThreshold (tsoho 3) shi ne mafi ƙarancin tsawon jeri da ke kunna rarrabawa rukuni-rukuni. Wannan shi ne takwaran tsari na deduplicateThreshold: cire maimaituwa yana kula da ainihin maimaitawa, rarrabawa rukuni-rukuni kuma yana kula da “siffa ɗaya mai ƙananan bambance-bambance”. Dukkan tutocin suna cikin JSON na rtkConfig da aka adana a cikin teburin key_value (duba Kanfigareshan da ke sama), don haka saitin yana ci gaba da kasancewa bayan sake farawa.

Cire Sharhin Lamba (stripCodeComments / preserveDocstrings)

Lokacin da aka kunna rtkConfig.applyToCodeBlocks, RTK zai iya cire sharhi daga tubalan lamba masu shinge:

  • stripCodeComments (tsoho false) — sai an kunna. Lokacin da yake true, RTK yana cire sharhi daga tubalan JavaScript da TypeScript masu shinge. A tarihi ana karanta tutar amma ba a taɓa amfani da ita ba, saboda haka tsohon saitin ya ci gaba da kasancewa “adana” don guje wa canjin samarwa na shiru.
  • preserveDocstrings (tsoho true) — yayin cire sharhi, ana adana sharhin tubalan JSDoc//** … */ (suna ɗauke da takardun API da darajarsu ta fi yawan bytes da suke ci). Saita shi zuwa false don cire su ma.

An aiwatar da cire sharhi a cikin open-sse/services/compression/engines/rtk/codeStripper.ts. Yana amfani da TypeScript parser (ba regex ba), don kada a taɓa ɗaukar literals na string, template, da regex a matsayin sharhi, kuma yana dakatar da aikin gaba ɗaya idan an gano JSX (don kada a taɓa lalata sharhin expression-container na JSX). A halin yanzu cire sharhi yana aiki ne ga JavaScript da TypeScript kawai — sauran harsunan da ke cikin saitin CodeLanguage na stripper (Python, Rust, Go, Ruby, Java) suna da haɗa layukan da babu komai da fararen sarari, amma ba su da cire sharhi. Ana yi wa aikin tubalin da aka cire wa sharhi alamar rtk:code-strip a cikin rulesApplied.

Lura — GCF / rufaffen bayanan tebur injin ne daban. RTK ba ya ƙunshe da mai rufaffen bayanan JSON na “GCF” (Graph Compact Format) mai tsarin tebur/ginshiƙai. Wannan mai rufaffen bayanan — wanda ya maye gurbin tsohon mai rufaffen bayanan omni-tabular — yana cikin injin headroom (open-sse/services/compression/engines/headroom/, tare da codec ɗin da aka haɗa a ƙarƙashin headroom/gcf/). Ba shi da alaƙa da jerin ayyukan tacewa na RTK da aka rubuta a nan.

Daidaitawa

Ana samun saitunan gaba ɗaya ta /api/settings/compression. Haka kuma ana samun saitunan da suka shafi RTK ta /api/context/rtk/config.

{
  "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
  }
}

enabledFilters da disabledFilters suna amfani da ID na matata, misali test-vitest ko git-diff.

An ayyana cikakken tsarin rtkConfig ta RtkConfig / DEFAULT_RTK_CONFIG a cikin open-sse/services/compression/types.ts. Ana adana dukkan abin a matsayin ƙimar JSON guda ɗaya a teburin SQLite na key_value ƙarƙashin namespace = "compression", key = "rtkConfig" (src/lib/db/compression.ts), sannan normalizeRtkConfig yana daidaita shi yayin karantawa. Don haka, kowane fili da ke ƙasa — ciki har da enableGrouping, groupingThreshold, stripCodeComments, da preserveDocstrings — yana bi ta ma'ajiyar guda ɗaya kuma yana nan bayan sake kunnawa.

Maɓalli Tsoho Manufa
deduplicateThreshold 3 Ga injin gaba ɗaya: mafi ƙarancin layuka iri ɗaya a jere da za a dunƙule (iyaka 2100)
enableGrouping false Zaɓin kunnawa: dunƙule jerin layuka masu kusan daidaito da ke biye da juna
groupingThreshold 3 Mafi ƙarancin adadin layuka makamanta a jere da ke jawo haɗawa rukuni
stripCodeComments false Zaɓin kunnawa: cire sharhi daga tubalan lamba masu shinge (yana buƙatar applyToCodeBlocks)
preserveDocstrings true Lokacin cire sharhi, a bar tubalan JSDoc//** … */

API

Hanya Hanya ta HTTP Manufa
/api/context/rtk/config GET Karanta daidaitawar RTK
/api/context/rtk/config PUT Sabunta daidaitawar RTK
/api/context/rtk/filters GET Jera kundin matata da bayanan binciken lodawa
/api/context/rtk/import POST Tabbatar ko shigar da fayilolin RTK TOML schema v1
/api/context/rtk/test POST Samfoti na matsewar RTK don bayanan rubutu guda ɗaya
/api/context/rtk/raw-output/[id] GET Karanta ɗanyen fitarwa da aka ɓoye bayanansa kuma aka adana
/api/compression/preview POST Samfoti na kowane yanayin matsewa

Bayanan gwajin RTK:

{
  "command": "npm test",
  "text": "FAIL tests/example.test.ts\nAssertionError: expected true\nTest Files 1 failed",
  "config": {
    "intensity": "standard"
  }
}

Bayanan samfurin matsewa:

{
  "mode": "stacked",
  "messages": [
    {
      "role": "tool",
      "content": "FAIL tests/example.test.ts\nAssertionError: expected true\nTest Files 1 failed"
    }
  ],
  "config": {
    "rtkConfig": {
      "rawOutputRetention": "failures"
    }
  }
}

Hanyoyin gudanarwa suna buƙatar izinin gudanar da dashboard ko manufar API-key da ta dace.

Bayanan tabbatar da RTK TOML:

{
  "action": "validate",
  "content": "schema_version = 1\n\n[filters.my-tool]\nmatch_command = \"^my-tool\\\\b\"\nmax_lines = 20\n"
}

Yi amfani da "action": "install" don shigar da fayil ɗin da aka tabbatar a matakin duniya. Ƙara "overwrite": true kawai bayan dubawa da tabbatar da maye gurbin fayil ɗin duniya da yake akwai.

Maido da Fitarwa Marar Sarrafawa

RTK yawanci yana dawo da rubutun da aka matse kawai. Don gyaran kurakurai, rawOutputRetention na iya riƙe fitarwa marar sarrafawa da aka ɓoye bayananta:

Ƙima Halayya
never Kada a riƙe fitarwa marar sarrafawa
failures A riƙe fitarwar da ake ganin wataƙila ta gaza kawai
always A riƙe kowace fitarwa marar sarrafawa ta RTK da aka matse, bayan ɓoye bayanai

Ana rubuta fayilolin da aka riƙe a ƙarƙashin:

DATA_DIR/rtk/raw-output/

Ana ɓoye bayanan sirri kafin adanawa, ciki har da sanannun bearer tokens, API keys, Slack tokens, AWS access keys, da ƙimomin salon sanyawa kamar token=..., secret=..., password=.... Nazari yana adana id na manuni, girma, da metadata na hash kawai.

Ƙofar Tabbatarwa

Ƙofar tabbatarwa mai mayar da hankali tana gudanar da ginannun gwaje-gwajen tacewa na inline ba tare da kiran umarnin waje ta shell ba:

node --import tsx/esm --test tests/unit/compression/rtk-verify.test.ts

Ƙofar RTK mafi faɗi ita ce:

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

Gudanar da ƙofar matsawa mai faɗi kafin fitarwa:

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

Faɗaɗa RTK

  1. Ƙara ko sabunta fayil ɗin JSON na mataci.
  2. Haɗa aƙalla samfurin tests[] guda ɗaya da ke tabbatar da muhimmiyar halayyar.
  3. Ƙara fixture a ƙarƙashin tests/unit/compression/fixtures/rtk/ don sababbin rukunin umarni.
  4. Ƙara ɗaukar gwajin gano umarni yayin gabatar da sabon nau'in fitarwa.
  5. Gudanar da ƙofofin tabbatarwa da na RTK mai faɗi.
  6. Idan matacin na cikin aikin ne kawai, yi commit na .rtk/filters.json sannan ka sabunta .rtk/trust.json bayan an yi bita kawai.

Matakan Ƙarfi (v3.8.16+)

RTK yana goyon bayan matakan ƙarfi 3 waɗanda ke yin daidaito tsakanin tsananin matsawa da aminci. Ana saita matakin ta config.intensity a cikin daidaitawar engine.

Matakan 3

Mataki Iyakar yankewa Rage tokens Haɗari Ya fi dacewa da
minimal Layuka 24 a kowane sashe ~20-40% Ƙarami sosai Production mai mahallin da yake da matuƙar muhimmanci
standard (tsoho) Layuka 24 a kowane sashe ~50-70% Ƙarami Zaman rubuta lamba na yau da kullum
aggressive Layuka 16 a kowane sashe ~70-90% Matsakaici Dogayen zama, mafi girman ragewa

Inda Yankewar Ke Faruwa

Iyakar yankewa tana shafar lineFilter.ts:

// Daga open-sse/services/compression/engines/rtk/index.ts:329-330
config.intensity === "aggressive" ? 16 : 24,
config.intensity === "aggressive" ? 16 : 24,

Ana kiyaye duka farkon da ƙarshen kowane sashe; ana cire abubuwan da ke tsakiya idan yankewa ta fara aiki.

Abin da Ake Bari da Abin da Ake Yanke

Abun ciki minimal standard aggressive
Kurakurai / stack traces ana kiyayewa ana kiyayewa ana kiyayewa
Gazawar gwaje-gwaje ana kiyayewa ana kiyayewa ana kiyayewa
Kurakuran build ana kiyayewa ana kiyayewa ana kiyayewa
Nasarar gwaje-gwaje (cikakke) ana kiyayewa 🟡 ana taƙaitawa 🟡 ana taƙaitawa
Fitarwa ta yau da kullum (info logs) 🟡 ana taƙaitawa 🟡 ana taƙaitawa ana cirewa
Sandunan ci gaba 🟡 ana taƙaitawa ana cirewa ana cirewa
Banner / fasahar ASCII 🟡 ana taƙaitawa ana cirewa ana cirewa

Zaɓar Ƙarfin da Ya Dace

                  Shin rasa mahalli zai zama bala'i?
                  │
      ┌───────────┼───────────┐
      │           │           │
     EH           A'A       BA A TABBATA BA
      │           │           │
      ▼           │           │
   minimal        │           │
      │           │           │
      │           ▼           ▼
      │      Yaya muhimmancin Fara gwada `standard`
      │      throughput yake? (yana aiki ga kashi 80%
      │           │          na lokuta)
      │      ┌────┴────┐
      │      │         │
      │    ƘASA      SAMA
      │      │         │
      │      ▼         ▼
      │   standard   aggressive
      │      │         │
      └──────┴─────────┘

Daidaita Ƙarfi

Ga kowane combo (a cikin daidaitawar combo):

{
  "combo": "my-coding-combo",
  "routing": {/* ... */},
  "compression": {
    "engine": "rtk",
    "intensity": "aggressive"
  }
}

Ta hanyar shirye-shirye:

rtkEngine (@omniroute/open-sse/services/compression/engines/rtk) wani CompressionEngine ne kuma ba shi da hanyar updateConfig. Sabunta daidaitawar engine ta hanyar mataimakin registry maimakon haka:

import { updateEngineConfig } from "@omniroute/open-sse/services/compression/engines/registry";

updateEngineConfig("rtk", { intensity: "aggressive" });

Tabbatar da Tasirin

Yi amfani da Ƙofar Tabbatarwa (duba ƙasa) don tabbatar da cewa matacinka yana da aminci a ƙarfin da ka zaɓa:

import { runRtkFilterTests } from "omniroute/compression/engines/rtk/verify";

const result = runRtkFilterTests({ intensity: "aggressive" });
if (!result.passed) {
  console.error("Filters failed at aggressive intensity");
}

Haɓaka Tace Na Musamman (v3.8.16+)

Kundin adireshi na engines/rtk/filters/ yana ɗauke da fayilolin JSON na matatu ginannu guda 49+. Za ka iya ƙara naka don matse fitarwa daga kayan aiki na musamman waɗanda tsoffin matatun ba su rufe ba.

Tsarin Tace (Zod)

{
  "id": "string",                      // Wajibi. Mai gano tace (kebab-case, misali, "python-traceback")
  "label": "string",                   // Wajibi. Sunan tace mai sauƙin karantawa
  "description": "string",             // Na zaɓi (tsoho: ""). Taƙaitaccen bayanin abin da tace ke yi
  "category": "git|test|build|shell|docker|package|infra|cloud|generic",
  "priority": number,                  // Na zaɓi (0-100, tsoho: 50). Jerin aiwatarwa (mafi girma = farko)
  "match": {
    "commands": ["string"],            // Sunayen umarni da za a daidaita (misali, "python", "pytest")
    "patterns": ["string"],            // Samfuran regex da za a daidaita da fitarwa
    "outputTypes": ["string"]          // Nau'ikan fitarwa da aka gano (misali, "test-failure")
  },
  "rules": {
    "stripAnsi": boolean,              // Na zaɓi (tsoho: false). Cire lambobin launin ANSI
    "replace": [                       // Dokokin nema-da-maye-gurbi (tsoho: [])
      { "pattern": "regex", "replacement": "..." }
    ],
    "matchOutput": [                   // Dakatar nan take idan samfur ya dace (tsoho: [])
      {
        "pattern": "regex",
        "message": "short summary",
        "unless": "regex"              // Tsallake idan wannan samfurin ya dace
      }
    ],
    "includePatterns": ["string"],     // Layukan da za a riƙe (samfuran regex, tsoho: [])
    "dropPatterns": ["string"],        // Layukan da za a cire (samfuran regex, tsoho: [])
    "collapsePatterns": ["string"],    // Layukan da za a taƙaita zuwa bayyanar guda ɗaya (tsoho: [])
    "deduplicate": boolean,            // Na zaɓi (tsoho: false). Cire layukan da suka maimaitu
    "truncateLineAt": number,          // Na zaɓi (tsoho: 0). Yanke layuka zuwa iyakar haruffa
    "maxLines": number,                // Na zaɓi (tsoho: 0). Ƙayyadadden iyaka ga jimillar layuka
    "headLines": number,               // Na zaɓi (tsoho: 20). Riƙe layuka N na farko daga fitarwar da ta dace
    "tailLines": number,               // Na zaɓi (tsoho: 20). Riƙe layuka N na ƙarshe daga fitarwar da ta dace
    "onEmpty": "string",               // Na zaɓi (tsoho: ""). Saƙon madadin idan an tace duk layuka
    "filterStderr": boolean            // Na zaɓi (tsoho: false). Haka kuma a tace fitarwar stderr
  },
  "preserve": {
    "errorPatterns": ["string"],       // Samfuran da dole ne a kiyaye koyaushe (tsoho: [])
    "summaryPatterns": ["string"]      // Samfuran layin taƙaitawa na ƙarshe (tsoho: [])
  },
  "tests": [                           // Gwaje-gwajen cikin layi don tabbatarwa (tsoho: [])
    {
      "name": "string",               // Wajibi. Sunan gwaji
      "input": "sample output",        // Wajibi. Samfurin rubutun shigarwa
      "expected": "expected output",   // Wajibi. Fitarwar da ake tsammani bayan matsawa
      "command": "optional command"    // Na zaɓi. Mahallin umarni
    }
  ]
}

Misali: Tace Traceback na Python

{
  "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"
    }
  ]
}

Loda Matatu Na Musamman

Sanya fayil ɗin a wurin da ake ganewa:

~/.omniroute/rtk/filters/my-filter.json     # Matakin mai amfani
<project>/.rtk/filters/my-filter.json      # Matakin aikin

Ana loda matatun kai tsaye lokacin farawa ta hanyar loadRtkFilters() a cikin open-sse/services/compression/engines/rtk/filterLoader.ts. Mai lodawar yana gano matatu daga:

  • Kasidar ginannun matatu: open-sse/services/compression/engines/rtk/filters/
  • Kundin adireshin mai amfani: ~/.omniroute/rtk/filters/
  • Kundin adireshin aikin: <project>/.rtk/filters/

Don loda matatu ta hanyar shirye-shirye:

import { loadRtkFilters } from "@omniroute/open-sse/services/compression/engines/rtk/filterLoader";

// Zaɓuɓɓuka: customFiltersEnabled (loda matatun mai amfani/aiki, yana kunne ta tsohuwa),
// trustProjectFilters, refresh.
const filters = loadRtkFilters({ customFiltersEnabled: true });

Tabbatarwa

Ana tabbatar da matatu bisa tsarin Zod lokacin lodawa. Tace mai tsari mara kyau ba zai samu loduwa ba kuma za a rubuta kuskure:

RTK_FILTER_LOADER: filter "my-filter" failed validation:
  - rules.replace.0.pattern: Invalid regex
  - match.commands: must not be empty

Don tabbatar da duk matatun da aka girka, kira runRtkFilterTests() wanda aka fitar daga open-sse/services/compression/engines/rtk/verify.ts.

Mafi Kyawun Hanyoyin Aiki

  1. Koyaushe haɗa da tests[] — suna tabbatar da cewa matatar ka tana aiki kuma suna hana sake bayyanar matsalolin da aka gyara
  2. Yi amfani da matchOutput don tsallake sauran matakai — idan layi guda ya bayyana komai, maye gurbin dukkan toshe da shi
  3. Fi son keep maimakon strip — ƙaidojin “a kiyaye koyaushe” da aka bayyana sarai sun fi aminci fiye da “a cire koyaushe”
  4. Yi gwaji a dukkan matakan ƙarfi 3minimal bai kamata ya yi wani canji ba, yayin da aggressive ya kamata har yanzu ya kiyaye kurakurai
  5. Yi amfani da filin unless — kare tsallake sauran matakai da sharadin “kada a kunna idan X yana nan”

Maido da Fitowar Asali & Ƙofar Tabbatarwa

Lokacin da RTK ya matse fitowa sosai, za ka iya maido da rubutun asali domin gyara matsala, binciken tantancewa, ko sake kunnawa.

Yadda Maido da Fitowar Asali ke Aiki

Fitowar asali (tokens 10K)
        │
        ▼
Matsewar RTK (tare da rawOutput.enabled=true)
        │
        ├─▶ Fitowar da aka matse (tokens 2K)  ──▶ zuwa LLM
        │
        └─▶ Fitowar asali (tokens 10K)        ──▶ an adana a DB
                                                     (an haɗa ta da request_id)

Kunna Adana Fitowar Asali

Ga kowace buƙata (a cikin saitin combo):

{
  "compression": {
    "engine": "rtk",
    "intensity": "aggressive",
    "rawOutput": {
      "enabled": true,
      "maxBytes": 1048576 // iyakar 1MB
    }
  }
}

Tsoho: rawOutput.enabled: false (yana rage amfani da ma'ajiyar bayanai).

Kuɗin Ma'ajiya

Ga kowace buƙata Iyakar 1MB Iyakar 10MB
Matsakaicin fitowar da aka matse ~5KB ~5KB
Fitowar asali da aka adana ~50-500KB ~500KB-5MB
Tare da buƙatu 1000/rana 50-500MB/rana 500MB-5GB/rana

Shawara: Ka kunna fitowar asali ne kawai yayin zaman gyara matsala ko binciken tantancewa na samfurori, ba a kullum ba.

Maido da Asalin

import { readRtkRawOutput } from "omniroute/compression/engines/rtk/rawOutput";

const raw = readRtkRawOutput(pointerId); // pointerId daga ƙididdigar matsewa
if (raw) {
  console.log("Original output:", raw);
}

Ana mayar da pointerId a cikin CompressionStats.rtkRawOutputPointers[] bayan matsewa. Duba open-sse/services/compression/engines/rtk/rawOutput.ts:102 domin sigar aikin.

Ƙofar Tabbatarwa

Tabbatar da Tacewar RTK (open-sse/services/compression/engines/rtk/verify.ts) yana tantance duk matatu ta amfani da tests[] nasu kuma yana tabbatar da cewa halayensu daidai ne a dukkan matakan ƙarfi guda 3.

Kira runRtkFilterTests() domin gudanar da tabbatarwa:

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}"`
      );
    });
}

Abubuwan da yake tantancewa:

  1. Kowace matata tana lodawa kuma tana wuce tantancewar schema
  2. Kowace shigarwar tests[] tana samar da fitowar da ake tsammani
  3. Ƙarfin minimal ba ya yin wani canji (yana kiyaye asali, yana amfani da matatun tsari kawai)
  4. Ƙarfin aggressive yana kiyaye kurakurai, gazawar gwaje-gwaje, da bayanan sawun stack
  5. Fitowar da aka matse ba ta taɓa fi girman shigarwar asali ba
  • Tushe: open-sse/services/compression/engines/rtk/ (fayiloli 63, ~70KB)

  • Kafin haɗa canjin matata — koyaushe ka tabbatar gwaje-gwajen sun yi nasara

  • Bayan sabunta engine na RTK — mai yiwuwa schema ya canza

  • Lokaci-lokaci yayin sa ido — yana kariya daga karkacewar kayan gwaji

  • Lokacin ƙara sabon dangin kayan aiki/umarni — yana tabbatar da cewa sabuwar matatar tana aiki


Duba Kuma