mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-21 22:32:22 +03:00
* 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.
361 lines
62 KiB
Markdown
361 lines
62 KiB
Markdown
# Compression Engines (മലയാളം)
|
||
|
||
🌐 **Languages:** 🇺🇸 [English](../../../../compression/COMPRESSION_ENGINES.md) · 🇪🇹 [am](../../../am/docs/compression/COMPRESSION_ENGINES.md) · 🇸🇦 [ar](../../../ar/docs/compression/COMPRESSION_ENGINES.md) · 🇦🇿 [az](../../../az/docs/compression/COMPRESSION_ENGINES.md) · 🇧🇬 [bg](../../../bg/docs/compression/COMPRESSION_ENGINES.md) · 🇧🇩 [bn](../../../bn/docs/compression/COMPRESSION_ENGINES.md) · 🇨🇿 [cs](../../../cs/docs/compression/COMPRESSION_ENGINES.md) · 🇩🇰 [da](../../../da/docs/compression/COMPRESSION_ENGINES.md) · 🇩🇪 [de](../../../de/docs/compression/COMPRESSION_ENGINES.md) · 🇬🇷 [el](../../../el/docs/compression/COMPRESSION_ENGINES.md) · 🇪🇸 [es](../../../es/docs/compression/COMPRESSION_ENGINES.md) · 🇪🇪 [et](../../../et/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇷 [fa](../../../fa/docs/compression/COMPRESSION_ENGINES.md) · 🇫🇮 [fi](../../../fi/docs/compression/COMPRESSION_ENGINES.md) · 🇫🇷 [fr](../../../fr/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇪 [ga](../../../ga/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [gu](../../../gu/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇬 [ha](../../../ha/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇱 [he](../../../he/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [hi](../../../hi/docs/compression/COMPRESSION_ENGINES.md) · 🇭🇷 [hr](../../../hr/docs/compression/COMPRESSION_ENGINES.md) · 🇭🇺 [hu](../../../hu/docs/compression/COMPRESSION_ENGINES.md) · 🇦🇲 [hy](../../../hy/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇩 [id](../../../id/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇬 [ig](../../../ig/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇹 [it](../../../it/docs/compression/COMPRESSION_ENGINES.md) · 🇯🇵 [ja](../../../ja/docs/compression/COMPRESSION_ENGINES.md) · 🇬🇪 [ka](../../../ka/docs/compression/COMPRESSION_ENGINES.md) · 🇰🇭 [km](../../../km/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [kn](../../../kn/docs/compression/COMPRESSION_ENGINES.md) · 🇰🇷 [ko](../../../ko/docs/compression/COMPRESSION_ENGINES.md) · 🇱🇹 [lt](../../../lt/docs/compression/COMPRESSION_ENGINES.md) · 🇱🇻 [lv](../../../lv/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [mr](../../../mr/docs/compression/COMPRESSION_ENGINES.md) · 🇲🇾 [ms](../../../ms/docs/compression/COMPRESSION_ENGINES.md) · 🇲🇹 [mt](../../../mt/docs/compression/COMPRESSION_ENGINES.md) · 🇲🇲 [my](../../../my/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇵 [ne](../../../ne/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇱 [nl](../../../nl/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇴 [no](../../../no/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [or](../../../or/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [pa](../../../pa/docs/compression/COMPRESSION_ENGINES.md) · 🇵🇭 [phi](../../../phi/docs/compression/COMPRESSION_ENGINES.md) · 🇵🇱 [pl](../../../pl/docs/compression/COMPRESSION_ENGINES.md) · 🇵🇹 [pt](../../../pt/docs/compression/COMPRESSION_ENGINES.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_ENGINES.md) · 🇷🇴 [ro](../../../ro/docs/compression/COMPRESSION_ENGINES.md) · 🇷🇺 [ru](../../../ru/docs/compression/COMPRESSION_ENGINES.md) · 🇱🇰 [si](../../../si/docs/compression/COMPRESSION_ENGINES.md) · 🇸🇰 [sk](../../../sk/docs/compression/COMPRESSION_ENGINES.md) · 🇸🇮 [sl](../../../sl/docs/compression/COMPRESSION_ENGINES.md) · 🇷🇸 [sr](../../../sr/docs/compression/COMPRESSION_ENGINES.md) · 🇸🇪 [sv](../../../sv/docs/compression/COMPRESSION_ENGINES.md) · 🇰🇪 [sw](../../../sw/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [ta](../../../ta/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [te](../../../te/docs/compression/COMPRESSION_ENGINES.md) · 🇹🇭 [th](../../../th/docs/compression/COMPRESSION_ENGINES.md) · 🇹🇷 [tr](../../../tr/docs/compression/COMPRESSION_ENGINES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_ENGINES.md) · 🇵🇰 [ur](../../../ur/docs/compression/COMPRESSION_ENGINES.md) · 🇺🇿 [uz](../../../uz/docs/compression/COMPRESSION_ENGINES.md) · 🇻🇳 [vi](../../../vi/docs/compression/COMPRESSION_ENGINES.md) · 🇳🇬 [yo](../../../yo/docs/compression/COMPRESSION_ENGINES.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/compression/COMPRESSION_ENGINES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_ENGINES.md)
|
||
|
||
---
|
||
|
||
OmniRoute കംപ്രഷൻ എഞ്ചിൻ കരാറുകളെ അടിസ്ഥാനമാക്കിയാണ് നിർമ്മിച്ചിരിക്കുന്നത്. ഒരു മോഡിന് ഒരു എഞ്ചിൻ നേരിട്ട് പ്രവർത്തിപ്പിക്കാം
|
||
(`caveman` അല്ലെങ്കിൽ `rtk`), അല്ലെങ്കിൽ ഒന്നിലധികം എഞ്ചിനുകൾ ക്രമത്തിൽ പ്രവർത്തിപ്പിക്കുന്ന നിർണ്ണായകമായ ഒരു സ്റ്റാക്ക്ഡ് പൈപ്പ്ലൈൻ ഉപയോഗിക്കാം.
|
||
|
||
## മോഡുകൾ
|
||
|
||
| മോഡ് | എഞ്ചിൻ പാത | ഉദ്ദേശിച്ച ഇൻപുട്ട് |
|
||
| ------------ | ------------------------------------- | ---------------------------------------------------------- |
|
||
| `off` | ഒന്നുമില്ല | പ്രോംപ്റ്റ് അതേപടി സംരക്ഷിക്കൽ |
|
||
| `lite` | Caveman lite സഹായികൾ | കുറഞ്ഞ അപകടസാധ്യതയുള്ള, എപ്പോഴും പ്രവർത്തിക്കുന്ന ശുചീകരണം |
|
||
| `standard` | Caveman | സ്വാഭാവിക ഭാഷയിലുള്ള പ്രോംപ്റ്റിന്റെ സംക്ഷേപണം |
|
||
| `aggressive` | Caveman + ഹിസ്റ്ററി/ടൂൾ സംഗ്രാഹകർ | ദൈർഘ്യമേറിയ ചാറ്റ് സെഷനുകൾ |
|
||
| `ultra` | Caveman + പ്രൂണിംഗ് സഹായികൾ | കോൺടെക്സ്റ്റ് പരിധിയിൽനിന്നുള്ള വീണ്ടെടുക്കൽ |
|
||
| `rtk` | RTK | ടെർമിനൽ, ഷെൽ, ബിൽഡ്, ടെസ്റ്റ്, git ഔട്ട്പുട്ട് |
|
||
| `omniglyph` | OmniGlyph | നേറ്റീവ് പ്രൊവൈഡർ വയറിലെ ഇമേജ് രൂപത്തിലുള്ള കോൺടെക്സ്റ്റ് |
|
||
| `stacked` | പൈപ്പ്ലൈൻ, ഡിഫോൾട്ട് `rtk -> caveman` | സമ്മിശ്ര ടൂൾ ലോഗുകളും ഗദ്യവും, പരമാവധി ലാഭം |
|
||
|
||
### OmniGlyph കംപ്രഷൻ പ്രൊഫൈലുകൾ
|
||
|
||
`omniglyph` എഞ്ചിൻ (`omniglyph` പാക്കേജ്, 1.4.0+) പേരിട്ട ഒരു സെമാന്റിക് പ്രൊഫൈൽ സ്വീകരിക്കുന്നു; ഇത്
|
||
കംപ്രഷൻ ക്രമീകരണങ്ങളിലെ `omniglyph.profile` വഴി ആഗോളമായോ, സ്റ്റാക്ക്ഡ് പൈപ്പ്ലൈന്റെ ഘട്ട കോൺഫിഗിലൂടെ ഓരോ ഘട്ടത്തിനായോ സജ്ജീകരിക്കാം:
|
||
|
||
| പ്രൊഫൈൽ | പരിധി |
|
||
| ------------- | ------------------------------------------------------------------------------------------------------------------------ |
|
||
| `aggressive` | ഡിഫോൾട്ട്. പ്രസിദ്ധീകരിച്ച രസീതുകൾ അളന്ന പോളിസി — സിസ്റ്റം, ടൂൾ ഡോക്സ്, സാന്ദ്രമായ ഹിസ്റ്ററി എന്നിവയെ ചിത്രങ്ങളാക്കുന്നു |
|
||
| `balanced` | ലൈവ് സ്റ്റേറ്റ് നേറ്റീവായി നിലനിർത്തുന്നു, അവസാന 8 ടേണുകൾ സംരക്ഷിക്കുന്നു, പഴയ അടച്ച ഹിസ്റ്ററി ചുരുക്കുന്നു |
|
||
| `coding-safe` | അതോറിറ്റി, ടൂൾ സ്കീമകൾ, ലൈവ് ടൂൾ ഔട്ട്പുട്ട് എന്നിവ നേറ്റീവായി നിലനിർത്തുന്നു, അവസാന 12 ടേണുകൾ സംരക്ഷിക്കുന്നു |
|
||
| `passthrough` | രൂപാന്തരപ്പെടുത്താതെ റൂട്ട് ചെയ്യുന്നു; എഞ്ചിൻ ഒഴിവാക്കപ്പെടുന്നു |
|
||
|
||
പ്രൊഫൈൽ ഒരു **പരമാവധി പരിധിയാണ്, കുറഞ്ഞ പരിധിയല്ല**: പാക്കേജിലെ `mergeCompressionProfileOptions`
|
||
ഒരു കോളർ ഓവർറൈഡിലൂടെ പ്രൊഫൈൽ അടച്ച ഒരു നഷ്ടസാധ്യതയുള്ള ലെയിൻ വീണ്ടും തുറക്കാൻ അനുവദിക്കില്ല. അതിനാൽ ഓരോ ഘട്ടത്തിലെയും
|
||
`preserveSystemPrompt: false` എന്ന ക്രമീകരണത്തിന് `coding-safe`-ന്റെ കീഴിൽ സിസ്റ്റം കംപ്രഷൻ വീണ്ടും പ്രവർത്തനക്ഷമമാക്കാനാവില്ല.
|
||
|
||
ഈ കോഡ്ബേസിൽ നടത്തിയ അളവെടുപ്പനുസരിച്ച്: `coding-safe`, `balanced` എന്നിവ `minCompressChars`-നെ അതിന്റെ
|
||
പരമാവധി മൂല്യത്തിലേക്ക് ഉയർത്തുകയും സിസ്റ്റം, ടൂൾ സ്കീമകൾ, ടൂൾ ഫലങ്ങൾ എന്നിവ നേറ്റീവായി നിലനിർത്തുകയും ചെയ്യുന്നു. അതിനാൽ ഇതുവരെ
|
||
ഹിസ്റ്ററി ശേഖരിക്കാത്ത ഒരു സെഷൻ `below_min_chars`-ൽ നിൽക്കുകയും എഞ്ചിൻ ഒന്നും രൂപാന്തരപ്പെടുത്താതിരിക്കുകയും ചെയ്യും. അതുകൊണ്ടാണ്
|
||
ഏറ്റവും സുരക്ഷിതമായ പ്രൊഫൈലിന് പകരം `aggressive` ഡിഫോൾട്ടായിരിക്കുന്നത്.
|
||
|
||
പാക്കേജ് അതിന്റെ എൻവയോൺമെന്റ് കോൺഫിഗറേഷനിൽ നിന്ന് സ്വന്തം മോഡൽ സ്കോപ്പും പ്രൊഫൈലും നിർണ്ണയിക്കുന്നു.
|
||
OmniRoute ഒരിക്കലും ഈ തീരുമാനം മറ്റൊന്നിന് ഏൽപ്പിക്കില്ല: അഡാപ്റ്റർ മോഡൽ ഗേറ്റിനെ പാക്കേജിന്റെ
|
||
ഏറ്റവും നിയന്ത്രിതമായ സ്കോപ്പിലേക്ക് പിൻ ചെയ്യുന്നു. അതിനാൽ ഹോസ്റ്റ് എൻവയോൺമെന്റ് ക്രമീകരണങ്ങൾക്ക് അനുവദനീയ പട്ടിക ചുരുക്കാൻ മാത്രമേ കഴിയൂ; OmniRoute അളന്ന രസീതുകൾക്കപ്പുറം അതിനെ ഒരിക്കലും വിപുലീകരിക്കാനാവില്ല.
|
||
|
||
## എഞ്ചിൻ രജിസ്ട്രി
|
||
|
||
രജിസ്ട്രി `open-sse/services/compression/engines/registry.ts`-ലാണ് സ്ഥിതിചെയ്യുന്നത്. എഞ്ചിനുകൾ ഒരു പൊതുവായ
|
||
കരാർ ലഭ്യമാക്കുന്നു:
|
||
|
||
- `id`: `caveman` അല്ലെങ്കിൽ `rtk` പോലുള്ള സ്ഥിരതയുള്ള എഞ്ചിൻ ഐഡി
|
||
- `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](../frameworks/MCP-SERVER.md). ഇത്
|
||
Caveman നിയമങ്ങൾ പുനരുപയോഗിക്കുന്നുവെങ്കിലും റിക്വസ്റ്റ് പേലോഡുകളിലല്ല, ടൂൾ മെറ്റാഡാറ്റയിലാണ് പ്രവർത്തിക്കുന്നത്.
|
||
|
||
### അധിക ബിൽറ്റ്-ഇൻ എഞ്ചിനുകൾ
|
||
|
||
Caveman, RTK, LLMLingua-2 എന്നിവയ്ക്കുപുറമേ, രജിസ്ട്രിയിൽ നിരവധി പ്രത്യേക നഷ്ടരഹിത /
|
||
ഘടനാപരമായ എഞ്ചിനുകളും ഉൾപ്പെടുത്തിയിട്ടുണ്ട് (സ്റ്റാക്ക് ചെയ്ത പൈപ്പ്ലൈനുകൾ, പ്ലേഗ്രൗണ്ട്, ടെസ്റ്റുകൾ എന്നിവയിൽ ഉപയോഗിക്കുന്നു):
|
||
|
||
| എഞ്ചിൻ | ഐഡി | ഇത് ചെയ്യുന്നത് |
|
||
| ------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| 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]` മാർക്കർ എന്താണ് അർത്ഥമാക്കുന്നത്, ഹാഷ് അതേപടി പകർത്തണം
|
||
(എല്ലാ 24 ഹെക്സ് പ്രതീകങ്ങളും — തെറ്റായി പകർത്തിയ ഹാഷുകളാണ് "ബ്ലോക്ക് കണ്ടെത്തിയില്ല"
|
||
എന്ന പിഴവുകളുടെ സാധ്യതയേറിയ കാരണം), കൂടാതെ `[dedup:ref sha=...]` മാർക്കർ എന്നത് "ഹിസ്റ്ററിയിൽ പിന്നോട്ട് നോക്കുക"
|
||
എന്നാണ് അർത്ഥമാക്കുന്നത്, "ടൂൾ വിളിക്കുക" എന്നല്ല. കോളർ പരസ്യപ്പെടുത്തിയ `tools[]`-ന്
|
||
യഥാർത്ഥത്തിൽ `omniroute_ccr_retrieve` ആക്സസ് ചെയ്യാനാകുമെന്ന് തെളിയിക്കുമ്പോൾ **മാത്രമാണ് കുറിപ്പ് ചേർക്കുന്നത്**
|
||
(`open-sse/services/compression/engines/ccr/protocolInstruction.ts`-ലെ `callerSupportsCcrRetrieve()`) — ആ ടൂൾ
|
||
ഇല്ലാത്ത ഒരു സാധാരണ OpenAI-അനുയോജ്യ കോളറിന്, അതിന് ആക്സസ് ചെയ്യാനാകാത്ത ഒന്നിനെ വിളിക്കാനുള്ള നിർദ്ദേശം ഒരിക്കലും
|
||
ലഭിക്കില്ല. ചേർക്കുന്നതിന് മുമ്പ് സന്ദേശ ഹിസ്റ്ററിയിൽ സെന്റിനൽ ഉണ്ടോയെന്ന് സ്കാൻ ചെയ്താണ് ഐഡംപോട്ടൻസി
|
||
ഉറപ്പാക്കുന്നത്; അതിനാൽ മുൻ സന്ദേശങ്ങൾ വീണ്ടും പ്ലേ ചെയ്യുന്ന മൾട്ടി-ടേൺ റിക്വസ്റ്റുകളിൽ ഓരോ ടേണിലും
|
||
കുറിപ്പ് വീണ്ടും അടുക്കപ്പെടുന്നില്ല.
|
||
|
||
## Caveman
|
||
|
||
സാധാരണ ഗദ്യത്തിന്റെ അർത്ഥസാന്ദ്രീകരണത്തിലാണ് Caveman മോഡ് ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത്:
|
||
|
||
- കോഡ് ബ്ലോക്കുകൾ, URLs, JSON, പാത്തുകൾ, ഘടനാപരമായ ഡാറ്റ എന്നിവ സംരക്ഷിക്കുന്നു
|
||
- അനാവശ്യ പൂരകങ്ങൾ, സന്ദിഗ്ധത പ്രകടിപ്പിക്കുന്ന പ്രയോഗങ്ങൾ, ആവർത്തിക്കുന്ന സന്ദർഭം, ദീർഘമായ ബന്ധക പ്രയോഗങ്ങൾ എന്നിവ നീക്കം ചെയ്യുന്നു
|
||
- `open-sse/services/compression/rules/`-ൽ ഭാഷയെ പരിഗണിക്കുന്ന ഫയൽ റൂൾ പാക്കുകളെ പിന്തുണയ്ക്കുന്നു
|
||
- പഴയ `standard`, `aggressive`, `ultra` മോഡുകളിലൂടെയും തുടർന്നും ലഭ്യമാണ്
|
||
|
||
ഡാഷ്ബോർഡിൽ ഇത് `Dashboard -> Context & Cache -> Caveman` എന്നിടത്താണ്.
|
||
|
||
Caveman അപ്സ്ട്രീം, ഔട്ട്പുട്ട് ടോക്കണുകളിൽ `~75%` കുറവും, ബെഞ്ച്മാർക്കുകളിൽ `22-87%` പരിധിയോടെ ശരാശരി `65%` ഔട്ട്പുട്ട് ലാഭവും, `~46%` ഇൻപുട്ട്-കംപ്രഷൻ ടൂളും റിപ്പോർട്ട് ചെയ്യുന്നു. സ്റ്റാക്ക് ചെയ്ത പ്രോംപ്റ്റ്/കോൺടെക്സ്റ്റ് ലാഭം രേഖപ്പെടുത്തുമ്പോൾ OmniRoute, Caveman-ന്റെ ഇൻപുട്ട്-സൈഡ് കണക്ക് ഉപയോഗിക്കുന്നു; Caveman ഔട്ട്പുട്ട് മോഡ് ഒരു പ്രത്യേക പ്രതികരണ-പെരുമാറ്റ സവിശേഷതയായി തുടരുന്നു.
|
||
|
||
## RTK
|
||
|
||
കമാൻഡ്, ടൂൾ ഔട്ട്പുട്ടുകളിലാണ് RTK മോഡ് ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത്:
|
||
|
||
- `git status`, `git branch`, `git diff`, Vitest/Jest/Pytest, Cargo/Go ടെസ്റ്റുകൾ, TypeScript/Vite/Webpack ബിൽഡുകൾ, ESLint, npm ഓഡിറ്റ്/ഇൻസ്റ്റാളുകൾ, Docker ലോഗുകൾ, shell `find`/`grep`, സ്റ്റാക്ക് ട്രേസുകൾ, പൊതുവായ ലോഗുകൾ തുടങ്ങിയ ഔട്ട്പുട്ട് വിഭാഗങ്ങൾ കണ്ടെത്തുന്നു
|
||
- `open-sse/services/compression/engines/rtk/filters/`-ൽ നിന്നുള്ള 49 JSON ഫിൽട്ടറുകൾ പ്രയോഗിക്കുന്നു
|
||
- RTK-ശൈലിയിലുള്ള ഡിക്ലറേറ്റീവ് പൈപ്പ്ലൈനിനെ പിന്തുണയ്ക്കുന്നു: ANSI നീക്കംചെയ്യൽ, പകരംവയ്ക്കൽ, match-output ഷോർട്ട് സർക്യൂട്ട്, വരികൾ നീക്കംചെയ്യൽ/നിലനിർത്തൽ, ഓരോ വരിയുടെയും ചുരുക്കൽ, head/tail/max-line ചുരുക്കൽ, ശൂന്യമായിരിക്കുമ്പോഴുള്ള ഫാൾബാക്ക്
|
||
- `.rtk/filters.json`-ലെ ട്രസ്റ്റ്-ഗേറ്റഡ് പ്രോജക്റ്റ് ഫിൽട്ടറുകളെയും `DATA_DIR/rtk/filters.json`-ലെ ഗ്ലോബൽ ഫിൽട്ടറുകളെയും പിന്തുണയ്ക്കുന്നു
|
||
- ANSI സീക്വൻസുകൾ, പുരോഗതി സംബന്ധിച്ച അനാവശ്യ വിവരങ്ങൾ, ആവർത്തിക്കുന്ന വരികൾ, പ്രയോജനകരമല്ലാത്ത ബോയിലർപ്ലേറ്റ് എന്നിവ നീക്കം ചെയ്യുന്നു
|
||
- നടപടിയെടുക്കാൻ സഹായിക്കുന്ന പരാജയങ്ങൾ, മുന്നറിയിപ്പുകൾ, സംഗ്രഹങ്ങൾ, മാറിയ ഫയലുകൾ, അവസാന ഭാഗത്തെ സന്ദർഭം എന്നിവ സംരക്ഷിക്കുന്നു
|
||
- പ്രാമാണീകരിച്ച മാനേജ്മെന്റ് റൂട്ടുകളിലൂടെ വീണ്ടെടുക്കലിനോ ഡീബഗ്ഗിംഗിനോ വേണ്ടി തിരുത്തിമറച്ച അസംസ്കൃത ഔട്ട്പുട്ട് ഐച്ഛികമായി നിലനിർത്താൻ കഴിയും
|
||
|
||
ഡാഷ്ബോർഡിൽ ഇത് `Dashboard -> Context & Cache -> RTK` എന്നിടത്താണ്.
|
||
|
||
കസ്റ്റം ഫിൽട്ടറുകൾ, ട്രസ്റ്റ്, പരിശോധന, അസംസ്കൃത ഔട്ട്പുട്ട് വീണ്ടെടുക്കൽ എന്നിവയുടെ പ്രവർത്തന വിശദാംശങ്ങൾ [`RTK_COMPRESSION.md`](./RTK_COMPRESSION.md)-ൽ ലഭ്യമാണ്.
|
||
|
||
കമാൻഡ്-ഔട്ട്പുട്ട് കംപ്രഷനിൽ `60-90%` ലാഭം RTK അപ്സ്ട്രീം റിപ്പോർട്ട് ചെയ്യുന്നു. അതിന്റെ README ഉദാഹരണത്തിൽ, 30 മിനിറ്റ് ദൈർഘ്യമുള്ള Claude Code സെഷൻ `~118,000` ടോക്കണുകളിൽ നിന്ന് `~23,900` ആയി കുറയുന്നു, അഥവാ `79.7%` ലാഭിക്കുന്നു.
|
||
|
||
## LLMLingua-2 (അർത്ഥാധിഷ്ഠിത വെട്ടിച്ചുരുക്കൽ)
|
||
|
||
നിയമാധിഷ്ഠിതമായ Caveman, RTK എഞ്ചിനുകൾക്ക് പൂരകമായി, ചെറിയ ONNX ടോക്കൺ ക്ലാസിഫയർ ഉപയോഗിച്ച് ഗദ്യത്തിൽ **അർത്ഥാധിഷ്ഠിത ടോക്കൺ വെട്ടിച്ചുരുക്കൽ** LLMLingua-2 മോഡ് നിർവഹിക്കുന്നു:
|
||
|
||
- സിസ്റ്റം സന്ദേശങ്ങളല്ലാത്തവയിലെ ഗദ്യം മാത്രം കംപ്രസ് ചെയ്യുന്നു; ഫെൻസ് ചെയ്ത കോഡ് ബ്ലോക്കുകളും സംരക്ഷിക്കപ്പെടുന്ന മറ്റ് ഘടകങ്ങളും ഒരിക്കലും മാറ്റില്ല
|
||
- `@atjsh/llmlingua-2` ബാക്കെൻഡ് (`@huggingface/transformers` വഴിയുള്ള ONNX) ഒരു വർക്കർ ത്രെഡിൽ പ്രവർത്തിപ്പിക്കുന്നതിനാൽ, മോഡൽ ഇൻഫറൻസ് റിക്വസ്റ്റ് ഇവന്റ് ലൂപ്പിനെ ഒരിക്കലും തടയില്ല
|
||
- ഇത് **സ്റ്റാക്ക് ചെയ്യാവുന്നതാണ്** (`stackPriority` 35): സ്റ്റാക്ക് ചെയ്ത പൈപ്പ്ലൈനിൽ, ഘടനാപരമായ എഞ്ചിനുകൾക്ക് (CCR, session-dedup, headroom, Caveman) ശേഷവും `ultra`-യ്ക്ക് മുമ്പുമായി ഇത് പ്രവർത്തിക്കുന്നു; കാരണം, ഘടനാപരമായി ഇതിനകം കംപ്രസ് ചെയ്ത ടെക്സ്റ്റിലാണ് അർത്ഥാധിഷ്ഠിത വെട്ടിച്ചുരുക്കൽ ഏറ്റവും ഫലപ്രദമാകുന്നത് — ഉദാ. `rtk -> caveman -> llmlingua`
|
||
- **ഏത് പിശകുണ്ടായാലും ഫെയിൽ-ഓപ്പൺ ചെയ്യുന്നു** (നഷ്ടപ്പെട്ട ഐച്ഛിക ഡിപെൻഡൻസികൾ, വർക്കർ സ്പോൺ, മോഡൽ ലോഡ്, ഇൻഫറൻസ്, അല്ലെങ്കിൽ ടൈംഔട്ട്) → പിശകിന് പകരം യഥാർത്ഥ ടെക്സ്റ്റ് മാറ്റമില്ലാതെ തിരികെ നൽകുന്നു
|
||
|
||
എഞ്ചിൻ സ്ഥാനം: `open-sse/services/compression/engines/llmlingua/`. ഡാഷ്ബോർഡിൽ ഇത് `Dashboard -> Context & Cache -> LLMLingua` എന്നിടത്താണ്.
|
||
|
||
### മോഡലുകൾ
|
||
|
||
ഡിഫോൾട്ട് മോഡൽ **TinyBERT** (`atjsh/llmlingua-2-js-tinybert-meetingbank`, ~57 MB, വേഗതയേറിയത്) ആണ്. കൂടുതൽ കൃത്യതയുള്ള **BERT-base** മോഡൽ (`Arcoldd/llmlingua4j-bert-base-onnx`, ~710 MB), എഞ്ചിൻ കോൺഫിഗിലെ `model` ഫീൽഡ് വഴി ലഭ്യമാണ്. ആദ്യ കോളിൽ (`modelStore.ts`), തിരഞ്ഞെടുത്ത മോഡൽ HuggingFace Hub-ൽ നിന്ന് `${DATA_DIR}/models/llmlingua`-ലേക്ക് `@huggingface/transformers` ആവശ്യാനുസരണം ഡൗൺലോഡ് ചെയ്യുന്നു; പകരം, `modelPath` കോൺഫിഗ് ഓവർറൈഡ് അതിനെ ഒരു ലോക്കൽ പകർപ്പിലേക്ക് ചൂണ്ടിക്കാണിക്കുന്നു (ഓഫ്ലൈൻ / എയർ-ഗ്യാപ്ഡ് ഇൻസ്റ്റാളുകൾ).
|
||
|
||
### ഐച്ഛിക ഡിപെൻഡൻസികളും ആവശ്യാനുസൃത ഇൻസ്റ്റാളേഷനും
|
||
|
||
വെട്ടിമാറ്റാവുന്ന LLMLingua റൺടൈം പിയർ സ്റ്റാക്ക് **ഐച്ഛികമാണ്**. രണ്ട് പാക്കേജുകൾ `package.json`-ൽ `optionalDependencies` ആയി പ്രഖ്യാപിക്കുകയും പ്രൊഡക്ഷൻ ബിൽഡ് അവയെ **ബാഹ്യമായി** നിലനിർത്തുകയും ചെയ്യുന്നു (`scripts/build/prepublish.ts` അവയെ ബണ്ടിൽ ചെയ്യുന്നില്ല):
|
||
|
||
| പാക്കേജ് | പതിപ്പ് (പിൻ) | കുറിപ്പുകൾ |
|
||
| -------------------- | ------------- | --------------------------------------------------------- |
|
||
| `@atjsh/llmlingua-2` | `2.0.5` | എൻട്രി പാക്കേജ്; മറ്റുള്ളവയെ പിയറുകളായി പ്രഖ്യാപിക്കുന്നു |
|
||
| `js-tiktoken` | `^1.0.20` | ടോക്കണൈസർ |
|
||
|
||
`@huggingface/transformers` പതിപ്പ് `^4.2.0`-ൽ പിൻ ചെയ്തിരിക്കുന്നു (ലോക്കൽ എംബെഡ്ഡിങ്സ് പാത്തുമായി പങ്കിടുകയും സ്റ്റാൻഡലോൺ ബണ്ടിലിൽ ട്രേസ് ചെയ്യപ്പെടുകയും ചെയ്യുന്നു); `@atjsh/llmlingua-2@2.0.5`, `"^3.5.2 || ^4.0.0"` ഉപയോഗിച്ച് അതിനെ പിയർ ചെയ്യുന്നതിനാൽ Transformers.js v3, v4 എന്നിവ രണ്ടും പിന്തുണയ്ക്കുന്നു. 2.0.4 മുതൽ, `@atjsh/llmlingua-2`-ന് ഇനി `@tensorflow/tfjs` ആവശ്യമില്ല; ഇതിലൂടെ SLM സ്റ്റാക്കിലെ ഏറ്റവും വലിയ ഒറ്റ സംഭാവനയായ TensorFlow.js നീക്കംചെയ്യപ്പെട്ടു. മുകളിലെ രണ്ട് പാക്കേജുകൾ മാത്രമാണ് വെട്ടിമാറ്റാവുന്ന SLM പിയറുകൾ. ഐച്ഛിക ഡിപെൻഡൻസികൾ ഒഴിവാക്കിയിട്ടില്ലെങ്കിൽ, സാധാരണ `npm install` (dev) ഐച്ഛിക സ്റ്റാക്ക് സ്വയമേവ ഇൻസ്റ്റാൾ ചെയ്യുന്നു.
|
||
|
||
**ആവശ്യാനുസൃതമാകാനുള്ള കാരണം:** വലുപ്പം കുറവായി നിലനിർത്തുന്നതിന് npm-ൽ പ്രസിദ്ധീകരിക്കുന്ന പാക്കേജ്, സ്റ്റാൻഡലോൺ ബണ്ടിൽ, Docker ഇമേജ് എന്നിവ ഈ ഡിപെൻഡൻസികൾ **ഇല്ലാതെയാണ്** വിതരണം ചെയ്യുന്നത്. അവ ഇല്ലാതിരിക്കുമ്പോൾ, വർക്കറിന്റെ ഡിപെൻഡൻസി ഗേറ്റ് (`worker.ts`-ലെ ഒരു `@atjsh/llmlingua-2` റിസോൾവ് പ്രോബ്) പരാജയപ്പെടുകയും എഞ്ചിൻ **നിശ്ശബ്ദമായി ഫെയിൽ-ഓപ്പൺ ചെയ്യുകയും** ചെയ്യുന്നു — LLMLingua തിരഞ്ഞെടുക്കുന്നത് ഒന്നും ചെയ്യാത്ത പ്രവർത്തനമായി മാറുന്നു (ടെക്സ്റ്റ് മാറ്റമില്ലാതെ തിരികെ നൽകുന്നു, പിശക് ലോഗ് ചെയ്യുന്നില്ല). വെട്ടിമാറ്റിയ എൻവയോൺമെന്റിൽ ഇത് സജീവമാക്കാൻ, ഐച്ഛിക സ്റ്റാക്ക് ഇൻസ്റ്റാൾ ചെയ്യുക:
|
||
|
||
```bash
|
||
# package.json optionalDependencies-ൽ പ്രഖ്യാപിച്ച പതിപ്പുകളിലേക്ക് പിൻ ചെയ്യുക
|
||
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
|
||
```
|
||
|
||
`@tensorflow/tfjs` നീക്കംചെയ്തത് (2.0.4+) മുമ്പ് ആധിപത്യം പുലർത്തിയിരുന്ന ~800 MB സംഭാവന ഒഴിവാക്കുന്നു — ശേഷിക്കുന്ന ഫുട്പ്രിന്റിൽ transformers.js + onnxruntime-node റൺടൈമുകളും, ആദ്യ ഉപയോഗത്തിൽ ഡൗൺലോഡ് ചെയ്യുന്ന TinyBERT മോഡലും (~57 MB) ഉൾപ്പെടുന്നു (npm വഴിയല്ല).
|
||
|
||
ഓരോ എൻവയോൺമെന്റിലും:
|
||
|
||
- **Dev / `npm install`** — നിങ്ങൾ `--omit=optional`
|
||
(അല്ലെങ്കിൽ `--no-optional`) നൽകിയിട്ടില്ലെങ്കിൽ സ്വയമേവ ഇൻസ്റ്റാൾ ചെയ്യപ്പെടും. നടപടിയൊന്നും ആവശ്യമില്ല.
|
||
- **Global npm (`npm i -g omniroute`) / standalone** — ഇൻസ്റ്റാൾ ചെയ്ത പാക്കേജ് ഡയറക്ടറിക്കുള്ളിൽ
|
||
മുകളിലുള്ള ഇൻസ്റ്റാൾ കമാൻഡ് പ്രവർത്തിപ്പിക്കുക, അല്ലെങ്കിൽ ഓപ്ഷണൽ ഡിപെൻഡൻസികൾ ഒഴിവാക്കാതെ വീണ്ടും ഇൻസ്റ്റാൾ ചെയ്യുക.
|
||
- **Docker** — ഡെറൈവ്ഡ് ഇമേജ് ലെയറിൽ ഇൻസ്റ്റാൾ കമാൻഡ് ചേർക്കുക; പ്രസിദ്ധീകരിച്ച ഇമേജ്
|
||
രൂപകൽപ്പനപ്രകാരം സ്ലിം ആയാണ് വിതരണം ചെയ്യുന്നത്.
|
||
- **VPS (PM2)** — ആപ്പിന്റെ `node_modules`-ലേക്ക് ഇൻസ്റ്റാൾ ചെയ്യുക, തുടർന്ന് വർക്കർ
|
||
ഗേറ്റ് വീണ്ടും പരിശോധിക്കുന്നതിനായി പ്രോസസ് പുനരാരംഭിക്കുക.
|
||
- **Raw Next standalone (`npm run build` → `.build/next/standalone/server.js`)** — സ്റ്റാൻഡ്എലോൺ
|
||
ട്രേസിൽ വർക്കറോ ഓപ്ഷണൽ ഡിപെൻഡൻസികളോ ഉൾപ്പെടുന്നില്ല, അതിനാൽ എൻജിൻ നിശ്ശബ്ദമായി ഫെയിൽ-ഓപ്പൺ ചെയ്യുന്നു.
|
||
`scripts/build/colocate-standalone.mjs` രണ്ടും വീണ്ടും പ്രയോഗിക്കുന്നു (worker esbuild +
|
||
ഓപ്ഷണൽ-ഡിപെൻഡൻസി ക്ലോഷർ സ്റ്റാൻഡ്എലോൺ ട്രീയിലേക്ക്); ഓരോ ബിൽഡിനും ശേഷം
|
||
`postbuild` npm ഹുക്ക് വഴി ഇത് സ്വയമേവ പ്രവർത്തിക്കുന്നു. ഐഡംപൊട്ടന്റ് ആണ്; ഡിപെൻഡൻസികൾ ഇല്ലെങ്കിൽ ഫെയിൽ-സോഫ്റ്റ് ചെയ്യുന്നു.
|
||
|
||
**ഇത് സജീവമാണെന്ന് സ്ഥിരീകരിക്കുക:** LLMLingua തിരഞ്ഞെടുത്തിരിക്കുമ്പോൾ, യഥാർത്ഥ ഗദ്യം വാസ്തവത്തിൽ ചുരുങ്ങുന്നു (എൻജിൻ
|
||
ഫെയിൽ-ഓപ്പൺ ചെയ്യുന്നത് നിർത്തുന്നു), കൂടാതെ ആദ്യ റിക്വസ്റ്റ് മോഡൽ
|
||
`${DATA_DIR}/models/llmlingua`-ലേക്ക് ഡൗൺലോഡ് ചെയ്യാൻ കാരണമാകുന്നു. ഗേറ്റ് മനഃപൂർവം `@atjsh/llmlingua-2` മാത്രം പരിശോധിക്കുന്നു —
|
||
മറ്റ് പിയറുകൾ ESM-only ആയതിനാൽ അവ നിലവിലുണ്ടെങ്കിലും `require.resolve` അവയിൽ എറർ ത്രോ ചെയ്യുന്നു — അതിനാൽ
|
||
`import()` സമയത്ത് ഏതെങ്കിലും പിയർ യഥാർത്ഥത്തിൽ ഇല്ലെങ്കിൽ വർക്കർ തുടർന്നും ഫെയിൽ-ഓപ്പൺ ചെയ്യുന്നു.
|
||
|
||
## സ്റ്റാക്ക് ചെയ്ത പൈപ്പ്ലൈനുകൾ
|
||
|
||
സ്റ്റാക്ക് ചെയ്ത മോഡ് പൈപ്പ്ലൈൻ ഘട്ടങ്ങൾ ക്രമത്തിൽ പ്രവർത്തിപ്പിക്കുന്നു. ഡിഫോൾട്ട് ഇതാണ്:
|
||
|
||
```txt
|
||
rtk -> caveman
|
||
```
|
||
|
||
ഒരു പ്രോംപ്റ്റ് കമാൻഡ് ഔട്ട്പുട്ടിനൊപ്പം മനുഷ്യന്റെയോ അസിസ്റ്റന്റിന്റെയോ ഗദ്യവും സംയോജിപ്പിക്കുന്ന കോഡിംഗ്-ഏജന്റ് സെഷനുകൾക്കായി ഇത് ഉപയോഗിക്കുക. ആദ്യം RTK അനാവശ്യമായി ബഹളമുള്ള ടൂൾ ലോഗുകൾ കുറയ്ക്കുന്നു, തുടർന്ന് Caveman ശേഷിക്കുന്ന സ്വാഭാവിക ഭാഷ കംപ്രസ് ചെയ്യുന്നു.
|
||
|
||
കംപ്രഷൻ ക്രമീകരണങ്ങളിലെ `stackedPipeline` ഉപയോഗിച്ചോ കംപ്രഷൻ കോംബോകൾ വഴിയോ പൈപ്പ്ലൈൻ ഘട്ടങ്ങൾ കോൺഫിഗർ ചെയ്യാം.
|
||
|
||
രണ്ട് എൻജിനുകളും യോഗ്യമായ ഒരേ പേലോഡ് കുറയ്ക്കുമ്പോൾ, ലാഭം സംയുക്തമായി വർധിക്കുന്നു:
|
||
|
||
```txt
|
||
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, ബ്രൗസർ-ഓട്ടോമേഷൻ MCP സെർവറുകൾ തുടങ്ങിയ ടൂളുകൾ തിരികെ നൽകുന്ന വിശദമായ ആക്സസിബിലിറ്റി-ട്രീ, ബ്രൗസർ സ്നാപ്പ്ഷോട്ട് പേലോഡുകളെയാണ് ഇത് ലക്ഷ്യമിടുന്നത്.
|
||
|
||
### ഇത് ചെയ്യുന്നത്
|
||
|
||
1. **അനാവശ്യ ഉള്ളടക്കം നീക്കംചെയ്യൽ** — ശൂന്യമായ പൊതുവായ/ടെക്സ്റ്റ് എൻട്രികൾ (`- generic:`, `- text: ""`) നീക്കംചെയ്യുന്നു
|
||
2. **സിബ്ലിങ് ചുരുക്കൽ** — തുടർച്ചയായ ≥ `collapseThreshold` (ഡിഫോൾട്ട് 30) വരികൾ ഘടനാപരമായ ആവർത്തനങ്ങളാണെങ്കിൽ, അവയെ ആദ്യത്തെ `collapseKeepHead` (ഡിഫോൾട്ട് 10) വരികൾ + എണ്ണത്തിന്റെ സംഗ്രഹം + അവസാനത്തെ `collapseKeepTail` (ഡിഫോൾട്ട് 5) വരികൾ എന്ന രീതിയിൽ ചുരുക്കുന്നു
|
||
3. **റെഫ് സംരക്ഷണം** — Playwright/computer-use-ന് ആവശ്യമായ `[ref=eXX]` ആങ്കറുകളിൽ ഒരിക്കലും മാറ്റം വരുത്തുന്നില്ല
|
||
4. **കർശനമായ വെട്ടിച്ചുരുക്കൽ** — ചുരുക്കിയതിനുശേഷവും ടെക്സ്റ്റ് `maxTextChars` (ഡിഫോൾട്ട് 50,000) കവിയുകയാണെങ്കിൽ, ഏജന്റിന് പ്രവർത്തനം തുടരാനാകുന്നവിധം ഒരു നാവിഗേഷൻ സൂചനയോടെ അത് വെട്ടിച്ചുരുക്കുന്നു
|
||
|
||
### എൻജിന്റെ സ്ഥാനം
|
||
|
||
```txt
|
||
open-sse/services/compression/engines/mcpAccessibility/
|
||
index.ts ← smartFilterText() എൻട്രി പോയിന്റ്
|
||
collapseRepeated.ts ← സിബ്ലിങ്-ചുരുക്കൽ അൽഗോരിതം
|
||
constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG
|
||
```
|
||
|
||
### കോൺഫിഗറേഷൻ
|
||
|
||
ഗ്ലോബൽ ക്രമീകരണങ്ങളിലെ `compression.mcpAccessibility` (മൈഗ്രേഷൻ 056) ആണ് ഇത് നിയന്ത്രിക്കുന്നത്. ഡിഫോൾട്ട് കോൺഫിഗറേഷൻ:
|
||
|
||
```json
|
||
{
|
||
"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 സന്ദേശങ്ങളും | ടൂൾ ഫലങ്ങൾ മാത്രം |
|
||
| റെഫ് ആങ്കറുകൾ | ബാധകമല്ല | നിബന്ധനകളില്ലാതെ സംരക്ഷിക്കുന്നു |
|
||
|
||
---
|
||
|
||
## കംപ്രഷൻ കോംബോകൾ
|
||
|
||
കംപ്രഷൻ കോംബോകൾ എന്നത് റൂട്ടിംഗ് കോംബോകൾക്ക് അസൈൻ ചെയ്യാവുന്ന പേരുള്ള കംപ്രഷൻ പ്രൊഫൈലുകളാണ്:
|
||
|
||
- `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-key നയ പരിശോധനകളോ ആവശ്യമാണ്.
|
||
|
||
## 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` | കോംബോ/എഞ്ചിൻ അനലിറ്റിക്സ് വായിക്കുക |
|
||
|
||
## വ്യാപ്തിയും ഒഴിവാക്കലുകളും
|
||
|
||
**എംബെഡ്ഡിങ്ങുകൾ ഒരിക്കലും കംപ്രസ് ചെയ്യപ്പെടുന്നില്ല.** `open-sse/handlers/embeddings.ts` ഒരിക്കലും ഒരു
|
||
കംപ്രഷൻ എഞ്ചിനെയും വിളിക്കുന്നില്ല — അഭ്യർത്ഥന/പ്രതികരണ ബോഡികൾ മാറ്റമൊന്നുമില്ലാതെ നേരിട്ട് എക്സിക്യൂട്ടറിലേക്ക് കടന്നുപോകുന്നു.
|
||
ഇന്ന് ഇത് ഘടനാപരമാണ് (എംബെഡ്ഡിങ്ങുകൾക്കും ചാറ്റ് കംപ്ലീഷനുകൾക്കും വ്യത്യസ്ത ഹാൻഡ്ലറുകളാണ് ഉള്ളത്), ഒരു
|
||
റൺടൈം പരിശോധനയല്ല; എന്നിരുന്നാലും, #8034-ലെ വെക്റ്റർ-ഡിസ്റ്റോർഷൻ ആശങ്കയ്ക്ക്
|
||
എംബെഡ്ഡിങ്ങുകളുടെ പാതയിൽ ബാധിക്കാവുന്ന ഉപരിതലമൊന്നുമില്ലെന്നാണ് ഇതിനർത്ഥം.
|
||
|
||
**ഓരോ മോഡലിനും/എൻഡ്പോയിന്റിനുമുള്ള ഒഴിവാക്കൽ ഫിൽട്ടർ (#8034).** ചാറ്റ് കംപ്ലീഷനുകൾക്കായി, ഒരിക്കലും
|
||
കംപ്രസ് ചെയ്യാൻ പാടില്ലാത്ത മോഡൽ ids / `provider/model` ടാർഗെറ്റുകൾ ഒരു ഓപ്പറേറ്റർക്ക് നിർദ്ദേശിക്കാം — ഭാവിയിൽ
|
||
എംബെഡ്ഡിങ്ങുകളോട് ചേർന്നുള്ള ഒരു പാതയിലേക്ക് കംപ്രഷൻ കൂടുതൽ അടുത്തായി ബന്ധിപ്പിക്കപ്പെടുകയാണെങ്കിൽ പ്രയോജനപ്പെടുന്ന
|
||
ഒരു സുരക്ഷാ നിയന്ത്രണമാണിത്; കൂടാതെ, ബൈറ്റ്-ഫോർ-ബൈറ്റ് കൃത്യമായ പ്രോംപ്റ്റ് നിർണായകമായ ഏത് മോഡലിനും ഇത്
|
||
പൊതുവായി ഉപയോഗപ്രദമാണ് (ഡിറ്റർമിനിസ്റ്റിക് ഇവാലുകൾ, കാഷ്-സെൻസിറ്റീവ് പ്രിഫിക്സുകൾ തുടങ്ങിയവ).
|
||
|
||
- ക്രമീകരണ ഫീൽഡ്: ആഗോള കംപ്രഷൻ കോൺഫിഗറേഷനിലെ `exclusions?: string[]`
|
||
(`GET`/`PUT /api/settings/compression`), നിലവിലുള്ള `key_value` കംപ്രഷൻ
|
||
നെയിംസ്പേസ് (`src/lib/db/compression.ts`) വഴി നിലനിർത്തുന്നു — പുതിയ പട്ടികയൊന്നുമില്ല.
|
||
- ഡാഷ്ബോർഡ് ടാബ്: **Dashboard → Compression → Exclusions**
|
||
(`/dashboard/compression/exclusions`).
|
||
- പാറ്റേൺ സിന്റാക്സ്: `*` മാത്രമാണ് വൈൽഡ്കാർഡ്. ഒരു പാറ്റേണിലുള്ള മറ്റെല്ലാ regex മെറ്റാക്യാരക്ടറുകളും
|
||
മാച്ച് ചെയ്യുന്നതിന് മുമ്പ് എസ്കേപ്പ് ചെയ്യപ്പെടുന്നു; അതിനാൽ `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)-ന് ഒരേ സ്ഥലത്ത് വിന്യസിച്ച optional deps ആവശ്യമാണ്.** `@atjsh/llmlingua-2` + peers എന്നിവ
|
||
`dist/node_modules`-ലേക്ക് ഒരുമിച്ച് വിന്യസിച്ചാൽ മാത്രമേ worker ഒരു production build-ൽ പ്രവർത്തിക്കൂ
|
||
(`scripts/build/colocateOptionals.mjs`, #4286 കാണുക). അവ ഇല്ലെങ്കിൽ
|
||
engine fail-open ആകുന്നു (യഥാർത്ഥ ടെക്സ്റ്റ് തന്നെ തിരികെ നൽകുന്നു). Worker resolution ഇനി
|
||
`import.meta.url`-നെ ആശ്രയിക്കുന്നില്ല (standalone bundle-ൽ അത് പ്രവർത്തനരഹിതമാകുന്നു) — പകരം runtime
|
||
cwd / `argv[1]` അടിസ്ഥാനമാക്കുന്നു.
|
||
- **Caveman language packs ആയ `de` / `fr` / `ja` ഭാഗികമാണ്.** അവയിൽ `context` +
|
||
`filler` + `structural` നിയമങ്ങൾ ഉൾപ്പെടുന്നുണ്ടെങ്കിലും `dedup` / `ultra` packs ഇല്ല; അതിനാൽ ആ ഭാഷകളിൽ
|
||
`ultra` intensity, `full`-നേക്കാൾ ശക്തമല്ല (അവ സ്വന്തം നിയമങ്ങൾ മാത്രമാണ് ഉപയോഗിക്കുന്നത് —
|
||
വിദേശഭാഷാ ടെക്സ്റ്റ് വികൃതമാക്കാനിടയുള്ള ഇംഗ്ലീഷ് `dedup`/`ultra` നിയമങ്ങളിലേക്കുള്ള നിശ്ശബ്ദ
|
||
fall-back ഇല്ല). `en` / `es` / `id` / `pt-BR` പൂർണ്ണമാണ്. ഭാഗികമായ packs-ലേക്ക്
|
||
`dedup.json` + `ultra.json` സംഭാവനകൾ സ്വാഗതം ചെയ്യുന്നു.
|
||
- **Stacked telemetry, compression നടത്തിയ engines മാത്രമാണ് പട്ടികപ്പെടുത്തുന്നത്.** Engine പ്രവർത്തിച്ചെങ്കിലും
|
||
0 % ലാഭം മാത്രം നൽകിയ stacked-pipeline ഘട്ടം `stats:null` തിരികെ നൽകുന്നതിനാൽ
|
||
`engineBreakdown`-ൽ പ്രത്യക്ഷപ്പെടില്ല — ഒഴിവാക്കിയ ഒരു ഘട്ടത്തിൽ നിന്ന് ഇതിനെ വേർതിരിച്ചറിയാനാവില്ല.
|
||
"പ്രവർത്തിച്ചു, 0 %" എന്നതും "ഒഴിവാക്കി" എന്നതും വേർതിരിച്ചറിയാൻ breakdown-model-ൽ മാറ്റം
|
||
ആവശ്യമായതിനാൽ അത് പിന്നീട് പരിഗണിക്കുന്നതിനായി മാറ്റിവെച്ചിരിക്കുന്നു.
|
||
|
||
## സാധൂകരണം
|
||
|
||
ഈ മേഖലയ്ക്കായുള്ള കേന്ദ്രീകൃത gates ഇവയാണ്:
|
||
|
||
```bash
|
||
node --import tsx/esm --test tests/unit/compression/rtk-*.test.ts tests/unit/compression/pipeline-integration.test.ts tests/unit/compression/context-compression-api.test.ts
|
||
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
|
||
```
|