Перейти к содержимому
OmniRoute source

Compression Engines (Русский)

Комбинации сжатия — это именованные профили сжатия, которые можно назначать комбинациям маршрутизации:

  • compression_combos: хранит режим, конвейер, конфигурацию RTK, языковую конфигурацию и маркер по умолчанию
  • compression_combo_assignments: сопоставляет комбинацию сжатия с комбинацией маршрутизации
  • интеграция во время выполнения разрешает назначенную комбинацию сжатия до применения общих переопределений комбинации
  • аналитика включает compression_combo_id и engine

Раздел панели управления: Dashboard -> Context & Cache -> Compression Combos.

Маршрут Назначение
/api/settings/compression Глобальные настройки сжатия (включая конфигурацию mcpAccessibility)
/api/compression/preview Предварительный просмотр любого режима сжатия
/api/compression/language-packs Список доступных языковых пакетов Caveman
/api/context/caveman/config Псевдоним настроек Caveman
/api/context/rtk/config Значения по умолчанию и настройки RTK
/api/context/rtk/filters Каталог фильтров RTK
/api/context/rtk/test Эндпоинт предварительного просмотра/тестирования RTK
/api/context/rtk/raw-output/[id] Аутентифицированное восстановление отредактированного необработанного вывода
/api/context/combos CRUD для комбинаций сжатия
/api/context/combos/[id]/assignments CRUD для назначений комбинаций маршрутизации
/api/context/analytics Псевдоним аналитики сжатия

Маршруты управления требуют аутентификации для управления или проверок политик API-ключей.

Сжатие предоставляет пять инструментов MCP:

Инструмент Область Назначение
omniroute_compression_status read:compression Настройки, аналитика, статистика кеша
omniroute_compression_configure write:compression Обновление глобальных настроек
omniroute_set_compression_engine write:compression Установка режима и необязательного конвейера
omniroute_list_compression_combos read:compression Список комбинаций сжатия
omniroute_compression_combo_stats read:compression Чтение аналитики комбинаций/движков

Эмбеддинги никогда не сжимаются. open-sse/handlers/embeddings.ts никогда не вызывает движок сжатия — тела запросов/ответов передаются исполнителю напрямую без изменений. Сегодня это обеспечивается структурно (обработчики эмбеддингов и завершений чата разделены), а не проверкой во время выполнения, однако это означает, что риск искажения векторов из #8034 отсутствует в тракте эмбеддингов.

Фильтр исключений для отдельных моделей/эндпоинтов (#8034). Для завершений чата оператор может указать идентификаторы моделей / цели provider/model, которые никогда не должны сжиматься, — это защитная мера, полезная на случай, если позднее сжатие будет подключено ближе к тракту, смежному с эмбеддингами, а также в целом для любой модели, где важен точный, побайтово неизменный промпт (детерминированные оценки, чувствительные к кешу префиксы и т. д.).

  • Поле настроек: exclusions?: string[] в глобальной конфигурации сжатия (GET/PUT /api/settings/compression), сохраняемое через существующее пространство имён сжатия key_value (src/lib/db/compression.ts) — новая таблица не требуется.
  • Вкладка панели управления: Dashboard → Compression → Exclusions (/dashboard/compression/exclusions).
  • Синтаксис шаблонов: * — единственный подстановочный знак. Все прочие метасимволы регулярных выражений в шаблоне экранируются перед сопоставлением, поэтому gpt-5.6 соответствует только буквальной строке и никогда — gpt-5x6 (безопасно в отношении ReDoS, ограничено, без вложенных квантификаторов). Шаблоны сопоставляются без учёта регистра как с отдельным идентификатором модели, так и с составным значением provider/model — gpt-5-6, openai/gpt-5-6 и openai/* поддерживаются, а * само по себе исключает все модели.
  • Сопоставление: isCompressionExcluded() / normalizeCompressionExclusions() в open-sse/services/compression/exclusions.ts. chatCore.ts проверяет исключённую цель сразу после разрешения настроек сжатия, до запуска любого движка, и обрабатывает совпадение точно так же, как глобальное отключение сжатия, — тело запроса гарантированно остаётся побайтово идентичным. Пропуск записывается через writeCompressionSkip(..., "excluded") для отображения в аналитике.
  • Значение по умолчанию (пустой/отсутствующий список): поведение идентично существовавшему до #8034 — ничего не исключается.
  • LLMLingua-2 (SLM) требует совместного размещения необязательных зависимостей. Воркер запускается в production-сборке, только когда @atjsh/llmlingua-2 и одноранговые зависимости совместно размещены в dist/node_modules (см. scripts/build/colocateOptionals.mjs, #4286). Без них движок аварийно возвращает исходный текст. Разрешение воркера больше не зависит от import.meta.url (он не работает в автономном бандле) — вместо этого оно привязано к текущему рабочему каталогу среды выполнения / argv[1].
  • Языковые пакеты Caveman de / fr / ja являются частичными. Они содержат правила context + filler + structural, но не содержат пакетов dedup / ultra, поэтому интенсивность ultra для этих языков не выше, чем full (они используют только собственные правила — скрытого отката к английским правилам dedup/ultra, который мог бы исказить иностранный текст, нет). Пакеты en / es / id / pt-BR являются полными. Приветствуется добавление dedup.json + ultra.json для частичных пакетов.
  • Составная телеметрия перечисляет только движки, выполнившие сжатие. Шаг составного конвейера, движок которого был запущен, но обеспечил экономию 0 %, возвращает stats:null и поэтому не отображается в engineBreakdown — его невозможно отличить от пропущенного шага. Различение состояний «запущен, 0 %» и «пропущен» потребовало бы изменения модели детализации и отложено.

Целевые гейты для этой области:

Окно терминала
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

Исходный код OmniRoute (a58000c7685f)

HagiCode

HagiCode — агентная среда разработки со структурированными процессами, параллельным выполнением несколькими агентами и интерфейсами Hero Dungeon.

Превращайте идеи в полезное ПО с более умным, быстрым и увлекательным агентным рабочим процессом.

Главный экран HagiCode в светлой теме
  • SmartСтруктурированные процессы превращают намерение в исполнимый путь от идеи до готового изменения.
  • EfficientМультиагентные процессы параллельно продвигают исследование, реализацию и проверку.
  • FunHero Dungeon делает длительную совместную разработку наглядной и увлекательной.
Перейти на HagiCode