Files
OmniRoute/docs/i18n/bg/docs/compression/COMPRESSION_GUIDE.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* 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.
2026-09-18 13:16:46 -03:00

51 KiB
Raw Blame History

🗜️ Prompt Compression Guide — OmniRoute (Български)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Спестявайте автоматично 1595% от подлежащия на компресиране контекст. За кратък преглед вижте раздела за компресиране в README.

Общ преглед

OmniRoute реализира модулен конвейер за компресиране на подкани, който се изпълнява проактивно, преди заявките да достигнат доставчиците нагоре по веригата. Това означава, че спестяването на токени става прозрачно — не са необходими промени в работния ви процес.

Клиентска заявка
  → Селектор на стратегия за компресиране
    → Има ли замяна от комбинация? → Използване на настройката на комбинацията
    → Достигнат ли е прагът за автоматично задействане? → Използване на автоматичен режим
    → Има ли режим по подразбиране? → Използване на глобалната настройка
    → Изключено? → Пропускане на компресирането
  → Избран режим на компресиране
    → Изключено: Без компресиране
    → Олекотен: Безопасно изчистване на празни знаци/форматиране (~15%)
    → Стандартен: Премахване на пълнеж във фразите в телеграфен стил (~30%)
    → Агресивен: Остаряване на историята + обобщаване (~50%)
    → Ултра: Евристично отстраняване + разреждане на кодови блокове (~75%)
    → RTK: Филтриране на терминални изходи/изходи от инструменти според командата (6090% диапазон нагоре по веригата)
    → Натрупан: Подреден конвейер с множество машини, обикновено RTK, след това Caveman (7895% от подлежащото на компресиране)
  → Компресирана заявка → Доставчик

Режими на компресиране

Изключено

Не се прилага компресиране. Всички съобщения се предават непроменени.

Олекотен режим (~15% спестяване, <1ms латентност)

Най-безопасният режим — без семантични промени, само изчистване на форматирането:

Техника Описание
collapseWhitespace Обединява последователни празни редове и крайни интервали
dedupSystemPrompt Премахва дублиращи се системни съобщения
compressToolResults Компресира многословни изходи от инструменти/функции
removeRedundantContent Премахва повтарящи се инструкции
replaceImageUrls Съкращава URI адреси с base64 данни за изображения

Най-подходящ за: Постоянна употреба и работни процеси, при които безопасността е критична.

Стандартен режим (~30% спестяване)

Вдъхновен от Caveman — премахва паразитни думи и многословни формулировки, като запазва смисъла:

  • Премахва паразитни думи („моля“, „мисля“, „по принцип“, „всъщност“)
  • Съкращава многословни фрази („с цел да“ → „за да“, „в резултат на“ → „поради“)
  • Премахва учтиви смекчаващи формулировки („Бихте ли...“, „Ако е възможно да...“)
  • Над 30 regex правила, настроени за подкани за програмиране

Най-подходящ за: Ежедневни работни процеси за програмиране и екипи, следящи разходите.

Агресивен режим (~50% спестяване)

Интелигентно управление на историята за продължителни сесии:

  • Остаряване на съобщенията — по-старите съобщения се компресират прогресивно
  • Обобщаване на резултатите от инструменти — дългите изходи от инструменти се заменят с обобщения
  • Предпазни механизми за структурна цялост — гарантират, че двойките tool_use + tool_result остават съгласувани
  • Съобразяване с контекстния прозорец — спазва ограниченията за токени на всеки модел

Най-подходящ за: Продължителни сесии за отстраняване на грешки и големи кодови бази.

Ултра режим (~75% спестяване)

Максимално компресиране за сценарии с критични ограничения на токените:

  • Евристично отстраняване — премахва съобщения под прага на релевантност
  • Разреждане на кодови блокове — компресира повтарящи се примери с код
  • Съкращаване чрез двоично търсене — намира оптималната точка на отрязване за контекстния прозорец
  • Включва всички функции на агресивния режим

Най-подходящ за: Случаи, в които многократно достигате ограниченията на контекста.

RTK режим (6090% диапазон нагоре по веригата)

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 schema v1 от проектни или глобални файлове filters.toml с валидиране чрез вградени тестове и контрол на доверието за проектните файлове
  • Включва 49 вградени филтъра с вградени примери за проверка
  • Премахва управляващи ANSI последователности, индикатори за напредък, повтарящи се редове и шум без практическа стойност
  • Запазва неуспешните операции, грешките, предупрежденията, променените файлове, обобщенията и края на дългите изходи
  • Поддържа проектни филтри с контрол на доверието, глобални филтри и незадължително възстановяване на редактирания необработен изход

Най-подходящ за: Сесии с агенти, съдържащи преписи от обвивка, компилации, тестове, git, grep и файлови изходи.

Натрупан режим (7895% от подлежащото на компресиране)

Натрупаният режим изпълнява множество машини за компресиране в детерминиран ред. Конвейерът по подразбиране е:

RTK -> Caveman

Този ред първо запазва терминалния изход/изхода от инструменти компактен, след което прилага семантичното съкращаване на Caveman към останалата подкана на естествен език. Натрупаните конвейери могат да се конфигурират глобално или чрез комбинации за компресиране, присвоени към комбинации за маршрутизиране.

Най-подходящ за: Смесен контекст с големи регистрационни файлове от инструменти, както и човешки инструкции или обобщения от асистента.


Изчисляване на икономиите спрямо изходните проекти

OmniRoute документира икономиите от компресия въз основа на два източника: сравнителни тестове на изходните проекти и собствената комбинация от механизми на OmniRoute.

Източник Стойност от изходния README, използвана тук
Caveman ~75% по-малко изходни токени, 65% средна икономия на изхода в сравнителните тестове, диапазон 22-87% и инструмент за компресиране на входа с ~46%
RTK 60-90% икономия при изхода от команди; примерна сесия с ~118,000 -> ~23,900 токена, или икономия от 79.7% (~80%)

За припокриващи се полезни данни от инструменти/контекст комбинацията по подразбиране на OmniRoute подрежда механизмите последователно:

RTK -> Caveman

Комбинираните икономии са мултипликативни, а не адитивни:

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 чисти файлове, ще постигне умерени общи икономии дори при напълно активирана компресия, докато сесия, която попадне в цикъл с грешки или използва прекалено многословен линтер, ще постигне пълния диапазон от 78-95% за този трафик. Не използвайте ниския общ процент на икономия от една сесия като доказателство, че компресията е неправилно конфигурирана — първо проверете дали изходът от съответния инструмент действително е бил излишен.


Визуализация на икономията на токени

Без компресия:       47K токена, изпратени към LLM
С Lite:              40K изпратени токена          (15% икономия — безопасно, винаги активно)
С Standard:          33K изпратени токена          (30% икономия — правила на caveman-speak)
С 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 присвоете комбинация за компресия към комбинация за маршрутизиране:

Комбинация: "free-tier-fallback"
  Комбинация за компресия: "coding-agent-stack"
  Последователност: RTK -> Caveman
  Цели:
    1. if/kimi-k2.7-code
    2. if/qwen3.8-max-preview

Това ви позволява да използвате последователна компресия при безплатни доставчици и доставчици за програмиране, като същевременно запазвате олекотения режим при платени абонаменти.

Това присвояване „Замяна за отделна комбинация“ е различен контролен механизъм от замяната на режима за компресия на комбинацията за маршрутизиране (Default/Off/Lite/Standard/Aggressive/Ultra) — тази замяна не избира именувана последователност от комбинации за компресия; тя само задава полето compressionMode, използвано от resolveCompressionPlan. То може да бъде зададено или в картата на комбинацията (Dashboard → Combos), или, считано от #6760, за всяка комбинация за маршрутизиране в списъка „Assign to routing“ на Dashboard → Context & Cache → Compression Combos, непосредствено до полето за отметка за присвояване на последователност, документирано по-горе. И двата интерфейса запазват настройките чрез една и съща крайна точка PUT /api/combos/{id}.

Замяна за отделна заявка

Изпратете заглавката на заявката x-omniroute-compression, за да замените плана за компресия за една заявка. Тя е с най-висок приоритет — има предимство пред замяната за комбинацията за маршрутизиране, активния профил, автоматичното активиране и настройката Default в панела. Непознатите стойности се игнорират (заявката никога не се отхвърля), а глобалният главен превключвател продължава да контролира всичко: когато компресията е глобално изключена, заглавката не може да я включи. Стойности:

Стойност Ефект
off Без компресия за тази заявка.
default Профилът Default, извлечен от панела (игнорира активния профил).
engine:<id> Един механизъм, когато е активиран, напр. engine:rtk.
<combo> Именувана комбинация, съпоставена първо по име (без разлика между главни и малки букви), а след това по id.

Приложеният план се връща в заглавката на отговора X-OmniRoute-Compression: <mode>; source=<source>, където <source> е една от стойностите request-header, routing-override, active-profile, auto-trigger, default или off.

API

# Получаване на настройките за компресия
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 payload
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, пароли, токени и тайни, преди каквото и да било да бъде съхранено.


Статистика за компресирането

Всяка компресирана заявка включва статистика в сървърните регистрационни файлове:

{
  "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, комбинации за компресиране Пусната
Фаза 4 Стилове за изхода, Ultra от SLM клас, среда за оценяване Пусната
Фаза 4C Адаптивен бюджет на контекста („регулатор“) — изчислителен механизъм + API (contextBudget в PUT /api/settings/compression) + контроли за режим/правила в таблото за управление Пусната

Благодарности

Правилата за компресиране в режим Standard са вдъхновени от Caveman на JuliusBrussee ( 51K+) — популярния проект „защо да използваш много токени, когато малко вършат работа“. Caveman отчита ~75% по-малко изходни токени, средно 65% спестяване на изхода при сравнителни тестове, диапазон от 22-87% за изхода и инструмент за компресиране на входа с ~46%.

Режимът RTK е вдъхновен от RTK - Rust Token Killer на RTK AI — високопроизводителния проект за компресиране на изхода от команди за терминал, компилиране, тестване, git и филтриране на изхода от инструменти. RTK отчита 60-90% спестяване, като примерната сесия в неговия README показва спестени ~80%.


Усъвършенствани системи за компресиране

Освен 7-те стандартни режима, OmniRoute включва няколко усъвършенствани системи за компресиране, които работят автоматично според контекста.

Компресиране със съобразяване с кеша

Някои доставчици (като Anthropic с кеширане на подкани) поддържат кеширане на подкани, което им позволява да кешират части от подканата, за да намалят разходите и закъснението. Когато кеширането е активирано, агресивното компресиране всъщност може да влоши производителността, защото променя кешираните токени и прави кеша невалиден.

Модулът cachingAware.ts решава този проблем, като открива контекста за кеширане и съответно коригира стратегията за компресиране.

Как работи

  1. Откриване на контекста за кеширане — Сканира тялото на заявката за маркери cache_control
  2. Разпознаване на доставчиците с кеширане — Проверява дали целевият доставчик поддържа кеширане
  3. Коригиране на стратегията — Понижава aggressive/ultra до standard при доставчици с кеширане
  4. Пропускане на системната подкана — Системните подкани обикновено се кешират, затова не се компресират
  5. Използване на детерминистични трансформации — Използват се само трансформации, които дават последователен резултат

Примерен код

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", isCachingProvider: true }

const strategy = getCacheAwareStrategy("aggressive", ctx);
// → { strategy: "standard", skipSystemPrompt: true, deterministicOnly: true }

Кога да се използва

Компресирането със съобразяване с кеша е винаги включено — не е необходима конфигурация. То се задейства само когато:

  • Заявката съдържа маркери cache_control
  • Целевият доставчик поддържа кеширане на подкани (Anthropic, OpenAI и др.)

Прогресивно остаряване

Дългите разговори натрупват много последователни реплики, но по-старите реплики стават по-малко релевантни. Модулът progressiveAging.ts опростява съобщенията според отдалечеността им по реплики:

  • Скорошни реплики (0-3): Запазват се дословно (с всички подробности)
  • Междинни реплики (4-8): Компресиране Lite (изчистване на празните пространства и форматирането)
  • Стари реплики (9+): Компресиране Caveman (премахване на излишното съдържание, обобщаване)
  • Много стари реплики (20+): Силно обобщаване или премахване

Примерен код

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, // Реплики 4-8: компресиране lite
  moderate: 20, // Реплики 9-20: компресиране caveman
  // Реплики 21+: силно обобщаване
});

// saved = брой спестени токени

Кога да се използва

Прогресивното остаряване е винаги включено за режимите aggressive и ultra. То е особено ефективно за:

  • Продължителни сесии за програмиране
  • Многодневни разговори
  • Агентни работни процеси с много извиквания на инструменти

Режим Caveman за изхода

Модулът outputMode.ts вмъква инструкции в системната подкана, за да накара самия модел да генерира компресиран и сбит изход (стил „пещерен човек“).

Как работи

Вместо да компресира входа, този режим добавя системна подкана от типа:

„Отговаряй с минимален брой думи. Пропускай любезностите. Използвай кратки изречения.“

Това работи особено добре за:

  • Генериране на код (по-сбит изход = по-малко токени)
  • Бързи въпроси и отговори (няма нужда от подробни обяснения)
  • Пакетна обработка (максимална пропускателна способност)

Кога да се използва

Режимът Caveman за изхода е по избор — задайте го чрез комбинираната конфигурация:

{
  "strategy": "auto",
  "config": {
    "auto": {
      "outputMode": "caveman"
    }
  }
}

Стилове за изхода (каталог)

Описаният по-горе режим Caveman за изхода е наследеният път с един стил. Фаза 4 го обобщи в каталог от комбинируеми стилове за изхода: OUTPUT_STYLE_CATALOG в open-sse/services/compression/outputStyles/catalog.ts. Всеки стил представлява инструкция в системната подкана, която кара самия модел да генерира по-евтин изход; стиловете могат да бъдат активирани заедно и се вмъкват в реда от каталога.

Стил id Какво прави Езици на инструкциите
Сбита проза terse-prose Премахва пълнежа/членовете/уговорките; запазва техническото съдържание точно. Същият текст като при наследения режим Caveman за изхода (чрез препратка, без повторно изписване). 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 „Най-добрият код е кодът, който никога не е написан“: повторно използване > пренаписване, първопричина > симптом, най-кратката работеща разлика. en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Имам ADHD (първо действие) i-have-adhd Първо действие (команда/път/фрагмент преди прозата), номерирани стъпки с ограничен брой, ЕДНА конкретна следваща стъпка, без въведение/обобщение/заключителни фрази. Адаптирано от ayghri/i-have-adhd (MIT). en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
Сбит CJK (文言) terse-cjk Ултрасбит стил на класически китайски. zh (ограничено според локала: предлага се само когато определеният език е zh)

Всеки стил се предлага с три нива на интензивност — lite, full, ultra — и всяко ниво завършва със споделената клауза за ограниченията, която запазва дословно блоковете с код, файловите пътища, командите, съобщенията за грешки, URL адресите и идентификаторите.

Как работи вмъкването

applyOutputStyles() (open-sse/services/compression/outputStyles/apply.ts) съпоставя избора с каталога (непознатите идентификатори и стиловете, които не съответстват на локала, се премахват и никога не предизвикват грешка), обединява избраните инструкции в реда от каталога, добавя клаузата за ограниченията веднъж и поставя резултата в началото на системната подкана след един маркер за идемпотентност ([OmniRoute Output Styles]) — повторното прилагане не извършва никакво действие. Когато за открития език на заявката има превод, се вмъква локализираната инструкция вместо английската.

Как да се активира

В таблото за управление: Контекст → Настройки → Компресия — по един ред за всеки стил с превключвател за включване/изключване и селектор за ниво. Програмно конфигурацията за компресия запазва избора така:

{
  "outputStyles": [
    { "id": "i-have-adhd", "level": "full" },
    { "id": "less-code", "level": "lite" }
  ]
}

Обратна съвместимост: наследената комбинирана настройка outputMode: "caveman" продължава да работи и се съпоставя с terse-prose, като е байт по байт идентична със старото вмъкване за всеки наследен език.

Избор на език: при включено languageConfig.enabled autoDetect избира езика на последното потребителско съобщение (същият детектор като при входните механизми); изключването на autoDetect фиксира defaultLanguage. Изключено → английски.

Матрицата стил × език е фиксирана чрез tests/unit/compression/output-styles-i18n-matrix.test.ts: нов стил не може да бъде пуснат без поне превод на pt-BR (или изрично проследявано изключение), а съществуващ стил не може незабелязано да загуби локал. За да добавите стил, вижте EXTENDING_COMPRESSION.md.

Компресиране на резултатите от инструменти

Модулът toolResultCompressor.ts предоставя 5 специализирани стратегии за компресиране на резултати от инструменти (извиквания на функции, резултати от агенти, резултати от търсене и др.):

  1. Компресиране на резултати от търсене — Премахва излишните резултати, запазва най-добрите N
  2. Компресиране при четене на файлове — Съкращава големи файлове, запазва заглавните части/импортите
  3. Компресиране при изпълнение на код — Запазва само съществения stdout/stderr
  4. Компресиране на заявки към бази данни — Ограничава редовете, премахва подробните метаданни
  5. Компресиране на API отговори — Премахва полетата с null, свива масивите

Кога да се използва

Компресирането на резултатите от инструменти е винаги включено, когато има извиквания на инструменти. Не е необходима конфигурация.

Последователен конвейер

Последователният режим изпълнява няколко механизма един след друг — обикновено първо RTK (6090% икономия при изхода от инструменти), а след това Caveman (допълнителна икономия от 30% върху останалия текст). Така се постига обща икономия от 7895%.

Как работи

Вход (1000 токена)
  → RTK (филтър, съобразен с командите) → 200 токена
    → Caveman (премахване на пълнежа) → 140 токена
  → Изход (140 токена, 86% икономия)

Кога да се използва

Използвайте последователния режим за:

  • Работни процеси с интензивно използване на инструменти (агентно програмиране, проучвания)
  • Пакетна обработка, чувствителна към разходите
  • Когато се нуждаете от максимална икономия на токени

Конфигурирайте чрез комбинираната конфигурация:

{
  "strategy": "auto",
  "config": {
    "auto": {
      "modePack": "stacked"
    }
  }
}

Замяна на настройките за компресия по комбинации

Можете да замените глобалния режим на компресия за всяка отделна комбинация, за да настроите прецизно поведението за различни случаи на употреба:

{
  "id": "coding-combo",
  "strategy": "priority",
  "config": {
    "auto": {
      "weights": { "taskFit": 0.5 },
      "modePack": "quality-first"
    }
  },
  "compressionOverride": {
    "mode": "aggressive",
    "stackedPipelines": ["rtk", "caveman"],
    "preserveToolDefinitions": true
  }
}

Това е полезно за:

  • Комбинации за програмиране: Използвайте режим aggressive за дълги сесии
  • Комбинации за бързи въпроси и отговори: Използвайте режим lite за бързи отговори
  • Комбинации с интензивно използване на инструменти: Използвайте режим stacked за максимални икономии
  • Комбинации за продукционна среда: Използвайте режим cache-aware за доставчици, поддържащи кеширане

Вижте също