# OmniRoute — Dashboard Features Gallery (Русский) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/FEATURES.md) · 🇪🇹 [am](../../../am/docs/guides/FEATURES.md) · 🇸🇦 [ar](../../../ar/docs/guides/FEATURES.md) · 🇦🇿 [az](../../../az/docs/guides/FEATURES.md) · 🇧🇬 [bg](../../../bg/docs/guides/FEATURES.md) · 🇧🇩 [bn](../../../bn/docs/guides/FEATURES.md) · 🇧🇦 [bs](../../../bs/docs/guides/FEATURES.md) · 🇨🇿 [cs](../../../cs/docs/guides/FEATURES.md) · 🇩🇰 [da](../../../da/docs/guides/FEATURES.md) · 🇩🇪 [de](../../../de/docs/guides/FEATURES.md) · 🇬🇷 [el](../../../el/docs/guides/FEATURES.md) · 🇪🇸 [es](../../../es/docs/guides/FEATURES.md) · 🇪🇪 [et](../../../et/docs/guides/FEATURES.md) · 🇮🇷 [fa](../../../fa/docs/guides/FEATURES.md) · 🇫🇮 [fi](../../../fi/docs/guides/FEATURES.md) · 🇫🇷 [fr](../../../fr/docs/guides/FEATURES.md) · 🇮🇪 [ga](../../../ga/docs/guides/FEATURES.md) · 🇮🇳 [gu](../../../gu/docs/guides/FEATURES.md) · 🇳🇬 [ha](../../../ha/docs/guides/FEATURES.md) · 🇮🇱 [he](../../../he/docs/guides/FEATURES.md) · 🇮🇳 [hi](../../../hi/docs/guides/FEATURES.md) · 🇭🇷 [hr](../../../hr/docs/guides/FEATURES.md) · 🇭🇺 [hu](../../../hu/docs/guides/FEATURES.md) · 🇦🇲 [hy](../../../hy/docs/guides/FEATURES.md) · 🇮🇩 [id](../../../id/docs/guides/FEATURES.md) · 🇳🇬 [ig](../../../ig/docs/guides/FEATURES.md) · 🇮🇹 [it](../../../it/docs/guides/FEATURES.md) · 🇯🇵 [ja](../../../ja/docs/guides/FEATURES.md) · 🇬🇪 [ka](../../../ka/docs/guides/FEATURES.md) · 🇰🇭 [km](../../../km/docs/guides/FEATURES.md) · 🇮🇳 [kn](../../../kn/docs/guides/FEATURES.md) · 🇰🇷 [ko](../../../ko/docs/guides/FEATURES.md) · 🇱🇹 [lt](../../../lt/docs/guides/FEATURES.md) · 🇱🇻 [lv](../../../lv/docs/guides/FEATURES.md) · 🇮🇳 [ml](../../../ml/docs/guides/FEATURES.md) · 🇮🇳 [mr](../../../mr/docs/guides/FEATURES.md) · 🇲🇾 [ms](../../../ms/docs/guides/FEATURES.md) · 🇲🇹 [mt](../../../mt/docs/guides/FEATURES.md) · 🇲🇲 [my](../../../my/docs/guides/FEATURES.md) · 🇳🇵 [ne](../../../ne/docs/guides/FEATURES.md) · 🇳🇱 [nl](../../../nl/docs/guides/FEATURES.md) · 🇳🇴 [no](../../../no/docs/guides/FEATURES.md) · 🇮🇳 [or](../../../or/docs/guides/FEATURES.md) · 🇮🇳 [pa](../../../pa/docs/guides/FEATURES.md) · 🇵🇭 [phi](../../../phi/docs/guides/FEATURES.md) · 🇵🇱 [pl](../../../pl/docs/guides/FEATURES.md) · 🇵🇹 [pt](../../../pt/docs/guides/FEATURES.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/FEATURES.md) · 🇷🇴 [ro](../../../ro/docs/guides/FEATURES.md) · 🇱🇰 [si](../../../si/docs/guides/FEATURES.md) · 🇸🇰 [sk](../../../sk/docs/guides/FEATURES.md) · 🇸🇮 [sl](../../../sl/docs/guides/FEATURES.md) · 🇷🇸 [sr](../../../sr/docs/guides/FEATURES.md) · 🇸🇪 [sv](../../../sv/docs/guides/FEATURES.md) · 🇰🇪 [sw](../../../sw/docs/guides/FEATURES.md) · 🇮🇳 [ta](../../../ta/docs/guides/FEATURES.md) · 🇮🇳 [te](../../../te/docs/guides/FEATURES.md) · 🇹🇭 [th](../../../th/docs/guides/FEATURES.md) · 🇹🇷 [tr](../../../tr/docs/guides/FEATURES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/FEATURES.md) · 🇵🇰 [ur](../../../ur/docs/guides/FEATURES.md) · 🇺🇿 [uz](../../../uz/docs/guides/FEATURES.md) · 🇻🇳 [vi](../../../vi/docs/guides/FEATURES.md) · 🇳🇬 [yo](../../../yo/docs/guides/FEATURES.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/FEATURES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/FEATURES.md) --- 🌐 **Languages:** 🇺🇸 [English](../../../../guides/FEATURES.md) · 🇪🇹 [am](../../../am/docs/guides/FEATURES.md) · 🇸🇦 [ar](../../../ar/docs/guides/FEATURES.md) · 🇦🇿 [az](../../../az/docs/guides/FEATURES.md) · 🇧🇬 [bg](../../../bg/docs/guides/FEATURES.md) · 🇧🇩 [bn](../../../bn/docs/guides/FEATURES.md) · 🇧🇦 [bs](../../../bs/docs/guides/FEATURES.md) · 🇨🇿 [cs](../../../cs/docs/guides/FEATURES.md) · 🇩🇰 [da](../../../da/docs/guides/FEATURES.md) · 🇩🇪 [de](../../../de/docs/guides/FEATURES.md) · 🇬🇷 [el](../../../el/docs/guides/FEATURES.md) · 🇪🇸 [es](../../../es/docs/guides/FEATURES.md) · 🇪🇪 [et](../../../et/docs/guides/FEATURES.md) · 🇮🇷 [fa](../../../fa/docs/guides/FEATURES.md) · 🇫🇮 [fi](../../../fi/docs/guides/FEATURES.md) · 🇫🇷 [fr](../../../fr/docs/guides/FEATURES.md) · 🇮🇪 [ga](../../../ga/docs/guides/FEATURES.md) · 🇮🇳 [gu](../../../gu/docs/guides/FEATURES.md) · 🇳🇬 [ha](../../../ha/docs/guides/FEATURES.md) · 🇮🇱 [he](../../../he/docs/guides/FEATURES.md) · 🇮🇳 [hi](../../../hi/docs/guides/FEATURES.md) · 🇭🇷 [hr](../../../hr/docs/guides/FEATURES.md) · 🇭🇺 [hu](../../../hu/docs/guides/FEATURES.md) · 🇦🇲 [hy](../../../hy/docs/guides/FEATURES.md) · 🇮🇩 [id](../../../id/docs/guides/FEATURES.md) · 🇳🇬 [ig](../../../ig/docs/guides/FEATURES.md) · 🇮🇹 [it](../../../it/docs/guides/FEATURES.md) · 🇯🇵 [ja](../../../ja/docs/guides/FEATURES.md) · 🇬🇪 [ka](../../../ka/docs/guides/FEATURES.md) · 🇰🇭 [km](../../../km/docs/guides/FEATURES.md) · 🇮🇳 [kn](../../../kn/docs/guides/FEATURES.md) · 🇰🇷 [ko](../../../ko/docs/guides/FEATURES.md) · 🇱🇹 [lt](../../../lt/docs/guides/FEATURES.md) · 🇱🇻 [lv](../../../lv/docs/guides/FEATURES.md) · 🇮🇳 [ml](../../../ml/docs/guides/FEATURES.md) · 🇮🇳 [mr](../../../mr/docs/guides/FEATURES.md) · 🇲🇾 [ms](../../../ms/docs/guides/FEATURES.md) · 🇲🇹 [mt](../../../mt/docs/guides/FEATURES.md) · 🇲🇲 [my](../../../my/docs/guides/FEATURES.md) · 🇳🇵 [ne](../../../ne/docs/guides/FEATURES.md) · 🇳🇱 [nl](../../../nl/docs/guides/FEATURES.md) · 🇳🇴 [no](../../../no/docs/guides/FEATURES.md) · 🇮🇳 [or](../../../or/docs/guides/FEATURES.md) · 🇮🇳 [pa](../../../pa/docs/guides/FEATURES.md) · 🇵🇭 [phi](../../../phi/docs/guides/FEATURES.md) · 🇵🇱 [pl](../../../pl/docs/guides/FEATURES.md) · 🇵🇹 [pt](../../../pt/docs/guides/FEATURES.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/FEATURES.md) · 🇷🇴 [ro](../../../ro/docs/guides/FEATURES.md) · 🇱🇰 [si](../../../si/docs/guides/FEATURES.md) · 🇸🇰 [sk](../../../sk/docs/guides/FEATURES.md) · 🇸🇮 [sl](../../../sl/docs/guides/FEATURES.md) · 🇷🇸 [sr](../../../sr/docs/guides/FEATURES.md) · 🇸🇪 [sv](../../../sv/docs/guides/FEATURES.md) · 🇰🇪 [sw](../../../sw/docs/guides/FEATURES.md) · 🇮🇳 [ta](../../../ta/docs/guides/FEATURES.md) · 🇮🇳 [te](../../../te/docs/guides/FEATURES.md) · 🇹🇭 [th](../../../th/docs/guides/FEATURES.md) · 🇹🇷 [tr](../../../tr/docs/guides/FEATURES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/FEATURES.md) · 🇵🇰 [ur](../../../ur/docs/guides/FEATURES.md) · 🇺🇿 [uz](../../../uz/docs/guides/FEATURES.md) · 🇻🇳 [vi](../../../vi/docs/guides/FEATURES.md) · 🇳🇬 [yo](../../../yo/docs/guides/FEATURES.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/FEATURES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/FEATURES.md) Наглядное руководство по всем разделам панели управления OmniRoute. > 📅 **Последнее обновление:** 2026-06-28 — **v3.8.40** --- ## ✨ Основные нововведения v3.8.0 В цикле v3.7.x → v3.8.0 были добавлены автоматическая маршрутизация без настройки, новые провайдеры, потоки OAuth, повышенная отказоустойчивость и значительно улучшенный интерфейс командной строки. Ниже перечислены ключевые возможности — полная информация приведена далее в документе и в спецификациях по ссылкам. - 🤖 **Auto Combo / автоматическая маршрутизация без настройки** — используйте префиксы `auto/coding`, `auto/fast`, `auto/cheap`, `auto/offline`, `auto/smart`, `auto/lkgp`, `auto/chaos`. Работает на базе механизма оценки по 16 факторам и 6 тщательно подобранных **пакетов режимов** (ship-fast, cost-saver, quality-first, offline-friendly, reliability-first, chaos-mode) - 🆕 **Провайдер Command Code** (#2199) — полноценная регистрация с каталогом моделей и отслеживанием квот - 🆕 **Провайдер Z.AI** — новый провайдер с бесплатным уровнем и метками квот - 🎬 **Расширение мультимедийных возможностей KIE** — расширенный каталог, включающий модели генерации видео - 🔐 **Аутентификация Devin** — Desktop импортирует существующий API-ключ Devin, а CLI использует локальные учётные данные `devin auth login` - 🆓 **8 новых бесплатных провайдеров** — LLM7, Lepton, UncloseAI, BazaarLink, Completions, Enally, FreeTheAi, Command Code - 🎯 **Маршрутизация по уровням W1–W4 с учётом манифестов** — манифесты провайдеров определяют взвешенный выбор уровня - 🎨 **Полная совместимость Cursor с OpenAI** — вызовы инструментов, потоковая передача и сквозное управление сеансами - 📊 **Использование плана Cursor Pro** — данные о квотах и циклах отображаются на панели ограничений провайдеров - ⚡ **Разбивка по уровням обслуживания / аналитика быстрого уровня Codex** — видимость потребления по каждому уровню - 📌 **Закреплённая маршрутизация для каждого сеанса** — между запросами сеансы Codex закрепляются за одной и той же учётной записью - 🔊 **Улучшения Inworld TTS** — каталоги голосов, потоковая передача и снижение задержки - 🔑 **Аутентификация Kiro без графического интерфейса** — вход через локальное хранилище SQLite `kiro-cli`, браузер не требуется - 📉 **Мониторинг квот и ограничений DeepSeek** — суточное и месячное использование отображается на панели мониторинга - 🔄 **Стратегия маршрутизации с учётом сброса квот** — комбинации теперь отдают предпочтение учётным записям, окно квот которых будет сброшено раньше - ⏱️ **`fallbackDelayMs`** и **динамическое определение лимита инструментов** — более точная настройка времени переключения + ограничения количества инструментов для каждого провайдера - 🔧 **Деградация фонового режима (Responses API)** — переход в синхронный режим со структурированным предупреждением, если вышестоящий сервис не поддерживает фоновый опрос - 🚦 **Классификация ошибок 429 для каждого провайдера** + переключатель `useUpstream429BreakerHints` — более точная работа предохранителя с использованием подсказок вышестоящего сервиса об ограничении частоты запросов - 🩺 **Панель периодов охлаждения моделей** — отслеживайте блокировки отдельных моделей и вручную повторно включайте их через пользовательский интерфейс - 🔒 **Динамическое обнаружение сертификатов MITM в Linux** — работает в Debian/Ubuntu, Fedora/RHEL, Arch и других дистрибутивах - 💻 **Набор улучшений CLI** — более 20 команд, включая `omniroute providers`, `omniroute combos`, `omniroute doctor`, `omniroute setup` - 🔍 **Обнаружение моделей эмбеддингов Qdrant** — автоматическая проверка модели векторного хранилища - 🔑 **API-ключи / Bearer-ключи с областью действия `manage`** — программное выполнение административных операций через API - 🏥 **Аналитика состояния целей комбинации** + **структурированный конструктор комбинаций** — состояние каждой цели и визуальный конструктор для формирования шагов `(provider, model, connection)` - 🤝 **OAuth-провайдер GitLab Duo** — вход с использованием учётных данных GitLab - 🧠 **Кеш повторного воспроизведения рассуждений** — гибридное хранение трасс рассуждений в памяти и SQLite 📚 **Связанная документация:** [Фреймворк навыков](../frameworks/SKILLS.md) · [Система памяти](../frameworks/MEMORY.md) · [Облачные агенты](../frameworks/CLOUD_AGENT.md) · [Веб-хуки](../frameworks/WEBHOOKS.md) · [Кеш повторного воспроизведения рассуждений](../routing/REASONING_REPLAY.md) --- ## 🔌 Провайдеры Управляйте подключениями к провайдерам ИИ: OAuth-провайдерами (Claude Code, Codex), провайдерами с API-ключами (Groq, DeepSeek, OpenRouter) и бесплатными провайдерами (Qoder, Kiro). Для аккаунтов Kiro доступно отслеживание баланса кредитов — оставшиеся кредиты, общий лимит и дата обновления отображаются в разделе Dashboard → Usage. Для подключений OpenRouter можно сохранить отдельный для каждого подключения `preset` в Advanced Settings. Если он задан, OmniRoute отправляет его как поле верхнего уровня запроса OpenRouter, например `"preset": "email-copywriter"`, если только клиентский запрос ещё не предоставил собственный `preset`. ![Панель провайдеров](../screenshots/01-providers.png) --- ## 🎨 Комбинации Создавайте комбинации маршрутизации моделей с 19 общедоступными стратегиями: priority, weighted, round-robin, context-relay, fill-first, p2c (выбор из двух вариантов), random, least-used, cost-optimized, reset-aware, reset-window, headroom, strict-random, auto, lkgp (последний заведомо исправный провайдер), context-optimized, cache-optimized, **fusion** (параллельная отправка запроса группе моделей с последующим синтезом единого ответа моделью-судьёй) и **pipeline**. Каждая комбинация объединяет несколько моделей в цепочку с автоматическим переключением при сбое, а также включает быстрые шаблоны и проверки готовности. Последние улучшения комбинаций: - **Структурированный конструктор комбинаций** — создавайте каждый шаг, выбирая провайдера, модель и конкретный аккаунт или подключение - **Поддержка повторяющихся провайдеров** — используйте одного и того же провайдера несколько раз в одной комбинации, если кортеж `(provider, model, connection)` остаётся уникальным - **Состояние целей комбинации** — аналитика и данные о состоянии теперь различают отдельные цели и шаги комбинации, а не объединяют всё в строки моделей - **Составной порядок уровней** — `defaultTier -> fallbackTier` теперь влияет на порядок выполнения и переключения при сбое для шагов комбинации верхнего уровня - **Шаблоны системных промптов** — `system_message` комбинации поддерживает серверные заполнители `{{MODEL_ID}}`, `{{PROVIDER_ID}}`, `{{ACCOUNT}}` и `{{FINGERPRINT}}`, которые подставляются на основе фактически выбранной цели непосредственно перед отправкой. Разрешены только заполнители из списка, без рекурсивной подстановки; неизвестные заполнители остаются без изменений; пустые значения заменяются пустыми строками; системные промпты клиента никогда не изменяются. `{{FINGERPRINT}}` разрешается только для бесплатных провайдеров на основе отпечатков с закреплённым или автоматически ротируемым отпечатком — во всех остальных случаях он заменяется пустой строкой (например, для подключений с одним отпечатком и провайдеров без fp). Подстановка выполняется в стандартном цикле отправки, round-robin и закреплённых сессиях кэша контекста; стратегии fusion, chaos, pipeline и nested-execute пока не выполняют подстановку заполнителей. ![Панель комбинаций](../screenshots/02-combos.png) --- ## 📊 Аналитика Комплексная аналитика использования с данными о расходе токенов, оценками стоимости, тепловыми картами активности, диаграммами распределения по неделям и детализацией по каждому провайдеру. ![Панель аналитики](../screenshots/03-analytics.png) --- ## 🏥 Состояние системы Мониторинг в реальном времени: время бесперебойной работы, память, версия, перцентили задержки (p50/p95/p99), статистика кэша, состояния автоматических выключателей провайдеров, активные сессии с мониторингом квот и состояние целей комбинаций. ![Панель состояния](../screenshots/04-health.png) --- ## 🔧 Песочница переводчика Четыре режима для отладки переводов API: **Песочница** (конвертер форматов), **Тестер чата** (запросы в реальном времени), **Испытательный стенд** (пакетные тесты) и **Мониторинг в реальном времени** (потоковая передача в реальном времени). ![Песочница переводчика](../screenshots/05-translator.png) --- ## 🎮 Песочница моделей _(v2.0.9+)_ Тестируйте любую модель непосредственно из панели управления. Выберите провайдера, модель и конечную точку, создавайте промпты в Monaco Editor, получайте потоковые ответы в реальном времени, прерывайте их во время передачи и просматривайте метрики времени выполнения. --- ## 🎨 Темы _(v2.0.5+)_ Настраиваемые цветовые темы для всей панели управления. Выберите один из 7 предустановленных цветов (коралловый, синий, красный, зелёный, фиолетовый, оранжевый, голубой) или создайте собственную тему, указав любой цвет в шестнадцатеричном формате. Поддерживаются светлый, тёмный и системный режимы. --- ## ⚙️ Настройки Комплексная панель настроек с **7 вкладками**: - **Общие** — Системное хранилище, управление резервными копиями (экспорт/импорт базы данных) - **Внешний вид** — Выбор режима оформления (тёмный/светлый/системный), предустановленные цветовые темы и пользовательские цвета, видимость журнала состояния, элементы боковой панели и разделители групп, элементы управления видимостью туннелей конечных точек - **ИИ** — Функции ИИ-ассистента, предустановленные маршруты по умолчанию (Auto Combo `auto/coding`, `auto/fast`, `auto/cheap`, `auto/smart`), кеш повторного воспроизведения рассуждений и переключатели навыков/памяти - **Безопасность** — Защита конечных точек API, блокировка пользовательских провайдеров, фильтрация IP-адресов, сведения о сеансе - **Маршрутизация** — Псевдонимы моделей, деградация фоновых задач, маршрутизация по уровням с учётом манифеста (W1–W4), `fallbackDelayMs`, закрепление маршрута для каждого сеанса - **Отказоустойчивость** — Сохранение ограничений частоты запросов, настройка автоматического выключателя, автоматическое отключение заблокированных учётных записей, мониторинг срока действия провайдеров, порог передачи **Context Relay** и настройка модели суммаризации, классификация ошибок 429 для каждого провайдера и переключатель `useUpstream429BreakerHints`, периоды ожидания моделей - **Расширенные настройки** — Переопределения конфигурации, журнал аудита конфигурации, режим деградации при откате, деградация фонового режима для Responses API ![Панель настроек](../screenshots/06-settings.png) --- ## 🔧 Инструменты CLI Настройка в один клик для инструментов программирования с ИИ: Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor и Factory Droid. Поддерживаются автоматическое применение и сброс конфигурации, профили подключения и сопоставление моделей. ![Панель инструментов CLI](../screenshots/07-cli-tools.png) --- ## 🤖 Агенты CLI _(v2.0.11+)_ Панель управления для обнаружения агентов CLI и управления ими. Отображает сетку из 16 встроенных агентов (Codex, Claude, Goose, OpenClaw, Aider, OpenCode, Cline, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp, **Windsurf**, **Devin CLI**, **Kimi Coding**, **Command Code**) со следующими возможностями: - **Состояние установки** — Установлен / Не найден с определением версии - **Метки протоколов** — stdio, HTTP и т. д. - **Пользовательские агенты** — Регистрация любого инструмента CLI через форму (имя, исполняемый файл, команда получения версии, аргументы запуска) - **Сопоставление отпечатков CLI** — Переключатель для каждого провайдера, позволяющий имитировать сигнатуры запросов нативного CLI, снижая риск блокировки при сохранении IP-адреса прокси - **Локальная аутентификация Devin** — Devin CLI использует `devin auth login`; процедура OAuth через браузер не требуется --- ## 🔗 Передача контекста _(v3.5.5+)_ Комбинированная стратегия, сохраняющая непрерывность сеанса при переключении аккаунта в середине диалога. Перед исчерпанием квоты активного аккаунта OmniRoute в фоновом режиме создаёт структурированную сводку для передачи контекста. Когда следующий запрос направляется другому аккаунту, эта сводка добавляется в виде системного сообщения, чтобы новый аккаунт мог продолжить работу с полным контекстом. Настраивается на уровне комбинации или глобальных параметров: - **Порог передачи** — Процент использования квоты, при достижении которого запускается создание сводки (по умолчанию 85%) - **Максимум сообщений для сводки** — Объём недавней истории, подлежащей сжатию - **Модель для сводки** — Необязательная переопределяющая модель для создания сводки передачи В настоящее время поддерживается переключение аккаунтов Codex. См. [документацию по передаче контекста](../architecture/ARCHITECTURE.md). --- ## 🗜️ Сжатие промптов _(v3.7.9+)_ В разделе «Контекст и кэш» теперь доступны отдельные страницы для Caveman, RTK и комбинаций сжатия: - **Caveman** — учитывающие язык наборы правил, предварительный просмотр, управление режимом вывода и аналитика - **RTK** — учитывающее команды сжатие вывода shell, git, тестов, сборки, пакетов, Docker, инфраструктуры, JSON и трассировки стека - **Комбинации сжатия** — именованные конвейеры, такие как `rtk -> caveman`, назначаемые комбинациям маршрутизации; стандартная формула последовательного сжатия обеспечивает в среднем `~89%` и экономию `78-95%` подходящего контекста, когда применяются оба механизма - **Восстановление необработанного вывода** — необязательные отредактированные указатели RTK на необработанный вывод для отладки ошибок сжатия См. [руководство по сжатию](../compression/COMPRESSION_GUIDE.md), [сжатие RTK](../compression/RTK_COMPRESSION.md) и [механизмы сжатия](../compression/COMPRESSION_ENGINES.md). --- ## 🛡️ Усиление безопасности прокси _(v3.5.5+)_ Комплексное применение конфигурации прокси во всём конвейере обработки запросов: - **Проверка состояния токена** — Фоновое обновление OAuth теперь определяет конфигурацию прокси для каждого подключения, предотвращая сбои в средах, где требуется прокси - **Проверка API-ключа** — Проверка ключа провайдера (`POST /api/providers/validate`) выполняется через `runWithProxyContext` с учётом настроек прокси на уровне провайдера и глобальных настроек - **Исправление диспетчера undici** — Диспетчеры прокси используют собственную реализацию fetch из undici вместо встроенной реализации fetch в Node, что устраняет ошибки `invalid onRequestStart method` в Node.js 22 - **Определение версии Node.js** — Страница входа заблаговременно выявляет несовместимые версии Node.js (24+) и отображает предупреждение с инструкциями по использованию Node 22 LTS --- ## 📧 Маскирование адресов электронной почты _(v3.5.6+)_ По умолчанию адреса электронной почты аккаунтов OAuth маскируются (например, `di*****@g****.com`), чтобы предотвратить их случайное раскрытие при публикации снимков экрана или записи демонстраций. Используйте «Настройки» → «Внешний вид» → «Видимость адресов электронной почты аккаунтов», чтобы глобально показывать или маскировать полные адреса электронной почты аккаунтов на экранах провайдеров, комбинаций, журналов, квот и песочницы. --- ## 👁️ Переключатель видимости моделей _(v3.5.6+)_ Список моделей на странице провайдера теперь включает: - **Панель поиска/фильтрации в реальном времени** — Позволяет быстро находить нужные модели - **Переключатель видимости для каждой модели** (значок 👁) — Скрытые модели отображаются серым цветом и исключаются из каталога `/v1/models` - **Индикатор количества активных моделей** (`N/M активно`) — Позволяет сразу увидеть, сколько моделей включено по отношению к их общему количеству --- ## 🔧 Восстановление переменных окружения OAuth _(v3.6.1+)_ Действие «Восстановить env» в один клик для провайдеров OAuth, которое восстанавливает отсутствующие переменные окружения и исправляет нарушенное состояние аутентификации. Доступно по пути `Панель управления → Провайдеры → [Провайдер OAuth] → Восстановить env`. Автоматически обнаруживает и исправляет: - Отсутствующие учётные данные клиента OAuth - Повреждённые записи в файле env - Очистку пути резервного копирования --- ## 🗑️ Удаление / Полное удаление _(v3.6.2+)_ Скрипты для чистого удаления при любом способе установки: | Команда | Действие | | ------------------------ | --------------------------------------------------------------------------------------- | | `npm run uninstall` | Удаляет системное приложение, но **сохраняет вашу БД и конфигурации** в `~/.omniroute`. | | `npm run uninstall:full` | Удаляет приложение И безвозвратно **стирает все конфигурации, ключи и базы данных**. | --- ## 🖼️ Медиаконтент _(v2.0.3+)_ Создавайте изображения, видео и музыку из панели управления. Поддерживаются OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open и MusicGen. --- ## 📝 Журналы запросов Регистрация запросов в реальном времени с фильтрацией по провайдеру, модели, учётной записи и API-ключу. Отображаются коды состояния, использование токенов, задержка и сведения об ответе. ![Журналы использования](../screenshots/08-usage.png) --- ## 🌐 Конечная точка API Ваша единая конечная точка API с разбивкой по возможностям: диалоговые дополнения, Responses API, векторные представления, генерация изображений, повторное ранжирование, транскрибирование аудио, преобразование текста в речь, модерация и зарегистрированные API-ключи. Для удалённого доступа поддерживаются Cloudflare Quick Tunnel, Tailscale Funnel, ngrok Tunnel и облачный прокси-сервер. ![Панель управления конечной точкой](../screenshots/09-endpoint.png) --- ## 🔑 Управление API-ключами Создавайте API-ключи, задавайте область их действия и отзывайте их. Каждый ключ можно ограничить определёнными моделями или провайдерами, предоставив полный доступ или права только на чтение. Визуальное управление ключами с отслеживанием использования. --- ## 📋 Журнал аудита Отслеживание административных действий с фильтрацией по типу действия, исполнителю, цели, IP-адресу и временной метке. Полная история событий безопасности. --- ## 🖥️ Настольное приложение Нативное настольное приложение Electron для Windows, macOS и Linux. Запускайте OmniRoute как самостоятельное приложение с интеграцией в системный трей, поддержкой автономной работы, автоматическим обновлением и установкой в один клик. Основные возможности: - Проверка готовности сервера (без пустого экрана при холодном запуске) - Системный трей с управлением портом - Политика безопасности содержимого - Блокировка запуска нескольких экземпляров - Автоматическое обновление при перезапуске - Интерфейс с учётом платформы (кнопки управления окном macOS, стандартная строка заголовка Windows/Linux) - Усиленно защищённая сборка Electron — символически связанный каталог `node_modules` в автономном пакете обнаруживается и отклоняется до упаковки, что предотвращает зависимость среды выполнения от машины сборки (v2.5.5+) - **Корректное завершение работы** — событие Electron `before-quit` корректно завершает работу Next.js, предотвращая блокировки базы данных SQLite WAL (v3.6.2+) 📖 Полная документация приведена в файле [`electron/README.md`](../../electron/README.md). --- ## 🌐 Мост WebSocket V1 _(v3.6.6+)_ Теперь OmniRoute поддерживает **WebSocket-клиенты, совместимые с OpenAI**, через конечную точку обновления соединения `/v1/ws`. Пользовательский сервер `scripts/dev/v1-ws-bridge.mjs` служит обёрткой для Next.js и обновляет WS-соединения до полноценных двунаправленных потоковых сеансов. Для аутентификации используется тот же API-ключ или файл cookie сеанса, что и для HTTP-запросов. Основные особенности: - Обновление WS-соединения проверяется в `src/lib/ws/handshake.ts` до установления соединения - Потоки корректно завершаются при закрытии сеанса или ошибке вышестоящего сервера - Работает одновременно с существующим способом потоковой передачи через HTTP+SSE --- ## 🔑 Токены синхронизации и пакет конфигурации _(v3.6.6+)_ Доступ с нескольких устройств и доступ для внешних операторов теперь возможны с помощью **токенов синхронизации с ограниченной областью действия**: - **`POST /api/sync/tokens`** — Выпустить новый токен синхронизации (с ограниченной областью действия и необязательным сроком действия) - **`DELETE /api/sync/tokens/:id`** — Отозвать токен - **`GET /api/sync/bundle`** — Скачать версионированный JSON-снимок конфигурации с ключом `ETag` (аутентификация выполняется только с помощью токена синхронизации). Параметры аутентификации, такие как пароль панели управления, удаляются, но учётные данные провайдеров и API-ключи включаются, поэтому обращайтесь с этим файлом как с секретом Пакет конфигурации создаётся модулем `src/lib/sync/bundle.ts`. Клиенты сравнивают заголовок ответа `ETag`, чтобы обнаруживать изменения без повторного скачивания всей полезной нагрузки. При работе из CLI команда `omniroute sync bundle --token ` (или `OMNIROUTE_SYNC_TOKEN`) сохраняет его в файл, доступный только владельцу. --- ## 🧠 Предустановка GLM Thinking _(v3.6.6+)_ **GLM Thinking (`glmt`)** теперь зарегистрирован как полноценный провайдер первого класса: максимум 65 536 токенов в выходных данных, бюджет рассуждений 24 576 токенов, тайм-аут по умолчанию 900 с, формат API, совместимый с Claude, и общая синхронизация данных об использовании с семейством GLM. В v3.6.6 также добавлен **гибридный подсчёт токенов**: когда совместимый с Claude провайдер предоставляет `/messages/count_tokens`, OmniRoute вызывает его перед крупными запросами, а при недоступности корректно переключается на оценочный подсчёт. --- ## 🛡️ Безопасные исходящие запросы и защита от SSRF _(v3.6.6+)_ Все вызовы для проверки провайдеров и обнаружения моделей теперь проходят через двухуровневую защиту исходящих запросов: 1. **Защита URL** (`src/shared/network/outboundUrlGuard.ts`) — Сначала проверяет имя хоста или IP-литерал цели в том виде, в котором он указан; в режиме доступа только к публичным адресам обёртка безопасных запросов также разрешает имя и отклоняет приватные адреса. По умолчанию блокируются конечные точки облачных метаданных — вся подсеть 169.254.0.0/16, а также известные имена хостов метаданных; `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` также блокирует приватные адреса и адреса обратной петли; `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` (или устаревшая переменная `OUTBOUND_SSRF_GUARD_ENABLED=false`) отключает проверки. Значение, сохранённое с помощью переключателя флага на панели управления, имеет приоритет над соответствующей переменной, а встроенные локальные провайдеры пропускают эту защиту при проверке ключа. См. `docs/reference/ENVIRONMENT.md`. 2. **Обёртка безопасных запросов** (`src/shared/network/safeOutboundFetch.ts`) — Применяет защиту URL, нормализует тайм-ауты и повторяет запросы после временных ошибок с экспоненциальной задержкой. Нарушения правил защиты возвращаются как `URL_GUARD_BLOCKED` — HTTP 503 через `getSafeOutboundFetchErrorStatus` (400 для маршрута обнаружения моделей), — а подтверждённые блокировки SSRF во время проверки записываются в журнал аудита как события `provider.validation.ssrf_blocked`. --- ## 🔄 Повторные попытки с учётом периода ожидания _(v3.6.6+)_ Запросы чата теперь **автоматически повторяются**, когда вышестоящий провайдер возвращает период ожидания для конкретной модели. Настройка выполняется через `REQUEST_RETRY` (по умолчанию: 2) и `MAX_RETRY_INTERVAL_SEC` (по умолчанию: 30 с). Улучшено распознавание заголовков ограничения частоты запросов: `x-ratelimit-reset-requests`, `x-ratelimit-reset-tokens` и `Retry-After`. Состояние периода ожидания для каждой модели отображается на панели устойчивости. --- ## 📋 Аудит соответствия требованиям v2 _(v3.6.6+)_ Журнал аудита расширен: добавлены пагинация на основе курсора, обогащение контекста запроса (идентификатор запроса, пользовательский агент, IP-адрес), структурированные события аутентификации, CRUD-события провайдеров с контекстом различий, а также журналирование проверок, заблокированных защитой от SSRF. Новые события создаются модулем `src/lib/compliance/providerAudit.ts`.