# 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) · 🇧🇦 [bs](../../../bs/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) · 🇰🇷 [ko](../../../ko/docs/compression/COMPRESSION_ENGINES.md) · 🇱🇹 [lt](../../../lt/docs/compression/COMPRESSION_ENGINES.md) · 🇱🇻 [lv](../../../lv/docs/compression/COMPRESSION_ENGINES.md) · 🇮🇳 [ml](../../../ml/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` | ಕೇವ್ಮ್ಯಾನ್ ಲೈಟ್ ಹೆಲ್ಪರ್ಸ್ | ಕಡಿಮೆ-ಅಪಾಯದ ಯಾವಾಗಲೂ-ಆನ್ ಕ್ಲೀನಪ್ | | `standard` | ಕೇವ್ಮ್ಯಾನ್ | ನೈಸರ್ಗಿಕ-ಭಾಷೆಯ ಪ್ರಾಂಪ್ಟ್ ಸಂಕ್ಷೇಪಣ | | `aggressive` | ಕೇವ್ಮ್ಯಾನ್ + ಹಿಸ್ಟರಿ/ಟೂಲ್ ಸಮ್ಮರೈಸರ್ಗಳು | ದೀರ್ಘ ಚಾಟ್ ಸೆಷನ್ಗಳು | | `ultra` | ಕೇವ್ಮ್ಯಾನ್ + ಪ್ರೂನಿಂಗ್ ಹೆಲ್ಪರ್ಸ್ | ಸಂದರ್ಭ-ಮಿತಿ ಮರುಪಡೆಯುವಿಕೆ | | `rtk` | RTK | ಟರ್ಮಿನಲ್, ಶೆಲ್, ಬಿಲ್ಡ್, ಟೆಸ್ಟ್, ಮತ್ತು ಗಿಟ್ ಔಟ್ಪುಟ್ | | `omniglyph` | ಓಮ್ನಿಗ್ಲಿಫ್ | ಸ್ಥಳೀಯ ಪೂರೈಕೆದಾರ ವೈರ್ನಲ್ಲಿ ಚಿತ್ರವಾಗಿ ಸಂದರ್ಭ | | `stacked` | ಪೈಪ್ಲೈನ್. ವಿನಂತಿಯ ಡೀಫಾಲ್ಟ್ `session-dedup -> lite`. `rtk -> caveman` ಐಚ್ಛಿಕ. | ಮಿಶ್ರ ಟೂಲ್ ಲಾಗ್ಗಳು ಮತ್ತು ಗದ್ಯ, ಗರಿಷ್ಠ ಉಳಿತಾಯ | ### ಓಮ್ನಿಗ್ಲಿಫ್ ಕಂಪ್ರೆಷನ್ ಪ್ರೊಫೈಲ್ಗಳು `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` ಆಗಿದೆ. ಪ್ಯಾಕೇಜ್ ತನ್ನದೇ ಆದ ಮಾದರಿ ವ್ಯಾಪ್ತಿ ಮತ್ತು ಪ್ರೊಫೈಲ್ ಅನ್ನು ತನ್ನ ಪರಿಸರ ಕಾನ್ಫಿಗರೇಶನ್ನಿಂದ ಪರಿಹರಿಸುತ್ತದೆ. ಓಮ್ನಿರೂಟ್ ಎಂದಿಗೂ ನಿರ್ಧಾರವನ್ನು ನಿಯೋಜಿಸುವುದಿಲ್ಲ: ಅಡಾಪ್ಟರ್ ಮಾದರಿ ಗೇಟ್ ಅನ್ನು ಪ್ಯಾಕೇಜ್ನ ಅತ್ಯಂತ ನಿರ್ಬಂಧಿತ ವ್ಯಾಪ್ತಿಗೆ ಪಿನ್ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಹೋಸ್ಟ್ ಪರಿಸರ ಸೆಟ್ಟಿಂಗ್ಗಳು ಅನುಮತಿ ಪಟ್ಟಿಯನ್ನು ಕಿರಿದಾಗಿಸಬಹುದು, ಓಮ್ನಿರೂಟ್ನ ಅಳತೆ ಮಾಡಿದ ರಸೀದಿಗಳನ್ನು ಮೀರಿ ಅದನ್ನು ಎಂದಿಗೂ ವಿಸ್ತರಿಸುವುದಿಲ್ಲ. ## ಎಂಜಿನ್ ರಿಜಿಸ್ಟ್ರಿ ರಿಜಿಸ್ಟ್ರಿಯು `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-ಅರೇ ಪೇಲೋಡ್ಗಳನ್ನು ಕಾಲಮ್ ಆಧಾರಿತ `[N rows]` ರೂಪಕ್ಕೆ ನಷ್ಟರಹಿತವಾಗಿ ಕೋಷ್ಟಕೀಯ ಸಂಕೋಚನ ಮಾಡುತ್ತದೆ. | | ionizer | `ionizer` | ಅತ್ಯಂತ ದೊಡ್ಡ ಏಕರೂಪದ ಬ್ಲಾಕ್ಗಳಿಗಾಗಿ ಆರಂಭ/ಮಧ್ಯ/ಕೊನೆಯ ಸಾಲುಗಳ ಮಾದರೀಕರಣವನ್ನು ಮಾಡುತ್ತದೆ ಮತ್ತು ಕೈಬಿಟ್ಟ ಮಧ್ಯಭಾಗವನ್ನು CCR ವಿಷಯ-ವಿಳಾಸಿತ ಉಲ್ಲೇಖವಾಗಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ. | | session-dedup | `session-dedup` | ವಿಷಯ-ವಿಳಾಸಿತ, ಟರ್ನ್ಗಳ ನಡುವಿನ ನಕಲು ನಿವಾರಣೆ (TokenMizer-ಪ್ರೇರಿತ): ಅದೇ ಸೆಷನ್ನ ಹಿಂದಿನ ಟರ್ನ್ಗಳಲ್ಲಿ ಈಗಾಗಲೇ ಕಂಡ ಪಠ್ಯವನ್ನು ಕೈಬಿಡುತ್ತದೆ. | **CCR ಮರುಪಡೆಯುವಿಕೆ-ಪ್ರೋಟೋಕಾಲ್ ಸೂಚನೆ (#8033):** ವಿನಂತಿಯೊಂದರಲ್ಲಿ CCR ಮೊದಲ ಬಾರಿಗೆ ≥1 ಬ್ಲಾಕ್ ಅನ್ನು ಬದಲಿಸಿದಾಗ, ಎಂಜಿನ್ ಒಂದೇ, ಐಡೆಂಪೋಟೆಂಟ್ `system` ಸಂದೇಶವನ್ನು (`[CCR protocol]` ಸೆಂಟಿನಲ್ನಿಂದ ಪ್ರಾರಂಭವಾಗುವಂತೆ) ಪೂರ್ವಪ್ರತ್ಯಯವಾಗಿ ಸೇರಿಸುತ್ತದೆ. ಇದು ಕರೆ ಮಾಡುವವರಿಗೆ ಮಾರ್ಕರ್ → ಪರಿಕರ ಒಪ್ಪಂದವನ್ನು ಕಲಿಸುತ್ತದೆ: `[CCR retrieve hash=<24hex> chars=N]` ಮಾರ್ಕರ್ನ ಅರ್ಥವೇನು, ಹ್ಯಾಶ್ ಅನ್ನು ಯಥಾವತ್ತಾಗಿ ನಕಲಿಸಬೇಕು ಎಂಬುದು (ಎಲ್ಲಾ 24 ಹೆಕ್ಸ್ ಅಕ್ಷರಗಳು — ತಪ್ಪಾಗಿ ನಕಲಿಸಿದ ಹ್ಯಾಶ್ಗಳು "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 ಮತ್ತು structured data ಅನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ - ಅನಗತ್ಯ ಪದಗಳು, ಸಂದಿಗ್ಧತೆಯ ಸೂಚನೆಗಳು, ಪುನರಾವರ್ತಿತ ಸಂದರ್ಭ ಮತ್ತು ಅತಿವಿವರಣಾತ್ಮಕ ಸಂಪರ್ಕ ಪದಗುಚ್ಛಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ - `open-sse/services/compression/rules/` ನಲ್ಲಿ ಭಾಷಾ-ಅರಿವುಳ್ಳ file rule packs ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ - ಹಳೆಯ `standard`, `aggressive` ಮತ್ತು `ultra` ಮೋಡ್ಗಳ ಮೂಲಕವೂ ಲಭ್ಯವಿರುತ್ತದೆ ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಲ್ಲಿನ ಸ್ಥಳವು `Dashboard -> Context & Cache -> Caveman` ಆಗಿದೆ. Caveman upstream ವರದಿಗಳ ಪ್ರಕಾರ output tokens ಸುಮಾರು `~75%` ಕಡಿಮೆಯಾಗುತ್ತವೆ ಮತ್ತು benchmarkಗಳಲ್ಲಿ ಸರಾಸರಿ output ಉಳಿತಾಯ `65%` ಆಗಿದ್ದು, ಅದರ ವ್ಯಾಪ್ತಿ `22-87%` ಆಗಿದೆ; ಜೊತೆಗೆ ಇದು `~46%` input-compression ಸಾಧನವಾಗಿದೆ. ಸಂಯೋಜಿತ prompt/context ಉಳಿತಾಯವನ್ನು ದಾಖಲಿಸುವಾಗ OmniRoute, Cavemanನ input-side ಸಂಖ್ಯೆಯನ್ನು ಬಳಸುತ್ತದೆ; Caveman output ಮೋಡ್ ಪ್ರತ್ಯೇಕ response-behavior ವೈಶಿಷ್ಟ್ಯವಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ. ## 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, shell `find`/`grep`, stack traces ಮತ್ತು ಸಾಮಾನ್ಯ logs ಮುಂತಾದ output ವರ್ಗಗಳನ್ನು ಪತ್ತೆಮಾಡುತ್ತದೆ - `open-sse/services/compression/engines/rtk/filters/` ನಲ್ಲಿರುವ 49 JSON filters ಅನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ - RTK-ಶೈಲಿಯ declarative pipeline ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ: ANSI stripping, replace, match-output short-circuit, ಸಾಲುಗಳನ್ನು strip/keep ಮಾಡುವುದು, ಪ್ರತಿ ಸಾಲಿನ truncation, head/tail/max-line truncation ಮತ್ತು ಖಾಲಿಯಾಗಿದ್ದಾಗ fallback - `.rtk/filters.json` ನಲ್ಲಿರುವ trust-gated project filters ಮತ್ತು `DATA_DIR/rtk/filters.json` ನಲ್ಲಿರುವ global filters ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ - ANSI sequences, progress noise, ಪುನರಾವರ್ತಿತ ಸಾಲುಗಳು ಮತ್ತು ಉಪಯುಕ್ತವಲ್ಲದ boilerplate ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ - ಕ್ರಮ ಕೈಗೊಳ್ಳಬಹುದಾದ failures, warnings, summaries, ಬದಲಾದ files ಮತ್ತು tail context ಅನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ - authenticated management routes ಮೂಲಕ recovery/debugging ಗಾಗಿ redact ಮಾಡಿದ raw output ಅನ್ನು ಐಚ್ಛಿಕವಾಗಿ ಉಳಿಸಿಕೊಳ್ಳಬಹುದು ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಲ್ಲಿನ ಸ್ಥಳವು `Dashboard -> Context & Cache -> RTK` ಆಗಿದೆ. Custom filters, trust, verify ಮತ್ತು raw-output recovery ಕುರಿತ ಕಾರ್ಯಾಚರಣಾ ವಿವರಗಳು [`RTK_COMPRESSION.md`](./RTK_COMPRESSION.md) ನಲ್ಲಿ ಲಭ್ಯವಿವೆ. RTK upstream ವರದಿಗಳ ಪ್ರಕಾರ command-output compression ಮೂಲಕ `60-90%` ಉಳಿತಾಯವಾಗುತ್ತದೆ. ಅದರ README ಉದಾಹರಣೆಯಲ್ಲಿ 30 ನಿಮಿಷಗಳ Claude Code session, `~118,000` tokens ನಿಂದ `~23,900` tokens ಗೆ ಇಳಿದು, `79.7%` ಉಳಿತಾಯವಾಗಿರುವುದನ್ನು ತೋರಿಸಲಾಗಿದೆ. ## LLMLingua-2 (ಅರ್ಥಾಧಾರಿತ ಕಡಿತ) LLMLingua-2 ಮೋಡ್ ಸಣ್ಣ ONNX token classifier ಬಳಸಿ ಗದ್ಯದ ಮೇಲೆ **semantic token pruning** ನಿರ್ವಹಿಸುತ್ತದೆ ಹಾಗೂ rule-based Caveman ಮತ್ತು RTK engines ಗೆ ಪೂರಕವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ: - non-system messagesನಲ್ಲಿರುವ ಗದ್ಯವನ್ನು ಮಾತ್ರ ಸಂಕುಚಿತಗೊಳಿಸುತ್ತದೆ; fenced code blocks ಮತ್ತು ಇತರ ಸಂರಕ್ಷಿತ ರಚನೆಗಳನ್ನು ಎಂದಿಗೂ ಬದಲಾಯಿಸುವುದಿಲ್ಲ - `@atjsh/llmlingua-2` backend ಅನ್ನು (ONNX ಅನ್ನು `@huggingface/transformers` ಮೂಲಕ) worker threadನಲ್ಲಿ ಚಲಾಯಿಸುತ್ತದೆ; ಆದ್ದರಿಂದ model inference ಎಂದಿಗೂ request event loop ಅನ್ನು ನಿರ್ಬಂಧಿಸುವುದಿಲ್ಲ - ಇದು **stackable** (`stackPriority` 35): stacked pipelineನಲ್ಲಿ ಇದು structural enginesಗಳ (CCR, session-dedup, headroom, Caveman) ನಂತರ, ಆದರೆ `ultra` ಗಿಂತ ಮೊದಲು ಚಲಿಸುತ್ತದೆ; ಏಕೆಂದರೆ ಈಗಾಗಲೇ ರಚನಾತ್ಮಕವಾಗಿ ಸಂಕುಚಿತಗೊಂಡಿರುವ ಪಠ್ಯದ ಮೇಲೆ semantic pruning ಅತ್ಯಂತ ಪರಿಣಾಮಕಾರಿಯಾಗಿರುತ್ತದೆ — ಉದಾ. `rtk -> caveman -> llmlingua` - **ಯಾವುದೇ ದೋಷ ಸಂಭವಿಸಿದಾಗ fail-open ಆಗುತ್ತದೆ** (ಕಾಣೆಯಾಗಿರುವ optional deps, worker spawn, model load, inference ಅಥವಾ timeout) → ಮೂಲ ಪಠ್ಯವನ್ನು ಬದಲಾವಣೆಯಿಲ್ಲದೆ ಹಿಂದಿರುಗಿಸಲಾಗುತ್ತದೆ, ದೋಷವನ್ನಲ್ಲ Engine ಸ್ಥಳ: `open-sse/services/compression/engines/llmlingua/`. ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಲ್ಲಿನ ಸ್ಥಳವು `Dashboard -> Context & Cache -> LLMLingua` ಆಗಿದೆ. ### Models Default 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`) ಆಯ್ಕೆಮಾಡಿದ model ಅನ್ನು `@huggingface/transformers`, HuggingFace Hubನಿಂದ `${DATA_DIR}/models/llmlingua` ಗೆ lazy ಆಗಿ download ಮಾಡುತ್ತದೆ; ಬದಲಾಗಿ `modelPath` config override ಅದನ್ನು ಸ್ಥಳೀಯ ಪ್ರತಿಯತ್ತ ಸೂಚಿಸುತ್ತದೆ (offline / air-gapped installs). ### ಐಚ್ಛಿಕ dependencies ಮತ್ತು ಅಗತ್ಯವಿದ್ದಾಗ install ಮಾಡುವುದು ಕಡಿತಗೊಳಿಸಬಹುದಾದ LLMLingua runtime peer stack **ಐಚ್ಛಿಕ**ವಾಗಿದೆ. ಎರಡು packages ಅನ್ನು `package.json` ನಲ್ಲಿ `optionalDependencies` ಆಗಿ ಘೋಷಿಸಲಾಗಿದೆ ಮತ್ತು production buildನಲ್ಲಿ **external** ಆಗಿ ಇರಿಸಲಾಗಿದೆ (`scripts/build/prepublish.ts` ಅವುಗಳನ್ನು bundle ಮಾಡುವುದಿಲ್ಲ): | Package | Version (pin) | Notes | | -------------------- | ------------- | -------------------------------------------------- | | `@atjsh/llmlingua-2` | `2.0.5` | ಪ್ರವೇಶ package; ಇತರವುಗಳನ್ನು peers ಎಂದು ಘೋಷಿಸುತ್ತದೆ | | `js-tiktoken` | `^1.0.20` | Tokenizer | `@huggingface/transformers` ಅನ್ನು `^4.2.0` ಗೆ pin ಮಾಡಲಾಗಿದೆ (ಸ್ಥಳೀಯ 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 ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ install ಮಾಡುತ್ತದೆ. **ಅಗತ್ಯವಿದ್ದಾಗ ಮಾತ್ರ ಏಕೆ:** ಗಾತ್ರವನ್ನು ಕಡಿಮೆಯಾಗಿಡಲು npmನಲ್ಲಿ ಪ್ರಕಟಿಸಲಾದ package, standalone bundle ಮತ್ತು Docker image ಅನ್ನು ಈ depsಗಳ **ಹೊರತಾಗಿ** ರವಾನಿಸಲಾಗುತ್ತದೆ. ಅವು ಇಲ್ಲದಿದ್ದಾಗ workerನ dependency gate (`worker.ts` ನಲ್ಲಿರುವ `@atjsh/llmlingua-2` resolve probe) ವಿಫಲವಾಗುತ್ತದೆ ಮತ್ತು engine **ಮೌನವಾಗಿ fail-open ಆಗುತ್ತದೆ** — LLMLingua ಆಯ್ಕೆಮಾಡುವುದು no-op ಆಗುತ್ತದೆ (ಪಠ್ಯವನ್ನು ಬದಲಾವಣೆಯಿಲ್ಲದೆ ಹಿಂದಿರುಗಿಸಲಾಗುತ್ತದೆ, ಯಾವುದೇ ದೋಷವನ್ನು log ಮಾಡುವುದಿಲ್ಲ). ಕಡಿತಗೊಳಿಸಲಾದ environmentನಲ್ಲಿ ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು optional stack ಅನ್ನು install ಮಾಡಿ: ```bash # 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 ಹಾಗೂ ಮೊದಲ ಬಳಕೆಯ ವೇಳೆ download ಆಗುವ TinyBERT model (~57 MB) (npm ಮೂಲಕ ಅಲ್ಲ). ಪ್ರತಿ environmentಗೆ: - **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`)** — standalone ಟ್ರೇಸ್ನಲ್ಲಿ ವರ್ಕರ್ ಅಥವಾ ಐಚ್ಛಿಕ ಅವಲಂಬನೆಗಳು ಯಾವುದೂ ಇರುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಎಂಜಿನ್ ಯಾವುದೇ ಸೂಚನೆ ನೀಡದೆ fail-open ಆಗುತ್ತದೆ. `scripts/build/colocate-standalone.mjs` ಎರಡನ್ನೂ ಮರು-ಅನ್ವಯಿಸುತ್ತದೆ (ವರ್ಕರ್ esbuild + standalone ಟ್ರೀಯೊಳಗಿನ ಐಚ್ಛಿಕ-ಅವಲಂಬನೆ ಕ್ಲೋಶರ್); ಪ್ರತಿ ಬಿಲ್ಡ್ನ ನಂತರ `postbuild` npm ಹುಕ್ ಮೂಲಕ ಇದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರನ್ ಆಗುತ್ತದೆ. ಇದು idempotent ಆಗಿದ್ದು, ಅವಲಂಬನೆಗಳು ಇಲ್ಲದಿದ್ದಾಗ fail-soft ಆಗುತ್ತದೆ. **ಇದು ಸಕ್ರಿಯವಾಗಿದೆ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಿ:** LLMLingua ಆಯ್ಕೆಮಾಡಿದಾಗ, ನೈಜ ಗದ್ಯವು ವಾಸ್ತವವಾಗಿಯೂ ಚಿಕ್ಕದಾಗುತ್ತದೆ (ಎಂಜಿನ್ fail-open ಆಗುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ), ಮತ್ತು ಮೊದಲ ವಿನಂತಿಯು `${DATA_DIR}/models/llmlingua` ಒಳಗೆ ಮಾಡೆಲ್ ಡೌನ್ಲೋಡ್ ಅನ್ನು ಪ್ರಚೋದಿಸುತ್ತದೆ. ಗೇಟ್ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ `@atjsh/llmlingua-2` ಅನ್ನು ಮಾತ್ರ ಪರಿಶೀಲಿಸುತ್ತದೆ — ಇತರ peers ಗಳು ESM-only ಆಗಿದ್ದು, ಅವು ಇದ್ದರೂ ಸಹ `require.resolve` ಅವುಗಳ ಮೇಲೆ ದೋಷವನ್ನು ಎಸೆಯುತ್ತದೆ — ಆದ್ದರಿಂದ `import()` ಸಮಯದಲ್ಲಿ ಯಾವುದಾದರೂ peer ನಿಜವಾಗಿಯೂ ಇಲ್ಲದಿದ್ದರೆ ವರ್ಕರ್ ಇನ್ನೂ fail-open ಆಗುತ್ತದೆ. ## ಸ್ಟ್ಯಾಕ್ ಮಾಡಿದ ಪೈಪ್ಲೈನ್ಗಳು ಸ್ಟ್ಯಾಕ್ ಮಾಡಿದ ಮೋಡ್ ಪೈಪ್ಲೈನ್ ಹಂತಗಳನ್ನು ಕ್ರಮವಾಗಿ ಚಲಾಯಿಸುತ್ತದೆ. ಡೀಫಾಲ್ಟ್ ಹೀಗಿದೆ: ```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 ಮತ್ತು browser-automation MCP ಸರ್ವರ್ಗಳಂತಹ ಟೂಲ್ಗಳು ಹಿಂದಿರುಗಿಸುವ ವಿವರಭರಿತ ಪ್ರವೇಶಸಾಧ್ಯತಾ-ಟ್ರೀ ಮತ್ತು ಬ್ರೌಸರ್ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಪೇಲೋಡ್ಗಳನ್ನು ಗುರಿಯಾಗಿಸುತ್ತದೆ. ### ಇದು ಏನು ಮಾಡುತ್ತದೆ 1. **ಅನಗತ್ಯ ಅಂಶಗಳ ತೆಗೆದುಹಾಕುವಿಕೆ** — ಖಾಲಿ generic/text ನಮೂದುಗಳನ್ನು (`- generic:`, `- text: ""`) ತೆಗೆದುಹಾಕುತ್ತದೆ 2. **ಸಹೋದರ ಅಂಶಗಳ ಸಂಕೋಚನ** — ≥ `collapseThreshold` (ಡೀಫಾಲ್ಟ್ 30) ಅನುಕ್ರಮ ಸಾಲುಗಳು ರಚನಾತ್ಮಕ ಪುನರಾವರ್ತನೆಗಳಾಗಿದ್ದರೆ, ಅವುಗಳನ್ನು ಮೊದಲ `collapseKeepHead` (ಡೀಫಾಲ್ಟ್ 10) ಸಾಲುಗಳು + ಎಣಿಕೆಯ ಸಾರಾಂಶ + ಕೊನೆಯ `collapseKeepTail` (ಡೀಫಾಲ್ಟ್ 5) ಸಾಲುಗಳಾಗಿ ಸಂಕೋಚಿಸುತ್ತದೆ 3. **Ref ಸಂರಕ್ಷಣೆ** — 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 ಸಂದೇಶಗಳು | ಟೂಲ್ ಫಲಿತಾಂಶಗಳು ಮಾತ್ರ | | 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` | ಕಾಂಬೊ/ಎಂಜಿನ್ ಅನಾಲಿಟಿಕ್ಸ್ ಓದುವುದು | ## ವ್ಯಾಪ್ತಿ ಮತ್ತು ಹೊರಗಿಡುವಿಕೆಗಳು **ಎಂಬೆಡಿಂಗ್ಗಳನ್ನು ಎಂದಿಗೂ ಸಂಕುಚಿಸಲಾಗುವುದಿಲ್ಲ.** `open-sse/handlers/embeddings.ts` ಎಂದಿಗೂ ಯಾವುದೇ ಸಂಕುಚನ ಎಂಜಿನ್ ಅನ್ನು ಕರೆಯುವುದಿಲ್ಲ — ವಿನಂತಿ/ಪ್ರತಿಕ್ರಿಯೆಯ ಬಾಡಿಗಳು ಯಾವುದೇ ಬದಲಾವಣೆಯಿಲ್ಲದೆ ನೇರವಾಗಿ ಎಕ್ಸಿಕ್ಯೂಟರ್ಗೆ ಸಾಗುತ್ತವೆ. ಇದು ಪ್ರಸ್ತುತ ರಚನಾತ್ಮಕವಾಗಿದೆ (ಎಂಬೆಡಿಂಗ್ಗಳು ಮತ್ತು ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು ಪ್ರತ್ಯೇಕ ಹ್ಯಾಂಡ್ಲರ್ಗಳನ್ನು ಹೊಂದಿವೆ), ರನ್ಟೈಮ್ ಪರಿಶೀಲನೆಯಲ್ಲ; ಆದರೆ #8034 ರಲ್ಲಿನ ವೆಕ್ಟರ್-ವಿರೂಪಣೆಯ ಕಳವಳಕ್ಕೆ ಎಂಬೆಡಿಂಗ್ಗಳ ಪಥದಲ್ಲಿ ಯಾವುದೇ ಒಡ್ಡಿಕೊಳ್ಳುವ ಮೇಲ್ಮೈ ಇಲ್ಲ ಎಂದರ್ಥ. **ಪ್ರತಿ-ಮಾದರಿ/ಎಂಡ್ಪಾಯಿಂಟ್ ಹೊರಗಿಡುವಿಕೆ ಫಿಲ್ಟರ್ (#8034).** ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳಿಗಾಗಿ, ಆಪರೇಟರ್ ಎಂದಿಗೂ ಸಂಕುಚಿಸಬಾರದ ಮಾದರಿ ಐಡಿಗಳು / `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-ಸುರಕ್ಷಿತ, ಪರಿಮಿತ, ನೆಸ್ಟೆಡ್ ಕ್ವಾಂಟಿಫೈಯರ್ಗಳಿಲ್ಲ). ಪ್ಯಾಟರ್ನ್ಗಳು ಬೇರ್ ಮಾದರಿ ಐಡಿ ಮತ್ತು `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)ಗೆ ಒಂದೇ ಸ್ಥಳದಲ್ಲಿರುವ ಐಚ್ಛಿಕ ಅವಲಂಬನೆಗಳು ಅಗತ್ಯವಿವೆ.** `@atjsh/llmlingua-2` + ಅದರ ಸಹ-ಅವಲಂಬನೆಗಳನ್ನು `dist/node_modules` ಒಳಗೆ ಒಂದೇ ಸ್ಥಳದಲ್ಲಿ ಇರಿಸಿದಾಗ ಮಾತ್ರ worker ಪ್ರೊಡಕ್ಷನ್ ಬಿಲ್ಡ್ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ (`scripts/build/colocateOptionals.mjs`, #4286 ನೋಡಿ). ಅವುಗಳಿಲ್ಲದಿದ್ದರೆ ಎಂಜಿನ್ 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` ಕೊಡುಗೆಗಳನ್ನು ಸ್ವಾಗತಿಸಲಾಗುತ್ತದೆ. - **ಸಂಕಲಿತ ಟೆಲಿಮೆಟ್ರಿಯು ಸಂಕುಚಿತಗೊಳಿಸಿದ ಎಂಜಿನ್ಗಳನ್ನು ಮಾತ್ರ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ.** ಎಂಜಿನ್ ಕಾರ್ಯನಿರ್ವಹಿಸಿದ್ದರೂ 0 % ಉಳಿತಾಯ ನೀಡಿದ stacked-pipeline ಹಂತವು `stats:null` ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ `engineBreakdown`ನಲ್ಲಿ ಕಾಣಿಸುವುದಿಲ್ಲ — ಇದು ಬಿಟ್ಟುಬಿಡಲಾದ ಹಂತದಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿ ಗುರುತಿಸಲಾಗುವುದಿಲ್ಲ. "ಕಾರ್ಯನಿರ್ವಹಿಸಿದೆ, 0 %" ಮತ್ತು "ಬಿಟ್ಟುಬಿಡಲಾಗಿದೆ" ನಡುವಿನ ವ್ಯತ್ಯಾಸ ಗುರುತಿಸಲು breakdown-model ಬದಲಾವಣೆ ಅಗತ್ಯವಿರುವುದರಿಂದ ಅದನ್ನು ಮುಂದೂಡಲಾಗಿದೆ. ## ಮೌಲ್ಯೀಕರಣ ಈ ಪ್ರದೇಶಕ್ಕಾಗಿ ಕೇಂದ್ರೀಕೃತ ಗೇಟ್ಗಳು ಹೀಗಿವೆ: ```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 ```