# ๐Ÿ—œ๏ธ Prompt Compression Guide โ€” OmniRoute (ืขื‘ืจื™ืช) ๐ŸŒ **Languages:** ๐Ÿ‡บ๐Ÿ‡ธ [English](../../../../compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ช๐Ÿ‡น [am](../../../am/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฆ [ar](../../../ar/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฆ๐Ÿ‡ฟ [az](../../../az/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ง๐Ÿ‡ฌ [bg](../../../bg/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ง๐Ÿ‡ฉ [bn](../../../bn/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ง๐Ÿ‡ฆ [bs](../../../bs/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡จ๐Ÿ‡ฟ [cs](../../../cs/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฉ๐Ÿ‡ฐ [da](../../../da/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฉ๐Ÿ‡ช [de](../../../de/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฌ๐Ÿ‡ท [el](../../../el/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ช๐Ÿ‡ธ [es](../../../es/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ช๐Ÿ‡ช [et](../../../et/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ท [fa](../../../fa/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ซ๐Ÿ‡ฎ [fi](../../../fi/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ซ๐Ÿ‡ท [fr](../../../fr/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ช [ga](../../../ga/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [gu](../../../gu/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [ha](../../../ha/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [hi](../../../hi/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ญ๐Ÿ‡ท [hr](../../../hr/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ญ๐Ÿ‡บ [hu](../../../hu/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฆ๐Ÿ‡ฒ [hy](../../../hy/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ฉ [id](../../../id/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [ig](../../../ig/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡น [it](../../../it/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฏ๐Ÿ‡ต [ja](../../../ja/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฌ๐Ÿ‡ช [ka](../../../ka/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฐ๐Ÿ‡ญ [km](../../../km/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [kn](../../../kn/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฐ๐Ÿ‡ท [ko](../../../ko/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฑ๐Ÿ‡น [lt](../../../lt/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฑ๐Ÿ‡ป [lv](../../../lv/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [ml](../../../ml/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [mr](../../../mr/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฒ๐Ÿ‡พ [ms](../../../ms/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฒ๐Ÿ‡น [mt](../../../mt/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฒ๐Ÿ‡ฒ [my](../../../my/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ต [ne](../../../ne/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฑ [nl](../../../nl/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ด [no](../../../no/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [or](../../../or/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [pa](../../../pa/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ต๐Ÿ‡ญ [phi](../../../phi/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ต๐Ÿ‡ฑ [pl](../../../pl/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ต๐Ÿ‡น [pt](../../../pt/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ง๐Ÿ‡ท [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ท๐Ÿ‡ด [ro](../../../ro/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ท๐Ÿ‡บ [ru](../../../ru/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฑ๐Ÿ‡ฐ [si](../../../si/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฐ [sk](../../../sk/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฎ [sl](../../../sl/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ท๐Ÿ‡ธ [sr](../../../sr/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ธ๐Ÿ‡ช [sv](../../../sv/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฐ๐Ÿ‡ช [sw](../../../sw/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [ta](../../../ta/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [te](../../../te/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡น๐Ÿ‡ญ [th](../../../th/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡น๐Ÿ‡ท [tr](../../../tr/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡บ๐Ÿ‡ฆ [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ต๐Ÿ‡ฐ [ur](../../../ur/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡บ๐Ÿ‡ฟ [uz](../../../uz/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ป๐Ÿ‡ณ [vi](../../../vi/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [yo](../../../yo/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡จ๐Ÿ‡ณ [zh-CN](../../../zh-CN/docs/compression/COMPRESSION_GUIDE.md) ยท ๐Ÿ‡น๐Ÿ‡ผ [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_GUIDE.md) --- > ื—ืกื›ื• 15%-95% ืžื”ื”ืงืฉืจ ื”ืžืชืื™ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™. ืœืกืงื™ืจื” ืžื”ื™ืจื”, ืจืื• ืืช [ืกืขื™ืฃ ื”ื“ื—ื™ืกื” ื‘-README](../README.md#%EF%B8%8F-prompt-compression--save-15-95-eligible-tokens-automatically). ## ืกืงื™ืจื” ื›ืœืœื™ืช OmniRoute ืžืžืžืฉืช ืฆื™ื ื•ืจ ืžื•ื“ื•ืœืจื™ ืœื“ื—ื™ืกืช ืคืจื•ืžืคื˜ื™ื, ืฉืคื•ืขืœ **ื‘ืื•ืคืŸ ื™ื–ื•ื** ืœืคื ื™ ืฉื”ื‘ืงืฉื•ืช ืžื’ื™ืขื•ืช ืœืกืคืงื™ื ื‘ืžืขืœื” ื”ื–ืจื. ืคื™ืจื•ืฉ ื”ื“ื‘ืจ ืฉื”ื—ื™ืกื›ื•ืŸ ื‘ื˜ื•ืงื ื™ื ืžืชืจื—ืฉ ื‘ืฉืงื™ืคื•ืช โ€” ืœืœื ืฆื•ืจืš ื‘ืฉื™ื ื•ื™ื™ื ื‘ืชื”ืœื™ืš ื”ืขื‘ื•ื“ื” ืฉืœื›ื. ``` ื‘ืงืฉืช ืœืงื•ื— โ†’ ื‘ื•ืจืจ ืืกื˜ืจื˜ื’ื™ื™ืช ื“ื—ื™ืกื” โ†’ ื™ืฉ ื“ืจื™ืกื” ืฉืœ ืฉื™ืœื•ื‘? โ†’ ืฉื™ืžื•ืฉ ื‘ื”ื’ื“ืจืช ื”ืฉื™ืœื•ื‘ โ†’ ืกืฃ ื”ืคืขืœื” ืื•ื˜ื•ืžื˜ื™ืช? โ†’ ืฉื™ืžื•ืฉ ื‘ืžืฆื‘ ืื•ื˜ื•ืžื˜ื™ โ†’ ืžืฆื‘ ื‘ืจื™ืจืช ืžื—ื“ืœ? โ†’ ืฉื™ืžื•ืฉ ื‘ื”ื’ื“ืจื” ื”ื’ืœื•ื‘ืœื™ืช โ†’ ื›ื‘ื•ื™? โ†’ ื“ื™ืœื•ื’ ืขืœ ื”ื“ื—ื™ืกื” โ†’ ืžืฆื‘ ื”ื“ื—ื™ืกื” ืฉื ื‘ื—ืจ โ†’ ื›ื‘ื•ื™: ืœืœื ื“ื—ื™ืกื” โ†’ ืงืœ: ื ื™ืงื•ื™ ื‘ื˜ื•ื— ืฉืœ ืจื•ื•ื—ื™ื/ืขื™ืฆื•ื‘ (~15%) โ†’ ืจื’ื™ืœ: ื”ืกืจืช ืžื™ืœื•ืช ืžื™ืœื•ื™ ื‘ืกื’ื ื•ืŸ ื“ื™ื‘ื•ืจ ื˜ืœื’ืจืคื™ (~30%) โ†’ ืื’ืจืกื™ื‘ื™: ื™ื™ืฉื•ืŸ ื”ื™ืกื˜ื•ืจื™ื” + ืกื™ื›ื•ื (~50%) โ†’ ืื•ืœื˜ืจื”: ื’ื™ื–ื•ื ื”ื™ื•ืจื™ืกื˜ื™ + ื“ื™ืœื•ืœ ื‘ืœื•ืงื™ ืงื•ื“ (~75%) โ†’ RTK: ืกื™ื ื•ืŸ ืคืœื˜ ืžืกื•ืฃ/ื›ืœื™ื ืขื ืžื•ื“ืขื•ืช ืœืคืงื•ื“ื•ืช (ื˜ื•ื•ื— ืฉืœ 60%-90% ื‘ืžืขืœื” ื”ื–ืจื) โ†’ ืžื•ืขืจื: ืฆื™ื ื•ืจ ืจื‘-ืžื ื•ืขื™ ืžืกื•ื“ืจ, ื‘ื“ืจืš ื›ืœืœ RTK ื•ืื– Caveman (ื˜ื•ื•ื— ืฉืœ 78%-95% ืžื”ืชื•ื›ืŸ ื”ืžืชืื™ื) โ†’ ื‘ืงืฉื” ื“ื—ื•ืกื” โ†’ ืกืคืง ``` --- ## ืžืฆื‘ื™ ื“ื—ื™ืกื” ### ื›ื‘ื•ื™ ืœื ืžื•ื—ืœืช ื“ื—ื™ืกื”. ื›ืœ ื”ื”ื•ื“ืขื•ืช ืขื•ื‘ืจื•ืช ืœืœื ืฉื™ื ื•ื™. ### ืžืฆื‘ ืงืœ (ื—ื™ืกื›ื•ืŸ ืฉืœ ~15%, ื”ืฉื”ื™ื” ืฉืœ <1ms) ื”ืžืฆื‘ ื”ื‘ื˜ื•ื— ื‘ื™ื•ืชืจ โ€” ืœืœื ืฉื™ื ื•ื™ ืกืžื ื˜ื™ ื›ืœืœ, ืจืง ื ื™ืงื•ื™ ืขื™ืฆื•ื‘: | ื˜ื›ื ื™ืงื” | ืชื™ืื•ืจ | | ------------------------ | -------------------------------------------- | | `collapseWhitespace` | ืžื™ื–ื•ื’ ืฉื•ืจื•ืช ืจื™ืงื•ืช ืจืฆื•ืคื•ืช ื•ืจื•ื•ื—ื™ื ื‘ืกื•ืคื™ ืฉื•ืจื•ืช | | `dedupSystemPrompt` | ื”ืกืจืช ื”ื•ื“ืขื•ืช ืžืขืจื›ืช ื›ืคื•ืœื•ืช | | `compressToolResults` | ื“ื—ื™ืกืช ืคืœื˜ื™ื ืžืคื•ืจื˜ื™ื ืฉืœ ื›ืœื™ื/ืคื•ื ืงืฆื™ื•ืช | | `removeRedundantContent` | ื”ืกืจืช ื”ื•ืจืื•ืช ื—ื•ื–ืจื•ืช | | `replaceImageUrls` | ืงื™ืฆื•ืจ URI ืฉืœ ื ืชื•ื ื™ ืชืžื•ื ื” ื‘ืงื™ื“ื•ื“ base64 | **ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ:** ืฉื™ืžื•ืฉ ืงื‘ื•ืข, ืชื”ืœื™ื›ื™ ืขื‘ื•ื“ื” ืฉื‘ื”ื ื”ื‘ื˜ื™ื—ื•ืช ืงืจื™ื˜ื™ืช. ### ืžืฆื‘ ืจื’ื™ืœ (ื—ื™ืกื›ื•ืŸ ืฉืœ ~30%) ื‘ื”ืฉืจืืช [Caveman](https://github.com/JuliusBrussee/caveman) โ€” ืžืกื™ืจ ืžื™ืœื•ืช ืžื™ืœื•ื™ ื•ื ื™ืกื•ื—ื™ื ืืจื›ื ื™ื™ื ืชื•ืš ืฉื™ืžื•ืจ ื”ืžืฉืžืขื•ืช: - ืžืกื™ืจ ืžื™ืœื•ืช ืžื™ืœื•ื™ ("ื‘ื‘ืงืฉื”", "ืื ื™ ื—ื•ืฉื‘", "ื‘ืขื™ืงืจื•ืŸ", "ืœืžืขืฉื”") - ืžืฆืžืฆื ื‘ื™ื˜ื•ื™ื™ื ืืจื›ื ื™ื™ื ("ืขืœ ืžื ืช" โ†’ "ื›ื“ื™", "ื›ืชื•ืฆืื” ืžื›ืš ืฉ-" โ†’ "ื›ื™") - ืžืกื™ืจ ื”ืกืชื™ื™ื’ื•ื™ื•ืช ืžื ื•ืžืกื•ืช ("ื”ืื ื™ื”ื™ื” ืื›ืคืช ืœืš...", "ืื ืชื•ื›ืœ ืื•ืœื™...") - ื™ื•ืชืจ ืž-30 ื›ืœืœื™ regex ื”ืžื•ืชืืžื™ื ืœืคืจื•ืžืคื˜ื™ื ืฉืœ ืชื›ื ื•ืช **ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ:** ืชื”ืœื™ื›ื™ ืชื›ื ื•ืช ื™ื•ืžื™ื•ืžื™ื™ื, ืฆื•ื•ืชื™ื ืฉืžื•ื“ืขื™ื ืœืขืœื•ื™ื•ืช. ### ืžืฆื‘ ืื’ืจืกื™ื‘ื™ (ื—ื™ืกื›ื•ืŸ ืฉืœ ~50%) ื ื™ื”ื•ืœ ื—ื›ื ืฉืœ ื”ื”ื™ืกื˜ื•ืจื™ื” ืขื‘ื•ืจ ื”ืคืขืœื•ืช ืืจื•ื›ื•ืช: - **ื™ื™ืฉื•ืŸ ื”ื•ื“ืขื•ืช** โ€” ื”ื•ื“ืขื•ืช ื™ืฉื ื•ืช ื™ื•ืชืจ ื ื“ื—ืกื•ืช ื‘ื”ื“ืจื’ื” - **ื“ื—ื™ืกืช ืชื•ืฆืื•ืช ื›ืœื™ื** โ€” ืคืœื˜ื™ื ืืจื•ื›ื™ื ืฉืœ ื›ืœื™ื ื ืงื˜ืžื™ื ืื• ืžื•ืฉืžื˜ื™ื (ืฉื•ืจื•ืช ืจืืฉื•ื ื•ืช/ืื—ืจื•ื ื•ืช, ืกื™ื ื•ืŸ ืฉื•ืจื•ืช ืชื•ืืžื•ืช, ื“ื—ื™ืกืช ืžืคืชื—ื•ืช JSON) - **ืžื ื’ื ื•ื ื™ ื”ื’ื ื” ืขืœ ืฉืœืžื•ืช ืžื‘ื ื™ืช** โ€” ืžื•ื•ื“ืื™ื ืฉืฆืžื“ื™ `tool_use` + `tool_result` ื ืฉืืจื™ื ืขืงื‘ื™ื™ื - **ืžื•ื“ืขื•ืช ืœื—ืœื•ืŸ ื”ื”ืงืฉืจ** โ€” ืžื›ื‘ื“ืช ืžื’ื‘ืœื•ืช ื˜ื•ืงื ื™ื ืœืคื™ ืžื•ื“ืœ **ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ:** ื”ืคืขืœื•ืช ื ื™ืคื•ื™ ืฉื’ื™ืื•ืช ืžืžื•ืฉื›ื•ืช, ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื. ### ืžืฆื‘ ืื•ืœื˜ืจื” (ื—ื™ืกื›ื•ืŸ ืฉืœ ~75%) ื“ื—ื™ืกื” ืžืจื‘ื™ืช ืœืชืจื—ื™ืฉื™ื ืฉื‘ื”ื ื˜ื•ืงื ื™ื ื”ื ืžืฉืื‘ ืงืจื™ื˜ื™: - **ื’ื™ื–ื•ื ื”ื™ื•ืจื™ืกื˜ื™** โ€” ื’ื™ื–ื•ื ื˜ื•ืงื ื™ื ื‘ื˜ืงืกื˜ ืœืคื™ ืฆื™ื•ืŸ - **ืฉื™ืžื•ืจ ืžื‘ื ื”** โ€” ื‘ืœื•ืงื™ ืงื•ื“ ืžื’ื•ื“ืจื™ื, ืงื•ื“ ื‘ืชื•ืš ื”ืฉื•ืจื”, ื›ืชื•ื‘ื•ืช URL ื•ืžื–ื”ื™ื ืžื•ื—ืœืคื™ื ื–ืžื ื™ืช ื‘ืกืžื ื™ื ื•ืžืฉื•ืœื‘ื™ื ืžื—ื“ืฉ ืœืœื ืฉื™ื ื•ื™, ื•ืœืขื•ืœื ืื™ื ื ื ื’ื–ืžื™ื - **ืฉื›ื‘ืช SLM ืื•ืคืฆื™ื•ื ืœื™ืช** โ€” ืžื•ื“ืœ ืžืงื•ืžื™ ืงื˜ืŸ ื™ื›ื•ืœ ืœืขื“ืŸ ืืช ื”ื’ื™ื–ื•ื ื›ืืฉืจ ื”ื•ื ืžื•ื’ื“ืจ - ื‘ืœืชื™ ืชืœื•ื™ ื‘ืžืฆื‘ ืื’ืจืกื™ื‘ื™: ื”ื•ื ืื™ื ื• ืžืคืขื™ืœ ื™ื™ืฉื•ืŸ ื”ื•ื“ืขื•ืช, ื“ื—ื™ืกืช ืชื•ืฆืื•ืช ื›ืœื™ื ืื• ืืช ืžืกื›ื ื”ื’ื™ื‘ื•ื™ (ืจืง ื›ืฉืœ ื‘ืฉื›ื‘ืช SLM ื™ื›ื•ืœ ืœื ืชื‘ ืžืขื‘ืจ ื’ื™ื‘ื•ื™ ื“ืจืš ื”ืžืฆื‘ ื”ืื’ืจืกื™ื‘ื™) **ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ:** ืžืฆื‘ื™ื ืฉื‘ื”ื ืžื’ื™ืขื™ื ืฉื•ื‘ ื•ืฉื•ื‘ ืœืžื’ื‘ืœื•ืช ื”ื”ืงืฉืจ. ### ืžืฆื‘ RTK (ื˜ื•ื•ื— ืฉืœ 60%-90% ื‘ืžืขืœื” ื”ื–ืจื) ืžืฆื‘ RTK ืžืžื•ื˜ื‘ ืœืคืœื˜ื™ื ืžืคื•ืจื˜ื™ื ืฉืœ ื›ืœื™ื ืฉืžื•ืคื™ืขื™ื ื‘ื”ืคืขืœื•ืช ืฉืœ ืกื•ื›ื ื™ ืชื›ื ื•ืช: - ืžื–ื”ื” ืกื•ื’ื™ ืคืงื•ื“ื•ืช/ืคืœื˜ ื›ื’ื•ืŸ `git status`, `git diff`, `git log`, ืžืจื™ืฆื™ ื‘ื“ื™ืงื•ืช, ืชื”ืœื™ื›ื™ ื‘ื ื™ื™ื” ืฉืœ TypeScript/Vite/Webpack,โ€ ESLint/Biome/Prettier, ื‘ื™ืงื•ืจื•ืช/ื”ืชืงื ื•ืช npm, ื™ื•ืžื ื™ Docker, ืคืœื˜ ืชืฉืชื™ื•ืช ื•ืคืœื˜ ืžืขื˜ืคืช ื›ืœืœื™ - ืžื—ื™ืœ ื—ื‘ื™ืœื•ืช ืžืกื ื ื™ JSON ืžืชื•ืš `open-sse/services/compression/engines/rtk/filters/` - ืžื™ื™ื‘ื ืžืกื ื ื™ื ื‘ืกื›ืžืช RTK TOML v1 ืžืงื•ื‘ืฆื™ `filters.toml` ืฉืœ ื”ืคืจื•ื™ืงื˜ ืื• ืžื”ื”ื’ื“ืจื•ืช ื”ื’ืœื•ื‘ืœื™ื•ืช, ืขื ืื™ืžื•ืช ื‘ื“ื™ืงื•ืช ืžื•ื˜ื‘ืขื•ืช ื•ื‘ืงืจืช ืืžื•ืŸ ืขื‘ื•ืจ ืงื•ื‘ืฆื™ ืคืจื•ื™ืงื˜ - ื›ื•ืœืœ 55 ืžืกื ื ื™ื ืžื•ื‘ื ื™ื ืขื ื“ื•ื’ืžืื•ืช ืื™ืžื•ืช ืžื•ื˜ื‘ืขื•ืช - ืžืกื™ืจ ืจืฆืคื™ ื‘ืงืจื” ืฉืœ ANSI, ืคืกื™ ื”ืชืงื“ืžื•ืช, ืฉื•ืจื•ืช ื—ื•ื–ืจื•ืช ื•ืจืขืฉ ืฉืื™ื ื• ื‘ืจ-ืคืขื•ืœื” - ืžืฉืžืจ ื›ืฉืœื™ื, ืฉื’ื™ืื•ืช, ืื–ื”ืจื•ืช, ืงื‘ืฆื™ื ืฉื”ืฉืชื ื•, ืกื™ื›ื•ืžื™ื ื•ืืช ื”ื—ืœืง ื”ืื—ืจื•ืŸ ืฉืœ ืคืœื˜ ืืจื•ืš - ืชื•ืžืš ื‘ืžืกื ื ื™ ืคืจื•ื™ืงื˜ ืžื‘ื•ืงืจื™ ืืžื•ืŸ, ื‘ืžืกื ื ื™ื ื’ืœื•ื‘ืœื™ื™ื ื•ื‘ืฉื—ื–ื•ืจ ืื•ืคืฆื™ื•ื ืœื™ ืฉืœ ืคืœื˜ ื’ื•ืœืžื™ ืžื•ืฉื—ืจ **ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ:** ื”ืคืขืœื•ืช ืกื•ื›ืŸ ื”ื›ื•ืœืœื•ืช ืชืžืœื™ืœื™ื ืฉืœ ืžืขื˜ืคืช, ื‘ื ื™ื™ื”, ื‘ื“ื™ืงื•ืช, git,โ€ grep ื•ืคืœื˜ ืงื‘ืฆื™ื. ### ืžืฆื‘ ืžื•ืขืจื (ื˜ื•ื•ื— ืฉืœ 78%-95% ืžื”ืชื•ื›ืŸ ื”ืžืชืื™ื) ืžืฆื‘ ืžื•ืขืจื ืžืคืขื™ืœ ืžืกืคืจ ืžื ื•ืขื™ ื“ื—ื™ืกื” ื‘ืกื“ืจ ื“ื˜ืจืžื™ื ื™ืกื˜ื™. ืฆื™ื ื•ืจ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื•ื: ```txt RTK -> Caveman ``` ืกื“ืจ ื–ื” ืžื›ื•ื•ืฅ ืชื—ื™ืœื” ืืช ืคืœื˜ ื”ืžืกื•ืฃ/ื”ื›ืœื™ื, ื•ืœืื—ืจ ืžื›ืŸ ืžื—ื™ืœ ืืช ื”ืฆืžืฆื•ื ื”ืกืžื ื˜ื™ ืฉืœ Caveman ืขืœ ื™ืชืจ ื”ืคืจื•ืžืคื˜ ื‘ืฉืคื” ื˜ื‘ืขื™ืช. ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืฆื™ื ื•ืจื•ืช ืžื•ืขืจืžื™ื ื‘ืื•ืคืŸ ื’ืœื•ื‘ืœื™ ืื• ื‘ืืžืฆืขื•ืช ืฉื™ืœื•ื‘ื™ ื“ื—ื™ืกื” ื”ืžื•ืงืฆื™ื ืœืฉื™ืœื•ื‘ื™ ื ื™ืชื•ื‘. **ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ:** ื”ืงืฉืจ ืžืขื•ืจื‘ ื”ื›ื•ืœืœ ื™ื•ืžื ื™ ื›ืœื™ื ื’ื“ื•ืœื™ื ืœืฆื“ ื”ื•ืจืื•ืช ืื ื•ืฉื™ื•ืช ืื• ืกื™ื›ื•ืžื™ ืขื•ื–ืจ. --- ## ื—ื™ืฉื•ื‘ ื”ื—ื™ืกื›ื•ืŸ ืžืžืงื•ืจื•ืช ื‘ืžืขืœื” ื”ื–ืจื OmniRoute ืžืชืขื“ ืืช ื”ื—ื™ืกื›ื•ืŸ ื‘ืืžืฆืขื•ืช ื“ื—ื™ืกื” ืžืฉื ื™ ืžืงื•ืจื•ืช: ืžื“ื“ื™ ื‘ื™ืฆื•ืขื™ื ืฉืœ ืคืจื•ื™ืงื˜ื™ื ื‘ืžืขืœื” ื”ื–ืจื ื•ื”ืจื›ื‘ ื”ืžื ื•ืขื™ื ืฉืœ OmniRoute ืขืฆืžื•. | ืžืงื•ืจ | ื”ื ืชื•ืŸ ืžื”-README ื‘ืžืขืœื” ื”ื–ืจื ืฉื‘ื• ื ืขืฉื” ืฉื™ืžื•ืฉ ื›ืืŸ | | ------- | ------------------------------------------------------------------------------------------------------------------- | | Caveman | `~75%` ืคื—ื•ืช ื˜ื•ืงื ื™ ืคืœื˜, ื—ื™ืกื›ื•ืŸ ืžืžื•ืฆืข ืฉืœ `65%` ื‘ืคืœื˜ ื‘ืžื“ื“ื™ ื‘ื™ืฆื•ืขื™ื, ื˜ื•ื•ื— ืฉืœ `22-87%`, ื•ื›ืœื™ ืœื“ื—ื™ืกืช ืงืœื˜ ื‘ืฉื™ืขื•ืจ ืฉืœ `~46%` | | RTK | ื—ื™ืกื›ื•ืŸ ืฉืœ `60-90%` ื‘ืคืœื˜ ืคืงื•ื“ื•ืช; ื”ืคืขืœื” ืœื“ื•ื’ืžื” ืฉืœ `~118,000 -> ~23,900` ื˜ื•ืงื ื™ื, ืื• ื—ื™ืกื›ื•ืŸ ืฉืœ `79.7%` (`~80%`) | ืขื‘ื•ืจ ืžื˜ืขื ื™ื ื—ื•ืคืคื™ื ืฉืœ ื›ืœื™ื/ื”ืงืฉืจ, ืฉื™ืœื•ื‘ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ OmniRoute ืžืขืจื™ื ืืช ื”ืžื ื•ืขื™ื: ```txt RTK -> Caveman ``` ื”ื—ื™ืกื›ื•ืŸ ื”ืžืฉื•ืœื‘ ื”ื•ื ื›ื•ืคืœื™, ืœื ื—ื™ื‘ื•ืจื™: ```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% ``` ื”ื ืชื•ืŸ `78-95%` ื—ืœ ื›ืืฉืจ ื’ื RTK ื•ื’ื Caveman ื™ื›ื•ืœื™ื ืœืฆืžืฆื ืืช ืื•ืชื• ืžื˜ืขืŸ ืงืœื˜/ื”ืงืฉืจ. ืžืฆื‘ ืคืœื˜ ื”ืชืฉื•ื‘ื” ืฉืœ Caveman ื”ื•ื ื ืคืจื“: ื›ืืฉืจ ื”ื•ื ืžื•ืคืขืœ, ื™ืฉ ืœื”ืฉืชืžืฉ ื‘ื—ื™ืกื›ื•ืŸ ื”ืคืœื˜ ืฉืœ Caveman ืขืฆืžื• (`65%` ื‘ืžืžื•ืฆืข, ื ืชื•ืŸ ืžื•ื‘ื™ืœ ืฉืœ `~75%`, ื˜ื•ื•ื— ืฉืœ `22-87%`). ื”ื—ื™ืกื›ื•ืŸ ื”ื›ื•ืœืœ ื‘ื—ื™ื•ื‘ ืชืœื•ื™ ื‘ืชืžื”ื™ืœ ื”ืคืจื•ืžืคื˜ื™ื/ื”ืคืœื˜ ืฉืœื›ื. ### ืžื” ื”ืžืฉืžืขื•ืช ื‘ืคื•ืขืœ ืฉืœ "ื›ืฉื™ืจ" ื”ื˜ื•ื•ื— ื”ืžื•ื‘ื™ืœ ืฉืœ 15-95% ื”ื•ื ืืžื™ืชื™, ืืš ื”ื•ื ื—ืœ ืจืง ืขืœ ืชื•ื›ืŸ **ืžื™ื•ืชืจ ืื• ืžื™ืœื•ืœื™ ืžื“ื™** โ€” ืฉื•ืจื•ืช ืฉื’ื™ืื” ื—ื•ื–ืจื•ืช, ื™ื•ืžืŸ ื‘ื ื™ื™ื” ืฉืžืฆื™ืฃ ืฉื•ื‘ ื•ืฉื•ื‘ ืืช ืื•ืชื” ืื–ื”ืจื”, ืคืœื˜ ื’ื“ื•ืœ ืžื“ื™ ืฉืœ `grep`/ืงืจื™ืืช ืงื•ื‘ืฅ. ืื™ืŸ ืคื™ืจื•ืฉ ื”ื“ื‘ืจ ืฉื›ืœ ื‘ืงืฉื” ืชื—ืกื•ืš ื‘ืฉื™ืขื•ืจ ื›ื–ื”. ืื•ืžืช ื‘ืื•ืคืŸ ืืžืคื™ืจื™ (`tests/unit/compression/stacked-compression-tool-result-savings.test.ts`): ื”ืคืขืœืช `stacked` (RTK + Caveman) ืขืœ ื‘ืœื•ืง `tool_result` ื‘ืžื‘ื ื” ืฉืœ Anthropic, ื”ืžื›ื™ืœ 300 ืฉื•ืจื•ืช ืฉื’ื™ืื” ื–ื”ื•ืช, ื”ื ื™ื‘ื” **ื—ื™ืกื›ื•ืŸ ืฉืœ 95.93% ื‘ื˜ื•ืงื ื™ื / ื—ื™ืกื›ื•ืŸ ืฉืœ 96.26% ื‘ืชื•ื•ื™ื** โ€” ื‘ื“ื™ื•ืง ื‘ืชื•ืš ื”ื˜ื•ื•ื— ื”ืžืคื•ืจืกื. ืื•ืœื ื”ืคืขืœืช ืื•ืชื• ืฆื™ื ื•ืจ ืขื™ื‘ื•ื“ ืขืœ ืคืœื˜ ื›ืœื™ ืจื’ื™ืœ ืฉืื™ื ื• ืžื™ื•ืชืจ (ืจืฉื™ืžืช ื”ืชืืžื•ืช ื ืงื™ื™ื” ืฉืœ `grep`, ืงืจื™ืืช ืงื•ื‘ืฅ ืงืฆืจื”, ื˜ืงืกื˜ ืฉื™ื—ื” ืจื’ื™ืœ) ืžื ื™ื‘ื”, ื›ืฆืคื•ื™, **ื—ื™ืกื›ื•ืŸ ื”ืงืจื•ื‘ ืœืืคืก**, ืžื›ื™ื•ื•ืŸ ืฉืื™ืŸ ืชื•ื›ืŸ ื—ื•ื–ืจ ืœื”ืกืจื” ื•-`validateCompression()` (`validation.ts`) ืžืกืจื‘ืช ืœืฉืœื•ื— ืฉื›ืชื•ื‘ ืฉืขืœื•ืœ ืœื”ืกื™ืจ ืื• ืœืฉื ื•ืช ื‘ืœื•ืงื™ ืงื•ื“, ื›ืชื•ื‘ื•ืช URL, ื›ื•ืชืจื•ืช, ื’ืจืกืื•ืช ืื• ืžื–ื”ื™ ืงื‘ื•ืขื™ื ื‘ืื•ืชื™ื•ืช ืจื™ืฉื™ื•ืช ื‘ืœื‘ื“. ื–ื•ื”ื™ ื”ืชื ื”ื’ื•ืช ืฆืคื•ื™ื” ื•ื‘ื˜ื•ื—ื”, ื•ืœื ื‘ืื’: ืกืฉืŸ ืชื›ื ื•ืช ืฉื‘ืขื™ืงืจ ืงื•ืจื ืงื‘ืฆื™ื ื ืงื™ื™ื ืื• ืžื—ืคืฉ ื‘ื”ื ื‘ืืžืฆืขื•ืช grep ื™ืฆื™ื’ ื—ื™ืกื›ื•ืŸ ื›ื•ืœืœ ืžืชื•ืŸ ื’ื ื›ืฉื”ื“ื—ื™ืกื” ืžื•ืคืขืœืช ื‘ืžืœื•ืื”, ื‘ืขื•ื“ ืฉืกืฉืŸ ืฉื ืชืงืœ ื‘ืœื•ืœืื” ื›ื•ืฉืœืช ืื• ื‘-linter ืคื˜ืคื˜ืŸ ื™ืฆื™ื’ ืืช ืžืœื•ื ื”ื˜ื•ื•ื— ืฉืœ 78-95% ืขื‘ื•ืจ ืชืขื‘ื•ืจื” ื–ื•. ืืœ ืชืฉืชืžืฉื• ื‘ืื—ื•ื– ื—ื™ืกื›ื•ืŸ ืžืฆื˜ื‘ืจ ื ืžื•ืš ืฉืœ ืกืฉืŸ ื™ื—ื™ื“ ื›ื”ื•ื›ื—ื” ืœื›ืš ืฉื”ื“ื—ื™ืกื” ืžื•ื’ื“ืจืช ื‘ืื•ืคืŸ ืฉื’ื•ื™ โ€” ื‘ื“ืงื• ืชื—ื™ืœื” ืื ืคืœื˜ ื”ื›ืœื™ ื”ื‘ืกื™ืกื™ ืื›ืŸ ื”ื™ื” ืžื™ื•ืชืจ. --- ## ื”ืžื—ืฉื” ื—ื–ื•ืชื™ืช ืฉืœ ื”ื—ื™ืกื›ื•ืŸ ื‘ื˜ื•ืงื ื™ื ``` ืœืœื ื“ื—ื™ืกื”: 47K ื˜ื•ืงื ื™ื ื ืฉืœื—ื• ืœ-LLM ืขื Lite: 40K ื˜ื•ืงื ื™ื ื ืฉืœื—ื• (ื—ื™ืกื›ื•ืŸ ืฉืœ 15% โ€” ื‘ื˜ื•ื—, ืžื•ืคืขืœ ืชืžื™ื“) ืขื Standard: 33K ื˜ื•ืงื ื™ื ื ืฉืœื—ื• (ื—ื™ืกื›ื•ืŸ ืฉืœ 30% โ€” ื›ืœืœื™ ื“ื™ื‘ื•ืจ ื‘ืกื’ื ื•ืŸ Caveman) ืขื Aggressive: 24K ื˜ื•ืงื ื™ื ื ืฉืœื—ื• (ื—ื™ืกื›ื•ืŸ ืฉืœ 50% โ€” ื”ืชื™ื™ืฉื ื•ืช + ืกื™ื›ื•ื) ืขื Ultra: 12K ื˜ื•ืงื ื™ื ื ืฉืœื—ื• (ื—ื™ืกื›ื•ืŸ ืฉืœ 75% โ€” ื’ื™ื–ื•ื ื”ื™ื•ืจื™ืกื˜ื™) ืขื RTK: 19K-5K ื˜ื•ืงื ื™ื ื ืฉืœื—ื• (ื—ื™ืกื›ื•ืŸ ืฉืœ 60-90% ื‘ืคืœื˜ ืคืงื•ื“ื•ืช/ื›ืœื™ื) ืขื Stacked: 10K-2.5K ื˜ื•ืงื ื™ื ื ืฉืœื—ื• (ื˜ื•ื•ื— ื›ืฉื™ืจ ืฉืœ 78-95% ืขื‘ื•ืจ RTK+Caveman) ``` --- ## ื”ื’ื“ืจื•ืช ### ืœื•ื— ื”ื‘ืงืจื” ื ื•ื•ื˜ื• ืืœ `Dashboard โ†’ Context & Cache`: - **Caveman** โ€” ื‘ื—ื™ืจืช ืžืฆื‘, ื—ื‘ื™ืœื•ืช ืฉืคื”, ืชืฆื•ื’ื” ืžืงื“ื™ืžื” ื•ื‘ืจื™ืจื•ืช ืžื—ื“ืœ ื’ืœื•ื‘ืœื™ื•ืช - **RTK** โ€” ืชืฆื•ื’ื” ืžืงื“ื™ืžื” ืฉืœ ืžืกื ืŸ ืคืงื•ื“ื•ืช, ื”ื’ื“ืจื•ืช ื‘ื˜ื™ื—ื•ืช ืฉืœ RTK ื•ืงื˜ืœื•ื’ ืžืกื ื ื™ื - **Compression Combos** โ€” ืฆื™ื ื•ืจื•ืช ืขื™ื‘ื•ื“ ื‘ืขืœื™ ืฉืžื•ืช ืฉืœ ืžื ื•ืขื™ ื“ื—ื™ืกื”, ื”ืžื•ืงืฆื™ื ืœืฉื™ืœื•ื‘ื™ ื ื™ืชื•ื‘ - **Auto-Trigger Threshold** โ€” ื”ืคืขืœื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ื“ื—ื™ืกื” ื›ืืฉืจ ืžืกืคืจ ื”ื˜ื•ืงื ื™ื ื—ื•ืจื’ ืžื”ืกืฃ ### ื“ืจื™ืกื” ืœืคื™ ืฉื™ืœื•ื‘ ื‘-`Dashboard โ†’ Context & Cache โ†’ Compression Combos`, ื”ืงืฆื• ืฉื™ืœื•ื‘ ื“ื—ื™ืกื” ืœืฉื™ืœื•ื‘ ื ื™ืชื•ื‘: ```txt Combo: "free-tier-fallback" Compression Combo: "coding-agent-stack" Pipeline: RTK -> Caveman Targets: 1. if/kimi-k2.7-code 2. if/qwen3.8-max-preview ``` ื›ืš ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื“ื—ื™ืกื” ืžืฉื•ืœื‘ืช ืืฆืœ ืกืคืงื™ื ื—ื™ื ืžื™ื™ื ืื• ืกืคืงื™ ืงื™ื“ื•ื“, ืชื•ืš ืฉืžื™ืจื” ืขืœ ืžืฆื‘ lite ื‘ืžื™ื ื•ื™ื™ื ื‘ืชืฉืœื•ื. ื”ืงืฆืืช "ื“ืจื™ืกื” ืœืคื™ ืฉื™ืœื•ื‘" ื–ื• ื”ื™ื ืคืงื“ ื ืคืจื“ ืžื“ืจื™ืกืช **ืžืฆื‘ ื”ื“ื—ื™ืกื” ืฉืœ ืฉื™ืœื•ื‘ ื”ื ื™ืชื•ื‘** (Default/Off/Lite/Standard/Aggressive/Ultra/Codex Responses โ€” ื”ืกื›ื™ืžื” ืฉืœ ื”ืฉื“ื” ืžืงื‘ืœืช ื’ื ืืช `rtk`,โ€ `stacked` ื•-`omniglyph`) โ€” ื“ืจื™ืกื” ื–ื• ืื™ื ื” ื‘ื•ื—ืจืช ืฆื™ื ื•ืจ ืขื™ื‘ื•ื“ ืฉืœ ืฉื™ืœื•ื‘ ื“ื—ื™ืกื” ื‘ืขืœ ืฉื; ื”ื™ื ืจืง ืžื’ื“ื™ืจื” ืืช ื”ืฉื“ื” `compressionMode` ืฉื‘ื• ืžืฉืชืžืฉ `resolveCompressionPlan`. ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืื•ืชื” ื‘ื›ืจื˜ื™ืก ื”ืฉื™ืœื•ื‘ (`Dashboard โ†’ Combos`) ืื•, ื”ื—ืœ ืž-#6760, ืœื›ืœ ืฉื™ืœื•ื‘ ื ื™ืชื•ื‘ ื‘ื ืคืจื“ ื‘ืจืฉื™ืžื” "Assign to routing" ืฉื‘-`Dashboard โ†’ Context & Cache โ†’ Compression Combos`, ืžืžืฉ ืœืฆื“ ืชื™ื‘ืช ื”ืกื™ืžื•ืŸ ืœื”ืงืฆืืช ืฆื™ื ื•ืจ ื”ืขื™ื‘ื•ื“ ื”ืžืชื•ืขื“ืช ืœืขื™ืœ. ืฉื ื™ ื”ืžืžืฉืงื™ื ืฉื•ืžืจื™ื ืืช ื”ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช ืื•ืชื” ื ืงื•ื“ืช ืงืฆื” `PUT /api/combos/{id}`. ### ื“ืจื™ืกื” ืœืคื™ ื‘ืงืฉื” ืฉืœื—ื• ืืช ื›ื•ืชืจืช ื”ื‘ืงืฉื” `x-omniroute-compression` ื›ื“ื™ ืœื“ืจื•ืก ืืช ืชื•ื›ื ื™ืช ื”ื“ื—ื™ืกื” ืขื‘ื•ืจ ื‘ืงืฉื” ื™ื—ื™ื“ื”. ื™ืฉ ืœื” ืืช ื”ืขื“ื™ืคื•ืช ื”ื’ื‘ื•ื”ื” ื‘ื™ื•ืชืจ โ€” ื”ื™ื ื’ื•ื‘ืจืช ืขืœ ื“ืจื™ืกืช ืฉื™ืœื•ื‘ ื”ื ื™ืชื•ื‘, ื”ืคืจื•ืคื™ืœ ื”ืคืขื™ืœ, ื”ื”ืคืขืœื” ื”ืื•ื˜ื•ืžื˜ื™ืช ื•ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ื”ืœื•ื—. ื”ืžืขืจื›ืช ืžืชืขืœืžืช ืžืขืจื›ื™ื ืœื ืžื•ื›ืจื™ื (ื”ื‘ืงืฉื” ืœืขื•ืœื ืื™ื ื” ื ื“ื—ื™ืช), ื•ื”ืžืชื’ ื”ืจืืฉื™ ื”ื’ืœื•ื‘ืœื™ ืขื“ื™ื™ืŸ ืฉื•ืœื˜ ื‘ื›ื•ืœ: ื›ืืฉืจ ื”ื“ื—ื™ืกื” ื›ื‘ื•ื™ื” ื‘ืื•ืคืŸ ื’ืœื•ื‘ืœื™, ื”ื›ื•ืชืจืช ืื™ื ื” ื™ื›ื•ืœื” ืœื”ืคืขื™ืœ ืื•ืชื”. ืขืจื›ื™ื: | ืขืจืš | ื”ืฉืคืขื” | | ------------- | ----------------------------------------------------------------------------------------- | | `off` | ืœืœื ื“ื—ื™ืกื” ืขื‘ื•ืจ ื‘ืงืฉื” ื–ื•. | | `default` | ืคืจื•ืคื™ืœ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉื ื’ื–ืจ ืžื”ืœื•ื— (ืžืชืขืœื ืžื”ืคืจื•ืคื™ืœ ื”ืคืขื™ืœ). ืžื ื•ืขื™ื ืžืื‘ื“ื™ ืžื™ื“ืข ื ื•ืชืจื™ื ื›ื‘ื•ื™ื™ื. | | `safe` | ื–ื”ื” ืœื”ืฉืžื˜ืช ื”ื›ื•ืชืจืช: ื”ืกืจืช ื›ืคื™ืœื•ื™ื•ืช ื•ืฆืžืฆื•ื ืจื•ื•ื—ื™ื ื‘ืœื‘ื“. | | `allow-lossy` | ืฉื™ืžื•ืจ ืชื•ื›ื ื™ืช ื”ืžืคืขื™ืœ ืฉืœ ื‘ืงืฉื” ื–ื•, ืœืจื‘ื•ืช ืกื™ื›ื•ืžื™ื, ืžืกื ื ื™ ืจืœื•ื•ื ื˜ื™ื•ืช ื•ืฉื›ืชื•ื‘ื™ื ืกื’ื ื•ื ื™ื™ื. | | `engine:` | ืžื ื•ืข ื™ื—ื™ื“, ื›ืืฉืจ ื”ื•ื ืžื•ืคืขืœ, ืœืžืฉืœ `engine:rtk`. ื–ื•ื”ื™ ื”ืกื›ืžื” ืžืคื•ืจืฉืช ืœืคื™ ื‘ืงืฉื” ืœืฉื™ืžื•ืฉ ื‘ืžื ื•ืข ื–ื”. | | `` | ืฉื™ืœื•ื‘ ื‘ืขืœ ืฉื, ืฉืžื•ืชืื ืชื—ื™ืœื” ืœืคื™ ืฉื (ืœืœื ืชืœื•ืช ื‘ืจื™ืฉื™ื•ืช) ื•ืœืื—ืจ ืžื›ืŸ ืœืคื™ ืžื–ื”ื”. | ืœืœื `allow-lossy`,โ€ `engine:` ืื• ืฉื™ืœื•ื‘ ื‘ืขืœ ืฉื, ืžื ื•ืขื™ื ืžืื‘ื“ื™ ืžื™ื“ืข ืื™ื ื ืžื•ืคืขืœื™ื. ื›ืืฉืจ ื”ื“ื—ื™ืกื” ืคืขื™ืœื”, ื”ื‘ืงืฉื” ืขื“ื™ื™ืŸ ืขื•ื‘ืจืช ื”ืกืจืช ื›ืคื™ืœื•ื™ื•ืช ื‘ืจืžืช ื”ื”ืคืขืœื” ื•ืฆืžืฆื•ื ืจื•ื•ื—ื™ื. ื”ืชื•ื›ื ื™ืช ืฉื”ื•ืคืขืœื” ืžื•ื—ื–ืจืช ื‘ื›ื•ืชืจืช ื”ืชื’ื•ื‘ื” `X-OmniRoute-Compression: ; source=`, ื›ืืฉืจ `` ื”ื•ื ืื—ื“ ืžื”ืขืจื›ื™ื `request-header`,โ€ `routing-override`,โ€ `active-profile`, โ€`auto-trigger`,โ€ `default` ืื• `off`. ### API ```bash # ืงื‘ืœืช ื”ื’ื“ืจื•ืช ื”ื“ื—ื™ืกื” curl http://localhost:20128/api/settings/compression # ืขื“ื›ื•ืŸ ื”ื’ื“ืจื•ืช ื”ื“ื—ื™ืกื” curl -X PUT http://localhost:20128/api/settings/compression \ -H "Content-Type: application/json" \ -d '{"defaultMode":"stacked","autoTriggerMode":"stacked","autoTriggerTokens":32000}' # ืชืฆื•ื’ื” ืžืงื“ื™ืžื” ืฉืœ ืžื˜ืขืŸ RTK/stacked ืžืกื•ื™ื curl -X POST http://localhost:20128/api/compression/preview \ -H "Content-Type: application/json" \ -d '{"mode":"rtk","messages":[{"role":"tool","content":"npm test output here"}]}' # ื”ืฆื’ืช ื—ื‘ื™ืœื•ืช ื”ืžืกื ื ื™ื ืฉืœ RTK curl http://localhost:20128/api/context/rtk/filters # ื‘ื“ื™ืงืช RTK ื™ืฉื™ืจื•ืช ืขื ืžื˜ื-ื ืชื•ื ื™ื ืื•ืคืฆื™ื•ื ืœื™ื™ื ืฉืœ ื”ืคืงื•ื“ื” curl -X POST http://localhost:20128/api/context/rtk/test \ -H "Content-Type: application/json" \ -d '{"command":"npm test","text":"FAIL tests/example.test.ts\nError: boom"}' ``` --- ## ืžื” ืžื•ื’ืŸ ืžื ื•ืข ื”ื“ื—ื™ืกื” **ืชืžื™ื“ ืžืฉืžืจ:** - โœ… ื‘ืœื•ืงื™ ืงื•ื“ (ืžื’ื•ื“ืจื™ื ื•ื‘ืชื•ืš ื”ืฉื•ืจื”) - โœ… ื›ืชื•ื‘ื•ืช URL ื•ื ืชื™ื‘ื™ ืงื‘ืฆื™ื - โœ… ืžื‘ื ื™ JSON ื•ื ืชื•ื ื™ื ืžื•ื‘ึฐื ื™ื - โœ… ืžื–ื”ื™ื ื•ืืกื™ืžื•ื ื™ื ื˜ื›ื ื™ื™ื ืžื•ื’ื ื™ื - โœ… ื‘ื™ื˜ื•ื™ื™ื ืžืชืžื˜ื™ื™ื - โœ… ื”ื’ื“ืจื•ืช ืฉืœ ืงืจื™ืื•ืช ืœื›ืœื™ื/ืคื•ื ืงืฆื™ื•ืช - โœ… ื”ื ื—ื™ื•ืช ืžืขืจื›ืช (ื‘ืžืฆื‘ Lite) ืฉื—ื–ื•ืจ ื”ืคืœื˜ ื”ื’ื•ืœืžื™ ืฉืœ RTK ืžืฉื—ื™ืจ ืžืคืชื—ื•ืช API ื ืคื•ืฆื™ื, ืืกื™ืžื•ื ื™ bearer, ืืกื™ืžื•ื ื™ Slack, ืžืคืชื—ื•ืช ื’ื™ืฉื” ืฉืœ AWS, ืกื™ืกืžืื•ืช, ืืกื™ืžื•ื ื™ื ื•ืกื•ื“ื•ืช ืœืคื ื™ ืฉืžืฉื”ื• ื ืฉืžืจ. --- ## ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ื“ื—ื™ืกื” ื›ืœ ื‘ืงืฉื” ื“ื—ื•ืกื” ื›ื•ืœืœืช ื ืชื•ื ื™ื ืกื˜ื˜ื™ืกื˜ื™ื™ื ื‘ื™ื•ืžื ื™ ื”ืฉืจืช: ```json { "originalTokens": 47200, "compressedTokens": 40120, "savingsPercent": 15.0, "techniquesUsed": ["collapseWhitespace", "dedupSystemPrompt"], "mode": "lite", "engine": "caveman", "compressionComboId": "coding-agent-stack", "durationMs": 0.8, "rtkRawOutputPointers": [] } ``` --- ## ืžืคืช ื”ื“ืจื›ื™ื ืœืคื™ ืฉืœื‘ื™ื | ืฉืœื‘ | ืžืฆื‘ื™ื | ืกื˜ื˜ื•ืก | | ------ | -------------------------------------------------------------------------------------------------------------------------------- | ------- | | ืฉืœื‘ 1 | Off, Lite | โœ… ื”ื•ืฉืง | | ืฉืœื‘ 2 | Standard, Aggressive, Ultra | โœ… ื”ื•ืฉืง | | ืฉืœื‘ 3 | RTK, Stacked, Compression Combos | โœ… ื”ื•ืฉืง | | ืฉืœื‘ 4 | Output Styles, SLM-tier Ultra, ืขืจื›ืช ื”ืขืจื›ื” | โœ… ื”ื•ืฉืง | | ืฉืœื‘ 4C | ืชืงืฆื™ื‘ ื”ืงืฉืจ ืื“ืคื˜ื™ื‘ื™ ("ื—ื•ื’ื”") โ€” ืžื ื•ืข ื—ื™ืฉื•ื‘ + API (`contextBudget` ื‘-`PUT /api/settings/compression`) + ืคืงื“ื™ ืžืฆื‘/ืžื“ื™ื ื™ื•ืช ื‘ืœื•ื— ื”ื‘ืงืจื” | โœ… ื”ื•ืฉืง | --- ## ืชื•ื“ื•ืช ื›ืœืœื™ ื”ื“ื—ื™ืกื” ืฉืœ ืžืฆื‘ Standard ื ื•ืฆืจื• ื‘ื”ืฉืจืืช **[Caveman](https://github.com/JuliusBrussee/caveman)** ืžืืช **[JuliusBrussee](https://github.com/JuliusBrussee)** (โญ 51K+) โ€” ื”ืคืจื•ื™ืงื˜ ื”ื•ื•ื™ืจืืœื™ "ืœืžื” ืœื”ืฉืชืžืฉ ื‘ื”ืจื‘ื” ืืกื™ืžื•ื ื™ื ื›ืฉืžืขื˜ ืืกื™ืžื•ื ื™ื ืขื•ืฉื™ื ืืช ื”ืขื‘ื•ื“ื”". Caveman ืžื“ื•ื•ื— ืขืœ `~75%` ืคื—ื•ืช ืืกื™ืžื•ื ื™ ืคืœื˜, ื—ื™ืกื›ื•ืŸ ืžืžื•ืฆืข ืฉืœ `65%` ื‘ืคืœื˜ ื‘ืžื“ื“ื™ ื‘ื™ืฆื•ืขื™ื, ื˜ื•ื•ื— ื—ื™ืกื›ื•ืŸ ื‘ืคืœื˜ ืฉืœ `22-87%` ื•ื›ืœื™ ืœื“ื—ื™ืกืช ืงืœื˜ ื‘ื”ื™ืงืฃ ืฉืœ `~46%`. ืžืฆื‘ RTK ื ื•ืฆืจ ื‘ื”ืฉืจืืช **[RTK - Rust Token Killer](https://github.com/rtk-ai/rtk)** ืžืืช **[RTK AI](https://github.com/rtk-ai)** โ€” ืคืจื•ื™ืงื˜ ืขืชื™ืจ ื‘ื™ืฆื•ืขื™ื ืœื“ื—ื™ืกืช ืคืœื˜ ืคืงื•ื“ื•ืช ืขื‘ื•ืจ ืžืกื•ืฃ, ื‘ื ื™ื™ื”, ื‘ื“ื™ืงื•ืช, git ื•ืกื™ื ื•ืŸ ืคืœื˜ ืฉืœ ื›ืœื™ื. RTK ืžื“ื•ื•ื— ืขืœ ื—ื™ืกื›ื•ืŸ ืฉืœ `60-90%`, ื›ืืฉืจ ื”ืคืขืœืช ื”ื“ื•ื’ืžื” ื‘-README ืฉืœื• ืžืฆื™ื’ื” ื—ื™ืกื›ื•ืŸ ืฉืœ `~80%`. --- ## ืžืขืจื›ื•ืช ื“ื—ื™ืกื” ืžืชืงื“ืžื•ืช ืžืขื‘ืจ ืœ-7 ื”ืžืฆื‘ื™ื ืฉืชื•ืืจื• ืœืขื™ืœ (ืงื•ื“ ื”ืžืงื•ืจ ืžืงื‘ืœ ื’ื ืืช ื”ืžืฆื‘ื™ื `codex-responses` ื•- `omniglyph`, ืฉืื™ื ื ืžื›ื•ืกื™ื ื‘ืžื“ืจื™ืš ื–ื”), ื”ืกืขื™ืคื™ื ื”ื‘ืื™ื ืขื•ืกืงื™ื ื‘ืชื›ื•ื ื•ืช ืฉืคื•ืขืœื•ืช ื‘ืชื•ืš ืžืฆื‘ื™ื ืืœื” ืื• ืœืฆื™ื“ื: ื“ื—ื™ืกืช ืชื•ืฆืื•ืช ื›ืœื™ื ื•ื™ื™ืฉื•ืŸ ื”ื“ืจื’ืชื™ ื”ื ืฉืœื‘ื™ื 1 ื•-2 ืฉืœ ื”ืžื ื•ืข ื”ืื’ืจืกื™ื‘ื™ (ืžืฆื‘ Aggressive ื•ืฉืœื‘ `aggressive` ืฉืœ ืฆื™ื ื•ืจ ืขื™ื‘ื•ื“ ืžื•ืขืจื), ืฆื™ื ื•ืจ ื”ืขื™ื‘ื•ื“ ื”ืžื•ืขืจื ื”ื•ื ื”ืื•ืคืŸ ืฉื‘ื• ืžืฆื‘ Stacked ืคื•ืขืœ, ื“ื—ื™ืกื” ืžื•ื“ืขืช ืœืžื˜ืžื•ืŸ ืžืฉื ืžื›ืช ืืช `aggressive` ื•ืืช `ultra` ืœ-`standard` ืขื‘ื•ืจ ืกืคืงื™ื ื”ืžืฉืชืžืฉื™ื ื‘ืžื˜ืžื•ืŸ ื›ืืฉืจ ื”ื“ื—ื™ืกื” ืžื•ืคืขืœืช, ื•ืžืฆื‘ ืคืœื˜ ืื™ืฉ ืžืขืจื•ืช ื•ืกื’ื ื•ื ื•ืช ืคืœื˜ ื”ื ื”ื•ืจืื•ืช ืื•ืคืฆื™ื•ื ืœื™ื•ืช ืœืคืจื•ืžืคื˜ ื”ืžืขืจื›ืช, ื”ืžื•ืฉื‘ืชื•ืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืฉืžืขืฆื‘ื•ืช ืืช ืคืœื˜ ื”ืžื•ื“ืœ ื‘ืžืงื•ื ืœื“ื—ื•ืก ืืช ื”ื‘ืงืฉื”. ### ื“ื—ื™ืกื” ืžื•ื“ืขืช ืœืžื˜ืžื•ืŸ ืกืคืงื™ื ืžืกื•ื™ืžื™ื (ื›ืžื• Anthropic ืขื ืฉืžื™ืจืช ืคืจื•ืžืคื˜ื™ื ื‘ืžื˜ืžื•ืŸ) ืชื•ืžื›ื™ื ื‘**ืฉืžื™ืจืช ืคืจื•ืžืคื˜ื™ื ื‘ืžื˜ืžื•ืŸ**, ืฉืžืืคืฉืจืช ืœื”ื ืœืฉืžื•ืจ ื—ืœืงื™ื ืžื”ืคืจื•ืžืคื˜ ื‘ืžื˜ืžื•ืŸ ื›ื“ื™ ืœื”ืคื—ื™ืช ืขืœื•ื™ื•ืช ื•ื–ืžืŸ ื”ืฉื”ื™ื”. ื›ืืฉืจ ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ ืžื•ืคืขืœืช, ื“ื—ื™ืกื” ืื’ืจืกื™ื‘ื™ืช ืขืœื•ืœื” ืœืžืขืฉื” **ืœืคื’ื•ืข** ื‘ื‘ื™ืฆื•ืขื™ื ืžื›ื™ื•ื•ืŸ ืฉื”ื™ื ืžืฉื ื” ืืช ื”ื˜ื•ืงื ื™ื ื”ืฉืžื•ืจื™ื ื‘ืžื˜ืžื•ืŸ ื•ื‘ื›ืš ืžื‘ื˜ืœืช ืืช ืชื•ืงืฃ ื”ืžื˜ืžื•ืŸ. ื”ืžื•ื“ื•ืœ `cachingAware.ts` ืคื•ืชืจ ื–ืืช ื‘ืืžืฆืขื•ืช **ื–ื™ื”ื•ื™ ื”ืงืฉืจ ืฉืœ ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ** ื•**ื”ืชืืžืช ืืกื˜ืจื˜ื’ื™ื™ืช ื”ื“ื—ื™ืกื”** ื‘ื”ืชืื. #### ื›ื™ืฆื“ ื–ื” ืขื•ื‘ื“ 1. **ื–ื™ื”ื•ื™ ื”ืงืฉืจ ืฉืœ ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ** โ€” ืกื•ืจืง ืืช ื’ื•ืฃ ื”ื‘ืงืฉื” ืœืื™ืชื•ืจ ืกืžื ื™ `cache_control` 2. **ื–ื™ื”ื•ื™ ืกืคืงื™ื ื”ืชื•ืžื›ื™ื ื‘ืžื˜ืžื•ืŸ** โ€” ื‘ื•ื“ืง ืื ืกืคืง ื”ื™ืขื“ ืชื•ืžืš ื‘ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ 3. **ื”ืชืืžืช ื”ืืกื˜ืจื˜ื’ื™ื”** โ€” ืžืฉื ืžืš ืืช `aggressive`/`ultra` ืœ-`standard` ืขื‘ื•ืจ ืกืคืงื™ื ื”ืชื•ืžื›ื™ื ื‘ืžื˜ืžื•ืŸ 4. **ื“ื™ืœื•ื’ ืขืœ ืคืจื•ืžืคื˜ ื”ืžืขืจื›ืช** โ€” ืคืจื•ืžืคื˜ื™ื ืฉืœ ื”ืžืขืจื›ืช ื ืฉืžืจื™ื ื‘ื“ืจืš ื›ืœืœ ื‘ืžื˜ืžื•ืŸ, ื•ืœื›ืŸ ืื™ืŸ ืœื“ื—ื•ืก ืื•ืชื ืคื•ื ืงืฆื™ื™ืช ื”ืขื–ืจ ืฉืœ ื”ืืกื˜ืจื˜ื’ื™ื” ืžื—ื–ื™ืจื” ื’ื ื“ื’ืœ `deterministicOnly`, ืืš ื‘ื•ื ื” ื”ืชื•ื›ื ื™ืช ืžืฉืชืžืฉ ืจืง ื‘ืืกื˜ืจื˜ื’ื™ื” โ€” ื ื›ื•ืŸ ืœื”ื™ื•ื ืฉื•ื ืจื›ื™ื‘ ื‘ื”ืžืฉืš ื”ืชื”ืœื™ืš ืื™ื ื• ืงื•ืจื ืืช ื”ื“ื’ืœ. #### ื“ื•ื’ืžืช ืงื•ื“ ```ts import { detectCachingContext, getCacheAwareStrategy, } from "@omniroute/open-sse/services/compression/cachingAware"; const body = { model: "anthropic/claude-sonnet-4.5", messages: [{ role: "user", content: "Hello" }], cache_control: { type: "ephemeral" }, // โ† ืกืžืŸ ืžื˜ืžื•ืŸ }; const ctx = detectCachingContext(body, { provider: "anthropic" }); // โ†’ { hasCacheControl: true, provider: "anthropic", targetFormat: null, isCachingProvider: true } const strategy = getCacheAwareStrategy("aggressive", ctx); // โ†’ { strategy: "standard", skipSystemPrompt: true, deterministicOnly: true } ``` #### ืžืชื™ ืœื”ืฉืชืžืฉ ื“ื—ื™ืกื” ืžื•ื“ืขืช ืœืžื˜ืžื•ืŸ **ืžื•ืคืขืœืช ืชืžื™ื“** โ€” ืื™ืŸ ืฆื•ืจืš ื‘ื”ื’ื“ืจื”. ื”ื™ื ื ื›ื ืกืช ืœืคืขื•ืœื” ื‘ื›ืœ ืคืขื ืฉื”ื“ื—ื™ืกื” ืžื•ืคืขืœืช ื•ืกืคืง ื”ื™ืขื“ ืชื•ืžืš ื‘ืฉืžื™ืจืช ืคืจื•ืžืคื˜ื™ื ื‘ืžื˜ืžื•ืŸ (Anthropic, OpenAI, ื•ื›ื“ื•ืžื”); ืกืžื ื™ `cache_control` ืžืคื•ืจืฉื™ื ืื™ื ื ื ื“ืจืฉื™ื โ€” ืกืคืง ื”ืชื•ืžืš ื‘ืžื˜ืžื•ืŸ ืœื‘ื“ื• ืžืคืขื™ืœ ืืช ื”ืฉื ืžื•ืš, ื•ืกืžื ื™ื ืœื‘ื“ื ืœืขื•ืœื ืื™ื ื ืขื•ืฉื™ื ื–ืืช (ื–ื™ื”ื•ื™ ื”ืกืžื ื™ื ืžื–ื™ืŸ ื˜ืœืžื˜ืจื™ื™ืช ืžื˜ืžื•ืŸ, ื•ืœื ืืช ื”ื—ืœื˜ืช ื”ืืกื˜ืจื˜ื’ื™ื”). ### ื™ื™ืฉื•ืŸ ื”ื“ืจื’ืชื™ ืฉื™ื—ื•ืช ืืจื•ื›ื•ืช ืฆื•ื‘ืจื•ืช ืชื•ืจื•ืช ืจื‘ื™ื ืฉืœ ื”ื•ื“ืขื•ืช, ืืš ืชื•ืจื•ืช ื™ืฉื ื™ื ื ืขืฉื™ื ืคื—ื•ืช ืจืœื•ื•ื ื˜ื™ื™ื. ื”ืžื•ื“ื•ืœ `progressiveAging.ts` **ืžืคื—ื™ืช ืืช ืจืžืช ื”ืคื™ืจื•ื˜ ืฉืœ ื”ื•ื“ืขื•ืช ืœืคื™ ืžืจื—ืง ื”ืชื•ืจ** (ื”ืžืจื—ืง ื ืžื“ื“ ืžืกื•ืฃ ื”ืฉื™ื—ื”). ืขื ื‘ืจื™ืจื•ืช ื”ืžื—ื“ืœ ื”ืžืกื•ืคืงื•ืช (`verbatim: 2, light: 2, moderate: 3`): - **2 ื”ืชื•ืจื•ืช ื”ืื—ืจื•ื ื™ื (ืžืจื—ืง โ‰ค 2)**: ื ืฉืžืจื™ื ื›ืœืฉื•ื ื - **ืžืจื—ืง 3**: ื“ื—ื™ืกืช ืื™ืฉ ืžืขืจื•ืช (ื”ืกืจืช ืžื™ืœื•ืช ืžื™ืœื•ื™) - **ืžืจื—ืง 4 ื•ืžืขืœื”**: ื”ื•ื“ืขื•ืช ืขื•ื–ืจ ืžืกื•ื›ืžื•ืช; ื”ื•ื“ืขื•ืช ืžืฉืชืžืฉ ืžืฆื•ืžืฆืžื•ืช ืœืฉื•ืจื” ื”ืจืืฉื•ื ื” ืฉืœื”ืŸ, ืขื“ 120 ืชื•ื•ื™ื; ืชืคืงื™ื“ื™ื ืื—ืจื™ื ื ื•ืชืจื™ื ืœืœื ืฉื™ื ื•ื™. ืคืจื•ืžืคื˜ื™ื ืฉืœ ื”ืžืขืจื›ืช, ื”ื•ื“ืขื•ืช ืฉื›ื‘ืจ ืขื‘ืจื• ื™ื™ืฉื•ืŸ ื•ื”ื•ื“ืขืช ื”ืžืฉืชืžืฉ ื”ืื—ืจื•ื ื” ื ืฉืžืจื™ื ืชืžื™ื“ ื›ืœืฉื•ื ื ืœืœื ืงืฉืจ ืœืžืจื—ืง. ื“ื‘ืจ ืื™ื ื• ื ืžื—ืง ืœื—ืœื•ื˜ื™ืŸ, ื•ื”ื˜ื•ื•ื— `light` ืื™ื ื• ื ื’ื™ืฉ ืขื ื‘ืจื™ืจื•ืช ื”ืžื—ื“ืœ ื”ืžืกื•ืคืงื•ืช (`light` ืฉื•ื•ื” ืœ-`verbatim`). #### ื“ื•ื’ืžืช ืงื•ื“ ```ts import { applyAging } from "@omniroute/open-sse/services/compression/progressiveAging"; const messages = [ { role: "system", content: "You are a helpful assistant" }, { role: "user", content: "What is 2+2?" }, { role: "assistant", content: "4" }, // ... 50 ืชื•ืจื•ืช ื ื•ืกืคื™ื ... ]; const { messages: aged, saved } = applyAging(messages, { verbatim: 3, // 3 ื”ืชื•ืจื•ืช ื”ืื—ืจื•ื ื™ื: ื›ืœืฉื•ื ื light: 8, // ืžืจื—ืง <= 8: ื“ื—ื™ืกื” ืงืœื” moderate: 20, // ืžืจื—ืง <= 20: ื“ื—ื™ืกืช ืื™ืฉ ืžืขืจื•ืช fullSummary: 5, // ื ื“ืจืฉ ืขืœ ื™ื“ื™ ื”ื˜ื™ืคื•ืก, ืืš ืื™ื ื• ื ืงืจื ืขืœ ื™ื“ื™ ืงื•ื“ ื—ืœื•ืงืช ื”ื˜ื•ื•ื—ื™ื // ืžืจื—ืง > 20: ืžืกื•ื›ื (ืขื•ื–ืจ) / ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ื ืฉืžืจืช (ืžืฉืชืžืฉ) }); // saved = ืžืกืคืจ ื”ื˜ื•ืงื ื™ื ืฉื ื—ืกื›ื• ``` #### ืžืชื™ ืœื”ืฉืชืžืฉ ื™ื™ืฉื•ืŸ ื”ื“ืจื’ืชื™ **ืžื•ืคืขืœ ืชืžื™ื“** ื‘ืžืฆื‘ `aggressive` โ€” ื–ื”ื• ืฉืœื‘ 2 ืฉืœ `compressAggressive()`. ืžืฆื‘ Ultra ืื™ื ื• ืžืคืขื™ืœ ืื•ืชื•. ื”ื•ื ื™ืขื™ืœ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ: - ื”ืคืขืœื•ืช ืชื›ื ื•ืช ืžืžื•ืฉื›ื•ืช - ืฉื™ื—ื•ืช ื”ื ืžืฉื›ื•ืช ืžืกืคืจ ื™ืžื™ื - ืชื”ืœื™ื›ื™ ืขื‘ื•ื“ื” ืกื•ื›ื ื™ื™ื ืขื ืงืจื™ืื•ืช ืจื‘ื•ืช ืœื›ืœื™ื ### ืžืฆื‘ ืคืœื˜ ืื™ืฉ ืžืขืจื•ืช ืžืฆื‘ ืคืœื˜ ืื™ืฉ ืžืขืจื•ืช ืžื•ืกื™ืฃ **ื”ื•ืจืื•ืช ืœืคืจื•ืžืคื˜ ื”ืžืขืจื›ืช** ื”ืžื‘ืงืฉื•ืช ืžื”ืžื•ื“ืœ ืขืฆืžื• ืœื”ืคื™ืง ืคืœื˜ ืชืžืฆื™ืชื™ โ€” ื”ืจืžื” `lite` ืžื‘ืงืฉืช ืชืฉื•ื‘ื•ืช ืชืžืฆื™ืชื™ื•ืช ื”ืฉื•ืžืจื•ืช ืขืœ ืžืฉืคื˜ื™ื ืžืœืื™ื, `full` ืžื‘ืงืฉืช ืžืžื ื• "ืœื”ืฉื™ื‘ ื‘ืชืžืฆื™ืชื™ื•ืช ื›ืžื• ืื™ืฉ ืžืขืจื•ืช ื—ื›ื", ื•-`ultra` ืžื‘ืงืฉืช ืคืœื˜ ื˜ืœื’ืจืคื™; ื”ื”ื•ืจืื•ืช ืจืง ืžื‘ืงืฉื•ืช ื–ืืช ื•ืื™ื ืŸ ื™ื›ื•ืœื•ืช ืœื”ื‘ื˜ื™ื— ื–ืืช. ื‘ืงืฉื•ืช ืžืงื‘ืœื•ืช ืื•ืชืŸ ื“ืจืš `applyOutputStyles()` (`open-sse/services/compression/outputStyles/apply.ts`): ืชื—ื™ืœื” `open-sse/handlers/chatCore.ts` ืžื›ืจื™ืข ืืช ื”ื‘ื—ื™ืจื” ื‘ืืžืฆืขื•ืช ืฉื›ื‘ืช ื”ืชืื™ืžื•ืช ืœืื—ื•ืจ (`resolveOutputStyleSelection()` ื‘ืชื•ืš `open-sse/services/compression/outputStyles/backCompat.ts`), ืืฉืจ, ื›ืœ ืขื•ื“ `outputStyles` ืจื™ืง, ืžืžืคื” `cavemanOutputMode` ืžื•ืคืขืœ ืœืกื’ื ื•ืŸ ื”ืคืœื˜ `terse-prose` ื‘ืขื•ืฆืžื” `cavemanOutputMode.intensity` (ืจืื• ืชืื™ืžื•ืช ืœืื—ื•ืจ ืœื”ืœืŸ); ื‘ื—ื™ืจืช `outputStyles` ืฉืื™ื ื” ืจื™ืงื” ืžืฉืžืฉืช ื›ืคื™ ืฉื”ื™ื, ื•ืื– ืœ-`cavemanOutputMode.enabled` ื•ืœ-`intensity` ืื™ืŸ ื”ืฉืคืขื”, ื‘ืขื•ื“ ืฉื”ืžืชื’ `autoClarity` ืฉืœื” ืขื“ื™ื™ืŸ ื—ืœ. ื”ืงื•ื‘ืฅ `outputMode.ts` ืžื›ื™ืœ ืืช ื˜ืงืกื˜ื™ ื”ื”ื•ืจืื•ืช (`CAVEMAN_INSTRUCTION_BY_LANGUAGE`), ืืช ืขืงื™ืคืช ื”ืชื•ื›ืŸ ื•ืืช ืคื•ื ืงืฆื™ื™ืช ื”ืขื–ืจ ืœืžื™ืงื•ื ืฉื‘ื” ืžืฉืชืžืฉืช ื”ื”ื–ืจืงื”; ืœืžื–ืจื™ืง `applyCavemanOutputMode()` ืฉืœื• ืขืฆืžื• ืื™ืŸ ื’ื•ืจื ืงื•ืจื ื‘ืกื‘ื™ื‘ืช ื”ื™ื™ืฆื•ืจ. #### ื›ื™ืฆื“ ื–ื” ืขื•ื‘ื“ ืžืฆื‘ ื–ื” ืื™ื ื• ื“ื•ื—ืก ืืช ื”ืงืœื˜. ื”ื•ื ืžื•ืกื™ืฃ ื‘ืœื•ืง ื”ื•ืจืื•ืช ืœื”ื ื—ื™ื™ืช ื”ืžืขืจื›ืช (ืจืื• ื›ื™ืฆื“ ื”ื”ื–ืจืงื” ืคื•ืขืœืช ืœื”ืœืŸ), ื•ื›ืœ ืžืฆื‘ ื“ื—ื™ืกืช ืงืœื˜ ืฉื ื‘ื—ืจ ืขื‘ื•ืจ ื”ื‘ืงืฉื” ืขื“ื™ื™ืŸ ืžื•ืคืขืœ ืœืื—ืจ ืžื›ืŸ, ืขืœ ื’ื•ืฃ ื”ื‘ืงืฉื” ืฉื›ืขืช ืžื›ื™ืœ ืืช ื”ื‘ืœื•ืง. ืœืคื ื™ ืกืขื™ืฃ ื”ื’ื‘ื•ืœื•ืช ื”ืžืฉื•ืชืคื™ื ืฉื‘ื• ืžืกืชื™ื™ืžืช ื›ืœ ืจืžื”, ืจืžืช `full` ื‘ืื ื’ืœื™ืช ืื•ืžืจืช: > "ื”ืฉื‘ ื‘ืชืžืฆื™ืชื™ื•ืช ื›ืžื• ืื™ืฉ ืžืขืจื•ืช ื—ื›ื. ื”ืฉืžื˜ ืชื•ื•ื™ื•ืช ื™ื™ื“ื•ืข (a/an/the), ืžื™ืœื•ืช ืžื™ืœื•ื™ (just/really/basically/actually/simply), ื“ื‘ืจื™ ื ื™ืžื•ืก ื•ื”ืกืชื™ื™ื’ื•ื™ื•ืช. ืงื˜ืขื™ ืžืฉืคื˜ื™ื ืžื•ืชืจื™ื. ื”ืฉืชืžืฉ ื‘ืžื™ืœื™ื ื ืจื“ืคื•ืช ืงืฆืจื•ืช (big ื•ืœื extensive,โ€ fix ื•ืœื implement). ืฉืžื•ืจ ื‘ืžื“ื•ื™ืง ืขืœ ื›ืœ ื”ืชื•ื›ืŸ ื”ื˜ื›ื ื™, ื”ืงื•ื“, ื”ืฉื’ื™ืื•ืช, ื›ืชื•ื‘ื•ืช ื”-URL ื•ื”ืžื–ื”ื™ื." ืžืฆื‘ ื–ื” ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ: - ื™ืฆื™ืจืช ืงื•ื“ (ืคืœื˜ ืชืžืฆื™ืชื™ ื™ื•ืชืจ = ืคื—ื•ืช ื˜ื•ืงื ื™ื) - ืฉืืœื•ืช ื•ืชืฉื•ื‘ื•ืช ืžื”ื™ืจื•ืช (ืื™ืŸ ืฆื•ืจืš ื‘ื”ืกื‘ืจื™ื ืžืคื•ืจื˜ื™ื) - ืขื™ื‘ื•ื“ ื‘ืืฆื•ื•ื” (ืœืžื™ืฆื•ื™ ื”ืชืคื•ืงื”) #### ืžืชื™ ืœื”ืฉืชืžืฉ ืžืฆื‘ ืคืœื˜ ืื™ืฉ ืžืขืจื•ืช ื”ื•ื **ืื•ืคืฆื™ื•ื ืœื™**. ื›ืืฉืจ ื”ื“ื—ื™ืกื” ืžื•ืคืขืœืช (`enabled: true`, ื”ืžืชื’ ื”ืจืืฉื™ ื‘ื“ืฃ ื”ื’ื“ืจื•ืช ื”ื“ื—ื™ืกื”), ื”ืคืขื™ืœื• ืื•ืชื• ื‘ืืžืฆืขื•ืช `cavemanOutputMode.enabled`;โ€ `intensity` ื‘ื•ื—ืจ `lite`,โ€ `full` ืื• `ultra`: ```json { "enabled": true, "cavemanOutputMode": { "enabled": true, "intensity": "full" } } ``` ืžืชื’ **ืžืฆื‘ ื”ืคืœื˜** ืฉืœ ืฉื™ืœื•ื‘ ื“ื—ื™ืกื” (`outputMode`, ื›ืืฉืจ ื”ืจืžื” ื ืžืฆืืช ื‘-`outputModeIntensity`) ืžื’ื“ื™ืจ ืืช ืื•ืชื• ืžืชื’ ืขื‘ื•ืจ ื”ื‘ืงืฉื•ืช ืฉืขืœื™ื”ืŸ ื”ืฉื™ืœื•ื‘ ื—ืœ, ื•ื›ืœื™ ื”-MCP `omniroute_set_compression_engine` ื›ื•ืชื‘ ืื•ืชื• ื“ืจืš ื”ืืจื’ื•ืžื ื˜ ื”ื‘ื•ืœื™ืื ื™ `outputMode` ืฉืœื•. ื‘ื—ื™ืจื” ืฉืื™ื ื” ืจื™ืงื” ื‘-`outputStyles` ืžืงื‘ืœืช ืงื“ื™ืžื•ืช ืขืœ ืคื ื™ ืžืชื’ ื–ื”. ื‘ืœื•ื— ื”ื‘ืงืจื”, ื”ืคืขืœืช ืกื’ื ื•ืŸ ื”ืคืœื˜ **ืคืจื•ื–ื” ืชืžืฆื™ืชื™ืช** ืžื–ืจื™ืงื” ืืช ืื•ืชื• ื‘ืœื•ืง (ืจืื• ืกื’ื ื•ื ื•ืช ืคืœื˜ ืœื”ืœืŸ). ### ืกื’ื ื•ื ื•ืช ืคืœื˜ (ืงื˜ืœื•ื’) ืžืฆื‘ ืคืœื˜ ืื™ืฉ ื”ืžืขืจื•ืช ืฉืœืขื™ืœ ื”ื•ื **ื”ื ืชื™ื‘ ื”ื™ืฉืŸ ืฉืœ ืกื’ื ื•ืŸ ื™ื—ื™ื“**. ืฉืœื‘ 4 ื”ื›ืœื™ืœ ืื•ืชื• ืœืงื˜ืœื•ื’ ืฉืœ ืกื’ื ื•ื ื•ืช ืคืœื˜ ื”ื ื™ืชื ื™ื ืœื”ืจื›ื‘ื”: `OUTPUT_STYLE_CATALOG` ื‘ืงื•ื‘ืฅ `open-sse/services/compression/outputStyles/catalog.ts`. ื›ืœ ืกื’ื ื•ืŸ ื”ื•ื ื”ื•ืจืื” ื‘ื”ื ื—ื™ื™ืช ื”ืžืขืจื›ืช ื”ืžื‘ืงืฉืช ืžื”ืžื•ื“ืœ ืขืฆืžื• ืœื”ืคื™ืง ืคืœื˜ ื—ืกื›ื•ื ื™ ื™ื•ืชืจ; ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืกื’ื ื•ื ื•ืช ื™ื—ื“, ื•ื”ื ืžื•ื–ืจืงื™ื ืœืคื™ ืกื“ืจ ื”ืงื˜ืœื•ื’. | ืกื’ื ื•ืŸ | `id` | ืžื” ื”ื•ื ืขื•ืฉื” | ืฉืคื•ืช ื”ื”ื•ืจืื•ืช | | -------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | ืคืจื•ื–ื” ืชืžืฆื™ืชื™ืช | `terse-prose` | ื”ืฉืžื˜ืช ืžื™ืœื•ืช ืžื™ืœื•ื™/ืชื•ื•ื™ื•ืช ื™ื™ื“ื•ืข/ื”ืกืชื™ื™ื’ื•ื™ื•ืช; ืฉืžื™ืจื” ืžื“ื•ื™ืงืช ืขืœ ื”ืชื•ื›ืŸ ื”ื˜ื›ื ื™. ืื•ืชื• ื˜ืงืกื˜ ื›ืžื• ืžืฆื‘ ืคืœื˜ ืื™ืฉ ื”ืžืขืจื•ืช ื”ื™ืฉืŸ (ืžื•ืคื ื” ื•ืœื ื ื›ืชื‘ ืžื—ื“ืฉ). | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | ืคื—ื•ืช ืงื•ื“ | `less-code` | ืกื•ืœื YAGNI: ื”ืฉื™ื ื•ื™ ื”ืคืขื™ืœ ื”ืงื˜ืŸ ื‘ื™ื•ืชืจ, ืœืœื ื”ืคืฉื˜ื•ืช ืฉืœื ื”ืชื‘ืงืฉื•. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | ืงื•ืงื• (ืžืคืชื— ื‘ื›ื™ืจ ืขืฆืœืŸ) | `ponytail` | "ื”ืงื•ื“ ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ื”ื•ื ื”ืงื•ื“ ืฉืžืขื•ืœื ืœื ื ื›ืชื‘": ืฉื™ืžื•ืฉ ื—ื•ื–ืจ > ื›ืชื™ื‘ื” ืžื—ื“ืฉ, ื’ื•ืจื ืฉื•ืจืฉ > ืชืกืžื™ืŸ, ื”-diff ื”ืคืขื™ืœ ื”ืงืฆืจ ื‘ื™ื•ืชืจ. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | ื™ืฉ ืœื™ ADHD (ืคืขื•ืœื” ืชื—ื™ืœื”) | `i-have-adhd` | ื”ืคืขื•ืœื” ืชื—ื™ืœื” (ืคืงื•ื“ื”/ื ืชื™ื‘/ืงื˜ืข ืงื•ื“ ืœืคื ื™ ื”ืคืจื•ื–ื”), ืฉืœื‘ื™ื ืžืžื•ืกืคืจื™ื ื•ืžื•ื’ื‘ืœื™ื, ืฆืขื“ ื”ืžืฉืš ืงื•ื ืงืจื˜ื™ ืื—ื“, ืœืœื ื”ืงื“ืžื”/ืกื™ื›ื•ื/ื“ื‘ืจื™ ืกื™ื•ื. ืžื•ืชืื ืžืชื•ืš [ayghri/i-have-adhd](https://github.com/ayghri/i-have-adhd) (MIT). | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | ืžืกื ืŸ ืžืžืฉืง ืžืฉืชืžืฉ ื ื’ื“ ืชื•ื›ืŸ ื™ืจื•ื“ | `antislop-ui` | ื›ืœ ื˜ื›ื ื™ืงื” ื—ื–ื•ืชื™ืช ื—ื™ื™ื‘ืช ืœืขื‘ื•ืจ ืžื‘ื—ืŸ ืชื›ืœื™ืช (ื”ื™ืจืจื›ื™ื”, ื–ื”ื•ืช, ืงืจื™ืื•ืช); ืœืœื ืžืขื‘ืจื™ ืฆื‘ืข/ื–ื›ื•ื›ื™ืช/ื–ื•ื”ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืขื ืคืœื˜ืช ืฆื‘ืขื™ื ืžื•ื’ื‘ืœืช ื•ืœืœื ืคืจื™ืกื•ืช ืชื‘ื ื™ืชื™ื•ืช. ืฉื ื™ ืกื’ื ื•ื ื•ืช ื”ืื ื˜ื™-ืชื•ื›ืŸ-ื”ื™ืจื•ื“ ืžื•ืกื™ืคื™ื ื’ื‘ื•ืœ ื”ืื•ืกืจ ืคืงื“ื™ื ืœื ืคืขื™ืœื™ื / ื˜ืขื ื•ืช ืžื•ืžืฆืื•ืช. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | ืžืกื ืŸ ื ื’ื“ ืชื•ื›ืŸ ื™ืจื•ื“ ืœื˜ืงืกื˜ ื•ืœืื ืฉื™ื | `antislop-copy` | ื˜ืงืกื˜ ืกืคืฆื™ืคื™ (ืœืœื ืงื• ืžืคืจื™ื“ ืืจื•ืš, ืงืจื™ืื•ืช ื›ืœืœื™ื•ืช ืœืคืขื•ืœื”, ืžื™ืœื•ืช ื‘ืื–ื–, ืกื™ื•ืžื•ืช ืฉืœ ืฆ'ืื˜ื‘ื•ื˜ ืื• ืขื•ื‘ื“ื•ืช ืžื•ืžืฆืื•ืช), ืœืฆื“ ื›ืœืœื™ื ืœืื ืฉื™ื: ื ื™ื’ื•ื“ื™ื•ืช WCAG AA, ืžื™ืงื•ื“ ื’ืœื•ื™, ื ื’ื™ืฉื•ืช ื‘ืžืงืœื“ืช, ืžืฆื‘ื™ ืจื™ืง/ื˜ืขื™ื ื”/ืฉื’ื™ืื” ื•ื”ืชืืžื” ืžื—ื“ืฉ ืœื ื™ื™ื“. | en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi | | CJK ืชืžืฆื™ืชื™ (ๆ–‡่จ€) | `terse-cjk` | ืชืฉื•ื‘ื” ื‘ืจืžื•ืช `full`/`ultra` ื‘ืกื™ื ื™ืช ืงืœืืกื™ืช (ๆ–‡่จ€); ื‘ืจืžืช `lite` ืžืชื‘ืงืฉ ืจืง ืžืขื ื” ืงืฆืจ ืœืœื ืžื™ืœื•ืช ืชืคืงื•ื“, ื“ื‘ืจื™ ื ื™ืžื•ืก ืื• ืงื™ืฉื•ื˜ื™ื. | zh (ืžื•ื’ื‘ืœ ืœืคื™ ืื–ื•ืจ ื•ืฉืคื”, ืจืื• ืœื”ืœืŸ) | ื›ืœ ืกื’ื ื•ืŸ ืžืกืคืง ืฉืœื•ืฉ ืจืžื•ืช ืขื•ืฆืžื” โ€” `lite`,โ€ `full`,โ€ `ultra` โ€” ื•ื›ืœ ืจืžื” ืžืกืชื™ื™ืžืช ื‘ืกืขื™ืฃ ื”ื’ื‘ื•ืœื•ืช ื”ืžืฉื•ืชืคื™ื (`SHARED_BOUNDARIES` ื‘-`outputMode.ts`), ืืฉืจ ืฉื•ืžืจ ื‘ืžื“ื•ื™ืง ืขืœ ื‘ืœื•ืงื™ ืงื•ื“, ื ืชื™ื‘ื™ ืงื‘ืฆื™ื, ืคืงื•ื“ื•ืช, ืฉื’ื™ืื•ืช ื•ื›ืชื•ื‘ื•ืช URL. ื”ื˜ืงืกื˜ื™ื ืฉืœ ืจืžื•ืช `terse-prose` ื•-`terse-cjk` ืžื•ืกื™ืคื™ื ื’ื ืžื–ื”ื™ื ืœืจืฉื™ืžื” ื–ื•. `terse-cjk` ืžื•ื’ื‘ืœ ืœืื–ื•ืจ ื•ืœืฉืคื” `zh` ื‘ืฉื ื™ ืžืงื•ืžื•ืช. ื“ืฃ ื”ื’ื“ืจื•ืช ื”ื“ื—ื™ืกื” ืžืฆื™ื’ ืืช ื”ืฉื•ืจื” ืฉืœื• ืจืง ื›ืืฉืจ ืฉืคืช ืžืžืฉืง ื”ืžืฉืชืžืฉ ืฉืœ ืœื•ื— ื”ื‘ืงืจื” ื”ื™ื ืกื™ื ื™ืช (`zh-CN` ืื• `zh-TW`), ื•- `applyOutputStyles()` ืžื–ืจื™ืง ืื•ืชื• ืจืง ื›ืืฉืจ ื”ืฉืคื” ืฉื ืงื‘ืขื” ืขื‘ื•ืจ ื”ื‘ืงืฉื” (ืจืื• ื‘ื—ื™ืจืช ืฉืคื” ืœื”ืœืŸ) ื”ื™ื `zh`. ื”ืกืชืจืช ื”ืฉื•ืจื” ืื™ื ื” ืžื•ื—ืงืช ื‘ื—ื™ืจืช `terse-cjk` ืฉืžื•ืจื”: ืžืžืฉืง ื”-API ืฉืœ ื”ื”ื’ื“ืจื•ืช ืžืงื‘ืœ ื›ืœ ืžื–ื”ื” ืกื’ื ื•ืŸ, ื•ืฉืžื™ืจืช ืกื’ื ื•ื ื•ืช ืื—ืจื™ื ื‘ื“ืฃ ืžืฉืžืจืช ืื•ืชื”. ื‘ื–ืžืŸ ื”ื‘ืงืฉื”, ื‘ื“ื™ืงืช ื”ืฉืคื” ืฉืœ `applyOutputStyles()` ื”ื™ื ืžื’ื‘ืœืช ื”ืื–ื•ืจ ื•ื”ืฉืคื” ื”ื™ื—ื™ื“ื”. #### ื›ื™ืฆื“ ื”ื”ื–ืจืงื” ืคื•ืขืœืช `applyOutputStyles()` (`open-sse/services/compression/outputStyles/apply.ts`) ืคื•ืชืจืช ืืช ื”ื‘ื—ื™ืจื” ืžื•ืœ ื”ืงื˜ืœื•ื’ (ืžื–ื”ื™ื ืœื ืžื•ื›ืจื™ื ื•ืกื’ื ื•ื ื•ืช ืฉืื™ื ื ืชื•ืืžื™ื ืœืื–ื•ืจ ื•ืœืฉืคื” ืžื•ืฉืžื˜ื™ื, ื•ืœืขื•ืœื ืื™ื ื ื’ื•ืจืžื™ื ืœืฉื’ื™ืื”; ื‘ื—ื™ืจื” ืฉืœื ื ืคืชืจืช ืœืฉื•ื ืกื’ื ื•ืŸ ืžืฉืื™ืจื” ืืช ื’ื•ืฃ ื”ื‘ืงืฉื” ืœืœื ืฉื™ื ื•ื™, ืชื•ืš ื“ื™ืœื•ื’ ื‘ืกื™ื‘ื” `no_styles`), ืžืฉืจืฉืจืช ืืช ื”ื”ื ื—ื™ื•ืช ืฉื ื‘ื—ืจื• ืœืคื™ ืกื“ืจ ื”ืงื˜ืœื•ื’, ืžื•ืกื™ืคื” ืืช ืกืขื™ืฃ ื”ื’ื‘ื•ืœื•ืช **ืคืขื ืื—ืช** (ื•ื›ืŸ ืืช ืกืขื™ืฃ ื”ื‘ื˜ื™ื—ื•ืช, `SAFETY_BOUNDARIES` ืื• ื”ืชืจื’ื•ื ืฉืœื•, ื›ืืฉืจ `less-code` ืื• `ponytail` ื ื‘ื—ืจื™ื), ื•ืžืชื—ื™ืœื” ืืช ื”ื‘ืœื•ืง ื‘ืกืžืŸ ืื™ื“ืžืคื•ื˜ื ื˜ื™ื•ืช ื™ื—ื™ื“ (`[OmniRoute Output Styles]`), ื›ืš ืฉื”ืคืขืœื” ื—ื•ื–ืจืช ืื™ื ื” ืขื•ืฉื” ื“ื‘ืจ. ื›ืืฉืจ ืœืฉืคื” ืฉื ืคืชืจื” (ืจืื• ื‘ื—ื™ืจืช ืฉืคื” ืœื”ืœืŸ) ื™ืฉ ืชืจื’ื•ื, ื”ื”ื ื—ื™ื” ื”ืžืชื•ืจื’ืžืช ืžื•ื–ืจืงืช ื‘ืžืงื•ื ื–ื• ืฉื‘ืื ื’ืœื™ืช. ื‘ื’ื•ืฃ ื‘ืงืฉื” ืขื ืžืขืจืš `messages` ืฉืื™ื ื• ืจื™ืง, ื‘ื“ื™ืงืช ื”ืื™ื“ืžืคื•ื˜ื ื˜ื™ื•ืช ืจืฆื” ืœืคื ื™ ืขืงื™ืคืช ื”ืชื•ื›ืŸ: ื›ืืฉืจ ื”ืกืžืŸ `[OmniRoute Output Styles]` ื›ื‘ืจ ื ืžืฆื ื‘ืฉื“ื” `system` ื‘ืจืžื” ื”ืขืœื™ื•ื ื” (ืžื—ืจื•ื–ืช ืื• ืžืขืจืš ืฉืœ ื‘ืœื•ืงื™ ืชื•ื›ืŸ) ืื• ื‘ื”ื•ื“ืขืช ืžืขืจื›ืช ืขื ืชื•ื›ืŸ ืžืกื•ื’ ืžื—ืจื•ื–ืช, ื’ื•ืฃ ื”ื‘ืงืฉื” ื ื•ืชืจ ืœืœื ืฉื™ื ื•ื™ ื‘ืžืฆื‘ `already_applied` ื•ืœื ืžืชื‘ืฆืขืช ื‘ื“ื™ืงืช ืžื™ืœื•ืช ืžืคืชื—. ืื—ืจืช, ืขืงื™ืคืช ืชื•ื›ืŸ (`shouldBypassCavemanOutputMode()` ื‘ืงื•ื‘ืฅ `open-sse/services/compression/outputMode.ts`) ื‘ื•ื“ืงืช ืืช ื”ื˜ืงืกื˜ ืฉืœ ืฉืœื•ืฉ ื”ื”ื•ื“ืขื•ืช ื”ืื—ืจื•ื ื•ืช, ืœืœื ืงืฉืจ ืœืชืคืงื™ื“ ืฉืœื”ืŸ, ื•ืžื“ืœื’ืช ืขืœ ื”ืกื’ื ื•ื ื•ืช ืขื‘ื•ืจ ื›ืœ ื”ืชื•ืจ ื›ืืฉืจ ื”ื˜ืงืกื˜ ืชื•ืื ืœืžื™ืœื•ืช ื”ืžืคืชื— ืฉืœื” ื‘ื ื•ืฉืื™ ืื‘ื˜ื—ื”, ืคืขื•ืœื” ื‘ืœืชื™ ื”ืคื™ื›ื” ืื• ื”ื‘ื”ืจื”, ืื• ืœืจืฆืฃ ืชืœื•ื™-ืกื“ืจ: `first`, `then`, `after that`, `before`, `rollback` ืื• `backup`, ืฉืื—ืจื™ื”ื, ื‘ืชื•ืš 240 ืชื•ื•ื™ื, ืžื•ืคื™ืขื™ื `delete`, `drop`, `migrate`, `deploy` ืื• `release`. ื”ืขืงื™ืคื” ืคื•ืขืœืช ื›ืœ ืขื•ื“ ื”ืžืชื’ **Auto-Clarity Bypass** (`cavemanOutputMode.autoClarity`, ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ) ืคื•ืขืœ; ื›ื™ื‘ื•ื™ ื”ืžืชื’ ืžื“ืœื’ ืขืœ ื‘ื“ื™ืงืช ืžื™ืœื•ืช ื”ืžืคืชื—. ื›ืืฉืจ ื”ืขืงื™ืคื” ืžืืคืฉืจืช ืœืชื•ืจ ืœืขื‘ื•ืจ, `placeSystemInstruction()` (ื‘ืื•ืชื• ืงื•ื‘ืฅ), ืืฉืจ ืœืขื•ืœื ืื™ื ื” ื™ื•ืฆืจืช `messages[0]` ื—ื“ืฉ, ืžืžืงืžืช ืืช ื”ื‘ืœื•ืง ื‘ืžืงื•ื ื”ืจืืฉื•ืŸ ืžื‘ื™ืŸ ื”ื‘ืื™ื ืฉื”ื™ื ืžื•ืฆืืช: 1. ื”ื•ื“ืขืช ืžืขืจื›ืช ืคื•ืชื—ืช ืขื ืชื•ื›ืŸ ืžืกื•ื’ ืžื—ืจื•ื–ืช: ื”ื‘ืœื•ืง ืžืฆื•ืจืฃ ืœืื—ืจ ื”ื˜ืงืกื˜ ืฉืœื”. 2. ื”ืฉื“ื” `system` ื‘ืจืžื” ื”ืขืœื™ื•ื ื”: ื”ื‘ืœื•ืง ืžืฆื•ืจืฃ ืœืื—ืจ ื”ื˜ืงืกื˜ ืฉืœ ืžื—ืจื•ื–ืช, ืื• ื ื•ืกืฃ ื›ื‘ืœื•ืง ื˜ืงืกื˜ ื—ื“ืฉ ืœืžืขืจืš ืฉืœ ื‘ืœื•ืงื™ ืชื•ื›ืŸ. 3. ื”ื•ื“ืขืช ื”ืžืขืจื›ืช ื”ืžืื•ื—ืจืช ื”ืจืืฉื•ื ื” ืขื ืชื•ื›ืŸ ืžืกื•ื’ ืžื—ืจื•ื–ืช: ื”ื‘ืœื•ืง ืžืฆื•ืจืฃ ืœืื—ืจ ื”ื˜ืงืกื˜ ืฉืœื”. 4. ืืฃ ืื—ื“ ืžื”ืืžื•ืจื™ื ืœืขื™ืœ: ื”ื‘ืœื•ืง ืžื•ื›ื ืก ืœื”ื•ื“ืขืช ืžืขืจื›ืช ื—ื“ืฉื” ื‘ืกื•ืฃ `messages`. ื‘ื’ื•ืฃ ื‘ืงืฉื” ืœืœื ืžืขืจืš `messages` (ืื• ืขื ืžืขืจืš ืจื™ืง), ืœื ืžืชื‘ืฆืขืช ืขืงื™ืคืช ืชื•ื›ืŸ ื•ื”ืฉื“ื” `system` ื‘ืจืžื” ื”ืขืœื™ื•ื ื” ืื™ื ื• ื ื‘ื“ืง. ื”ื‘ืœื•ืง ืžืฆื•ืจืฃ ืœืื—ืจ ื”ื˜ืงืกื˜ ืฉืœ ืฉื“ื” `instructions` ืžืกื•ื’ ืžื—ืจื•ื–ืช, ืืœื ืื ืฉื“ื” ื–ื” ื›ื‘ืจ ืžื›ื™ืœ ืืช ื”ืกืžืŸ `[OmniRoute Output Styles]`, ื•ื‘ืžืงืจื” ื›ื–ื” ื’ื•ืฃ ื”ื‘ืงืฉื” ื ื•ืชืจ ืœืœื ืฉื™ื ื•ื™ ื‘ืžืฆื‘ `already_applied`. ื›ืืฉืจ ืœื’ื•ืฃ ื”ื‘ืงืฉื” ืื™ืŸ ืฉื“ื” `instructions` ืžืกื•ื’ ืžื—ืจื•ื–ืช ืืš ื”ื•ื ืžื›ื™ืœ `input` (ืžื—ืจื•ื–ืช ืื• ืžืขืจืš), ื”ื‘ืœื•ืง ื”ื•ืคืš ืœืขืจืš ืฉืœ `instructions`, ื•ืžื—ืœื™ืฃ ื›ืœ ืขืจืš ืฉืื™ื ื• ืžื—ืจื•ื–ืช ืฉื”ืฉื“ื” ื”ื›ื™ืœ. ื’ื•ืฃ ื‘ืงืฉื” ืฉืื™ืŸ ื‘ื• ืœื ืฉื“ื” `instructions` ืžืกื•ื’ ืžื—ืจื•ื–ืช ื•ืœื `input` ืžืกื•ื’ ืžื—ืจื•ื–ืช ืื• ืžืขืจืš ื ื•ืชืจ ืœืœื ืฉื™ื ื•ื™ ื•ืžื“ื•ืœื’ ื‘ืžืฆื‘ `no_messages`. #### ื›ื™ืฆื“ ืœื”ืคืขื™ืœ ื‘ืœื•ื— ื”ื‘ืงืจื”: **ื”ืงืฉืจ ื“ื—ื™ืกื” โ† ื”ื’ื“ืจื•ืช ื“ื—ื™ืกื”** (`/dashboard/context/settings`), ื‘ืžืงื˜ืข ืกื’ื ื•ื ื•ืช ืคืœื˜: ืฉื•ืจื” ืื—ืช ืœื›ืœ ืกื’ื ื•ืŸ, ืขื ืžืชื’ ื”ืคืขืœื”/ื›ื™ื‘ื•ื™ ื•ื‘ื•ืจืจ ืจืžื”. ื”ืกื’ื ื•ื ื•ืช ืžื•ื–ืจืงื™ื ื›ืืฉืจ ื”ื“ื—ื™ืกื” ืขืฆืžื” ืคื•ืขืœืช (ื”ืžืชื’ ื”ืจืืฉื™ ืฉืœ ื”ื“ืฃ, `enabled`). ื”ืžืชื’ **Auto-Clarity Bypass** ื ืžืฆื ื‘ื“ืฃ **Caveman** (`/dashboard/context/caveman`), ื‘ื›ืจื˜ื™ืก **Output Mode** ืฉืœื•. ื‘ืื•ืคืŸ ืชื›ื ื•ืชื™, ืชืฆื•ืจืช ื”ื“ื—ื™ืกื” ืฉื•ืžืจืช ืืช ื”ื‘ื—ื™ืจื” ื›ืš: ```json { "outputStyles": [ { "id": "i-have-adhd", "level": "full" }, { "id": "less-code", "level": "lite" } ] } ``` ืชืื™ืžื•ืช ืœืื—ื•ืจ: ื›ืœ ืขื•ื“ `outputStyles` ืจื™ืง, ื”ื”ื’ื“ืจื” ื”ื™ืฉื ื” `cavemanOutputMode.enabled` ืžืžื•ืคื” ืืœ `terse-prose` ื‘ืจืžื” `cavemanOutputMode.intensity`. ืœืื—ืจ ืžื›ืŸ ื”ื‘ืœื•ืง ืžืชื—ื™ืœ ื‘ืกืžืŸ `[OmniRoute Output Styles]`, ื‘ืขื•ื“ ืฉื”ืžื–ืจื™ืง ื”ื™ืฉืŸ `applyCavemanOutputMode()` ื›ืชื‘ ืืช `[OmniRoute Caveman Output Mode]`. ืžืชื—ืช ืœืกืžืŸ, ื”ื˜ืงืกื˜ ืชื•ืื ืœื”ื–ืจืงื” ื”ื™ืฉื ื” ื‘ืฉืคื•ืช en, pt-BR, es, de, fr, it, ru, id ื•-vi; ื‘ืฉืคื•ืช ja ื•-zh ื”ื•ื ื›ื•ืœืœ ืจื•ื•ื— ื ื•ืกืฃ ืื—ื“ ืœืคื ื™ ืกืขื™ืฃ ื”ื’ื‘ื•ืœื•ืช. `terse-prose` ืžืชื•ืจื’ื ืœ-pt-BR, es, de, fr, it, ru, zh, ja, id ื•-vi, ื•ืœื›ืŸ ื‘ืงืฉื” ืฉื”ืฉืคื” ืฉื ืคืชืจื” ืขื‘ื•ืจื” ื”ื™ื `hu` ืžืงื‘ืœืช ืืช ื”ื˜ืงืกื˜ ื‘ืื ื’ืœื™ืช, ื‘ืขื•ื“ ืฉื”ืžื–ืจื™ืง ื”ื™ืฉืŸ ื”ืฉืชืžืฉ ื‘ื˜ืงืกื˜ ืฉืœื• ื‘ื”ื•ื ื’ืจื™ืช. ื‘ื—ื™ืจืช ื”ืฉืคื” ืฉืœ ืกื’ื ื•ืŸ ื”ืคืœื˜ (`resolveOutputStyleLanguage()` ื‘ืชื•ืš `outputStyles/apply.ts`): ื›ืืฉืจ `languageConfig.enabled` ืžื•ืคืขืœ, `autoDetect` ื“ื•ื’ื ืืช ื”ื•ื“ืขืช ื”ืžืฉืชืžืฉ ื”ืื—ืจื•ื ื” ื‘ืžืขืจืš `messages` ืฉืœ ื”ื‘ืงืฉื” ืฉื™ืฉ ื‘ื” ื˜ืงืกื˜ (ืชื•ื›ืŸ ืžืกื•ื’ ืžื—ืจื•ื–ืช, ืื• ื”-`text` ืฉืœ ื—ืœืงื™ ื”ืชื•ื›ืŸ ืฉืœื”) ื•ืžืคืขื™ืœ ืขืœื™ื” ืืช ื”ืžื–ื”ื” ืฉืœ ืžื ื•ืข Caveman (`detectCompressionLanguage()`). ื”ืžื–ื”ื” ืžื—ื–ื™ืจ `zh` ืขื‘ื•ืจ ื˜ืงืกื˜ ืขื ืชื•ื•ื™ ื”ืืŸ ื•ืœืœื ืงืื ื”; ืื—ืจืช ื”ื•ื ืžื—ื–ื™ืจ ืืช ื”ืฉืคื” ืžื‘ื™ืŸ `it`, `pt-BR`, `es`, `de`, `fr`, `ru`, `ja`, `hu` ื•-`id` ืฉืœื” ืžืกืคืจ ื”ื”ืชืืžื•ืช ื”ืจื‘ ื‘ื™ื•ืชืจ ืœืจืžื–ื™ื, ื•ืืช `en` ื›ืฉืื™ืŸ ื”ืชืืžื•ืช โ€” ื˜ืงืกื˜ ืฉืื™ื ื• ื™ื›ื•ืœ ืœืกื•ื•ื’ ืžืงื‘ืœ ืื ื’ืœื™ืช, ื•ืœืขื•ืœื ืœื `defaultLanguage`, ื•-`vi` ืœืขื•ืœื ืื™ื ื” ืžื–ื•ื”ื” ืืฃ ืขืœ ืคื™ ืฉื”ืกื’ื ื•ื ื•ืช ื›ื•ืœืœื™ื ื˜ืงืกื˜ ื‘-`vi`. ื’ื•ืฃ ื‘ืงืฉื” ืฉืœ Responses API ืฉื•ืžืจ ืืช ื”ืชื•ืจื™ื ืฉืœื• ื‘-`input`, ืฉืื™ื ื• ื ื“ื’ื, ื•ืœื›ืŸ ื”ื•ื ืžืงื‘ืœ ืืช `defaultLanguage`, ื•ืœืื—ืจ ืžื›ืŸ ืื ื’ืœื™ืช. ื›ืืฉืจ ืื™ืŸ ื”ื•ื“ืขืช ืžืฉืชืžืฉ ืขื ื˜ืงืกื˜ ื‘-`messages`, ืื• ื›ืืฉืจ `autoDetect` ื›ื‘ื•ื™, `defaultLanguage` ืžื•ื—ืœ, ื•ืœืื—ืจ ืžื›ืŸ ืื ื’ืœื™ืช. ื›ืืฉืจ `languageConfig.enabled` ื›ื‘ื•ื™, ื”ืฉืคื” ื”ื™ื ืื ื’ืœื™ืช โ€” ืืœื ืื ืžืฉื•ืœื‘ ืฆื™ืจื•ืฃ ื“ื—ื™ืกื” ื‘ื‘ืงืฉื” (ืฆื™ืจื•ืฃ ืฉื”ื•ืงืฆื” ืœืฆื™ืจื•ืฃ ื”ื ื™ืชื•ื‘ ืฉืœ ื”ื‘ืงืฉื”, ืื• ืฆื™ืจื•ืฃ ื”ื“ื—ื™ืกื” ื”ืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืฉืืœื™ื• chatCore ื—ื•ื–ืจ ืขื‘ื•ืจ ืฆื™ื ื•ืจ ื”ืขื™ื‘ื•ื“ ื”ืžื•ื‘ื ื” ื•ื”ืžืฉื•ืจืฉืจ): ื”ื—ืœืช ืฆื™ืจื•ืฃ ืžืคืขื™ืœื” ืืช `languageConfig.enabled` ืขื‘ื•ืจ ืื•ืชื” ื‘ืงืฉื” ื•ืžื’ื“ื™ืจื” ืืช `defaultLanguage` ืžืชื•ืš ื—ื‘ื™ืœื•ืช ื”ืฉืคื” ืฉืœ ื”ืฆื™ืจื•ืฃ (ื”ืขืจืš ื”ืฉืžื•ืจ, ืื ื”ื•ื ืื—ืช ืžื—ื‘ื™ืœื•ืช ื”ืฆื™ืจื•ืฃ, ื•ืื—ืจืช ื”ื—ื‘ื™ืœื” ื”ืจืืฉื•ื ื” ืฉืœ ื”ืฆื™ืจื•ืฃ, ืฉื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื” ื”ื™ื `en`), ื‘ืขื•ื“ ืฉื”ืขืจืš ื”ืฉืžื•ืจ ืฉืœ `autoDetect` (ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ) ืขื“ื™ื™ืŸ ื—ืœ. ืžื ื•ืข ื”ืงืœื˜ ืฉืœ Caveman ื‘ื•ื—ืจ ืืช ืฉืคืช ื—ื‘ื™ืœืช ื”ื›ืœืœื™ื ืฉืœื• ื‘ืื•ืคืŸ ืฉื•ื ื” โ€” ืœื›ืœ ื—ืœืง ื˜ืงืกื˜ ื‘ื ืคืจื“, ื•ื›ืืฉืจ ื”ื–ื™ื”ื•ื™ ื”ืื•ื˜ื•ืžื˜ื™ ื›ื‘ื•ื™, ื‘ื›ืคื•ืฃ ืœ-`enabledPacks`. ืžื˜ืจื™ืฆืช ื”ืกื’ื ื•ืŸ ร— ื”ืฉืคื” ืžืงื•ื‘ืขืช ืขืœ ื™ื“ื™ `tests/unit/compression/output-styles-i18n-matrix.test.ts`: ืœื›ืœ ืกื’ื ื•ืŸ ื‘ืงื˜ืœื•ื’ ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ืจืฉื•ืžื” ื‘-`BASELINE_LANGUAGES` ืฉืœ ื”ื‘ื“ื™ืงื”; ืกื’ื ื•ืŸ ืฉืื™ื ื• ืžื•ื’ื‘ืœ ืœืคื™ ืื–ื•ืจ ื—ื™ื™ื‘ ืœื›ืœื•ืœ ืชืจื’ื•ื ืœ-pt-BR (ื”ืกื’ื ื•ืŸ `terse-cjk`, ื”ืžื•ื’ื‘ืœ ืœืคื™ ืื–ื•ืจ, ืคื˜ื•ืจ ืžื›ืœืœ ื–ื”), ืืœื ืื ื”ื•ื ืžื•ืคื™ืข ื‘-`KNOWN_ENGLISH_ONLY`, ืฉื™ื›ื•ืœ ืœื”ื›ื™ืœ ืจืง ืกื’ื ื•ื ื•ืช ืฉืื™ืŸ ืœื”ื ืชืจื’ื•ืžื™ื ื›ืœืœ โ€” ืกื’ื ื•ืŸ ืฉืžื•ืคื™ืข ื‘ืจืฉื™ืžื” ื•ื™ืฉ ืœื• ืชืจื’ื•ื ื›ืœืฉื”ื• ื’ื•ืจื ืœื›ื™ืฉืœื•ืŸ ื”ื‘ื“ื™ืงื”; ื•ืกื’ื ื•ืŸ ื’ื•ืจื ืœื›ื™ืฉืœื•ืŸ ื”ื‘ื“ื™ืงื” ื›ืืฉืจ ื”ื•ื ืžืื‘ื“ ืฉืคื” ืฉืžื•ืคื™ืขื” ื‘ืจืฉื•ืžืช ื”-`BASELINE_LANGUAGES` ืฉืœื•. ื›ื“ื™ ืœื”ื•ืกื™ืฃ ืกื’ื ื•ืŸ, ืจืื• [EXTENDING_COMPRESSION.md](./EXTENDING_COMPRESSION.md#adding-an-output-style). ### ื“ื—ื™ืกืช ืชื•ืฆืื•ืช ื›ืœื™ื `compressToolResult()` ื‘ืงื•ื‘ืฅ `open-sse/services/compression/toolResultCompressor.ts` ื“ื•ื—ืกืช ื˜ืงืกื˜ ืฉืœ ืชื•ืฆืื•ืช ื›ืœื™ื ื‘ืืžืฆืขื•ืช **5 ืืกื˜ืจื˜ื’ื™ื•ืช**. ื”ื™ื ืžื ืกื” ืื•ืชืŸ ื‘ืกื“ืจ ื”ื‘ื, ื•ื”ืืกื˜ืจื˜ื’ื™ื” ื”ืคืขื™ืœื” ื”ืจืืฉื•ื ื” ืฉื”ื‘ื“ื™ืงื” ืฉืœื” ืชื•ืืžืช ืœืชื•ื›ืŸ ืงื•ื‘ืขืช ืืช ื”ืชื•ืฆืื”: 1. **`fileContent`**: ืชื•ื›ืŸ ื‘ืŸ 3 ืฉื•ืจื•ืช ืื• ื™ื•ืชืจ ืฉื‘ื• ืœืคื—ื•ืช ืฉื•ืจื” ืื—ืช, ื‘ื”ืชืขืœื ืžื”ื–ื—ื” ื‘ืชื—ื™ืœืชื”, ืžืชื—ื™ืœื” ื‘-`import `, ื‘-`export `, ื‘-`function `, ื‘-`class `, ื‘-`const `, ื‘-`let `, ื‘-`var ` ืื• ื‘-`return ` (ืžื™ืœืช ื”ืžืคืชื— ื•ืื—ืจื™ื” ืจื•ื•ื—), ืื• ื‘-`if`, ื‘-`for` ืื• ื‘-`while` ืฉืื—ืจื™ื”ื `(` ืื• ` (`, ืžืฉืื™ืจ ืืช 20 ื”ืฉื•ืจื•ืช ื”ืจืืฉื•ื ื•ืช ื•ืืช 5 ื”ืฉื•ืจื•ืช ื”ืื—ืจื•ื ื•ืช, ื•ืžืกืžืŸ ืืช ื”ื—ืœืง ื”ืืžืฆืขื™ ืฉื”ื•ืฉืžื˜. 2. **`grepSearch`**: ืชื•ื›ืŸ ื”ื›ื•ืœืœ ืœืคื—ื•ืช ืฉื•ืจื” ืื—ืช ื‘ืชื‘ื ื™ืช `::`, ืฉื‘ื” ื”ื˜ืงืกื˜ ืฉืœืคื ื™ ื”ื ืงื•ื“ืชื™ื™ื ื”ืจืืฉื•ื ื•ืช ืื™ื ื• ืžื›ื™ืœ ืจื•ื•ื—ื™ื, ืžืฉืื™ืจ ืจืง ืืช ื”ืฉื•ืจื•ืช ื”ืืœื”, ืขื“ 30 ืœื›ืœ ื”ื™ื•ืชืจ, ื•ืœืื—ืจื™ื”ืŸ ืืช ืžืกืคืจ ื”ื”ืชืืžื•ืช ื”ื ื•ืกืคื•ืช ื•ืืช ืจืฉื™ืžืช ื”ืงื‘ืฆื™ื ื”ืชื•ืืžื™ื; ื›ืœ ืฉื•ืจื” ืื—ืจืช ืžื•ืกืจืช. ื“ื™ ื‘ืฉื•ืจื” ืื—ืช ื›ื–ื• ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ื”ืืกื˜ืจื˜ื’ื™ื”, ื•ืœื›ืŸ ื’ื ืฉื•ืจืช ื™ื•ืžืŸ ืฉืžืชื—ื™ืœื” ื‘ื—ื•ืชืžืช ื–ืžืŸ ื›ื’ื•ืŸ `12:30:45` ื ื—ืฉื‘ืช. 3. **`shellOutput`**: ืคืœื˜ ืฉืžื›ื™ืœ ืจืฆืฃ ANSI CSIโ€ (`ESC[` ื•ืื—ืจื™ื• ืกืคืจื•ืช ืื• ื ืงื•ื“ื”-ื•ืคืกื™ืง ื•ืœืื—ืจ ืžื›ืŸ ืื•ืช, ื›ืžื• ื‘ืงื•ื“ื™ ืฆื‘ืข) ืื• `$` ืฉืื—ืจื™ื• ืจื•ื•ื— ืœื‘ืŸ ื‘ืžืงื•ื ื›ืœืฉื”ื• ื‘ื˜ืงืกื˜, ืžืื‘ื“ ืืช ื”ืจืฆืคื™ื ื”ืืœื” (ืจืฆืคื™ escape ืื—ืจื™ื, ื›ื’ื•ืŸ `ESC[?25l` ืื• ืจืฆืฃ OSC ืœื›ื•ืชืจืช ื—ืœื•ืŸ, ื ืฉืžืจื™ื) ื•ืžืฉืื™ืจ ืืช 50 ื”ืฉื•ืจื•ืช ื”ืื—ืจื•ื ื•ืช, ืชื•ืš ืื™ื—ื•ื“ ืฉื•ืจื•ืช ื–ื”ื•ืช ืจืฆื•ืคื•ืช. ืžื›ื™ื•ื•ืŸ ืฉื‘ื“ื™ืงื” ื–ื• ืคื•ืขืœืช ืœืคื ื™ `json` ื•-`errorMessage`, ืคืœื˜ JSON ืื• ืคืœื˜ ืฉื’ื™ืื” ืฉืžื›ื™ืœ `$` ื›ื–ื” ืœืขื•ืœื ืื™ื ื• ืžื’ื™ืข ืืœื™ื”ืŸ ื›ืœ ืขื•ื“ `shellOutput` ืคืขื™ืœื”. 4. **`json`**: ืžื˜ืขืŸ JSON ืฉืื•ืจื›ื• ื™ื•ืชืจ ืž-2,000 ืชื•ื•ื™ื, ืžืชื—ื™ืœ ื‘-`{` ืื• ื‘-`[` (ืœืื—ืจ ืจื•ื•ื— ืœื‘ืŸ ืื•ืคืฆื™ื•ื ืœื™) ื•ื ื™ืชืŸ ืœื ื™ืชื•ื—, ืžืกื•ื›ื ื›ืš: ืžืขืจืš ื‘ืŸ ื™ื•ืชืจ ืž-7 ืคืจื™ื˜ื™ื ืžืฉืื™ืจ ืืช 5 ื”ืคืจื™ื˜ื™ื ื”ืจืืฉื•ื ื™ื ื•ืืช 2 ื”ืื—ืจื•ื ื™ื ื•ื›ืŸ ืืช ื”ืžืกืคืจ ื”ื›ื•ืœืœ ืฉืœื”ื, ื•ืื•ื‘ื™ื™ืงื˜ ืžืฉืื™ืจ ืืช 20 ื”ืžืคืชื—ื•ืช ื”ืจืืฉื•ื ื™ื, ื›ืืฉืจ ื›ืœ ืขืจืš ืฉื”ื•ื ืื•ื‘ื™ื™ืงื˜ ืื• ืžืขืจืš ืžืงื•ื ืŸ ืžื•ื—ืœืฃ ื‘ืžืฆื™ื™ืŸ ืžื™ืงื•ื `{โ€ฆN keys}` (ืขื‘ื•ืจ ืžืขืจืš, N ื”ื•ื ืื•ืจื›ื•) ื•ื‘ืกืžืŸ `_remaining__keys` ืฉืกื•ืคืจ ืืช ื”ืžืคืชื—ื•ืช ืฉื”ื•ืฉืžื˜ื• ืœืื—ืจ 20 ื”ืจืืฉื•ื ื™ื. ืขืจื›ื™ื ืกืงืœืจื™ื™ื ืžื•ืขืชืงื™ื ื‘ืžืœื•ืื, ื•ืœื›ืŸ ืื•ื‘ื™ื™ืงื˜ ื‘ืŸ 20 ืžืคืชื—ื•ืช ืื• ืคื—ื•ืช ืœืœื ืขืจื›ื™ื ืžืงื•ื ื ื™ื ืจืง ืžื•ื–ื— ืžื—ื“ืฉ โ€” ืื•ื‘ื™ื™ืงื˜ ืžืžื•ื–ืขืจ ืฆื•ื‘ืจ ืชื•ื•ื™ื ื•ื ืฉืืจ ืœืœื ืฉื™ื ื•ื™. 5. **`errorMessage`**: ืคืœื˜ ืฉืžื›ื™ืœ, ื‘ืžืงื•ื ื›ืœืฉื”ื• ื•ืœืœื ืชืœื•ืช ื‘ืจื™ืฉื™ื•ืช, `error:`, `error ` (ื”ืžื™ืœื” ื•ืื—ืจื™ื” ืจื•ื•ื—, ื›ืžื• ื‘-`no error found`),โ€ `[error]`, `exception:`,โ€ `exception `,โ€ `[exception]` ืื• `traceback`, ืžืฉืื™ืจ ืืช ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื”, ืืช 10 ื”ืฉื•ืจื•ืช ื”ื‘ืื•ืช ื•ืืช 3 ื”ืื—ืจื•ื ื•ืช, ืขื ื”ืกืžืŸ `โ€ฆ [N frames elided] โ€ฆ` ื‘ืžืงื•ื ื”ืฉื•ืจื•ืช ืฉื‘ื™ื ื™ื”ืŸ. ื”ืกืžืŸ ืžื•ืคื™ืข ืจืง ื›ืืฉืจ ืื—ืจื™ ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ื™ืฉ ื™ื•ืชืจ ืž-13 ืฉื•ืจื•ืช, ื•ืœื›ืŸ ืคืœื˜ ืฉื’ื™ืื” ื‘ืŸ 14 ืฉื•ืจื•ืช ืื• ืคื—ื•ืช ืื™ื ื• ืžืชืงืฆืจ (ื›ืืฉืจ ื™ืฉ 12 ืื• 13 ืฉื•ืจื•ืช, 3 ื”ืฉื•ืจื•ืช ื”ืื—ืจื•ื ื•ืช ื—ื•ื–ืจื•ืช ืขืœ ืฉื•ืจื•ืช ืฉื›ื‘ืจ ื ืฉืžืจื•). ืœืื—ืจ ืฉืืกื˜ืจื˜ื’ื™ื” ืชื•ืืžืช, ื’ื ืื ื”ื™ื ืื™ื ื” ื—ื•ืกื›ืช ื“ื‘ืจ, ื”ืืกื˜ืจื˜ื’ื™ื•ืช ื”ื‘ืื•ืช ืื™ื ืŸ ื ื‘ื“ืงื•ืช. ื›ืืฉืจ ื”ืืกื˜ืจื˜ื’ื™ื” ื”ืชื•ืืžืช ืื™ื ื” ื—ื•ืกื›ืช ื˜ื•ืงื ื™ื ืžืฉื•ืขืจื™ื (ื”ืื•ืจืš ื—ืœืงื™ 4, ื‘ืขื™ื’ื•ืœ ื›ืœืคื™ ืžืขืœื”) โ€” ืœื“ื•ื’ืžื”, ืงื•ื‘ืฅ ื“ืžื•ื™ ืงื•ื“ ื‘ืŸ 25 ืฉื•ืจื•ืช ืื• ืคื—ื•ืช, ืื• ืžืขืจืš JSON ืฉืื•ืจื›ื• ื™ื•ืชืจ ืž-2,000 ืชื•ื•ื™ื ื•ื‘ื• 7 ืคืจื™ื˜ื™ื ืื• ืคื—ื•ืช โ€” ื”ืžื ื•ืข ื”ืื’ืจืกื™ื‘ื™ ืžืฉืื™ืจ ืืช ืชื•ืฆืืช ื”ื›ืœื™ ื”ืžืงื•ืจื™ืช: ืฉื ื™ ื”ืงื•ืจืื™ื (`compressAggressive()` ื•-`compressAnthropicToolResultBlock()`) ืžืฉืื™ืจื™ื ืืช ื”ืžืงื•ืจ ื›ืืฉืจ `saved` ื”ื•ื 0 ืื• ืคื—ื•ืช, ื‘ืขื•ื“ `compressToolResult()` ืขืฆืžื” ืขื“ื™ื™ืŸ ืžื—ื–ื™ืจื” ืืช ื”ืคืœื˜ ืฉืœ ืื•ืชื” ืืกื˜ืจื˜ื’ื™ื”. ืฉืœื‘ ืชื•ืฆืืช ื”ื›ืœื™ ืื™ื ื• ื”ืžื™ืœื” ื”ืื—ืจื•ื ื”: ืžืกื›ื ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ื”ืžื ื•ืข ืขื“ื™ื™ืŸ ื™ื›ื•ืœ ืœืงืฆืจ ื”ื•ื“ืขืช `tool` ืื• `function` ืฉืื•ืจื›ื” ืขื•ืœื” ืขืœ 8,192 ืชื•ื•ื™ื (`maxTokensPerMessage`,โ€ 2,048, ื›ืคื•ืœ 4). #### ืžืชื™ ืœื”ืฉืชืžืฉ ื“ื—ื™ืกืช ืชื•ืฆืื•ืช ื›ืœื™ื ื”ื™ื ืฉืœื‘ 1 ื‘ืžื ื•ืข ื”ืื’ืจืกื™ื‘ื™ (`compressAggressive()` ื‘ืงื•ื‘ืฅ `open-sse/services/compression/aggressive.ts`), ื•ืœื›ืŸ ื”ื™ื ืคื•ืขืœืช ื‘ืžืฆื‘ Aggressive ื•ื‘ืฉืœื‘ `aggressive` ืฉืœ ืฆื™ื ื•ืจ ืขื™ื‘ื•ื“ ืžื•ืขืจื. ื”ื™ื ื“ื•ื—ืกืช ื”ื•ื“ืขื•ืช `tool` ื•-`function` ื‘ืžื‘ื ื” ืฉืœ OpenAI, ื•ืืช ื”ื˜ืงืกื˜ ืฉื‘ืชื•ืš ื‘ืœื•ืงื™ `tool_result` ืฉืœ Anthropic. ืœื›ืœ ืืกื˜ืจื˜ื’ื™ื” ืžืชื’ ืžืฉืœื” ืชื—ืช `aggressive.toolStrategies`, ื•ื›ื•ืœืŸ ืคืขื™ืœื•ืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ. ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื, ื”ืžืชื’ื™ื ื ืžืฆืื™ื ื‘ืชืฆื•ื’ืช **Advanced** ืฉืœ ืขืžื•ื“ Caveman ื›ืืฉืจ ื”ื“ื—ื™ืกื” ืคืขื™ืœื” ื•ืžืฆื‘ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื•ื Aggressive. ### ืฆื™ื ื•ืจ ืขื™ื‘ื•ื“ ืžื•ืขืจื ื”ืžืฆื‘ ื”ืžื•ืขืจื ืžืคืขื™ืœ **ืžืกืคืจ ืžื ื•ืขื™ื ื‘ืจืฆืฃ** โ€” ื‘ื“ืจืš ื›ืœืœ RTK ืชื—ื™ืœื” (ื—ื™ืกื›ื•ืŸ ืฉืœ 60-90% ื‘ืคืœื˜ ื›ืœื™ื), ื•ืœืื—ืจ ืžื›ืŸ Caveman ืขืœ ื”ื˜ืงืกื˜ ืฉื ื•ืชืจ (ื—ื™ืกื›ื•ืŸ ืฉืœ ื›-46% ื‘ืงืœื˜). ื‘ืฉื™ืœื•ื‘ ืžืชืงื‘ืœ **ื˜ื•ื•ื— ื–ื›ืื•ืช ืฉืœ 78-95%** (ืจืื• ื—ื™ืฉื•ื‘ ื”ื—ื™ืกื›ื•ืŸ ื‘ืžืขืœื” ื”ืžืกืžืš): `1 - (1 - 0.60..0.90) ร— (1 - 0.46)` ื ื•ืชืŸ ืžืžื•ืฆืข ืฉืœ ื›-89%. #### ื›ื™ืฆื“ ื–ื” ืคื•ืขืœ ``` ืงืœื˜ (1000 ื˜ื•ืงื ื™ื) โ†’ RTK (ืžืกื ืŸ ืžื•ื“ืข ืœืคืงื•ื“ื•ืช) โ†’ 200 ื˜ื•ืงื ื™ื โ†’ Caveman (ื”ืกืจืช ืžืœืœ ืžื™ื•ืชืจ) โ†’ 108 ื˜ื•ืงื ื™ื โ†’ ืคืœื˜ (108 ื˜ื•ืงื ื™ื, ื—ื™ืกื›ื•ืŸ ืฉืœ ื›-89%) ``` #### ืžืชื™ ืœื”ืฉืชืžืฉ ื”ืฉืชืžืฉื• ื‘ืžืฆื‘ ืžื•ืขืจื ืขื‘ื•ืจ: - ืชื”ืœื™ื›ื™ ืขื‘ื•ื“ื” ืขืชื™ืจื™ ื›ืœื™ื (ื›ืชื™ื‘ืช ืงื•ื“ ืกื•ื›ื ื™ืช, ืžื—ืงืจ) - ืขื™ื‘ื•ื“ ืืฆื•ื•ื” ืจื’ื™ืฉ ืœืขืœื•ื™ื•ืช - ื›ืืฉืจ ื ื“ืจืฉ ื—ื™ืกื›ื•ืŸ ืžืจื‘ื™ ื‘ื˜ื•ืงื ื™ื ืฆื™ื ื•ืจื•ืช ืขื™ื‘ื•ื“ ืžื•ืขืจืžื™ื ืžื•ื’ื“ืจื™ื ื‘ืืžืฆืขื•ืช ื”ื’ื“ืจืช ื”ื“ื—ื™ืกื” ื”ื’ืœื•ื‘ืœื™ืช `stackedPipeline`, ืื• ื‘ืืžืฆืขื•ืช ืฆื™ืจื•ืฃ ื“ื—ื™ืกื” ื‘ืขืœ ืฉื ืฉืžื•ืงืฆื” ืœืฆื™ืจื•ืฃ ื ื™ืชื•ื‘ (ืจืื• ืขืงื™ืคื” ืœืคื™ ืฆื™ืจื•ืฃ ืœืขื™ืœ) โ€” ืœื ื‘ืืžืฆืขื•ืช `modePack` ืฉืœ ืฆื™ืจื•ืฃ ืื•ื˜ื•ืžื˜ื™ (ืฉื“ื” ื–ื” ืจืง ืžืฉื ื” ืืช ื”ืžืฉืงืœ ืฉืœ ื‘ื—ื™ืจืช ื”ืžื•ื“ืœ ื‘ืฆื™ืจื•ืฃ ื”ืื•ื˜ื•ืžื˜ื™, ื•-`stacked` ืื™ื ื• ืฉื ื—ื‘ื™ืœื” ืชืงื™ืŸ). --- ## ื“ืจื™ืกื•ืช ื“ื—ื™ืกื” ืœืฉื™ืœื•ื‘ื™ื ื ื™ืชืŸ ืœื“ืจื•ืก ืืช ืžืฆื‘ ื”ื“ื—ื™ืกื” ื”ื’ืœื•ื‘ืœื™ **ืขื‘ื•ืจ ื›ืœ ืฉื™ืœื•ื‘ ื‘ื ืคืจื“** ื›ื“ื™ ืœื›ื•ื•ื ืŸ ืืช ื”ื”ืชื ื”ื’ื•ืช ืœืžืงืจื™ ืฉื™ืžื•ืฉ ืฉื•ื ื™ื: ```json { "id": "coding-combo", "strategy": "priority", "config": { "weights": { "taskFit": 0.5 }, "modePack": "quality-first" }, "compressionOverride": "aggressive" } ``` ืืคืฉืจื•ืช ื–ื• ืฉื™ืžื•ืฉื™ืช ืขื‘ื•ืจ: - **ืฉื™ืœื•ื‘ื™ ืงื™ื“ื•ื“**: ื”ืฉืชืžืฉื• ื‘ืžืฆื‘ `aggressive` ืœื”ืคืขืœื•ืช ืืจื•ื›ื•ืช - **ืฉื™ืœื•ื‘ื™ ืฉืืœื•ืช ื•ืชืฉื•ื‘ื•ืช ืžื”ื™ืจื•ืช**: ื”ืฉืชืžืฉื• ื‘ืžืฆื‘ `lite` ืœืชื’ื•ื‘ื•ืช ืžื”ื™ืจื•ืช - **ืฉื™ืœื•ื‘ื™ื ืขืชื™ืจื™ ื›ืœื™ื**: ื”ืฉืชืžืฉื• ื‘ืžืฆื‘ `stacked` ืœื—ื™ืกื›ื•ืŸ ืžืจื‘ื™ - **ืฉื™ืœื•ื‘ื™ ื™ื™ืฆื•ืจ**: ื”ืฉืื™ืจื• ืืช ื”ื“ืจื™ืกื” ื›ื‘ื•ื™ื” ืขื‘ื•ืจ ืกืคืงื™ื ื”ืžืฉืชืžืฉื™ื ื‘ืžื˜ืžื•ืŸ โ€” ื”ื”ืชืืžื” ื”ืžื•ื“ืขืช ืœืžื˜ืžื•ืŸ, ืฉืคื•ืขืœืช ืชืžื™ื“, ืžืฉื ืžื›ืช ืืช `aggressive`/`ultra` ืœ-`standard` ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ (ืื™ืŸ ืžืฆื‘ `cache-aware` ืฉื ื™ืชืŸ ืœื‘ื—ื•ืจ ื‘ื•) --- ## ืจืื• ื’ื - [ืชืฆื•ืจืช ืกื‘ื™ื‘ื”](../reference/ENVIRONMENT.md) โ€” ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ืฉืœ ื“ื—ื™ืกื” - [ืžื“ืจื™ืš ืืจื›ื™ื˜ืงื˜ื•ืจื”](../architecture/ARCHITECTURE.md) โ€” ื”ืจื›ื™ื‘ื™ื ื”ืคื ื™ืžื™ื™ื ืฉืœ ืฆื™ื ื•ืจ ืขื™ื‘ื•ื“ ื”ื“ื—ื™ืกื” - [ืžื“ืจื™ืš ืœืžืฉืชืžืฉ](../guides/USER_GUIDE.md) โ€” ืชื—ื™ืœืช ื”ืขื‘ื•ื“ื” ืขื ื“ื—ื™ืกื” - [ื“ื—ื™ืกืช RTK](./RTK_COMPRESSION.md) โ€” ืžืกื ื ื™ RTK, ืžื•ื“ืœ ืืžื•ืŸ, ืฉืขืจ ืื™ืžื•ืช ื•ืฉื—ื–ื•ืจ ืคืœื˜ ื’ื•ืœืžื™ - [ืžื ื•ืขื™ ื“ื—ื™ืกื”](./COMPRESSION_ENGINES.md) โ€” Caveman,โ€ RTK,โ€ stacked, ืžืžืฉืงื™ API,โ€ MCP ื•ืœื•ื— ืžื—ื•ื•ื ื™ื - [ืชื‘ื ื™ืช ื›ืœืœื™ ื“ื—ื™ืกื”](./COMPRESSION_RULES_FORMAT.md) โ€” ืชื‘ื ื™ืช ื—ื‘ื™ืœืช ื›ืœืœื™ื ื‘-JSON - [ื—ื‘ื™ืœื•ืช ืฉืคื” ืœื“ื—ื™ืกื”](./COMPRESSION_LANGUAGE_PACKS.md) โ€” ื›ืœืœื™ Caveman ื™ื™ืขื•ื“ื™ื™ื ืœืฉืคื”