* 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.
60 KiB
RTK Compression (नेपाली)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇱 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
RTK कम्प्रेसन टर्मिनल र उपकरण आउटपुटका लागि OmniRoute को कमाण्ड-सचेत कम्प्रेसन इन्जिन हो। यो कोडिङ-एजेन्ट सत्रहरूका लागि डिजाइन गरिएको हो, जहाँ सन्दर्भको अधिकांश वृद्धि परीक्षण लगहरू, बिल्ड आउटपुट, प्याकेज म्यानेजरको अनावश्यक आउटपुट, शेल ट्रान्सक्रिप्टहरू, Docker आउटपुट, git आउटपुट र स्ट्याक ट्रेसहरूबाट आउँछ।
RTK लाई defaultMode: "rtk" सँग प्रत्यक्ष रूपमा वा स्ट्याक गरिएको पाइपलाइनको पहिलो चरणका रूपमा चलाउन सकिन्छ, सामान्यतया:
rtk -> caveman
यो क्रमले पहिले अनावश्यक मेसिन आउटपुट कम्प्रेस गर्छ, त्यसपछि Caveman लाई बाँकी गद्य संक्षिप्त गर्न दिन्छ।
अपस्ट्रिम RTK ले कमाण्ड आउटपुटमा 60-90% बचत रिपोर्ट गर्छ। यसको README को नमुना सत्र
~118,000 मानक टोकनबाट ~23,900 RTK टोकनमा झर्छ, जसमा 79.7% बचत (~80%) हुन्छ। OmniRoute ले
Caveman इनपुट कम्प्रेसनसँगको स्ट्याक गरिएको बचत गणनाका लागि त्यही अपस्ट्रिम औसत प्रयोग गर्छ:
RTK औसत: 80% बचत
Caveman इनपुट: 46% बचत
स्ट्याक गरिएको: 1 - (1 - 0.80) * (1 - 0.46) = 89.2% बचत
दायरा: 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%
यसले के कम्प्रेस गर्छ
बिल्ट-इन क्याटलगमा हाल यी वर्गहरूमा 49 फिल्टरहरू समावेश छन्:
| वर्ग | उदाहरणहरू |
|---|---|
git |
git status, git branch, git diff, git log |
test |
Vitest, Jest, Pytest, Playwright, Go परीक्षणहरू, Cargo परीक्षणहरू |
build |
TypeScript, ESLint, Biome, Prettier, Vite, Webpack, Turbo, Nx |
package |
npm install, npm audit, pip, uv sync, Poetry, Bundler |
shell |
ls, find, grep, सामान्य शेल लगहरू |
docker |
docker ps, Docker लगहरू |
infra |
Terraform, OpenTofu, systemctl status |
generic |
JSON आउटपुट, स्ट्याक ट्रेसहरू, सामान्य आउटपुट फलब्याक |
open-sse/services/compression/engines/rtk/commandDetector.ts मा रहेको डिटेक्टरले फिल्टर चयन गर्नुअघि
आउटपुट वर्गीकरण गर्छ। कमाण्ड वर्ग पर्याप्त नभएमा फिल्टरहरूले कमाण्ड ढाँचा वा आउटपुट regex का आधारमा पनि मिलान गर्न सक्छन्।
फिल्टर रिजोल्युसन
RTK ले फिल्टरहरू यो क्रममा लोड गर्छ:
.rtk/filters.tomlर.rtk/filters.jsonबाट परियोजना फिल्टरहरू, विश्वसनीय हुँदा मात्र।DATA_DIR/rtk/filters.tomlरDATA_DIR/rtk/filters.jsonबाट ग्लोबल फिल्टरहरू।open-sse/services/compression/engines/rtk/filters/बाट बिल्ट-इन फिल्टरहरू।
एउटै स्कोपभित्र, RTK TOML schema v1 फिल्टरहरूले OmniRoute JSON फिल्टरहरूभन्दा प्राथमिकता पाउँछन्। आयात गरिएको कमाण्ड-विशिष्ट
फिल्टरले त्यस स्कोपको फराकिलो फिल्टरलाई ओभरराइड गर्न सकोस् भनेर TOML match_command एक्सप्रेसनहरू कमाण्ड-प्रकार मिलानअघि
जाँचिन्छन्। फाइल ढाँचा जेसुकै भए पनि परियोजना स्कोपले ग्लोबल स्कोपभन्दा प्राथमिकता पाउँछ।
परियोजना फिल्टरहरू जानाजानी विश्वासद्वारा नियन्त्रित छन्, किनकि regex फिल्टरहरूले एजेन्टहरूलाई उपकरण आउटपुट कसरी देखाइन्छ भन्ने परिवर्तन गर्न सक्छन्। यीमध्ये कुनै एक सत्य हुँदा परियोजना फिल्टर फाइल स्वीकार गरिन्छ:
rtkConfig.trustProjectFilterstrueहुन्छ।OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=1सेट गरिएको हुन्छ।.rtk/trust.jsonमा परियोजना फिल्टर फाइलसँग मिल्ने SHA-256 ह्यास हुन्छ।
विश्वास फाइलको उदाहरण:
{
"filtersSha256": "0123456789abcdef...",
"filtersTomlSha256": "fedcba9876543210..."
}
ह्यासहरू अलग-अलग छन्: filtersSha256 ले .rtk/filters.json लाई विश्वास गर्छ, जबकि filtersTomlSha256
ले .rtk/filters.toml लाई विश्वास गर्छ। कुनै पनि फाइल सम्पादन गर्दा त्यसको आफ्नै विश्वास प्रविष्टि मात्र अमान्य हुन्छ। ग्लोबल फाइलहरू
प्रशासकद्वारा स्थापना गरिन्छन् र विद्यमान ग्लोबल-फिल्टर विश्वास व्यवहार प्रयोग गर्छन्।
अनुकूलित फिल्टरहरू एउटा फिल्टर वस्तु वा फिल्टर वस्तुहरूको एरे हुन सक्छन्। अमान्य अनुकूलित फिल्टरहरू
छोडिन्छन् र /api/context/rtk/filters डायग्नोस्टिक्सद्वारा रिपोर्ट गरिन्छन्। अमान्य बिल्ट-इन फिल्टरहरू तुरुन्त असफल हुन्छन्।
RTK TOML schema v1 अनुकूलता
OmniRoute ले RTK TOML schema v1 प्रयोग गर्ने घोषणात्मक फिल्टर फाइलहरू पार्स, प्रमाणीकरण, परीक्षण र स्थापना गर्न सक्छ।
समर्थित फिल्डहरू 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, र [[tests.<filter>]] इनलाइन परीक्षणहरू हुन्।
अज्ञात फिल्डहरू, अमान्य वा असुरक्षित रेगुलर एक्सप्रेसनहरू, एकैसाथ प्रयोग गरिएका strip/keep नियमहरू, 1 MiB भन्दा ठूला फाइलहरू, र अज्ञात फिल्टरहरूका सन्दर्भहरू अस्वीकार गरिन्छन्। इनलाइन परीक्षणहरू असफल हुने फाइललाई निरीक्षणका लागि प्रमाणीकरण गर्न सकिन्छ, तर स्थापना वा लोड गर्न सकिँदैन। अनुकूलित फाइल लोड गर्दा हुने विफलताहरू fail-open नै रहन्छन्: अमान्य फाइल छोडिन्छ र बाँकी फिल्टरहरूले काम गर्न जारी राख्छन्।
क्लाइन्टले उपकरणको आउटपुट पहिले नै क्याप्चर गरिसकेपछि OmniRoute ले त्यो आउटपुट प्राप्त गर्छ, त्यसैले filter_stderr = true
ले प्रक्रिया क्याप्चर परिवर्तन गर्न सक्दैन। यो फिल्डलाई कुनै प्रभाव नपार्ने रूपमा स्वीकार गरिन्छ र प्रमाणीकरणले चेतावनी फर्काउँछ।
यसलाई जानाजानी RTK TOML schema v1 अनुकूलता भनेर वर्णन गरिएको छ, RTK एक्जिक्युटेबल, shell hooks, Rust कमान्ड कार्यान्वयनहरू वा यसको trust-store लेआउटसँग पूर्ण अनुकूलता भनेर होइन।
ड्यासबोर्डको उन्नत RTK दृश्यले पेस्ट वा अपलोड गरिएको TOML स्वीकार गर्छ। प्रमाणीकरण केवल पढ्न मिल्ने हुन्छ।
स्थापनाले प्रतिबन्धात्मक अनुमतिहरूसहित DATA_DIR/rtk/filters.toml मा परमाणविक रूपमा लेख्छ र पुनः सुरु नगरीकन
लाइभ फिल्टर क्याटलग ताजा गर्छ। विद्यमान फाइल प्रतिस्थापन गर्न स्पष्ट overwrite
पुष्टिकरण आवश्यक हुन्छ र पहिले DATA_DIR/rtk/filters.toml.bak सिर्जना गरिन्छ।
फिल्टर DSL
फिल्टरहरूले Compression Rules Format मा वर्णन गरिएको JSON schema प्रयोग गर्छन्। रनटाइमले यी चरणहरू क्रमअनुसार लागू गर्छ:
stripAnsi -> filterStderr -> replace -> matchOutput -> लाइनहरू हटाउने/समावेश गर्ने
-> truncateLineAt -> head/tail/maxLines -> onEmpty
महत्त्वपूर्ण फिल्डहरू:
| फिल्ड | उद्देश्य |
|---|---|
rules.stripAnsi |
मिलान गर्नुअघि टर्मिनलका रङ/नियन्त्रण अनुक्रमहरू हटाउने |
rules.filterStderr |
मिलान/फिल्टर गर्नुअघि सामान्य stderr उपसर्गहरू सामान्यीकरण गर्ने |
rules.replace |
क्रमबद्ध regex प्रतिस्थापनहरू लागू गर्ने |
rules.matchOutput |
आउटपुट ज्ञात अवस्थासँग मेल खाँदा सङ्क्षिप्त सारांश फर्काउने |
rules.matchOutput[].unless |
त्रुटि/विफलता ढाँचा उपस्थित हुँदा सर्टकट छोड्ने |
rules.dropPatterns |
अनावश्यक लाइनहरू हटाउने |
rules.includePatterns |
कार्ययोग्य लाइनहरूलाई प्राथमिकता दिने |
rules.collapsePatterns |
दोहोरिएका मिल्दो लाइनहरू सङ्कुचित गर्ने |
rules.deduplicate |
प्रति-फिल्टर opt-in: लगातार दोहोरिएका लाइनहरू सङ्कुचित गर्ने |
rules.truncateLineAt |
Unicode-सुरक्षित प्रति-लाइन छोट्याउने कार्य |
rules.onEmpty |
सबै लाइन फिल्टर हुँदा देखाइने वैकल्पिक सन्देश |
tests[] |
प्रमाणीकरण गेटले प्रयोग गर्ने इनलाइन नमुनाहरू |
अन्तर्निर्मित फिल्टरहरूमा इनलाइन tests[] नमुनाहरू समावेश हुन अपेक्षित छ। अनुकूलित फिल्टरहरूमा पनि
ती समावेश गर्नुपर्छ, विशेष गरी तिनलाई विभिन्न परियोजनाहरूमा साझा गर्दा।
लाइन डिडुप्लिकेसन (दुई तह)
RTK ले दुई स्वतन्त्र तहमा दोहोरिएका लाइनहरूलाई एकीकृत गर्छ:
- प्रति-फिल्टर
deduplicate(अप्ट-इन, पूर्वनिर्धारितfalse)। कुनै फिल्टरलेrules.deduplicate: trueसेट गरेर काटछाँट गर्नुअघि त्यो फिल्टरसँग मेल खाएको आउटपुटभित्र लगातार दोहोरिएका लाइनहरूलाई एकीकृत गर्न सक्छ। योlineFilter.tsभित्र चल्छ। पुराना फिल्टरहरूका लागि, फिल्टरलेcollapsePatternsपरिभाषित गरेको अवस्थामा यो स्वतः सक्षम हुन्छ। स्किमा:open-sse/services/compression/engines/rtk/filterSchema.tsमाdeduplicate: z.boolean().default(false)। - इन्जिन-व्यापी
deduplicateThreshold(पूर्वनिर्धारित3)। सबै फिल्टरहरू चलेपछि, इन्जिनले सम्पूर्ण नतिजाभरि लगातार आउने समान लाइनहरूको>= deduplicateThresholdलम्बाइको कुनै पनि क्रमलाई एकीकृत गर्छ (deduplicateRepeatedLines, जुनengines/rtk/index.tsमा लागू हुन्छ)। सामान्यीकरणका क्रममा यसको मान 2–100 भित्र सीमित गरिन्छ।
प्रति-फिल्टर पास पहिले (फिल्टरभित्र) चल्छ र इन्जिन-व्यापी पास अन्त्यमा (जोडिएको आउटपुटमाथि) चल्छ, त्यसैले यी दुई दोहोरो गणना नगरी संयोजन हुन्छन्।
लाइन समूहीकरण (enableGrouping)
जब rtkConfig.enableGrouping को मान true (पूर्वनिर्धारित false) हुन्छ, RTK ले डिडुप्लिकेसनपछिको नतिजामाथि
अतिरिक्त groupSimilarLines पास चलाउँछ, जसले लगभग समान (बाइटका हिसाबले ठ्याक्कै समान नभएका)
लगातार लाइनहरूको क्रमलाई एकीकृत गर्छ। rtkConfig.groupingThreshold (पूर्वनिर्धारित 3) समूहीकरण सुरु गराउने
न्यूनतम क्रम-लम्बाइ हो। यो deduplicateThreshold को संरचनात्मक समकक्ष हो: डिडुप्लिकेसनले ठ्याक्कै दोहोरिएका
लाइनहरू सम्हाल्छ भने समूहीकरणले "साना भिन्नतासहित उही संरचना" सम्हाल्छ। दुवै फ्ल्याग key_value तालिकामा
स्थायी रूपमा भण्डारण हुने rtkConfig JSON का भाग हुन् (माथिको कन्फिगरेसन हेर्नुहोस्), त्यसैले पुनः सुरु गरेपछि पनि सेटिङ कायम रहन्छ।
कोड टिप्पणी हटाउने (stripCodeComments / preserveDocstrings)
जब rtkConfig.applyToCodeBlocks सक्षम हुन्छ, RTK ले फेन्स गरिएको कोड ब्लकहरूबाट टिप्पणीहरू पनि हटाउन सक्छ:
stripCodeComments(पूर्वनिर्धारितfalse) — अप्ट-इन।trueहुँदा, RTK ले JavaScript र TypeScript का फेन्स गरिएको ब्लकहरूबाट टिप्पणीहरू हटाउँछ। ऐतिहासिक रूपमा यो फ्ल्याग पढिन्थ्यो तर कहिल्यै लागू गरिएको थिएन, त्यसैले उत्पादनमा मौन परिवर्तन हुन नदिन पूर्वनिर्धारित मान "सुरक्षित राख्ने" नै कायम गरिएको छ।preserveDocstrings(पूर्वनिर्धारितtrue) — टिप्पणीहरू हटाउँदा, JSDoc//** … */ब्लक टिप्पणीहरू सुरक्षित राखिन्छन् (तिनले खपत गर्ने बाइटभन्दा बढी मूल्यवान API दस्तावेज समावेश गर्छन्)। ती पनि हटाउन यसलाईfalseमा सेट गर्नुहोस्।
टिप्पणी हटाउने कार्य open-sse/services/compression/engines/rtk/codeStripper.ts मा कार्यान्वयन गरिएको छ। यसले
TypeScript parser (रेगेक्स होइन) प्रयोग गर्छ, ताकि स्ट्रिङ, टेम्प्लेट र रेगेक्स लिटरलहरूलाई कहिल्यै गल्तीले
टिप्पणी नठानियोस्, र JSX पत्ता लागेमा यसले सम्पूर्ण प्रक्रिया त्याग्छ (त्यसैले JSX एक्सप्रेसन-कन्टेनरका टिप्पणीहरू
कहिल्यै बिग्रँदैनन्)। हाल टिप्पणी हटाउने कार्य JavaScript र TypeScript मा मात्र लागू हुन्छ — स्ट्रिपरको
CodeLanguage सेटमा भएका अन्य भाषाहरू (Python, Rust, Go, Ruby, Java) मा खाली लाइन र
ह्वाइटस्पेस एकीकरण हुन्छ, तर टिप्पणी हटाइँदैन। स्ट्रिप गरिएको ब्लकको रनलाई
rulesApplied मा rtk:code-strip ट्याग दिइन्छ।
टिप्पणी — GCF / तालिकीय इन्कोडिङ छुट्टै इन्जिन हो। RTK मा "GCF" (Graph Compact Format) तालिकीय/स्तम्भीय JSON इन्कोडर समावेश छैन। पुरानो
omni-tabularइन्कोडरलाई प्रतिस्थापन गरेको त्यो इन्कोडर headroom इन्जिनमा अवस्थित छ (open-sse/services/compression/engines/headroom/, र भेन्डर गरिएको कोडेकheadroom/gcf/अन्तर्गत छ)। यहाँ दस्तावेजीकृत RTK फिल्टर पाइपलाइनसँग यसको कुनै सम्बन्ध छैन।
कन्फिगरेसन
ग्लोबल सेटिङहरू /api/settings/compression मार्फत उपलब्ध छन्। RTK-विशिष्ट सेटिङहरू पनि
/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 र disabledFilters ले फिल्टर आईडीहरू प्रयोग गर्छन्, उदाहरणका लागि test-vitest वा git-diff।
पूर्ण rtkConfig संरचना open-sse/services/compression/types.ts मा रहेको RtkConfig / DEFAULT_RTK_CONFIG द्वारा परिभाषित छ। सम्पूर्ण वस्तु
SQLite को key_value तालिकामा namespace = "compression", key = "rtkConfig"
(src/lib/db/compression.ts) अन्तर्गत एकल JSON मानका रूपमा भण्डारण गरिन्छ र पढ्दा normalizeRtkConfig द्वारा सामान्यीकृत गरिन्छ। त्यसैले तलका प्रत्येक फिल्ड
— enableGrouping, groupingThreshold, stripCodeComments, र preserveDocstrings सहित —
एउटै भण्डारमार्फत दुवैतर्फ रूपान्तरण हुन्छन् र पुनः सुरु गरेपछि पनि कायम रहन्छन्।
| कुञ्जी | पूर्वनिर्धारित | उद्देश्य |
|---|---|---|
deduplicateThreshold |
3 |
सम्पूर्ण इन्जिनमा: संक्षिप्त गर्नुपर्ने लगातार उस्तै लाइनहरूको न्यूनतम सङ्ख्या (2–100 को सीमाभित्र) |
enableGrouping |
false |
स्वैच्छिक: लगभग समान लगातार लाइनहरूको शृङ्खला संक्षिप्त गर्ने |
groupingThreshold |
3 |
समूहीकरण सक्रिय गर्ने लगातार समान लाइनहरूको न्यूनतम शृङ्खला |
stripCodeComments |
false |
स्वैच्छिक: फेन्स गरिएका कोड ब्लकहरूबाट टिप्पणीहरू हटाउने (applyToCodeBlocks आवश्यक) |
preserveDocstrings |
true |
टिप्पणीहरू हटाउँदा JSDoc//** … */ ब्लकहरू कायम राख्ने |
API
| रुट | विधि | उद्देश्य |
|---|---|---|
/api/context/rtk/config |
GET | RTK कन्फिग पढ्ने |
/api/context/rtk/config |
PUT | RTK कन्फिग अद्यावधिक गर्ने |
/api/context/rtk/filters |
GET | फिल्टर सूची र लोड निदानहरू सूचीबद्ध गर्ने |
/api/context/rtk/import |
POST | RTK TOML schema v1 फाइलहरू प्रमाणीकरण वा स्थापना गर्ने |
/api/context/rtk/test |
POST | एउटा टेक्स्ट पेलोडका लागि RTK कम्प्रेसन पूर्वावलोकन गर्ने |
/api/context/rtk/raw-output/[id] |
GET | सुरक्षित राखिएको संशोधित कच्चा आउटपुट पढ्ने |
/api/compression/preview |
POST | कुनै पनि कम्प्रेसन मोड पूर्वावलोकन गर्ने |
RTK परीक्षण पेलोड:
{
"command": "npm test",
"text": "FAIL tests/example.test.ts\nAssertionError: expected true\nTest Files 1 failed",
"config": {
"intensity": "standard"
}
}
कम्प्रेसन पूर्वावलोकन पेलोड:
{
"mode": "stacked",
"messages": [
{
"role": "tool",
"content": "FAIL tests/example.test.ts\nAssertionError: expected true\nTest Files 1 failed"
}
],
"config": {
"rtkConfig": {
"rawOutputRetention": "failures"
}
}
}
व्यवस्थापन रुटहरूका लागि ड्यासबोर्ड व्यवस्थापन प्रमाणीकरण वा मिल्दो API-key नीति आवश्यक हुन्छ।
RTK TOML प्रमाणीकरण पेलोड:
{
"action": "validate",
"content": "schema_version = 1\n\n[filters.my-tool]\nmatch_command = \"^my-tool\\\\b\"\nmax_lines = 20\n"
}
प्रमाणित फाइललाई ग्लोबल रूपमा स्थापना गर्न "action": "install" प्रयोग गर्नुहोस्। अवस्थित ग्लोबल फाइलको प्रतिस्थापन समीक्षा र पुष्टि गरेपछि मात्र
"overwrite": true थप्नुहोस्।
कच्चा आउटपुट पुनःप्राप्ति
RTK ले सामान्यतया सङ्कुचित पाठ मात्र फर्काउँछ। डिबगिङका लागि, rawOutputRetention ले संशोधित
कच्चा आउटपुट कायम राख्न सक्छ:
| मान | व्यवहार |
|---|---|
never |
कच्चा आउटपुट कायम नराख्ने |
failures |
सम्भावित विफलताको आउटपुट मात्र कायम राख्ने |
always |
संशोधनपछि प्रत्येक सङ्कुचित RTK कच्चा आउटपुट कायम राख्ने |
कायम राखिएका फाइलहरू यसअन्तर्गत लेखिन्छन्:
DATA_DIR/rtk/raw-output/
भण्डारण गर्नुअघि गोप्य जानकारी संशोधन गरिन्छ, जसमा सामान्य bearer tokens, API keys, Slack tokens,
AWS access keys, र assignment-style token=..., secret=..., password=... मानहरू समावेश छन्। विश्लेषणले
pointer id, size, र hash metadata मात्र भण्डारण गर्छ।
प्रमाणीकरण गेट
केन्द्रित प्रमाणीकरण गेटले बाह्य commands प्रयोग नगरी निर्मित inline filter tests चलाउँछ:
node --import tsx/esm --test tests/unit/compression/rtk-verify.test.ts
विस्तृत RTK गेट यस्तो छ:
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
रिलिज गर्नुअघि विस्तृत compression गेट चलाउनुहोस्:
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
RTK विस्तार गर्ने
- कुनै filter JSON फाइल थप्नुहोस् वा अद्यावधिक गर्नुहोस्।
- महत्त्वपूर्ण व्यवहार प्रमाणित गर्ने कम्तीमा एउटा
tests[]नमुना समावेश गर्नुहोस्। - नयाँ command families का लागि
tests/unit/compression/fixtures/rtk/अन्तर्गत fixture थप्नुहोस्। - नयाँ output class प्रस्तुत गर्दा command detection coverage थप्नुहोस्।
- प्रमाणीकरण र विस्तृत RTK गेटहरू चलाउनुहोस्।
- यदि filter project-local हो भने, समीक्षापछि मात्र
.rtk/filters.jsoncommit गर्नुहोस् र.rtk/trust.jsonताजा गर्नुहोस्।
तीव्रता स्तरहरू (v3.8.16+)
RTK ले compression aggressiveness र safety बीच सन्तुलन मिलाउने 3 intensity levels समर्थन गर्छ। स्तर engine config मा रहेको config.intensity मार्फत सेट गरिन्छ।
3 स्तरहरू
| स्तर | काटछाँट सीमा | Token बचत | जोखिम | यसका लागि उपयुक्त |
|---|---|---|---|---|
minimal |
प्रत्येक खण्डमा 24 पङ्क्ति | ~20-40% | अत्यन्त कम | महत्त्वपूर्ण सन्दर्भसहित production |
standard (पूर्वनिर्धारित) |
प्रत्येक खण्डमा 24 पङ्क्ति | ~50-70% | कम | दैनिक coding sessions |
aggressive |
प्रत्येक खण्डमा 16 पङ्क्ति | ~70-90% | मध्यम | लामो sessions, अधिकतम बचत |
काटछाँट कहाँ हुन्छ
काटछाँट सीमाले lineFilter.ts लाई प्रभाव पार्छ:
// open-sse/services/compression/engines/rtk/index.ts:329-330 बाट
config.intensity === "aggressive" ? 16 : 24,
config.intensity === "aggressive" ? 16 : 24,
प्रत्येक खण्डको सुरु र अन्त्य दुवै सुरक्षित राखिन्छन्; काटछाँट सुरु भएपछि बीचको सामग्री हटाइन्छ।
के बाँकी रहन्छ र के काटिन्छ
| सामग्री | minimal | standard | aggressive |
|---|---|---|---|
| Errors / stack traces | ✅ सुरक्षित | ✅ सुरक्षित | ✅ सुरक्षित |
| Test failures | ✅ सुरक्षित | ✅ सुरक्षित | ✅ सुरक्षित |
| Build errors | ✅ सुरक्षित | ✅ सुरक्षित | ✅ सुरक्षित |
| Test passes (verbose) | ✅ सुरक्षित | 🟡 सङ्कुचित | 🟡 सङ्कुचित |
| नियमित output (info logs) | 🟡 सङ्कुचित | 🟡 सङ्कुचित | ❌ हटाइने |
| Progress bars | 🟡 सङ्कुचित | ❌ हटाइने | ❌ हटाइने |
| Banner / ASCII art | 🟡 सङ्कुचित | ❌ हटाइने | ❌ हटाइने |
सही तीव्रता छनोट गर्ने
सन्दर्भ गुमाउनु विनाशकारी हुन्छ?
│
┌───────────┼───────────┐
│ │ │
हुन्छ हुँदैन निश्चित छैन
│ │ │
▼ │ │
minimal │ │
│ │ │
│ ▼ ▼
│ throughput पहिले `standard`
│ कति महत्त्वपूर्ण छ? प्रयास गर्नुहोस्
│ │ (80% अवस्थामा
│ ┌────┴────┐ काम गर्छ)
│ │ │
│ कम उच्च
│ │ │
│ ▼ ▼
│ standard aggressive
│ │ │
└──────┴─────────┘
तीव्रता कन्फिगर गर्ने
प्रत्येक combo का लागि (combo config मा):
{
"combo": "my-coding-combo",
"routing": {/* ... */},
"compression": {
"engine": "rtk",
"intensity": "aggressive"
}
}
प्रोग्राममार्फत:
rtkEngine (@omniroute/open-sse/services/compression/engines/rtk) एउटा
CompressionEngine हो र यसमा updateConfig method छैन। यसको सट्टा registry helper
मार्फत engine को config अद्यावधिक गर्नुहोस्:
import { updateEngineConfig } from "@omniroute/open-sse/services/compression/engines/registry";
updateEngineConfig("rtk", { intensity: "aggressive" });
प्रभाव प्रमाणीकरण गर्ने
तपाईंले छनोट गरेको तीव्रतामा तपाईंको filter सुरक्षित छ भनेर पुष्टि गर्न प्रमाणीकरण गेट (तल हेर्नुहोस्) प्रयोग गर्नुहोस्:
import { runRtkFilterTests } from "omniroute/compression/engines/rtk/verify";
const result = runRtkFilterTests({ intensity: "aggressive" });
if (!result.passed) {
console.error("Filters failed at aggressive intensity");
}
अनुकूलन फिल्टर विकास (v3.8.16+)
engines/rtk/filters/ डाइरेक्टरीमा 49+ अन्तर्निर्मित फिल्टर JSON फाइलहरू छन्। पूर्वनिर्धारित फिल्टरहरूले नसमेटेका अनुकूलन उपकरणहरूको आउटपुट सङ्कुचित गर्न तपाईं आफ्नै फिल्टर थप्न सक्नुहुन्छ।
फिल्टर स्किमा (Zod)
{
"id": "string", // अनिवार्य। फिल्टर पहिचानकर्ता (kebab-case, जस्तै, "python-traceback")
"label": "string", // अनिवार्य। मानिसले पढ्न सक्ने फिल्टरको नाम
"description": "string", // वैकल्पिक (पूर्वनिर्धारित: "")। फिल्टरले के गर्छ भन्ने छोटो विवरण
"category": "git|test|build|shell|docker|package|infra|cloud|generic",
"priority": number, // वैकल्पिक (0-100, पूर्वनिर्धारित: 50)। कार्यान्वयन क्रम (उच्च = पहिले)
"match": {
"commands": ["string"], // मिलान गरिने कमाण्डका नामहरू (जस्तै, "python", "pytest")
"patterns": ["string"], // आउटपुटसँग मिलान गरिने Regex ढाँचाहरू
"outputTypes": ["string"] // पत्ता लगाइएका आउटपुट वर्गहरू (जस्तै, "test-failure")
},
"rules": {
"stripAnsi": boolean, // वैकल्पिक (पूर्वनिर्धारित: false)। ANSI रङ कोडहरू हटाउने
"replace": [ // खोजी-र-प्रतिस्थापन नियमहरू (पूर्वनिर्धारित: [])
{ "pattern": "regex", "replacement": "..." }
],
"matchOutput": [ // ढाँचा मिलेपछि तुरुन्त रोक्ने (पूर्वनिर्धारित: [])
{
"pattern": "regex",
"message": "छोटो सारांश",
"unless": "regex" // यो ढाँचा मिलेमा छोड्ने
}
],
"includePatterns": ["string"], // राख्नुपर्ने लाइनहरू (Regex ढाँचाहरू, पूर्वनिर्धारित: [])
"dropPatterns": ["string"], // हटाउनुपर्ने लाइनहरू (Regex ढाँचाहरू, पूर्वनिर्धारित: [])
"collapsePatterns": ["string"], // एउटै उपस्थितिमा समेट्नुपर्ने लाइनहरू (पूर्वनिर्धारित: [])
"deduplicate": boolean, // वैकल्पिक (पूर्वनिर्धारित: false)। दोहोरिएका लाइनहरू हटाउने
"truncateLineAt": number, // वैकल्पिक (पूर्वनिर्धारित: 0)। लाइनहरूलाई अधिकतम अक्षरसम्म छोट्याउने
"maxLines": number, // वैकल्पिक (पूर्वनिर्धारित: 0)। कुल लाइनहरूमा कडा सीमा
"headLines": number, // वैकल्पिक (पूर्वनिर्धारित: 20)। मिलेको आउटपुटका सुरुका N लाइनहरू राख्ने
"tailLines": number, // वैकल्पिक (पूर्वनिर्धारित: 20)। मिलेको आउटपुटका अन्तिम N लाइनहरू राख्ने
"onEmpty": "string", // वैकल्पिक (पूर्वनिर्धारित: "")। सबै लाइन फिल्टर भएमा प्रयोग गरिने वैकल्पिक सन्देश
"filterStderr": boolean // वैकल्पिक (पूर्वनिर्धारित: false)। stderr आउटपुट पनि फिल्टर गर्ने
},
"preserve": {
"errorPatterns": ["string"], // सधैँ सुरक्षित राखिनुपर्ने ढाँचाहरू (पूर्वनिर्धारित: [])
"summaryPatterns": ["string"] // अन्तिम सारांश लाइनका ढाँचाहरू (पूर्वनिर्धारित: [])
},
"tests": [ // प्रमाणीकरणका लागि इनलाइन परीक्षणहरू (पूर्वनिर्धारित: [])
{
"name": "string", // अनिवार्य। परीक्षणको नाम
"input": "नमुना आउटपुट", // अनिवार्य। नमुना इनपुट पाठ
"expected": "अपेक्षित आउटपुट", // अनिवार्य। अपेक्षित सङ्कुचित आउटपुट
"command": "वैकल्पिक कमाण्ड" // वैकल्पिक। कमाण्ड सन्दर्भ
}
]
}
उदाहरण: Python ट्रेसब्याक फिल्टर
{
"id": "python-traceback",
"label": "Python ट्रेसब्याक फिल्टर",
"description": "Python ट्रेसब्याकहरूलाई आवश्यक फाइल/लाइन स्थान र त्रुटि प्रकारमा सङ्कुचित गर्छ",
"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"
}
]
}
अनुकूलन फिल्टरहरू लोड गर्ने
फाइललाई मान्यताप्राप्त स्थानमा राख्नुहोस्:
~/.omniroute/rtk/filters/my-filter.json # प्रयोगकर्ता-स्तर
<project>/.rtk/filters/my-filter.json # परियोजना-स्तर
फिल्टरहरू स्टार्टअपमा open-sse/services/compression/engines/rtk/filterLoader.ts भित्रको loadRtkFilters() मार्फत स्वचालित रूपमा लोड हुन्छन्। लोडरले निम्न स्थानहरूबाट फिल्टरहरू पत्ता लगाउँछ:
- अन्तर्निर्मित क्याटलग:
open-sse/services/compression/engines/rtk/filters/ - प्रयोगकर्ता डाइरेक्टरी:
~/.omniroute/rtk/filters/ - परियोजना डाइरेक्टरी:
<project>/.rtk/filters/
फिल्टरहरू प्रोग्राममार्फत लोड गर्न:
import { loadRtkFilters } from "@omniroute/open-sse/services/compression/engines/rtk/filterLoader";
// विकल्पहरू: customFiltersEnabled (प्रयोगकर्ता/परियोजना फिल्टरहरू लोड गर्ने, पूर्वनिर्धारित रूपमा सक्रिय),
// trustProjectFilters, refresh।
const filters = loadRtkFilters({ customFiltersEnabled: true });
प्रमाणीकरण
फिल्टरहरू लोड हुँदा Zod स्किमाअनुसार प्रमाणीकरण गरिन्छ। गलत संरचना भएको फिल्टर लोड हुन असफल हुनेछ र त्रुटि लग गर्नेछ:
RTK_FILTER_LOADER: फिल्टर "my-filter" को प्रमाणीकरण असफल भयो:
- rules.replace.0.pattern: अमान्य regex
- match.commands: खाली हुनु हुँदैन
स्थापित सबै फिल्टरहरू प्रमाणीकरण गर्न, open-sse/services/compression/engines/rtk/verify.ts बाट एक्सपोर्ट गरिएको runRtkFilterTests() कल गर्नुहोस्।
उत्कृष्ट अभ्यासहरू
- सधैं
tests[]समावेश गर्नुहोस् — तिनले तपाईंको फिल्टरले काम गर्छ भन्ने प्रमाणित गर्छन् र रिग्रेसनहरू रोक्छन् - छोटो बाटोका लागि
matchOutputप्रयोग गर्नुहोस् — यदि एउटै लाइनले सम्पूर्ण कुरा बताउँछ भने, पूरै ब्लक प्रतिस्थापन गर्नुहोस् stripभन्दाkeepलाई प्राथमिकता दिनुहोस् — स्पष्ट रूपमा “सधैं सुरक्षित राख्नुहोस्” भन्ने नियमहरू “सधैं हटाउनुहोस्” भन्ने नियमहरूभन्दा सुरक्षित हुन्छन्- तीनवटै तीव्रता स्तरमा परीक्षण गर्नुहोस् —
minimalले कुनै परिवर्तन गर्नु हुँदैन, रaggressiveले अझै पनि त्रुटिहरू सुरक्षित राख्नुपर्छ unlessफिल्ड प्रयोग गर्नुहोस् — “यदि X उपस्थित छ भने ट्रिगर नगर्नुहोस्” भन्ने सर्तद्वारा छोटो बाटोलाई सुरक्षित गर्नुहोस्
कच्चा आउटपुट पुनर्प्राप्ति र प्रमाणीकरण गेट
RTK ले आउटपुटलाई अत्यधिक रूपमा सङ्कुचित गर्दा, तपाईंले डिबगिङ, अडिट वा पुनः चलाउनका लागि मूल पाठ पुनर्प्राप्त गर्न सक्नुहुन्छ।
कच्चा आउटपुट पुनर्प्राप्तिले कसरी काम गर्छ
मूल आउटपुट (10K टोकन)
│
▼
RTK सङ्कुचन (rawOutput.enabled=true सहित)
│
├─▶ सङ्कुचित आउटपुट (2K टोकन) ──▶ LLM मा
│
└─▶ मूल आउटपुट (10K टोकन) ──▶ DB मा भण्डारण
(request_id द्वारा लिङ्क गरिएको)
कच्चा आउटपुट भण्डारण सक्षम गर्ने
प्रति-अनुरोध (कम्बो कन्फिगमा):
{
"compression": {
"engine": "rtk",
"intensity": "aggressive",
"rawOutput": {
"enabled": true,
"maxBytes": 1048576 // 1MB सीमा
}
}
}
पूर्वनिर्धारित: rawOutput.enabled: false (भण्डारण बचत गर्छ)।
भण्डारण लागत
| प्रति-अनुरोध | 1MB सीमा | 10MB सीमा |
|---|---|---|
| औसत सङ्कुचित आउटपुट | ~5KB | ~5KB |
| भण्डारण गरिएको कच्चा आउटपुट | ~50-500KB | ~500KB-5MB |
| दैनिक 1000 अनुरोध हुँदा | 50-500MB/day | 500MB-5GB/day |
सिफारिस: कच्चा आउटपुट सधैँ सक्रिय राख्नुको सट्टा डिबगिङ सत्रहरू वा नमूना-आधारित अडिटिङ का लागि मात्र सक्षम गर्नुहोस्।
मूल आउटपुट पुनर्प्राप्त गर्ने
import { readRtkRawOutput } from "omniroute/compression/engines/rtk/rawOutput";
const raw = readRtkRawOutput(pointerId); // सङ्कुचन तथ्याङ्कबाट प्राप्त pointerId
if (raw) {
console.log("Original output:", raw);
}
सङ्कुचनपछि pointerId, CompressionStats.rtkRawOutputPointers[] मा फर्काइन्छ।
फङ्सन सिग्नेचरका लागि open-sse/services/compression/engines/rtk/rawOutput.ts:102 हेर्नुहोस्।
प्रमाणीकरण गेट
RTK फिल्टर प्रमाणीकरण (open-sse/services/compression/engines/rtk/verify.ts) ले सबै फिल्टरहरूलाई तिनका tests[] विरुद्ध प्रमाणीकरण गर्छ र सबै 3 तीव्रता स्तरमा व्यवहार सही छ भनी सुनिश्चित गर्छ।
प्रमाणीकरण चलाउन runRtkFilterTests() कल गर्नुहोस्:
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}"`
);
});
}
यसले प्रमाणीकरण गर्ने कुराहरू:
- प्रत्येक फिल्टर लोड हुन्छ र स्किमा प्रमाणीकरण पास गर्छ
- प्रत्येक
tests[]प्रविष्टिले अपेक्षित आउटपुट उत्पादन गर्छ minimalतीव्रता no-op हुन्छ (मूललाई जोगाउँछ, संरचनात्मक फिल्टरहरू मात्र लागू गर्छ)aggressiveतीव्रताले त्रुटिहरू, परीक्षण विफलताहरू र स्ट्याक ट्रेसहरू जोगाउँछ- सङ्कुचित आउटपुट मूल इनपुटभन्दा कहिल्यै ठूलो हुँदैन
-
स्रोत:
open-sse/services/compression/engines/rtk/(63 फाइल, ~70KB) -
फिल्टर परिवर्तन मर्ज गर्नुअघि — परीक्षणहरू पास भएको सधैँ सुनिश्चित गर्नुहोस्
-
RTK इन्जिन अपग्रेड गरेपछि — स्किमा परिवर्तन भएको हुन सक्छ
-
निगरानीका क्रममा आवधिक रूपमा — परीक्षण फिक्स्चरहरूमा हुने विचलनबाट जोगाउँछ
-
नयाँ उपकरण/कमाण्ड परिवार थप्दा — नयाँ फिल्टरले काम गर्छ भनी प्रमाणित गर्छ
यो पनि हेर्नुहोस्
- COMPRESSION_GUIDE.md — पूर्ण कम्प्रेसन पाइपलाइनको अवलोकन
- COMPRESSION_ENGINES.md — इन्जिन रजिस्ट्री र अन्तर्निर्मित इन्जिनहरू
- EXTENDING_COMPRESSION.md — अनुकूलन इन्जिनहरू, भाषा प्याकहरू, स्ट्याक गरिएका पाइपलाइनहरू
- स्रोत:
open-sse/services/compression/engines/rtk/(63 फाइलहरू, ~70KB)