* 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.
32 KiB
Compression Engines (Čeština)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Komprese OmniRoute je postavena na kontraktech enginů. Režim může přímo spouštět jeden engine
(caveman nebo rtk) nebo deterministický zřetězený pipeline, který spouští více enginů v daném pořadí.
Režimy
| Režim | Cesta enginu | Zamýšlený vstup |
|---|---|---|
off |
žádný | Přesné zachování promptu |
lite |
Pomocné funkce Caveman lite | Nízkorizikové průběžné čištění |
standard |
Caveman | Kondenzace promptů v přirozeném jazyce |
aggressive |
Caveman + sumarizátory historie/nástrojů | Dlouhé chatovací relace |
ultra |
Caveman + pomocné funkce pro prořezávání | Obnovení po dosažení limitu kontextu |
rtk |
RTK | Výstup terminálu, shellu, sestavení, testů a gitu |
omniglyph |
OmniGlyph | Kontext jako obrázek v nativním rozhraní poskytovatele |
stacked |
Pipeline, výchozí rtk -> caveman |
Smíšené logy nástrojů a próza, maximální úspora |
Profily komprese OmniGlyph
Engine omniglyph (balíček omniglyph, 1.4.0+) přijímá pojmenovaný sémantický profil, nastavený
globálně prostřednictvím omniglyph.profile v nastavení komprese nebo pro jednotlivé kroky prostřednictvím
konfigurace kroku ve zřetězeném pipeline:
| Profil | Hranice |
|---|---|
aggressive |
Výchozí. Zásady, podle kterých byla měřena publikovaná potvrzení — obrazový systém, dokumentace nástrojů a hustá historie |
balanced |
Zachovává aktivní stav v nativní podobě, chrání posledních 8 kol, slučuje starší uzavřenou historii |
coding-safe |
Zachovává autoritu, schémata nástrojů a aktivní výstup nástrojů v nativní podobě, chrání posledních 12 kol |
passthrough |
Směruje bez transformace; engine je přeskočen |
Profil je strop, nikoli podlaha: mergeCompressionProfileOptions v balíčku
nedovolí, aby přepsání volajícím znovu otevřelo ztrátovou větev, kterou profil uzavřel, takže hodnota
preserveSystemPrompt: false nastavená pro jednotlivý krok nemůže pod profilem coding-safe znovu povolit kompresi systémového promptu.
Naměřeno na tomto kódu: coding-safe a balanced zvyšují minCompressChars na jeho
maximum a zachovávají systém, schémata nástrojů a výsledky nástrojů v nativní podobě, takže relace, která dosud
nenahromadila historii, skončí na below_min_chars a engine nic netransformuje. Proto
je výchozím profilem aggressive, nikoli nejbezpečnější profil.
Balíček určuje vlastní rozsah modelů a profil ze své konfigurace prostředí. OmniRoute toto rozhodnutí nikdy nedeleguje: adaptér omezuje bránu modelů na nejrestriktivnější rozsah balíčku, takže nastavení hostitelského prostředí může seznam povolených položek pouze zúžit, nikdy jej nerozšíří nad rámec naměřených potvrzení OmniRoute.
Registr enginů
Registr se nachází v open-sse/services/compression/engines/registry.ts. Enginy poskytují společný
kontrakt:
id: stabilní ID enginu, napříkladcavemannebortkapply(text, config): původní cesta spuštění používaná skládanými pipelinecompress(input, config): primární cesta spuštění vracející text + statistikygetConfigSchema(): vrací strukturu platné konfigurace podobnou JSON SchemavalidateConfig(config): vrací{ valid, errors[] }
Registrace používá registerCompressionEngine(engine) (nebo registerEngine pro pokročilé případy),
která před přijetím volá assertValidEngine() a validateConfig(defaultConfig).
K odebrání enginu za běhu použijte unregisterCompressionEngine(id).
strategySelector.ts registruje vestavěné enginy před spuštěním komprese. Díky tomu mohou náhled,
komprese za běhu, skládaný režim, testy i budoucí enginy používat stejnou cestu spuštění.
Komprese popisů MCP (související)
Samostatný registr komprimuje metadata popisů nástrojů MCP na úrovni registru — viz
open-sse/mcp-server/descriptionCompressor.ts a MCP-SERVER.md. Opakovaně používá
pravidla Caveman, ale pracuje s metadaty nástrojů, nikoli s datovými částmi požadavků.
Další vestavěné enginy
Kromě enginů Caveman, RTK a LLMLingua-2 registr obsahuje několik specializovaných bezeztrátových / strukturálních enginů (používaných skládanými pipeline, playgroundem a testy):
| Engine | Id | Co dělá |
|---|---|---|
| CCR | ccr |
Content-Compress-Retrieve (H4): nahrazuje velké souvislé textové bloky odkazy adresovanými podle obsahu, takže se opakované/velké bloky odešlou jednou a poté se na ně pouze odkazuje. |
| headroom | headroom |
SmartCrusher (H3 + N5): bezeztrátová tabulková kompakce datových částí obsahujících homogenní pole JSON do sloupcové podoby [N rows]. |
| ionizer | ionizer |
Vzorkování řádků ze začátku, středu a konce velmi velkých homogenních bloků, přičemž vynechaný střed se uloží jako odkaz CCR adresovaný podle obsahu. |
| session-dedup | session-dedup |
Deduplikace mezi tahy adresovaná podle obsahu (inspirovaná TokenMizerem): vynechává text, který se již objevil v předchozích tazích stejné relace. |
Instrukce protokolu načítání CCR (#8033): když CCR poprvé nahradí v
požadavku ≥1 blok, engine vloží na začátek jedinou idempotentní zprávu system (začínající
sentinelem [CCR protocol]), která volajícímu vysvětluje kontrakt mezi značkou a nástrojem: co znamená
značka [CCR retrieve hash=<24hex> chars=N], že hash musí být zkopírován doslova
(všech 24 hexadecimálních znaků — chybně zkopírované hashe jsou pravděpodobnou příčinou
selhání „blok nenalezen“) a že značka [dedup:ref sha=...] znamená „vyhledej v historii“, nikoli „zavolej
nástroj“. Poznámka je vložena pouze tehdy, když inzerované tools[] volajícího prokazuje, že má
skutečně přístup k omniroute_ccr_retrieve (callerSupportsCcrRetrieve() v
open-sse/services/compression/engines/ccr/protocolInstruction.ts) — běžný
volající kompatibilní s OpenAI bez tohoto nástroje nikdy neobdrží instrukci, aby volal něco,
k čemu nemá přístup. Idempotence je zajištěna prohledáním historie zpráv na přítomnost sentinelu
před vložením, takže požadavky s více tahy (které znovu přehrávají předchozí zprávy) nepřidávají
poznámku při každém tahu.
Caveman
Režim Caveman se zaměřuje na sémantickou kondenzaci běžné prózy:
- zachovává bloky kódu, adresy URL, JSON, cesty a strukturovaná data
- odstraňuje výplňová slova, váhavé formulace, opakovaný kontext a rozvláčné spojovací fráze
- podporuje jazykově specifické balíčky pravidel pro soubory v
open-sse/services/compression/rules/ - zůstává dostupný prostřednictvím starších režimů
standard,aggressiveaultra
V řídicím panelu jej najdete v Dashboard -> Context & Cache -> Caveman.
Upstream projektu Caveman uvádí přibližně o ~75% méně výstupních tokenů a průměrnou úsporu výstupu 65% v benchmarcích
s rozsahem 22-87%; nástroj pro kompresi vstupu dosahuje přibližně ~46%. OmniRoute při dokumentování kombinovaných úspor
promptu a kontextu používá hodnotu komprese vstupu Caveman; výstupní režim Caveman zůstává samostatnou funkcí
ovlivňující chování odpovědí.
RTK
Režim RTK se zaměřuje na výstup příkazů a nástrojů:
- rozpoznává třídy výstupu, jako jsou
git status,git branch,git diff, Vitest/Jest/Pytest, testy Cargo/Go, sestavení TypeScript/Vite/Webpack, ESLint, audity/instalace npm, protokoly Dockeru, shellové příkazyfind/grep, trasování zásobníku a obecné protokoly - používá 49 filtrů JSON z
open-sse/services/compression/engines/rtk/filters/ - podporuje deklarativní pipeline ve stylu RTK: odstraňování ANSI sekvencí, nahrazování, zkrat při shodě výstupu, odstraňování/zachovávání řádků, zkracování jednotlivých řádků, zkracování podle začátku/konce/maximálního počtu řádků a záložní hodnotu při prázdném výstupu
- podporuje důvěrou řízené projektové filtry v
.rtk/filters.jsona globální filtry vDATA_DIR/rtk/filters.json - odstraňuje ANSI sekvence, šum průběhu, opakované řádky a neužitečný standardní text
- zachovává selhání vyžadující zásah, varování, souhrny, změněné soubory a kontext na konci
- může volitelně uchovávat redigovaný nezpracovaný výstup pro obnovení a ladění prostřednictvím ověřených tras správy
V řídicím panelu jej najdete v Dashboard -> Context & Cache -> RTK.
Provozní podrobnosti o vlastních filtrech, důvěře, ověřování a obnovení nezpracovaného výstupu jsou uvedeny v
RTK_COMPRESSION.md.
Upstream projektu RTK uvádí úsporu 60-90% při kompresi výstupu příkazů. Příklad v jeho souboru README ukazuje
30minutovou relaci Claude Code, která se zmenšila z ~118,000 tokenů na ~23,900, tedy o 79.7%.
LLMLingua-2 (sémantické prořezávání)
Režim LLMLingua-2 provádí sémantické prořezávání tokenů v próze pomocí malého tokenového klasifikátoru ONNX, a doplňuje tak pravidlové enginy Caveman a RTK:
- komprimuje prózu pouze v nesystémových zprávách; ohraničené bloky kódu a další zachovávané konstrukce nikdy nemění
- spouští backend
@atjsh/llmlingua-2(ONNX prostřednictvím@huggingface/transformers) v pracovním vlákně, takže inference modelu nikdy neblokuje smyčku událostí požadavku - lze jej kombinovat (
stackPriority35): v kombinované pipeline se spouští po strukturálních enginech (CCR, session-dedup, headroom, Caveman), ale předultra, protože sémantické prořezávání je nejúčinnější u textu, který již prošel strukturální kompresí — např.rtk -> caveman -> llmlingua - při jakékoli chybě bezpečně pokračuje bez komprese (chybějící volitelné závislosti, spuštění pracovního procesu, načtení modelu, inference nebo vypršení časového limitu) → původní text se vrátí beze změny, nikdy se nevrátí chyba
Umístění enginu: open-sse/services/compression/engines/llmlingua/. V řídicím panelu jej najdete
v Dashboard -> Context & Cache -> LLMLingua.
Modely
Výchozím modelem je TinyBERT (atjsh/llmlingua-2-js-tinybert-meetingbank, ~57 MB,
rychlý). Přesnější model BERT-base (Arcoldd/llmlingua4j-bert-base-onnx,
~710 MB) je dostupný prostřednictvím pole model v konfiguraci enginu. @huggingface/transformers
při prvním volání líně stáhne vybraný model z HuggingFace Hub do
${DATA_DIR}/models/llmlingua (modelStore.ts); přepsání konfigurace pomocí modelPath
jej místo toho nasměruje na místní kopii (pro offline / fyzicky izolované instalace).
Volitelné závislosti a instalace na vyžádání
Odstranitelná sada běhových peer závislostí LLMLingua je volitelná. Dva balíčky jsou v
package.json deklarovány jako optionalDependencies a produkční sestavení je ponechává
jako externí (scripts/build/prepublish.ts je nespojuje do balíčku):
| Balíček | Verze (pevně daná) | Poznámky |
|---|---|---|
@atjsh/llmlingua-2 |
2.0.5 |
Vstupní balíček; ostatní deklaruje jako peer závislosti |
js-tiktoken |
^1.0.20 |
Tokenizátor |
@huggingface/transformers je připnutý na ^4.2.0 (sdílí se s cestou místních embeddingů a
je také zahrnut do trasování pro samostatný balíček); @atjsh/llmlingua-2@2.0.5 na něm závisí
jako na peer závislosti s verzí "^3.5.2 || ^4.0.0", takže jsou podporovány Transformers.js v3 i v4. Od verze 2.0.4
již @atjsh/llmlingua-2 nevyžaduje @tensorflow/tfjs, čímž byl ze sady SLM odstraněn její
největší jednotlivý přispěvatel (TensorFlow.js). Odstranitelné peer závislosti SLM tvoří pouze
dva výše uvedené balíčky. Standardní npm install (vývojové prostředí) nainstaluje volitelnou sadu automaticky, pokud nejsou volitelné
závislosti vynechány.
Proč na vyžádání: balíček publikovaný na npm, samostatný balíček a obraz Dockeru se
dodávají bez těchto závislostí, aby zůstaly malé. Pokud chybějí, kontrola závislostí
pracovního procesu (pokus o vyřešení @atjsh/llmlingua-2 v worker.ts) selže a engine
tiše pokračuje bez komprese — výběr LLMLingua neprovede žádnou operaci (text se vrátí beze změny a nezaznamená se
žádná chyba). Chcete-li jej aktivovat v prostředí s odstraněnými závislostmi, nainstalujte volitelnou sadu:
# připnutí k verzím deklarovaným v package.json v optionalDependencies
npm install @atjsh/llmlingua-2@2.0.5 js-tiktoken
Odstranění @tensorflow/tfjs (2.0.4+) eliminuje dříve dominantního přispěvatele o velikosti ~800 MB
— zbývající prostor zabírají běhová prostředí transformers.js + onnxruntime-node
a model TinyBERT (~57 MB), který se stáhne při prvním použití (nikoli prostřednictvím npm).
Pro jednotlivá prostředí:
- Vývoj /
npm install— nainstaluje se automaticky, pokud jste nepoužili--omit=optional(nebo--no-optional). Není třeba nic dělat. - Globální npm (
npm i -g omniroute) / samostatná instalace — spusťte výše uvedený instalační příkaz v adresáři nainstalovaného balíčku nebo proveďte přeinstalaci bez vynechání volitelných závislostí. - Docker — přidejte instalační příkaz do vrstvy odvozeného obrazu; publikovaný obraz je záměrně minimalistický.
- VPS (PM2) — nainstalujte balíček do
node_modulesaplikace a poté restartujte proces, aby worker znovu zkontroloval bránu. - Nezabalený samostatný Next (
npm run build→.build/next/standalone/server.js) — trasování samostatného sestavení neobsahuje ANI worker, ANI volitelné závislosti, takže se engine při selhání bez upozornění přepne do otevřeného režimu.scripts/build/colocate-standalone.mjsznovu přidá obojí (sestavení workeru pomocí esbuild + uzávěr volitelných závislostí do stromu samostatného sestavení); po každém sestavení se spustí automaticky prostřednictvím npm hookupostbuild. Je idempotentní a při chybějících závislostech ukončí běh bez fatální chyby.
Ověření aktivity: při vybraném LLMLingua se skutečný souvislý text opravdu zkrátí (engine
se přestane při selhání přepínat do otevřeného režimu) a první požadavek spustí stažení modelu do
${DATA_DIR}/models/llmlingua. Brána záměrně kontroluje pouze @atjsh/llmlingua-2 —
ostatní peer závislosti podporují pouze ESM a require.resolve u nich vyvolá výjimku, i když jsou přítomné — takže
se worker nadále při selhání přepne do otevřeného režimu, pokud při volání import() skutečně chybí některá peer závislost.
Zřetězené pipeline
Zřetězený režim spouští kroky pipeline v daném pořadí. Výchozí nastavení je:
rtk -> caveman
Tento režim použijte pro relace programovacích agentů, ve kterých prompt kombinuje výstup příkazů s textem od člověka nebo asistenta. RTK nejprve redukuje zahlcující protokoly nástrojů a poté Caveman komprimuje zbývající přirozený jazyk.
Kroky pipeline se konfigurují pomocí stackedPipeline v nastavení komprese nebo prostřednictvím kombinací komprese.
Když oba enginy redukují stejný způsobilý obsah, úspory se násobí:
kombinovaná = 1 - (1 - úspora RTK) * (1 - úspora vstupu Caveman)
průměr = 1 - (1 - 0.80) * (1 - 0.46) = 89.2%
rozsah = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%
Filtr stromu přístupnosti MCP
Inteligentní filtr stromu přístupnosti MCP je kompresní vrstva po provedení, která pracuje s výsledky nástrojů MCP, nikoli s prompty nebo kontextem. Zaměřuje se na objemné datové struktury stromu přístupnosti a snímků prohlížeče vracených nástroji, jako jsou Playwright, computer-use a servery MCP pro automatizaci prohlížeče.
Co provádí
- Odstranění šumu — odstraňuje prázdné obecné/textové položky (
- generic:,- text: "") - Sbalení sousedních položek — pokud je ≥
collapseThreshold(výchozí hodnota 30) po sobě jdoucích řádků strukturálně opakovaných, sbalí je na prvníchcollapseKeepHead(výchozí hodnota 10) řádků + souhrn počtu + posledníchcollapseKeepTail(výchozí hodnota 5) řádků - Zachování referencí — kotvy
[ref=eXX]vyžadované nástroji Playwright/computer-use zůstávají vždy nedotčené - Pevné zkrácení — pokud text po sbalení stále překračuje
maxTextChars(výchozí hodnota 50 000), zkrátí jej a přidá navigační nápovědu, aby agent mohl pokračovat v práci
Umístění enginu
open-sse/services/compression/engines/mcpAccessibility/
index.ts ← vstupní bod smartFilterText()
collapseRepeated.ts ← algoritmus sbalení sousedních položek
constants.ts ← DEFAULT_MCP_ACCESSIBILITY_CONFIG
Konfigurace
Řídí se pomocí compression.mcpAccessibility v globálním nastavení (migrace 056). Výchozí konfigurace:
{
"enabled": true,
"maxTextChars": 50000,
"collapseThreshold": 30,
"collapseKeepHead": 10,
"collapseKeepTail": 5,
"minLengthToProcess": 2000
}
Filtr se použije pouze na obsah výsledků nástrojů, jejichž type je "text" a jejichž délka překračuje minLengthToProcess. Nemá vliv na kompresi promptů ani na obsah požadavků.
Očekávané úspory
60–80 % u výsledků nástrojů obsahujících snímky prohlížeče v závislosti na složitosti stránky. Algoritmus sbalení má složitost O(n) vzhledem k počtu řádků a přidává zanedbatelnou latenci.
Tento filtr oproti výše uvedeným kompresním enginům
| Aspekt | Caveman / RTK / Stacked | Filtr přístupnosti MCP |
|---|---|---|
| Cíl | Prompty požadavků / kontext | Výsledky nástrojů MCP |
| Spouštěč | Nastavení režimu komprese | compression.mcpAccessibility.enabled |
| Rozsah | Všechny zprávy SSE | Pouze výsledky nástrojů |
| Referenční kotvy | N/A | Bezpodmínečně zachovány |
Kombinace komprese
Kombinace komprese jsou pojmenované profily komprese, které lze přiřadit kombinacím směrování:
compression_combos: ukládá režim, pipeline, konfiguraci RTK, konfiguraci jazyka a příznak výchozího nastavenícompression_combo_assignments: mapuje kombinaci komprese na kombinaci směrování- integrace za běhu vyhodnotí přiřazenou kombinaci komprese před obecnými přepsáními kombinace
- analytická data zahrnují
compression_combo_idaengine
Umístění v řídicím panelu: Dashboard -> Context & Cache -> Compression Combos.
Rozhraní API
| Trasa | Účel |
|---|---|
/api/settings/compression |
Globální nastavení komprese (včetně konfigurace mcpAccessibility) |
/api/compression/preview |
Náhled libovolného režimu komprese |
/api/compression/language-packs |
Seznam dostupných jazykových balíčků Caveman |
/api/context/caveman/config |
Alias nastavení Caveman |
/api/context/rtk/config |
Výchozí hodnoty a nastavení RTK |
/api/context/rtk/filters |
Katalog filtrů RTK |
/api/context/rtk/test |
Koncový bod pro náhled/test RTK |
/api/context/rtk/raw-output/[id] |
Autentizované obnovení redigovaného nezpracovaného výstupu |
/api/context/combos |
Operace CRUD s kombinacemi komprese |
/api/context/combos/[id]/assignments |
Operace CRUD s přiřazeními ke kombinacím směrování |
/api/context/analytics |
Alias analytických dat komprese |
Trasy pro správu vyžadují autentizaci pro správu nebo kontroly zásad klíče API.
Nástroje MCP
Komprese zpřístupňuje pět nástrojů MCP:
| Nástroj | Rozsah | Účel |
|---|---|---|
omniroute_compression_status |
read:compression |
Nastavení, analytická data, statistiky mezipaměti |
omniroute_compression_configure |
write:compression |
Aktualizace globálních nastavení |
omniroute_set_compression_engine |
write:compression |
Nastavení režimu a volitelné pipeline |
omniroute_list_compression_combos |
read:compression |
Výpis kombinací komprese |
omniroute_compression_combo_stats |
read:compression |
Načtení analytických dat kombinací/enginu |
Rozsah a výjimky
Embeddingy nejsou nikdy komprimovány. open-sse/handlers/embeddings.ts nikdy nevolá žádný
kompresní engine — těla požadavků/odpovědí jsou předána přímo executoru beze změny.
V současnosti je to dáno strukturou (embeddingy a dokončování chatu mají oddělené handlery),
nikoli kontrolou za běhu, znamená to však, že obava z deformace vektorů uvedená v #8034
nemá v cestě embeddingů žádnou oblast působnosti.
Filtr výjimek pro jednotlivé modely/koncové body (#8034). U dokončování chatu může operátor
uvést ID modelů / cíle provider/model, které nikdy nesmějí být komprimovány — ochranné
opatření užitečné pro případ, že by komprese byla později zapojena blíže k cestě související
s embeddingy, a obecně užitečné pro jakýkoli model, u něhož záleží na přesné bajtové podobě
promptu (deterministická vyhodnocení, prefixy citlivé na mezipaměť atd.).
- Pole nastavení:
exclusions?: string[]v globální konfiguraci komprese (GET/PUT /api/settings/compression), ukládané prostřednictvím existujícího jmenného prostoru kompresekey_value(src/lib/db/compression.ts) — bez nové tabulky. - Karta řídicího panelu: Dashboard → Compression → Exclusions
(
/dashboard/compression/exclusions). - Syntaxe vzorů:
*je jediný zástupný znak. Každý další metaznak regulárních výrazů ve vzoru je před porovnáním escapován, takžegpt-5.6odpovídá pouze doslovnému řetězci, nikdygpt-5x6(odolné vůči ReDoS, omezené, bez vnořených kvantifikátorů). Vzory jsou bez ohledu na velikost písmen porovnávány jak se samotným ID modelu, tak s kombinacíprovider/model—gpt-5-6,openai/gpt-5-6aopenai/*tedy fungují a samotné*vyloučí všechny modely. - Porovnávání:
isCompressionExcluded()/normalizeCompressionExclusions()vopen-sse/services/compression/exclusions.ts.chatCore.tskontroluje vyloučený cíl ihned po vyhodnocení nastavení komprese, před spuštěním jakéhokoli enginu, a shodu zpracuje přesně tak, jako kdyby byla komprese globálně zakázána — tělo požadavku je prokazatelně bajtově identické. Přeskočení je zaznamenáno pomocíwriteCompressionSkip(..., "excluded"), aby bylo viditelné v analytických datech. - Výchozí stav (prázdný/chybějící seznam): shodný s chováním před #8034 — nic není vyloučeno.
Známá omezení
- LLMLingua-2 (SLM) vyžaduje společné umístění volitelných závislostí. Worker se v
produkčním sestavení spustí pouze tehdy, když jsou
@atjsh/llmlingua-2a jeho peer závislosti společně umístěny vdist/node_modules(vizscripts/build/colocateOptionals.mjs, #4286). Bez nich engine při selhání vrátí původní text. Vyhledání workeru již nezávisí naimport.meta.url(v samostatném balíčku selže) — vychází z runtime hodnoty cwd /argv[1]. - Jazykové balíčky Caveman
de/fr/jajsou neúplné. Obsahují pravidlacontext+filler+structural, ale nikoli balíčkydedup/ultra, takže intenzitaultranení pro tyto jazyky silnější nežfull(používají pouze vlastní pravidla — nedochází k žádnému skrytému návratu k anglickým pravidlůmdedup/ultra, která by cizojazyčný text poškodila). Balíčkyen/es/id/pt-BRjsou kompletní. Příspěvky sdedup.json+ultra.jsonpro neúplné balíčky jsou vítány. - Skládaná telemetrie uvádí pouze enginy, které provedly kompresi. Krok skládané pipeline, jehož
engine se spustil, ale dosáhl úspory 0 %, vrátí
stats:null, a proto se neobjeví vengineBreakdown— nelze jej odlišit od kroku, který byl přeskočen. Rozlišení mezi „spuštěno, 0 %“ a „přeskočeno“ by vyžadovalo změnu modelu rozpisu a je odloženo.
Ověření
Cílené kontroly pro tuto oblast jsou:
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