Files
OmniRoute/docs/i18n/ru/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

50 KiB
Raw Blame History

🗜️ Prompt Compression Guide — OmniRoute (Русский)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 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 · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Автоматически экономьте 1595% подходящего контекста. Краткий обзор см. в разделе README о сжатии.

Обзор

OmniRoute реализует модульный конвейер сжатия промптов, который запускается заблаговременно, прежде чем запросы попадут к вышестоящим провайдерам. Это означает, что экономия токенов происходит прозрачно — никаких изменений в рабочем процессе не требуется.

Запрос клиента
  → Выбор стратегии сжатия
    → Есть переопределение для комбинации? → Использовать настройку комбинации
    → Достигнут порог автозапуска? → Использовать автоматический режим
    → Задан режим по умолчанию? → Использовать глобальную настройку
    → Выключено? → Пропустить сжатие
  → Выбранный режим сжатия
    → Off: Без сжатия
    → Lite: Безопасная очистка пробелов и форматирования (~15%)
    → Standard: Удаление лишних слов в телеграфном стиле (~30%)
    → Aggressive: Устаревание истории + суммаризация (~50%)
    → Ultra: Эвристическое сокращение + прореживание блоков кода (~75%)
    → RTK: Фильтрация вывода терминала/инструментов с учетом команд (диапазон 6090% для вышестоящего провайдера)
    → Stacked: Упорядоченный конвейер из нескольких движков, обычно RTK, затем Caveman (диапазон 7895% для подходящего содержимого)
  → Сжатый запрос → Провайдер

Режимы сжатия

Off

Сжатие не применяется. Все сообщения передаются без изменений.

Режим Lite (экономия ~15%, задержка <1ms)

Самый безопасный режим — без семантических изменений, только очистка форматирования:

Метод Описание
collapseWhitespace Объединяет последовательные пустые строки и удаляет пробелы в конце строк
dedupSystemPrompt Удаляет дублирующиеся системные сообщения
compressToolResults Сжимает многословный вывод инструментов/функций
removeRedundantContent Удаляет повторяющиеся инструкции
replaceImageUrls Сокращает URI изображений с данными в формате base64

Лучше всего подходит для: Постоянного использования и критически важных с точки зрения безопасности рабочих процессов.

Режим Standard (экономия ~30%)

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

  • Удаляет слова-паразиты ("пожалуйста", "я думаю", "в основном", "на самом деле")
  • Сокращает многословные фразы ("для того чтобы" → "чтобы", "в результате того что" → "потому что")
  • Удаляет излишне вежливые смягчающие обороты ("Не могли бы вы...", "Если бы вы могли...")
  • Более 30 правил на основе регулярных выражений, настроенных для промптов, связанных с программированием

Лучше всего подходит для: Повседневной разработки и команд, стремящихся сократить расходы.

Режим Aggressive (экономия ~50%)

Интеллектуальное управление историей для длительных сеансов:

  • Устаревание сообщений — более старые сообщения сжимаются всё сильнее
  • Суммаризация результатов инструментов — длинные результаты работы инструментов заменяются краткими сводками
  • Механизмы сохранения структурной целостности — обеспечивают согласованность пар tool_use + tool_result
  • Учет контекстного окна — соблюдает ограничения количества токенов для каждой модели

Лучше всего подходит для: Длительных сеансов отладки и больших кодовых баз.

Режим Ultra (экономия ~75%)

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

  • Эвристическое сокращение — удаляет сообщения с релевантностью ниже порогового значения
  • Прореживание блоков кода — сжимает повторяющиеся примеры кода
  • Усечение с помощью двоичного поиска — находит оптимальную точку отсечения для контекстного окна
  • Включает все возможности режима Aggressive

Лучше всего подходит для: Ситуаций, когда вы постоянно достигаете ограничений контекста.

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

Лучше всего подходит для: Сеансов работы агентов, содержащих протоколы оболочки, сборки, тестов, git, grep и файлового вывода.

Режим Stacked (диапазон 7895% для подходящего содержимого)

Режим Stacked запускает несколько движков сжатия в детерминированном порядке. Конвейер по умолчанию:

RTK -> Caveman

Такой порядок сначала сокращает вывод терминала/инструментов, а затем применяет семантическое сжатие Caveman к оставшейся части промпта на естественном языке. Конвейеры Stacked можно настраивать глобально или через комбинации сжатия, назначенные комбинациям маршрутизации.

Лучше всего подходит для: Смешанного контекста с большими журналами инструментов, а также инструкциями пользователя или сводками ассистента.


Расчёт экономии по данным исходных проектов

OmniRoute приводит данные об экономии за счёт сжатия из двух источников: бенчмарков исходных проектов и собственной комбинации движков OmniRoute.

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

Для пересекающихся полезных нагрузок инструментов/контекста комбинация OmniRoute по умолчанию последовательно применяет движки:

RTK -> Caveman

Совокупная экономия рассчитывается мультипликативно, а не аддитивно:

итог     = 1 - (1 - экономия RTK) * (1 - экономия Caveman на входных данных)
среднее  = 1 - (1 - 0.80) * (1 - 0.46) = 89.2%
диапазон = 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-адреса, заголовки, версии или идентификаторы констант в ВЕРХНЕМ РЕГИСТРЕ.

Это ожидаемое и безопасное поведение, а не ошибка: сеанс программирования, в котором преимущественно читаются чистые файлы или выполняется поиск по ним, покажет умеренную общую экономию даже при полностью включённом сжатии, тогда как сеанс, столкнувшийся с циклом сбоев или многословным линтером, покажет полный диапазон экономии 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> Именованная комбинация: сначала ищется по имени без учёта регистра, затем по идентификатору.

Применённый план возвращается в заголовке ответа 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
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 включается явно — задайте его через конфигурацию combo:

{
  "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 «Лучший код — код, который никогда не был написан»: повторное использование > переписывание, первопричина > симптом, кратчайший работающий diff. en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
У меня СДВГ (сначала действие) 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) сопоставляет выбранные параметры с каталогом (неизвестные id и стили, не соответствующие локали, отбрасываются без ошибки), объединяет выбранные инструкции в порядке каталога, однократно добавляет положение об ограничениях и помещает результат в начало системного промпта после единственного маркера идемпотентности ([OmniRoute Output Styles]) — повторное применение ничего не меняет. Если для определённого языка запроса имеется перевод, вместо английской инструкции внедряется локализованная.

Как включить

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

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

Обратная совместимость: устаревшая настройка combo 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%)

Когда использовать

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

  • Рабочих процессов с интенсивным использованием инструментов (агентное программирование, исследования)
  • Пакетной обработки, чувствительной к стоимости
  • Случаев, когда требуется максимальная экономия токенов

Настройте через combo:

{
  "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 для провайдеров, поддерживающих кэширование

См. также