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

Feature Flags (Русский)

Флаг функции — это именованный переключатель (логический или перечисляемый), значение которого можно изменять во время выполнения и сохранять в базе данных без необходимости повторного развертывания процесса. Каждый флаг описывается объектом FeatureFlagDefinition с полями key, label, description, category, defaultValue, type и подсказкой requiresRestart.

Эффективное значение флага определяется функцией resolveFeatureFlag() со следующим приоритетом (побеждает значение с наивысшим приоритетом):

  1. Переопределение в БД — значение, хранящееся в таблице key_value в пространстве имен feature_flags (задается через панель управления или REST API).
  2. Переменная окружения — process.env[<KEY>], если она задана и не пуста.
  3. Значение по умолчанию из определения — defaultValue из featureFlagDefinitions.ts.

Логический флаг считается включенным, если его эффективное значение равно "true", "1" или "yes" (см. isFeatureFlagEnabled()).

[!NOTE] Большинство флагов также имеют соответствующую переменную окружения с тем же именем, задокументированную в ENVIRONMENT.md. Переопределение флага в БД имеет приоритет над этой переменной окружения. Флаг с requiresRestart: true сохраняется немедленно, но повторно считывается только при запуске процесса — его переключение приводит к появлению баннера «Перезапустить сервер» в панели управления.


77 флагов в 6 категориях. По умолчанию — это значение по умолчанию для определения, используемое, когда отсутствует как переопределение в базе данных, так и переменная окружения.

Key Type Default Description
REQUIRE_API_KEY boolean false Требовать ключ API для всех входящих запросов.
INPUT_SANITIZER_ENABLED boolean true Включить очистку входных данных для всех запросов.
INJECTION_GUARD_MODE enum off Режим защиты от инъекций промптов. Значения: off, warn, block, redact.
PII_REDACTION_ENABLED boolean false Скрывать PII из запросов (независимо от INPUT_SANITIZER_MODE).
PII_RESPONSE_SANITIZATION boolean false Очищать PII из ответов провайдера.
PII_RESPONSE_SANITIZATION_MODE enum redact Режим очистки PII в ответах. Значения: redact, warn, block, off.
OUTBOUND_SSRF_GUARD_ENABLED boolean true Блокировать исходящие запросы к частным/внутренним диапазонам IP-адресов.
ALLOW_API_KEY_REVEAL boolean false Разрешить аутентифицированным пользователям панели управления просматривать сохраненные ключи API вместо того, чтобы видеть только маскированные значения.
AUTH_LOG_INCLUDE_ACCOUNT_ID boolean false Включать префикс учетной записи в строки журнала AUTH (например, “Using <provider> account: abc12345…”). Отключено по умолчанию, чтобы идентификаторы учетных записей были скрыты из общих/многопользовательских журналов процессов. Независимо от режима отладки; переключение режима отладки не раскрывает эту информацию.
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN boolean false Когда OIDC включен, отключить вход по паролю, чтобы пользователи могли аутентифицироваться только через OIDC Single Sign-On. Когда отключено (по умолчанию), доступны как вход по паролю, так и OIDC.
Key Type Default Restart Description
ENABLE_TLS_FINGERPRINT boolean false ✓ Включить режим скрытности отпечатков TLS.
AUDIO_REMOTE_PROVIDER_NODES boolean false Разрешить маршрутам /v1/audio/* использовать узлы провайдера, совместимые с OpenAI, размещенные за пределами localhost. По умолчанию отключено — маршрутизация аудио на удаленный хост изменяет исходящую идентификацию и должна быть явным решением оператора. Узлы обратной связи всегда разрешены и не затрагиваются.
RERANK_REMOTE_PROVIDER_NODES boolean false Разрешить POST /v1/rerank (и шаг переранжирования обратной связи механизма памяти) использовать узлы провайдера, совместимые с OpenAI, размещенные за пределами localhost. По умолчанию отключено — маршрутизация на удаленный хост изменяет исходящую идентификацию и должна быть явным решением оператора. Узлы обратной связи всегда разрешены; удаленные узлы также должны соответствовать политике исходящих URL-адресов провайдера.
PROXY_AUTO_SELECT_ENABLED boolean false Если для соединения не назначен прокси, автоматически выбирать первый работающий прокси из реестра. По умолчанию отключено (иначе любой прокси из реестра становится глобальным запасным вариантом — #3332).
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK boolean false Разрешить потокам OAuth и проверки провайдера обходить закрепленный прокси и подключаться напрямую, если предварительные проверки доступности прокси завершаются неудачей. По умолчанию отключено, так как это может изменить исходящий IP-адрес.
NETWORK_ROTATION_SHARED_EGRESS_GUARD boolean true При сетевом исключении (таймаут, отказ/сброс соединения) для исполнителя ротации с несколькими учетными записями, если у сбойной учетной записи нет выделенного прокси, применить короткую задержку и пропустить другие учетные записи без прокси для остальной части запроса вместо повторной попытки для каждой. Включено по умолчанию (безопасно: без изменения исходящего IP-адреса, только снижает задержку/риск задержки для учетных записей с общим исходящим трафисом). Отключите, чтобы восстановить немедленное распространение при первом сбое без прокси.
ROTATION_ATTRIBUTION boolean false Ротация Opencode записывает, какая учетная запись обслуживала или была пропущена (только маскированные идентификаторы, никогда не полные идентификаторы учетных записей) и связывает записи журнала прокси с их запросом, чтобы оператор мог отличить пропущенные учетные записи от неиспользуемых. По умолчанию отключено.
PROXY_SKIP_RECENTLY_FAILED boolean false Пулы прокси и ротация opencode для каждой учетной записи прекращают повторное использование прокси, который только что вышел из строя (отказал TCP-зонд или через него был получен ответ 429), на период, зависящий от процесса, который удваивается при каждом повторе, до достижения предела. Статус прокси не записывается; при каждом отложенном кандидате выбор остается неизменным. По умолчанию отключено.
PROXY_POOL_EGRESS_OBSERVATION boolean false Показывать в панели управления для пула прокси, сколько наблюдаемых исходящих IP-адресов обслуживали его участников за последние 24 часа и сколько соединений их использовали. Только для чтения, вычисляется из журнала прокси, никогда не используется для маршрутизации. По умолчанию отключено.
OPENCODE_RESPONSES_STALL_ROTATION boolean false Для исполнителя OpenCode, отслеживать первый байт тела потокового ответа Responses (окно: RESPONSES_FIRST_BYTE_TIMEOUT_MS, по умолчанию 15000). Поток Responses с кодом 2xx, который остается безмолвным после истечения окна, считается зависшим: учетная запись охлаждается, и запрос один раз перенаправляется на следующую учетную запись; второе зависание приводит к быстрому сбою. По умолчанию отключено: зависшие потоки сохраняют текущее ожидание до истечения таймаута готовности потока.
OPENCODE_USER_BLOCKED_ROTATION boolean false Исполнитель OpenCode: при получении 403/451 с отказом user_blocked (не гео, не отклонение по отпечатку Cloudflare), охладить отклоненную учетную запись и перенаправить запрос на следующую учетную запись не более одного раза за запрос; второй отказ возвращается как есть, без отметки об успехе. По умолчанию отключено: обход блокировки пользователя вышестоящим сервисом может выглядеть как уклонение и распространить флаг по всему парку.
OPENCODE_TRANSIENT_FAILOVER_BACKOFF boolean false Ротация OpenCode: после двух последовательных временных сбоев вышестоящего сервиса (5xx или пустой 400) сделать паузу перед следующей учетной записью — 1.5 с, удваиваясь при каждом последующем сбое, с ограничением 6 с на паузу и 10 с на запрос, пропускается при отключении клиента; тело с ошибкой освобождается перед ожиданием. По умолчанию отключено: переключение на резерв остается немедленным.
OPENCODE_PARK_AND_RESUME boolean false Ротация OpenCode: припарковать запрос после многократных временных 429 (или нового маркера перегрузки пула) с сердцебиением, затем повторно воспроизвести одно ограниченное звено из до 3 последовательных учетных записей вместо того, чтобы разворачивать весь парк. По умолчанию отключено: каждый 429 перенаправляется на следующую учетную запись точно так же, как и раньше.
FLUSH_EMPTY_RETRY_ENABLED boolean false При переведенных потоковых ответах, когда вышестоящий ответ не содержит полезного содержимого (завершение только с обоснованием или нулевые ценные фрагменты), выполнять ограниченные повторные попытки через обычный путь учетных данных (до STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX) до того, как что-либо будет передано клиенту. По умолчанию отключено: пустые ответы сохраняют текущее поведение (пустой 200 или 502 с пустым содержимым).
OPENCODE_RATE_LIMITED_429_EARLY_STOP boolean false Ротация OpenCode: остановить волну учетных записей при первом 429, классифицированном как реальное ограничение скорости (анализируемый Retry-After или тело, указывающее на ограничение скорости/использования), и вернуть этот вышестоящий 429 без изменений. Неклассифицированные 429 продолжают ротацию. По умолчанию отключено: бесплатный уровень ограничен по исходящему IP (#9611), поэтому каждый 429 ротируется, а исчерпанная волна возвращает последний вышестоящий 429.
MITM_DISABLE_TLS_VERIFY boolean false ✓ Отключить проверку TLS-сертификата для прокси MITM. Опасно.
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS boolean false Разрешить URL-адреса провайдеров, указывающие на частные/внутренние сети.
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS boolean true Разрешить добавление/проверку провайдеров по локальным/частным адресам (127.0.0.1, localhost, LAN). Включено по умолчанию (сначала локальные); отключите для строгой блокировки только публичных адресов. Метаданные облака остаются заблокированными.
ENABLE_CC_COMPATIBLE_PROVIDER boolean false ✓ Включить режим провайдера, совместимого с Claude Code.
Key Type Default Description
TOOL_POLICY_MODE enum disabled Режим применения политики использования инструментов. Значения: disabled, warn, block.
RATE_LIMIT_AUTO_ENABLE boolean false Автоматически включать ограничение скорости на основе шаблонов использования.
DISABLE_CONTEXT_WINDOW_CHECKS boolean false Пропускать локальную проверку OmniRoute на размер контекстного окна / максимальное количество входных токенов для прямых запросов к одной модели. Ограничения вышестоящих систем по-прежнему действуют.
CAPABILITY_FILTER_ENABLED boolean false Отклонять запросы перед отправкой, если целевая модель не обладает необходимыми возможностями (зрение, инструменты, структурированный вывод, контекстное окно). Защищает прямые запросы к одному провайдеру, которые обходят фильтр совместимости комбинированного слоя.
RADAR_ENABLED boolean false Включить модуль OmniRoute Radar (экраны фида каталога и синхронизация). По умолчанию отключено; включение только разблокирует пользовательский интерфейс — синхронизация данных остается отдельной опцией.
Key Type Default Restart Description
UNIVERSAL_CONTEXT_HANDOFF_ENABLED boolean true Генерировать и внедрять сводки разговоров, когда комбинированная маршрутизация переключает модели. Отключите, чтобы рассматривать переключения моделей независимо и предотвратить фоновые запросы на передачу для всех существующих и будущих комбинаций.
RESPONSES_PASSTHROUGH_DROP_COMMENTARY boolean true Отбрасывать внутренние выходные элементы фазы комментариев из сквозных потоков Responses API перед пересылкой клиентам. Отключите, чтобы получать необработанные вышестоящие комментарии.
OMNIROUTE_MCP_ENFORCE_SCOPES boolean true Применять ограничения области действия на доступ к инструментам MCP.
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS boolean false Сжимать описания инструментов MCP для уменьшения использования токенов.
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS boolean false Включить обработку фоновых задач во время выполнения.
OMNIROUTE_DISABLE_BACKGROUND_SERVICES boolean false ✓ Отключить все фоновые службы (обновление квот, синхронизация и т. д.).
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS boolean false Доверять фильтрам RTK на уровне проекта без валидации.
OMNIROUTE_ENABLE_LIVE_WS boolean true ✓ Запускает WebSocket-сервер панели мониторинга в реальном времени при импорте (порт 20132 по умолчанию).
OMNIROUTE_CODEX_WS_ENABLED boolean true Позволяет Codex использовать транспорт Responses-over-WebSocket. Если отключено, Codex переключается на HTTP-ответы.
OMNIROUTE_CODEX_APP_SERVER_ENABLED boolean true Позволяет Codex использовать локальный WebSocket JSON-RPC транспорт app-server (codexTransport=app-server). Если отключено, соединения, выбранные для app-server, переключаются на другие транспорты Codex.
OMNIROUTE_EMERGENCY_FALLBACK boolean true Направляет запросы с исчерпанным бюджетом к аварийному бесплатному резервному провайдеру/модели. (См. Emergency Budget Fallback ниже.)
STREAM_RECOVERY_ENABLED boolean false Включает прозрачную раннюю повторную попытку для усеченных вышестоящих SSE-потоков до того, как какие-либо байты ответа достигнут клиента.
STREAM_RECOVERY_MIDSTREAM_ENABLED boolean false Позволяет восстановлению потока повторно запрашивать и сшивать ответ после того, как байты уже достигли клиента.
STREAM_RECOVERY_TOOLCALL_ORDER_FIX boolean false Делает продолжение в середине потока безопасным для вызова инструмента: никогда не возобновлять прерванный поток после того, как был выдан вызов инструмента (в процессе или уже завершен с finish_reason tool_calls), и закрывать после одного пустого продолжения вместо того, чтобы тратить весь бюджет. Off: поведение выпуска.
STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED boolean false Переключиться один раз на родственное соединение, когда поток SSE закрывается до выдачи какого-либо полезного кадра и исчерпана ограниченная повторная попытка того же соединения; при отсутствии пригодного родственного соединения возвращается исходная ошибка STREAM_EARLY_EOF 502. По умолчанию отключено: ранний EOF остается терминальным после повторной попытки того же соединения.
MODEL_CATALOG_INCLUDE_NAMES boolean true Включать удобные для отображения поля имени в ответы /v1/models. Отключите для клиентов, которые ожидают только идентификаторы моделей.
MODELS_CATALOG_PREFIX_MODE enum dual Управляет тем, как префиксы идентификаторов моделей отображаются в /v1/models. dual (по умолчанию) выдает как псевдоним, так и канонические префиксы идентификаторов провайдеров для обратной совместимости. alias выдает только короткий префикс псевдонима (например, ds-web/model, а не deepseek-web/model). canonical выдает только полный префикс идентификатора провайдера. Значения: dual, alias, canonical.
ARENA_ELO_SYNC_ENABLED boolean true Включить периодическую синхронизацию ELO таблицы лидеров Arena AI для ранжирования интеллекта моделей.
EXPOSE_CC_DISCOVERY_ALIASES boolean false Рекламировать зеркальные идентификаторы claude/&lt;provider&gt;/&lt;model&gt; на /v1/models, чтобы обнаружение моделей шлюза Claude Code отображало модели, не относящиеся к Claude. Глобальный уровень трехступенчатого шлюза (переменная среды имеет приоритет над переопределением на панели управления). См. Конфигурация Claude Code.
NO_THINKING_ALIAS_ENABLED boolean true Главный переключатель для псевдонимов шлюза no-think/<provider>/<model>. Включено (по умолчанию): /v1/models рекламирует вариант без размышлений для каждой подходящей модели Claude, способной к размышлениям, а идентификатор no-think/, отправленный в запросе, разрешается обратно в реальную модель с подавлением рассуждений. Отключено: варианты не рекламируются, а идентификатор no-think/ обрабатывается как любой другой неизвестный идентификатор модели. Параметр ModelSpec.noThinkingAlias для каждой модели по-прежнему применяется, пока это включено.
OMNIROUTE_DISABLE_THINKING_LEVEL_VARIANTS boolean false Отключить генерацию вариантов уровня мышления (например, -low, -medium, -high) в каталоге /v1/models.
OMNIROUTE_CHAT_VIRTUAL_LANES boolean false ✓ Включить адаптивные виртуальные полосы допуска для каждого клиента для диспетчеризации провайдера (#9654): всплеск одного клиента больше не приводит к ошибке 503 у другого. Переменная среды OMNIROUTE_CHAT_VIRTUAL_LANES имеет приоритет над этим переопределением на панели управления; изменения вступают в силу после перезапуска сервера.
EXPOSE_FUNCTIONAL_GATEWAY_MIRRORS boolean false Рекламировать идентификаторы зеркала &lt;gateway-alias&gt;/&lt;model&gt; на /v1/models для моделей, чей канонический владелец не имеет активных учетных данных, но маршрутизируется через сквозной шлюз с активными учетными данными. Предупреждение: добавляет записи каталога для всех клиентов при глобальном включении.
NEWAPI_AGGREGATOR_BALANCE boolean false Включить обнаружение баланса для узлов, совместимых с агрегатором New-API / One-API / Sub2API. При включении совместимые узлы с установленным флагом агрегатора будут сообщать свой баланс на панели мониторинга и при маршрутизации с предварительной проверкой квоты.
SERVER_OWNED_TOOL_LOOP_ENABLED boolean false Продолжать вызовы инструментов, принадлежащих серверу, без потоковой передачи, пока модель не вернет ответ, пригодный для использования клиентом.
SEARCH_STATS_HIDE_DELETED_CONNECTIONS boolean false Статистика поиска и недавние поиски учитывают только провайдеров, у которых все еще есть активное соединение (бесключевые провайдеры, такие как duckduckgo-free, всегда учитываются). Отключение сохраняет каждую сохраненную строку поиска с идентификатором провайдера.
FREE_BADGE_REQUIRES_PROVIDER_FREE_TIER boolean false Страницы провайдеров на панели мониторинга: показывать значок “Бесплатно” только для сигналов, которые провайдер учитывает — отменяет эвристику отображаемого имени, небулевы свободные поля и суффиксы :free для зарегистрированных провайдеров без документированного бесплатного уровня. Отключение сохраняет историческое правило значка.
RETRY_AFTER_PROVENANCE_ENABLED boolean false При агрегированных недоступных ответах 429/503 опускать Retry-After, если неизвестно конкретное будущее время повторной попытки (вместо синтетического 1с), добавлять error.retry_after_provenance (signal | none) и позволять комбинированным путям слива читать прозаические подсказки о повторной попытке из JSON и обычного текста вышестоящих тел. Поле появляется только в ответах, созданных unavailableResponse(); другие тела 429/503 остаются без изменений.
PROTECTED_PRIORITY_INFRA_502_ENABLED boolean false Когда целевой объект priority combo, помеченный как “только при исчерпании квоты”, останавливает combo по причине, которая явно не является квотой (открыт автоматический выключатель провайдера, пропуск по прогнозируемой задержке), отвечать 502 вместо похожего на квоту 503. Блокировка, период охлаждения, недоступность, исчерпание и ограничения параллелизма сохраняют 503.
MISTRAL_AMBIGUOUS_401_SOFT_LOCKOUT boolean false Голый Mistral 401 ({"detail":"Unauthorized"}, без явного сигнала аутентификации) идентичен для отозванного ключа и для исчерпанной квоты. При включении он охлаждает соединение вместо того, чтобы парковать его как expired, не более 3 раз в час на соединение; следующее паркует его, так что отозванный ключ все равно сходится. По умолчанию отключено: каждый голый Mistral 401 паркует соединение как раньше.
XAI_OAUTH_LIVE_MODEL_DISCOVERY boolean false Получает каталог моделей xAI в реальном времени для подключений xai-oauth с https://api.x.ai/v1/models с использованием токена носителя OAuth вместо замороженного статического начального значения. По умолчанию отключено: xai-oauth продолжает обслуживать статическое начальное значение без изменений. При любой ошибке разрешения обнаружение возвращается к начальному значению (не проверено, принимает ли x.ai носитель OAuth в этой конечной точке).
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED boolean false Позволяет автоматической очистке удалять завершенные (completed/failed/cancelled/expired) задания Batch API старше OMNIROUTE_BATCH_RETENTION_DAYS вместе с их построчными контрольными точками и очищать содержимое BLOB-объектов загруженных файлов после истечения их expires_at. По умолчанию отключено: каждая существующая установка сохраняет эти данные точно так же, как и раньше, пока оператор не включит эту функцию. Маршрут DELETE /api/v1/batches/delete-completed, запускаемый оператором, не затрагивается ни в одном из случаев — это отдельный, безусловный публичный контракт API.
ANTIGRAVITY_ACCOUNT_LEASE_ENABLED boolean false Резервирует выбранную учетную запись Antigravity для жизненного цикла потоковой передачи запроса, который ее выбрал, чтобы одновременная повторная попытка или передача учетных данных не могли повторно выбрать учетную запись, уже задействованную в активном потоке. Резервирование ограничено (подключением, вызываемой вышестоящей моделью), поэтому одна учетная запись все еще может обслуживать две разные модели одновременно. Когда каждая подходящая учетная запись уже арендована для этой модели, запрос возвращает структурированный 503 antigravity_pool_busy с ограниченным Retry-After вместо того, чтобы накапливаться на занятой учетной записи. По умолчанию отключено: выбор учетной записи остается точно таким же, как и раньше, и резервирование не производится.
Ключ Тип По умолчанию Перезапуск Описание
CLI_COMPAT_ALL boolean false ✓ Включить режим совместимости для всех клиентов CLI.
MODEL_ALIAS_COMPAT_ENABLED boolean false Включить уровень совместимости псевдонимов моделей.
PRICING_SYNC_ENABLED boolean false Включить автоматическую синхронизацию данных о ценах (также требуется переменная среды PRICING_SYNC_ENABLED).
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES boolean false После синхронизации модели провайдера автоматически (пере)записывать файлы профилей ~/.codex/*.config.toml из каталога в реальном времени. Никогда не изменяет активную/по умолчанию конфигурацию Codex. По умолчанию отключено.
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES boolean false После синхронизации модели провайдера автоматически (пере)записывать файлы профилей ~/.claude/profiles/<name>/settings.json Claude Code из каталога в реальном времени. Никогда не изменяет активную/по умолчанию конфигурацию Claude. По умолчанию отключено.
Ключ Тип По умолчанию Описание
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK boolean false Отключить эндпоинт проверки состояния (health check) локального экземпляра.
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK boolean false Отключить проверку состояния валидации токенов.
SKILLS_SANDBOX_NETWORK_ENABLED boolean false Разрешить сетевой доступ в среде песочницы навыков (skills sandbox).
PROXY_HEALTH_BLOCKED_RESETS_STREAK boolean false При сканировании состояния прокси, если цель отклонила запрос (401/403/429), это сбрасывает счетчик последовательных неудач прокси. По умолчанию выключено: отказ остается нейтральным (#10654). Ошибка 5xx в любом случае остается неопределенной; отказ никогда не удаляет, не отключает и не активирует прокси повторно.
DB_HEALTHCHECK_STARTUP_DEFERRED_ENABLED boolean false Запускать проверку целостности/состояния БД при запуске после того, как сервер начнет принимать запросы (через setImmediate), вместо блокировки запуска до завершения проверки (#13717). По умолчанию выключено: запуск блокируется точно так же, как до этого PR.

[!NOTE] INPUT_SANITIZER_BLOCK_THRESHOLD и его устаревший псевдоним INJECTION_GUARD_BLOCK_THRESHOLD настраивают режим block для INJECTION_GUARD_MODE, но они являются обычными переменными окружения, считываемыми src/shared/utils/injectionSeverity.ts, а не флагами функций (feature flags): для них нет переопределения в БД и переключателя в панели управления. См. ENVIRONMENT.md.

[!NOTE] Столбец Restart отмечает флаги с requiresRestart: true — значение сохраняется мгновенно, но вступает в силу только после перезагрузки процесса. Флаги типа Enum отклоняют любое значение вне разрешенного набора (проверяется на стороне сервера как в setFeatureFlagOverride(), так и в обработчике REST PUT).


Перейдите в Панель управления → Настройки → Флаги функций (/dashboard/settings/feature-flags). Сетка (src/app/(dashboard)/dashboard/settings/components/FeatureFlagsGrid.tsx) поддерживает:

  • Поиск по ключу или описанию, а также фильтрацию по категории (плюс синтетический вид Требуется перезапуск).
  • Переключатель для булевых флагов и выпадающий список для флагов перечисления (src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx).
  • Значок источника для каждого флага — DB, ENV или DEF — показывающий, откуда было получено эффективное значение.
  • Кнопка Сброс (показывается только для флагов с источником DB) для отмены переопределения, и кнопка Сбросить все переопределения внизу.
  • Баннер Перезапустить сервер при изменении флага requiresRestart.

Все операции проходят через один маршрут: src/app/api/settings/feature-flags/route.ts. Каждый метод требует аутентифицированной сессии панели управления (401 в противном случае).

Возвращает каждый флаг с его эффективным значением, источником и сводкой.

{
"flags": [
{
"key": "REQUIRE_API_KEY",
"label": "Require API Key",
"description": "Require an API key for all incoming requests",
"category": "security",
"type": "boolean",
"enumValues": null,
"defaultValue": "false",
"effectiveValue": "false",
"source": "default", // "db" | "env" | "default"
"requiresRestart": false,
"warningLevel": "caution",
},
// ... все 77 флагов
],
"summary": {
"total": 56,
"active": 0,
"inactive": 0,
"overriddenByDb": 0,
"overriddenByEnv": 0,
},
}

Установить или удалить одно переопределение. Тело: { key: string; value?: string }. Опущение value удаляет переопределение (восстанавливая env / значение по умолчанию).

Окно терминала
# Установить переопределение DB
curl -X PUT http://localhost:20128/api/settings/feature-flags \
-H "Content-Type: application/json" \
-d '{"key":"REQUIRE_API_KEY","value":"true"}'
# Удалить переопределение (без "value")
curl -X PUT http://localhost:20128/api/settings/feature-flags \
-H "Content-Type: application/json" \
-d '{"key":"REQUIRE_API_KEY"}'

Ответ повторяет новые effectiveValue/source, previousValue/ previousSource и requiresRestart. Неизвестные ключи и значения перечисления вне диапазона отклоняются с 400.

Очищает все переопределения БД сразу, восстанавливая каждый флаг до его значения из env / по умолчанию. Возвращает { cleared: &lt;count&gt;, message: "..." }.

[!NOTE] Флаги с requiresRestart: true вступают в силу только после перезагрузки процесса. Процесс перезапуска панели управления вызывает POST /api/restart, а затем опрашивает GET /api/health/ping до тех пор, пока сервер не будет снова запущен.


OMNIROUTE_EMERGENCY_FALLBACK (категория runtime, значение по умолчанию true) управляет аварийным путём бесплатного резервирования в open-sse/services/emergencyFallback.ts. Когда он включён, запросы, исчерпавшие свой бюджет, направляются к бесплатному резервному провайдеру/модели вместо немедленного завершения с ошибкой. Установите значение false (или 0) — через переключатель на панели управления, переопределение в БД или переменную окружения OMNIROUTE_EMERGENCY_FALLBACK — чтобы отключить это поведение и позволить запросам с исчерпанным бюджетом завершаться с ошибкой. (Добавлено как переключатель на панели управления в PR #3741 / #3752.)



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

HagiCode

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

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

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