* 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.
48 KiB
Compression Engines (සිංහල)
🌐 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 · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
OmniRoute සම්පීඩනය engine contracts වටා ගොඩනගා ඇත. ප්රකාරයකට එක් engine එකක් සෘජුවම
(caveman හෝ rtk) හෝ engine කිහිපයක් අනුපිළිවෙළින් ක්රියාත්මක කරන නිර්ණායක stacked pipeline එකක් ධාවනය කළ හැක.
ප්රකාර
| ප්රකාරය | Engine මාර්ගය | අපේක්ෂිත ආදානය |
|---|---|---|
off |
කිසිවක් නැත | Prompt එක නිවැරදිව සුරැකීම |
lite |
Caveman lite සහායක | අඩු අවදානම්, සැමවිටම ක්රියාත්මක පිරිසිදු කිරීම |
standard |
Caveman | ස්වාභාවික-භාෂා prompt සංක්ෂේපණය |
aggressive |
Caveman + ඉතිහාස/tool සාරාංශක | දිගු chat සැසි |
ultra |
Caveman + කප්පාදු සහායක | Context සීමාවෙන් ප්රතිසාධනය |
rtk |
RTK | Terminal, shell, build, test, සහ git ප්රතිදානය |
omniglyph |
OmniGlyph | ස්වදේශීය provider wire මත රූපයක් ලෙස context එක |
stacked |
Pipeline, පෙරනිමිය rtk -> caveman |
මිශ්ර tool logs සහ ගද්ය, උපරිම ඉතිරිකිරීම් |
OmniGlyph සම්පීඩන පැතිකඩ
omniglyph engine එක (package omniglyph, 1.4.0+) නම් කළ semantic profile එකක් පිළිගනී; එය
සම්පීඩන සැකසුම්වල omniglyph.profile හරහා සමස්ත වශයෙන් හෝ stacked pipeline එකේ පියවර config හරහා
එක් එක් පියවර සඳහා සකසනු ලැබේ:
| පැතිකඩ | සීමාව |
|---|---|
aggressive |
පෙරනිමිය. ප්රකාශිත receipts මඟින් මිනුම් කළ ප්රතිපත්තිය — system, tool docs සහ ඝන ඉතිහාසය රූප බවට පත් කරයි |
balanced |
සජීවී තත්ත්වය ස්වදේශීයව තබා, අවසන් turns 8 ආරක්ෂා කර, පැරණි වසා දැමූ ඉතිහාසය හකුළයි |
coding-safe |
authority, tool schemas සහ සජීවී tool output ස්වදේශීයව තබා, අවසන් turns 12 ආරක්ෂා කරයි |
passthrough |
පරිවර්තනය නොකර route කරයි; engine එක මඟ හරිනු ලැබේ |
පැතිකඩ යනු අවම සීමාවක් නොව උපරිම සීමාවකි: package එකේ mergeCompressionProfileOptions
මඟින්, පැතිකඩ වසා දැමූ lossy lane එකක් caller override එකකට නැවත විවෘත කිරීමට ඉඩ නොදේ. එබැවින්,
එක් පියවරකට යෙදෙන preserveSystemPrompt: false එකකට coding-safe යටතේ system compression නැවත
සක්රීය කළ නොහැක.
මෙම codebase එක මත කළ මිනුම් අනුව: coding-safe සහ balanced මඟින් minCompressChars එහි
උපරිමයට ඉහළ නංවන අතර system, tool schemas සහ tool results ස්වදේශීයව තබයි. එබැවින් තවමත්
ඉතිහාසය රැස් කර නොගත් සැසියක් below_min_chars හි නවතින අතර engine එක කිසිවක් පරිවර්තනය නොකරයි.
වඩාත්ම ආරක්ෂිත පැතිකඩ වෙනුවට aggressive පෙරනිමිය වන්නේ එබැවිනි.
Package එක එහි පරිසර වින්යාසයෙන් තමන්ගේම model scope සහ profile විසඳා ගනී. OmniRoute කිසිවිටෙකත් තීරණය පැවරීමක් නොකරයි: adapter එක model gate එක package එකේ වඩාත්ම සීමාකාරී scope එකට ස්ථිර කරයි. එබැවින් host environment සැකසුම්වලට allowlist එක පටු කළ හැකි නමුත්, OmniRoute හි මිනුම් කළ receipts ඉක්මවා එය පුළුල් කළ නොහැක.
එන්ජින් රෙජිස්ට්රිය
රෙජිස්ට්රිය open-sse/services/compression/engines/registry.ts තුළ පිහිටා ඇත. එන්ජින් පොදු ගිවිසුමක් නිරාවරණය කරයි:
id:cavemanහෝrtkවැනි ස්ථාවර එන්ජින් id එකapply(text, config): ස්තරගත පයිප්ලයින් විසින් භාවිත කරන පැරණි ක්රියාත්මක කිරීමේ මාර්ගයcompress(input, config): පෙළ + සංඛ්යාලේඛන ආපසු ලබා දෙන ප්රධාන ක්රියාත්මක කිරීමේ මාර්ගයgetConfigSchema(): වලංගු වින්යාසයක JSON-Schema වැනි හැඩය ආපසු ලබා දෙයිvalidateConfig(config):{ valid, errors[] }ආපසු ලබා දෙයි
ලියාපදිංචිය සඳහා registerCompressionEngine(engine) (හෝ උසස් අවස්ථා සඳහා registerEngine) භාවිත කරන අතර, එය පිළිගැනීමට පෙර assertValidEngine() සහ validateConfig(defaultConfig) කැඳවයි.
ධාවන වේලාවේදී එන්ජිමක් ඉවත් කිරීමට unregisterCompressionEngine(id) භාවිත කරන්න.
සම්පීඩනය ක්රියාත්මක වීමට පෙර strategySelector.ts විසින් අන්තර්ගත එන්ජින් ලියාපදිංචි කරයි. මෙය පෙරදසුනට, ධාවන-වේලා සම්පීඩනයට, ස්තරගත ප්රකාරයට, පරීක්ෂණවලට සහ අනාගත එන්ජින්වලට එකම ක්රියාත්මක කිරීමේ මාර්ගය භාවිත කිරීමට ඉඩ සලසයි.
MCP විස්තර සම්පීඩනය (අදාළ)
වෙනම රෙජිස්ට්රියක් විසින් රෙජිස්ට්රි මට්ටමේදී MCP මෙවලම් විස්තර පාර-දත්ත සම්පීඩනය කරයි — open-sse/mcp-server/descriptionCompressor.ts සහ MCP-SERVER.md බලන්න. එය Caveman රීති නැවත භාවිත කරන නමුත්, ඉල්ලීම් දත්තභාර මත නොව මෙවලම් පාර-දත්ත මත ක්රියා කරයි.
අතිරේක අන්තර්ගත එන්ජින්
Caveman, RTK, සහ LLMLingua-2 ට අමතරව, රෙජිස්ට්රිය විශේෂිත හානි-රහිත / ව්යුහාත්මක එන්ජින් කිහිපයක් සමඟ සපයනු ලැබේ (ස්තරගත පයිප්ලයින්, ක්රීඩාංගණය, සහ පරීක්ෂණ විසින් භාවිත කරනු ලැබේ):
| එන්ජිම | Id | එය කරන දේ |
|---|---|---|
| CCR | ccr |
Content-Compress-Retrieve (H4): විශාල අඛණ්ඩ පෙළ කොටස් අන්තර්ගතය-මත-ලිපිනගත යොමු සමඟ ප්රතිස්ථාපනය කරයි, එබැවින් නැවත නැවත ඇති/විශාල කොටස් එක් වරක් යවා ඉන්පසු යොමු කරනු ලැබේ. |
| headroom | headroom |
SmartCrusher (H3 + N5): සමජාතීය JSON-array දත්තභාර තීරුමය [N rows] ආකෘතියකට හානි-රහිතව වගුගත සංක්ෂිප්ත කිරීම. |
| ionizer | ionizer |
ඉතා විශාල සමජාතීය කොටස් සඳහා මුල්/මැද/අවසන් පේළි නියැදීම සිදු කරමින්, ඉවත් කළ මැද කොටස CCR අන්තර්ගතය-මත-ලිපිනගත යොමුවක් ලෙස ගබඩා කරයි. |
| session-dedup | session-dedup |
අන්තර්ගතය-මත-ලිපිනගත වාර-අතර අනුපිටපත් ඉවත් කිරීම (TokenMizer-ආනුභාවයෙන්): එම සැසියේම පෙර වාරවල දැනටමත් දැක ඇති පෙළ ඉවත් කරයි. |
CCR ලබාගැනීමේ-ප්රොටෝකෝල උපදෙස් (#8033): CCR විසින් ඉල්ලීමක ≥1 කොටසක්
ප්රතිස්ථාපනය කරන පළමු අවස්ථාවේදී, එන්ජිම එක් වරක් පමණක් බලපාන system පණිවිඩයක් ([CCR protocol]
සෙන්ටිනලයෙන් ආරම්භ වන) ඉදිරියට එක් කරමින් සලකුණ → මෙවලම ගිවිසුම ඇමතුම්කරුට උගන්වයි:
[CCR retrieve hash=<24hex> chars=N] සලකුණක අර්ථය, hash එක අකුරටම පිටපත් කළ යුතු බව
(සියලුම hex අක්ෂර 24 — වැරදි ලෙස පිටපත් කළ hash, "block not found" දෝෂවලට බොහෝ දුරට හේතු වේ),
සහ [dedup:ref sha=...] සලකුණක අර්ථය "ඉතිහාසය තුළ ආපසු බලන්න" මිස "මෙවලම
අමතන්න" නොවන බව එයින් පැහැදිලි කරයි. සටහන ඇතුළු කරන්නේ ඇමතුම්කරු විසින් ප්රකාශිත
tools[] හරහා එයට සැබවින්ම omniroute_ccr_retrieve වෙත ළඟා විය හැකි බව තහවුරු වන විට පමණි
(open-sse/services/compression/engines/ccr/protocolInstruction.ts තුළ
callerSupportsCcrRetrieve()) — එම මෙවලම නොමැති සාමාන්ය OpenAI-අනුකූල ඇමතුම්කරුවෙකුට
තමන්ට ළඟා විය නොහැකි යමක් ඇමතීමට උපදෙස් කිසිවිටෙක නොලැබේ. ඇතුළු කිරීමට පෙර
සෙන්ටිනලය සඳහා පණිවිඩ ඉතිහාසය පරිලෝකනය කිරීමෙන් එක් වරක් පමණක් බලපෑම බලාත්මක කරයි,
එබැවින් බහු-වාර ඉල්ලීම් (පෙර පණිවිඩ නැවත ධාවනය කරන) එක් එක් වාරයකට සටහන ගොඩගසන්නේ නැත.
Caveman
Caveman මාදිලිය සාමාන්ය ගද්යයේ අර්ථානුකූල සංක්ෂේපණය කෙරෙහි අවධානය යොමු කරයි:
- code blocks, URLs, JSON, paths සහ ව්යුහගත දත්ත සුරකියි
- අනවශ්ය පිරවුම්, අවිනිශ්චිත ප්රකාශ, නැවත නැවත සඳහන් වන සන්දර්භය සහ දීර්ඝ සම්බන්ධක වාක්ය ඛණ්ඩ ඉවත් කරයි
open-sse/services/compression/rules/තුළ භාෂාව පිළිබඳ දැනුවත් file rule packs සඳහා සහය දක්වයි- පැරණි
standard,aggressiveසහultraමාදිලි හරහා ද තවදුරටත් ලබාගත හැක
dashboard අතුරුමුහුණත Dashboard -> Context & Cache -> Caveman වේ.
Caveman upstream වාර්තා අනුව output tokens ~75%කින් අඩු වන අතර, මිණුම් පරීක්ෂණවල සාමාන්ය output ඉතිරිය 65%කි,
එහි පරාසය 22-87%ක් වන අතර input-compression tool එකක් ලෙස ~46%ක් ලබා දෙයි. OmniRoute, ඒකාබද්ධ prompt/context ඉතිරිකිරීම්
ලේඛනගත කිරීමේදී Caveman හි input-side අගය භාවිත කරයි; Caveman output මාදිලිය වෙනම
ප්රතිචාර-හැසිරීම් විශේෂාංගයක් ලෙස පවතී.
RTK
RTK මාදිලිය command සහ tool output කෙරෙහි අවධානය යොමු කරයි:
git status,git branch,git diff, Vitest/Jest/Pytest, Cargo/Go tests, TypeScript/Vite/Webpack builds, ESLint, npm audit/installs, Docker logs, shellfind/grep, stack traces සහ සාමාන්ය logs වැනි output පන්ති හඳුනා ගනියිopen-sse/services/compression/engines/rtk/filters/වෙතින් JSON filters 49ක් යොදයි- RTK-ශෛලියේ ප්රකාශනාත්මක pipeline එක සඳහා සහය දක්වයි: ANSI ඉවත් කිරීම, replace, match-output short-circuit, පේළි ඉවත් කිරීම/තබාගැනීම, එක් එක් පේළිය කෙටි කිරීම, head/tail/max-line කෙටි කිරීම සහ හිස් වූ විට fallback කිරීම
.rtk/filters.jsonහි trust-gated project filters සහDATA_DIR/rtk/filters.jsonහි global filters සඳහා සහය දක්වයි- ANSI අනුක්රම, ප්රගති noise, නැවත නැවත යෙදෙන පේළි සහ ප්රයෝජනවත් නොවන boilerplate ඉවත් කරයි
- ක්රියාමාර්ග ගත හැකි අසාර්ථකවීම්, අනතුරු ඇඟවීම්, සාරාංශ, වෙනස් වූ files සහ tail සන්දර්භය සුරකියි
- authenticated management routes හරහා ප්රතිසාධනය/debugging සඳහා සංස්කරණය කර සඟවන ලද raw output විකල්ප ලෙස රඳවාගත හැක
dashboard අතුරුමුහුණත Dashboard -> Context & Cache -> RTK වේ.
custom filters, trust, verify සහ raw-output ප්රතිසාධනය සඳහා වන මෙහෙයුම් විස්තර
RTK_COMPRESSION.md තුළ ඇත.
RTK upstream වාර්තා අනුව command-output සම්පීඩනයෙන් 60-90%ක ඉතිරියක් ලැබේ. එහි README උදාහරණය අනුව
මිනිත්තු 30ක Claude Code session එකක් tokens ~118,000 සිට ~23,900 දක්වා අඩු වන අතර එය 79.7%ක ඉතිරියකි.
LLMLingua-2 (අර්ථානුකූල කප්පාදු කිරීම)
LLMLingua-2 මාදිලිය, කුඩා ONNX token classifier එකක් භාවිතයෙන් ගද්යය මත අර්ථානුකූල token කප්පාදුව සිදු කරමින්, rule-based Caveman සහ RTK engines සඳහා අනුපූරකයක් සපයයි:
- system නොවන messages තුළ ඇති ගද්යය පමණක් සම්පීඩනය කරයි; fenced code blocks සහ සුරැකෙන අනෙකුත් ව්යුහ කිසිවිටෙකත් වෙනස් නොකරයි
@atjsh/llmlingua-2backend එක (@huggingface/transformersහරහා ONNX) worker thread එකක ධාවනය කරන බැවින් model inference කිසිවිටෙකත් request event loop එක අවහිර නොකරයි- stack කළ හැකිය (
stackPriority35): stacked pipeline එකක එය structural engines (CCR, session-dedup, headroom, Caveman) වලට පසුව, නමුත්ultraට පෙර ධාවනය වේ, මන්ද දැනටමත් ව්යුහාත්මකව සම්පීඩිත text මත අර්ථානුකූල කප්පාදුව වඩාත් ඵලදායී වන බැවිනි — උදා.rtk -> caveman -> llmlingua - ඕනෑම දෝෂයකදී fail-open වේ (නොමැති optional deps, worker spawn, model load, inference, හෝ timeout) → දෝෂයක් නොව, මුල් text එක කිසිදු වෙනසකින් තොරව ආපසු ලබා දෙයි
Engine පිහිටීම: open-sse/services/compression/engines/llmlingua/. dashboard අතුරුමුහුණත
Dashboard -> Context & Cache -> LLMLingua වේ.
Models
පෙරනිමි model එක TinyBERT (atjsh/llmlingua-2-js-tinybert-meetingbank, ~57 MB,
වේගවත්) වේ. වඩාත් ඉහළ නිරවද්යතාවක් ඇති BERT-base model එකක් (Arcoldd/llmlingua4j-bert-base-onnx,
~710 MB) engine config හි model field එක හරහා ලබාගත හැක. පළමු call එකේදී (modelStore.ts),
@huggingface/transformers තෝරාගත් model එක HuggingFace Hub වෙතින්
${DATA_DIR}/models/llmlingua වෙත අවශ්ය වූ විට බාගත කරයි; ඒ වෙනුවට modelPath config
override එකක් මඟින් එය local copy එකකට යොමු කරයි (offline / air-gapped ස්ථාපන).
Optional dependencies සහ අවශ්ය විට ස්ථාපනය
කප්පාදු කළ හැකි LLMLingua runtime peer stack එක විකල්ප වේ. packages දෙකක්
package.json තුළ optionalDependencies ලෙස ප්රකාශ කර ඇති අතර production build එකේදී
(scripts/build/prepublish.ts ඒවා bundle නොකරයි) external ලෙස තබා ඇත:
| Package | Version (pin) | සටහන් |
|---|---|---|
@atjsh/llmlingua-2 |
2.0.5 |
ප්රවේශ package එක; අනෙක් ඒවා peers ලෙස ප්රකාශ කරයි |
js-tiktoken |
^1.0.20 |
Tokenizer |
@huggingface/transformers, ^4.2.0 වෙත pin කර ඇත (local embeddings path එක සමඟ බෙදාගන්නා අතර
standalone bundle එක තුළට ද trace කර ඇත); @atjsh/llmlingua-2@2.0.5, එය මත
"^3.5.2 || ^4.0.0" සමඟ peer වන බැවින් Transformers.js v3 සහ v4 යන දෙකටම සහය දක්වයි. 2.0.4 සිට,
@atjsh/llmlingua-2 සඳහා තවදුරටත් @tensorflow/tfjs අවශ්ය නොවන අතර, එමඟින් SLM stack එකේ විශාලතම තනි
දායකයා (TensorFlow.js) ඉවත් විය. ඉහත packages දෙක පමණක් කප්පාදු කළ හැකි SLM
peers වේ. optional dependencies අත්හැර නොමැති නම් සාමාන්ය npm install (dev) එකක් optional stack එක
ස්වයංක්රීයව ස්ථාපනය කරයි.
අවශ්ය විට පමණක් ස්ථාපනය කරන්නේ ඇයි: ප්රමාණයෙන් කුඩා ලෙස තබාගැනීම සඳහා npm මත ප්රකාශිත package එක, standalone bundle එක සහ Docker image එක
මෙම deps නොමැතිව නිකුත් වේ. ඒවා නොමැති විට, worker හි dependency
gate එක (worker.ts හි @atjsh/llmlingua-2 resolve probe එකක්) අසාර්ථක වන අතර engine එක
නිහඬව fail-open වේ — LLMLingua තේරීම no-op එකක් බවට පත්වේ (text එක වෙනස් නොකර ආපසු ලබා දෙයි,
දෝෂයක් log නොකරයි). කප්පාදු කළ environment එකක එය සක්රිය කිරීමට optional stack එක ස්ථාපනය කරන්න:
# package.json optionalDependencies තුළ ප්රකාශිත versions වෙත pin කරන්න
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
@tensorflow/tfjs ඉවත් කිරීම (2.0.4+) පෙර ප්රමුඛව පැවති ~800 MB
දායකත්වය ඉවත් කරයි — ඉතිරි footprint එක වන්නේ transformers.js + onnxruntime-node runtimes සහ
පළමු භාවිතයේදී බාගත කරන TinyBERT model එක (~57 MB) යි (npm හරහා නොවේ).
එක් එක් environment එක අනුව:
- Dev /
npm install— ඔබ--omit=optional(හෝ--no-optional) ලබා දී නොමැති නම් ස්වයංක්රීයව ස්ථාපනය වේ. කිසිදු ක්රියාමාර්ගයක් අවශ්ය නොවේ. - Global npm (
npm i -g omniroute) / ස්වාධීන — ඉහත ස්ථාපන විධානය ස්ථාපිත package නාමාවලිය තුළ ක්රියාත්මක කරන්න, නැතහොත් optional dependencies අත් නොහැර නැවත ස්ථාපනය කරන්න. - Docker — ව්යුත්පන්න image layer එකකට ස්ථාපන විධානය එක් කරන්න; ප්රකාශිත image එක සැලසුම අනුව අවම ප්රමාණයෙන් නිකුත් කෙරේ.
- VPS (PM2) — යෙදුමේ
node_modulesතුළ ස්ථාපනය කර, worker එක gate එක නැවත පරීක්ෂා කරන පරිදි process එක නැවත ආරම්භ කරන්න. - Raw Next standalone (
npm run build→.build/next/standalone/server.js) — standalone trace එක සමඟ worker එක හෝ optional dependencies කිසිවක් නිකුත් නොවන බැවින්, engine එක නිහඬව fail-open වේ.scripts/build/colocate-standalone.mjsඒ දෙකම නැවත යොදයි (worker esbuild + optional-dep closure එක standalone tree එක තුළට); සෑම build එකකටම පසුවpostbuildnpm hook එක හරහා එය ස්වයංක්රීයව ක්රියාත්මක වේ. Idempotent වන අතර dependencies නොමැති විට fail-soft වේ.
එය සක්රිය බව තහවුරු කරන්න: LLMLingua තෝරා ඇති විට, සැබෑ ගද්යය ඇත්තෙන්ම කෙටි වේ (engine එක fail-open වීම නවත්වයි), සහ පළමු request එකෙන් model එක ${DATA_DIR}/models/llmlingua වෙත download කිරීම ආරම්භ වේ. Gate එක හිතාමතාම @atjsh/llmlingua-2 පමණක් පරීක්ෂා කරයි — අනෙකුත් peers ESM-only වන අතර, ඒවා පවතින විට පවා require.resolve ඒවා මත exception එකක් throw කරයි — එබැවින් import() අවස්ථාවේදී කිසියම් peer එකක් සැබවින්ම නොමැති නම් worker එක තවමත් fail-open වේ.
ස්තරගත නළ මාර්ග
ස්තරගත ප්රකාරය නළ මාර්ග පියවර අනුපිළිවෙළින් ධාවනය කරයි. පෙරනිමිය වන්නේ:
rtk -> caveman
විධාන ප්රතිදානය මානව හෝ සහායක ගද්ය සමඟ ඒකාබද්ධ කරන ප්රේරකයක් සහිත කේතකරණ නියෝජිත සැසි සඳහා මෙය භාවිත කරන්න. RTK පළමුව අනවශ්ය ඝෝෂාකාරී මෙවලම් ලොග් අඩු කරයි, ඉන්පසු Caveman ඉතිරි ස්වාභාවික භාෂාව සම්පීඩනය කරයි.
නළ මාර්ග පියවර සම්පීඩන සැකසුම් තුළ stackedPipeline මඟින් හෝ සම්පීඩන සංයෝජන හරහා වින්යාස කෙරේ.
එන්ජින් දෙකම එකම සුදුසු දත්ත කොටස අඩු කරන විට, ඉතිරිකිරීම් සංයුක්ත වේ:
combined = 1 - (1 - RTK savings) * (1 - Caveman input savings)
average = 1 - (1 - 0.80) * (1 - 0.46) = 89.2%
range = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%
MCP ප්රවේශ්යතා වෘක්ෂ පෙරහන
MCP ප්රවේශ්යතා-වෘක්ෂ ස්මාර්ට් පෙරහන යනු ප්රේරක හෝ සන්දර්භය මත නොව MCP මෙවලම් ප්රතිඵල මත ධාවනය වන පශ්චාත්-ක්රියාත්මක සම්පීඩන ස්තරයකි. එය Playwright, computer-use, සහ browser-automation MCP සේවාදායක වැනි මෙවලම් මඟින් ආපසු ලබා දෙන විස්තරාත්මක ප්රවේශ්යතා-වෘක්ෂ සහ බ්රවුසර ස්නැප්ෂොට් දත්ත කොටස් ඉලක්ක කරයි.
එය කරන දේ
- අනවශ්ය දත්ත ඉවත් කිරීම — හිස් සාමාන්ය/පෙළ ඇතුළත් කිරීම් (
- generic:,- text: "") ඉවත් කරයි - සහෝදර මූලද්රව්ය හකුළීම — අඛණ්ඩ පේළි ≥
collapseThreshold(පෙරනිමිය 30) ව්යුහාත්මක පුනරාවර්තන වන විට, ඒවා පළමුcollapseKeepHead(පෙරනිමිය 10) පේළි + සංඛ්යා සාරාංශයක් + අවසන්collapseKeepTail(පෙරනිමිය 5) පේළි බවට හකුළයි - Ref සංරක්ෂණය — Playwright/computer-use සඳහා අවශ්ය
[ref=eXX]නැංගුරම් කිසිවිටෙක වෙනස් නොකෙරේ - දෘඪ කප්පාදුව — හකුළීමෙන් පසුවත් පෙළ
maxTextChars(පෙරනිමිය 50,000) ඉක්මවන්නේ නම්, නියෝජිතයාට දිගටම වැඩ කළ හැකි වන පරිදි සංචාලන ඉඟියක් සමඟ එය කප්පාදු කරයි
එන්ජිමේ පිහිටීම
open-sse/services/compression/engines/mcpAccessibility/
index.ts ← smartFilterText() පිවිසුම් ස්ථානය
collapseRepeated.ts ← සහෝදර-හකුළීමේ ඇල්ගොරිතමය
constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG
වින්යාසය
ගෝලීය සැකසුම්වල compression.mcpAccessibility මඟින් පාලනය කෙරේ (සංක්රමණය 056). පෙරනිමි වින්යාසය:
{
"enabled": true,
"maxTextChars": 50000,
"collapseThreshold": 30,
"collapseKeepHead": 10,
"collapseKeepTail": 5,
"minLengthToProcess": 2000
}
පෙරහන යොදනු ලබන්නේ type අගය "text" වන සහ දිග minLengthToProcess ඉක්මවන මෙවලම්-ප්රතිඵල දත්ත කොටස්වලට පමණි. එය ප්රේරක සම්පීඩනයට හෝ ඉල්ලීම් දත්ත කොටස්වලට බලපාන්නේ නැත.
අපේක්ෂිත ඉතිරිකිරීම්
පිටුවේ සංකීර්ණත්වය අනුව, බ්රවුසර ස්නැප්ෂොට් මෙවලම් ප්රතිඵල මත 60–80% කි. හකුළීමේ ඇල්ගොරිතමය පේළි ගණන අනුව O(n) වන අතර නොසැලකිය හැකි ප්රමාදයක් එක් කරයි.
මෙම පෙරහන සහ ඉහත සම්පීඩන එන්ජින් අතර වෙනස
| අංගය | Caveman / RTK / Stacked | MCP ප්රවේශ්යතා පෙරහන |
|---|---|---|
| ඉලක්කය | ඉල්ලීම් ප්රේරක / සන්දර්භය | MCP මෙවලම් ප්රතිඵල |
| ප්රේරකය | සම්පීඩන ප්රකාර සැකසුම | compression.mcpAccessibility.enabled |
| විෂය පථය | සියලුම SSE පණිවිඩ | මෙවලම් ප්රතිඵල පමණි |
| Ref නැංගුරම් | අදාළ නොවේ | කොන්දේසි විරහිතව සංරක්ෂණය කෙරේ |
සම්පීඩන සංයෝජන
සම්පීඩන සංයෝජන යනු මාර්ගගත කිරීමේ සංයෝජනවලට පැවරිය හැකි නම් කළ සම්පීඩන පැතිකඩ වේ:
compression_combos: මාදිලිය, නළ මාර්ගය, RTK වින්යාසය, භාෂා වින්යාසය සහ පෙරනිමි සලකුණ ගබඩා කරයිcompression_combo_assignments: සම්පීඩන සංයෝජනයක් මාර්ගගත කිරීමේ සංයෝජනයකට සිතියම්ගත කරයි- ධාවනකාල අනුකලනය සාමාන්ය සංයෝජන අතික්රමණවලට පෙර පවරා ඇති සම්පීඩන සංයෝජනයක් විසඳයි
- විශ්ලේෂණවල
compression_combo_idසහengineඇතුළත් වේ
උපකරණ පුවරුවේ ස්ථානය: Dashboard -> Context & Cache -> Compression Combos.
API අතුරුමුහුණත
| මාර්ගය | අරමුණ |
|---|---|
/api/settings/compression |
ගෝලීය සම්පීඩන සැකසුම් (mcpAccessibility වින්යාසය ඇතුළුව) |
/api/compression/preview |
ඕනෑම සම්පීඩන මාදිලියක් පෙරදසුන් කිරීම |
/api/compression/language-packs |
ලබා ගත හැකි Caveman භාෂා ඇසුරුම් ලැයිස්තුගත කිරීම |
/api/context/caveman/config |
Caveman සැකසුම් අන්වර්ථය |
/api/context/rtk/config |
RTK පෙරනිමි සහ සැකසුම් |
/api/context/rtk/filters |
RTK පෙරහන් නාමාවලිය |
/api/context/rtk/test |
RTK පෙරදසුන්/පරීක්ෂණ අන්ත ලක්ෂ්යය |
/api/context/rtk/raw-output/[id] |
සත්යාපිත, සංවේදී තොරතුරු ඉවත් කළ අමු ප්රතිදාන ප්රතිසාධනය |
/api/context/combos |
සම්පීඩන සංයෝජන CRUD |
/api/context/combos/[id]/assignments |
මාර්ගගත කිරීමේ සංයෝජන පැවරුම් CRUD |
/api/context/analytics |
සම්පීඩන විශ්ලේෂණ අන්වර්ථය |
කළමනාකරණ මාර්ග සඳහා කළමනාකරණ සත්යාපනය හෝ API-යතුරු ප්රතිපත්ති පරීක්ෂා අවශ්ය වේ.
MCP මෙවලම්
සම්පීඩනය MCP මෙවලම් පහක් නිරාවරණය කරයි:
| මෙවලම | විෂය පථය | අරමුණ |
|---|---|---|
omniroute_compression_status |
read:compression |
සැකසුම්, විශ්ලේෂණ සහ හැඹිලි සංඛ්යාලේඛන |
omniroute_compression_configure |
write:compression |
ගෝලීය සැකසුම් යාවත්කාලීන කිරීම |
omniroute_set_compression_engine |
write:compression |
මාදිලිය සහ විකල්ප නළ මාර්ගය සැකසීම |
omniroute_list_compression_combos |
read:compression |
සම්පීඩන සංයෝජන ලැයිස්තුගත කිරීම |
omniroute_compression_combo_stats |
read:compression |
සංයෝජන/එන්ජින් විශ්ලේෂණ කියවීම |
විෂය පථය සහ බැහැර කිරීම්
Embeddings කිසිවිටෙක සම්පීඩනය නොකෙරේ. open-sse/handlers/embeddings.ts කිසිදු
සම්පීඩන එන්ජිමක් කිසිවිටෙක කැඳවන්නේ නැත — ඉල්ලීම්/ප්රතිචාර අන්තර්ගතයන් වෙනස් නොකරම
සෘජුවම ක්රියාත්මක කරන්නා වෙත යයි. මෙය දැනට ව්යුහාත්මක වේ (embeddings සහ chat
completions සඳහා වෙන් වූ handlers ඇත), ධාවනකාල පරීක්ෂාවක් නොවේ; එහෙත් එයින් අදහස්
වන්නේ #8034 හි දෛශික-විකෘතිකරණ ගැටලුවට embeddings මාර්ගයේ නිරාවරණ පෘෂ්ඨයක් නොමැති
බවයි.
ආකෘතිය/අන්ත ලක්ෂ්යය අනුව බැහැර කිරීමේ පෙරහන (#8034). chat completions සඳහා,
කිසිවිටෙක සම්පීඩනය නොකළ යුතු ආකෘති ids / provider/model ඉලක්ක ක්රියාකරුවෙකුට නම්
කළ හැකිය — අනාගතයේදී සම්පීඩනය embeddings-ආශ්රිත මාර්ගයකට වඩාත් සමීපව සම්බන්ධ
කළහොත් ප්රයෝජනවත් වන ආරක්ෂණ වැටක් මෙන්ම, ප්රේරකයේ නිශ්චිත බයිට්-මට්ටමේ අන්තර්ගතය
වැදගත් වන ඕනෑම ආකෘතියක් සඳහාද සාමාන්යයෙන් ප්රයෝජනවත් වේ (නිර්ණායක ඇගයීම්,
හැඹිලි-සංවේදී උපසර්ග ආදිය).
- සැකසුම් ක්ෂේත්රය: ගෝලීය සම්පීඩන වින්යාසය මත
exclusions?: string[](GET/PUT /api/settings/compression), පවතිනkey_valueසම්පීඩන නාමාවකාශය (src/lib/db/compression.ts) හරහා ස්ථායීව ගබඩා කෙරේ — නව වගුවක් නැත. - උපකරණ පුවරු ටැබය: Dashboard → Compression → Exclusions
(
/dashboard/compression/exclusions). - රටා වාක්ය රීතිය: එකම ආදේශක ලකුණ
*වේ. රටාවක ඇති අනෙකුත් සෑම regex පාරඅක්ෂරයක්ම ගැළපීමට පෙර escape කරනු ලැබේ; එබැවින්gpt-5.6ගැළපෙන්නේ එම අක්ෂර මාලාවට පමණක් වන අතරgpt-5x6සමඟ කිසිවිටෙක නොගැළපේ (ReDoS-ආරක්ෂිත, සීමා කළ, කැදලිගත ප්රමාණකාරක නොමැති). රටා, අකුරු විශාලත්වය නොසලකා, හිස් ආකෘති id සහprovider/modelසංයුක්තය යන දෙකටම ගැළපේ —gpt-5-6,openai/gpt-5-6, සහopenai/*සියල්ල ක්රියා කරයි;*පමණක් භාවිත කළ විට සෑම ආකෘතියක්ම බැහැර කෙරේ. - ගැළපීම:
open-sse/services/compression/exclusions.tsතුළisCompressionExcluded()/normalizeCompressionExclusions().chatCore.ts, සම්පීඩන සැකසුම් විසඳූ වහාම, කිසිදු එන්ජිමක් ධාවනය වීමට පෙර, බැහැර කළ ඉලක්කය පරීක්ෂා කරයි; ගැළපීමක් ගෝලීයව සම්පීඩනය අක්රිය කර ඇති අවස්ථාවකට හරියටම සමානව සලකයි — ඉල්ලීම් අන්තර්ගතය බයිට්-අනුව සර්වසම බව සනාථ කළ හැකිය. විශ්ලේෂණ දෘශ්යතාව සඳහා මඟහැරීමwriteCompressionSkip(..., "excluded")හරහා වාර්තා කෙරේ. - පෙරනිමිය (හිස්/නොපවතින ලැයිස්තුව): #8034 ට පෙර හැසිරීමට සර්වසම වේ — කිසිවක් බැහැර නොකෙරේ.
දන්නා සීමාවන්
- LLMLingua-2 (SLM) සඳහා එකම ස්ථානයේ පිහිටුවන ලද විකල්ප පරායත්තතා අවශ්ය වේ. Worker එක
production build එකක ධාවනය වන්නේ
@atjsh/llmlingua-2+ එහි peer පරායත්තතාdist/node_modulesතුළ එකම ස්ථානයේ පිහිටුවා ඇති විට පමණි (scripts/build/colocateOptionals.mjs, #4286 බලන්න). ඒවා නොමැතිව engine එක fail-open වේ (මුල් පෙළ ආපසු ලබා දෙයි). Worker resolution තවදුරටත්import.meta.urlමත රඳා නොපවතී (එය standalone bundle එක තුළ අසාර්ථක වේ) — එය runtime cwd /argv[1]මත පදනම් වේ. - Caveman භාෂා ඇසුරුම්
de/fr/jaඅර්ධ වශයෙන් පමණක් සම්පූර්ණය. ඒවා සමඟcontext+filler+structuralරීති ලබා දෙන නමුත්dedup/ultraඇසුරුම් නොමැති බැවින්, එම භාෂා සඳහාultraතීව්රතාවfullට වඩා ප්රබල නොවේ (ඒවා භාවිත කරන්නේ තමන්ගේම රීති පමණි — විදේශීය පෙළ විකෘති කළ හැකි ඉංග්රීසිdedup/ultraරීති වෙත නිහඬ fall-back වීමක් නොමැත).en/es/id/pt-BRසම්පූර්ණය. අර්ධ ඇසුරුම් සඳහාdedup.json+ultra.jsonදායකත්ව සාදරයෙන් පිළිගනු ලැබේ. - Stacked telemetry හි ලැයිස්තුගත වන්නේ සම්පීඩනය සිදු කළ engine පමණි. Engine එක
ධාවනය වූ නමුත් 0 % ඉතිරියක් ලබා දුන් stacked-pipeline පියවරක්
stats:nullආපසු ලබා දෙන අතර, එම නිසාengineBreakdownතුළ නොපෙන්වයි — එය මඟ හැරුණු පියවරකින් වෙන්කර හඳුනාගත නොහැක. "ධාවනය විය, 0 %" සහ "මඟ හැරුණි" අතර වෙනස හඳුනාගැනීමට breakdown-model වෙනසක් අවශ්ය වන අතර එය කල් දමා ඇත.
වලංගුකරණය
මෙම ක්ෂේත්රය සඳහා ඉලක්කගත gates වන්නේ:
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
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
node --import tsx/esm --test tests/unit/compression/mcpAccessibility*.test.ts
npm run typecheck:core