sections.json 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. {
  2. "basic": {
  3. "identity": {
  4. "title": "Идентификация провайдера",
  5. "desc": "Укажите уникальное имя для идентификации этого провайдера"
  6. },
  7. "endpoint": {
  8. "title": "API Endpoint",
  9. "desc": "Настройте базовый URL для API запросов"
  10. },
  11. "endpointPool": {
  12. "title": "Пул эндпоинтов",
  13. "desc": "Управляйте эндпоинтами для этого типа провайдера"
  14. },
  15. "auth": {
  16. "title": "Аутентификация",
  17. "desc": "Укажите API ключ для аутентификации"
  18. }
  19. },
  20. "apiTest": {
  21. "desc": "Проверяет доступность модели у провайдера. По умолчанию соответствует типу провайдера, выбранному в настройках маршрутизации.",
  22. "summary": "Проверка связности провайдера и модели",
  23. "testLabel": "Тест модели провайдера",
  24. "title": "Тест модели провайдера"
  25. },
  26. "circuitBreaker": {
  27. "desc": "Автоматическое отключение при серии неудач для защиты качества сервиса",
  28. "failureThreshold": {
  29. "desc": "Сколько подряд неудач для срабатывания",
  30. "label": "Порог неудач",
  31. "placeholder": "5",
  32. "warning": "Значение 0 отключает предохранитель - используйте с осторожностью"
  33. },
  34. "maxRetryAttempts": {
  35. "desc": "Общее число попыток (включая первую) перед переключением на другого провайдера. Оставьте пустым для значения по умолчанию.",
  36. "label": "Максимум попыток на провайдера",
  37. "placeholder": "2"
  38. },
  39. "openDuration": {
  40. "desc": "Через сколько перейти в полураскрытое состояние",
  41. "label": "Длительность блокировки (мин)",
  42. "placeholder": "30"
  43. },
  44. "successThreshold": {
  45. "desc": "Сколько успешных запросов в полураскрытом режиме для полного восстановления",
  46. "label": "Порог восстановления",
  47. "placeholder": "2"
  48. },
  49. "summary": "{failureThreshold} неудач / {openDuration} мин. блокировки / {successThreshold} успеха для восстановления / до {maxRetryAttempts} попыток на провайдера",
  50. "title": "Предохранитель"
  51. },
  52. "mcpPassthrough": {
  53. "desc": "При включении передаёт вызовы инструментов MCP указанному AI-провайдеру (например, minimax для распознавания изображений, веб-поиска)",
  54. "hint": "Подсказка: сквозная передача MCP позволяет клиенту Claude Code использовать возможности инструментов, предоставляемых сторонними AI-провайдерами (например, распознавание изображений, веб-поиск)",
  55. "select": {
  56. "custom": {
  57. "desc": "Сквозная передача в пользовательский сервис MCP (зарезервировано, не реализовано)",
  58. "label": "Пользовательский"
  59. },
  60. "glm": {
  61. "desc": "Сквозная передача в сервис GLM MCP (поддержка анализа изображений, видео и т.д.)",
  62. "label": "GLM"
  63. },
  64. "label": "Тип сквозной передачи",
  65. "minimax": {
  66. "desc": "Сквозная передача в сервис minimax MCP (поддержка распознавания изображений, веб-поиска и т.д.)",
  67. "label": "Minimax"
  68. },
  69. "none": {
  70. "desc": "Не включать сквозную передачу MCP (по умолчанию)",
  71. "label": "Отключено"
  72. },
  73. "placeholder": "Выберите тип сквозной передачи"
  74. },
  75. "summary": {
  76. "custom": "Пользовательский (Зарезервировано)",
  77. "glm": "GLM",
  78. "minimax": "Minimax",
  79. "none": "Отключено"
  80. },
  81. "title": "Конфигурация сквозной передачи MCP",
  82. "urlAuto": "Автоматически извлечено: {url}",
  83. "urlDesc": "Базовый URL сервиса MCP. Оставьте пустым для автоматического извлечения из URL провайдера",
  84. "urlLabel": "URL сквозной передачи MCP",
  85. "urlPlaceholder": "https://api.minimaxi.com"
  86. },
  87. "proxy": {
  88. "desc": "Настройте прокси для улучшения соединения (поддержка HTTP, HTTPS, SOCKS4, SOCKS5)",
  89. "fallback": {
  90. "desc": "При включении будет предпринята попытка прямого соединения при сбое прокси",
  91. "label": "Откат к прямому соединению при сбое прокси"
  92. },
  93. "summary": {
  94. "configured": "Прокси настроен",
  95. "fallback": " (включён откат)",
  96. "none": "Не настроено"
  97. },
  98. "test": {
  99. "desc": "Проверка доступа к URL провайдера через прокси (запрос HEAD, без списания средств)",
  100. "label": "Проверка соединения"
  101. },
  102. "title": "Прокси",
  103. "url": {
  104. "formats": "Поддерживаются протоколы http://, https://, socks5://, socks4://. Для прокси с аутентификацией используйте формат http://user:password@host:port (специальные символы в пароле кодируйте URL-кодировкой, например # как %23)",
  105. "label": "URL прокси",
  106. "optional": "(необязательно)",
  107. "placeholder": "например: http://proxy.example.com:8080 или http://user:pass@proxy:8080"
  108. }
  109. },
  110. "rateLimit": {
  111. "title": "Ограничения",
  112. "desc": "Настройка лимитов расходов для контроля затрат в разных временных окнах",
  113. "dailyResetMode": {
  114. "desc": {
  115. "fixed": "Сбрасывать квоту каждый день в фиксированное время",
  116. "rolling": "Считать от первой заявки, сброс через 24 часа"
  117. },
  118. "label": "Режим ежедневного сброса",
  119. "options": {
  120. "fixed": "Фиксированное время",
  121. "rolling": "Скользящее окно (24 часа)"
  122. }
  123. },
  124. "dailyResetTime": {
  125. "label": "Время ежедневного сброса (HH:mm)"
  126. },
  127. "limit5h": {
  128. "label": "Лимит за 5 часов (USD)",
  129. "placeholder": "Пусто — без ограничений"
  130. },
  131. "limitConcurrent": {
  132. "label": "Лимит параллельных сессий",
  133. "placeholder": "0 — без ограничений"
  134. },
  135. "limitDaily": {
  136. "label": "Дневной лимит расходов (USD)",
  137. "placeholder": "Пусто — без ограничений"
  138. },
  139. "limitMonthly": {
  140. "label": "Месячный лимит (USD)",
  141. "placeholder": "Пусто — без ограничений"
  142. },
  143. "limitTotal": {
  144. "label": "Общий лимит (USD)",
  145. "placeholder": "Пусто — без ограничений"
  146. },
  147. "limitWeekly": {
  148. "label": "Недельный лимит (USD)",
  149. "placeholder": "Пусто — без ограничений"
  150. },
  151. "summary": {
  152. "concurrent": "Параллельно: {count}",
  153. "daily": "день: {amount} (сброс {resetTime})",
  154. "fiveHour": "5ч: ${amount}",
  155. "monthly": "Месяц: ${amount}",
  156. "none": "Без ограничений",
  157. "total": "Всего: ${amount}",
  158. "weekly": "Неделя: ${amount}"
  159. },
  160. "title": "Ограничения"
  161. },
  162. "limits": {
  163. "timeBased": "Временные ограничения",
  164. "dailyReset": "Настройки ежедневного сброса",
  165. "otherLimits": "Другие ограничения"
  166. },
  167. "routing": {
  168. "cacheTtl": {
  169. "desc": "Принудительно задать TTL кэша промптов; влияет только на запросы с cache_control.",
  170. "label": "Переопределение Cache TTL",
  171. "options": {
  172. "1h": "1 час",
  173. "5m": "5 минут",
  174. "inherit": "Не переопределять (следовать клиенту)"
  175. }
  176. },
  177. "swapCacheTtlBilling": {
  178. "label": "Инверсия тарификации Cache TTL",
  179. "desc": "Инвертировать TTL кэша на входе: токены 1h обрабатываются как 5 мин и наоборот. Влияет на бейдж, стоимость и все сохраняемые метрики."
  180. },
  181. "codexOverrides": {
  182. "title": "Переопределение параметров Codex",
  183. "desc": "Переопределение параметров запросов Codex (Responses API) на уровне провайдера",
  184. "parallelToolCalls": {
  185. "help": "Управляет тем, разрешены ли параллельные вызовы инструментов. \"inherit\" следует запросу клиента. Отключение может снизить параллельность вызовов инструментов.",
  186. "label": "Переопределение параллельных tool calls",
  187. "options": {
  188. "false": "Принудительно отключить",
  189. "inherit": "Не переопределять (следовать клиенту)",
  190. "true": "Принудительно включить"
  191. }
  192. },
  193. "serviceTier": {
  194. "help": "Управляет OpenAI service_tier для запросов Codex (Responses API). Значение priority соответствует fast mode. Режим \"следовать клиенту\" не переписывает service_tier, остальные значения принудительно его переопределяют. Неподдерживаемый tier может вызвать ошибку upstream.",
  195. "label": "Переопределение Service Tier",
  196. "options": {
  197. "auto": "auto (по умолчанию проекта)",
  198. "default": "default (стандартный)",
  199. "flex": "flex (best-effort)",
  200. "inherit": "Не переопределять (следовать клиенту)",
  201. "priority": "priority (fast)"
  202. }
  203. },
  204. "reasoningEffort": {
  205. "help": "Управляет тем, сколько усилий модель тратит на рассуждения перед ответом. \"inherit\" следует запросу клиента, остальные значения принудительно задают reasoning.effort. Примечание: \"none\" поддерживается только моделями GPT-5.4 mini. Неподдерживаемые значения приведут к ошибке у апстрима.",
  206. "label": "Переопределение уровня рассуждений",
  207. "options": {
  208. "high": "high",
  209. "inherit": "Не переопределять (следовать клиенту)",
  210. "low": "low",
  211. "medium": "medium (по умолчанию)",
  212. "minimal": "minimal",
  213. "none": "none (только GPT-5.4 mini)",
  214. "xhigh": "xhigh"
  215. }
  216. },
  217. "reasoningSummary": {
  218. "help": "Управляет тем, возвращает ли Responses API сводку рассуждений. auto — кратко, detailed — подробнее. \"inherit\" следует запросу клиента.",
  219. "label": "Переопределение сводки рассуждений",
  220. "options": {
  221. "auto": "auto",
  222. "detailed": "detailed",
  223. "inherit": "Не переопределять (следовать клиенту)"
  224. }
  225. },
  226. "textVerbosity": {
  227. "help": "Управляет подробностью ответа. low — короче, high — подробнее. \"inherit\" следует запросу клиента.",
  228. "label": "Переопределение подробности текста",
  229. "options": {
  230. "high": "high",
  231. "inherit": "Не переопределять (следовать клиенту)",
  232. "low": "low",
  233. "medium": "medium (по умолчанию)"
  234. }
  235. }
  236. },
  237. "anthropicOverrides": {
  238. "maxTokens": {
  239. "label": "Переопределение Max Tokens",
  240. "help": "Переопределяет max_tokens в теле запроса. Диапазон: 1-64000. 'Наследовать' следует запросу клиента.",
  241. "options": {
  242. "inherit": "Без переопределения (следовать клиенту)",
  243. "custom": "Пользовательское"
  244. },
  245. "placeholder": "напр. 32000"
  246. },
  247. "thinkingBudget": {
  248. "label": "Переопределение бюджета размышлений",
  249. "help": "Переопределяет thinking.budget_tokens в теле запроса. Диапазон: 1024-32000. При установке принудительно включает thinking.type = 'enabled'. Если также включено адаптивное мышление и модель совпадает, адаптивное имеет приоритет.",
  250. "options": {
  251. "inherit": "Без переопределения (следовать клиенту)",
  252. "custom": "Пользовательское"
  253. },
  254. "placeholder": "напр. 10240",
  255. "maxOutButton": "Максимум (32000)"
  256. },
  257. "adaptiveThinking": {
  258. "label": "Адаптивное мышление",
  259. "help": "Включить режим адаптивного мышления. При включении и совпадении модели имеет приоритет над бюджетом размышлений. Несовпадающие модели используют переопределение бюджета.",
  260. "effort": {
  261. "label": "Уровень усилий",
  262. "help": "Управляет глубиной рассуждений. Выше = глубже.",
  263. "options": {
  264. "low": "Низкий",
  265. "medium": "Средний",
  266. "high": "Высокий",
  267. "xhigh": "Сверхвысокий (Рекомендуется)",
  268. "max": "Максимальный"
  269. }
  270. },
  271. "modelMatchMode": {
  272. "label": "Сопоставление моделей",
  273. "help": "Какие модели используют адаптивное мышление.",
  274. "options": {
  275. "all": "Все модели",
  276. "specific": "Только определённые модели"
  277. }
  278. },
  279. "models": {
  280. "label": "Целевые модели",
  281. "help": "Модели с адаптивным мышлением. Несовпадающие модели передаются без изменений.",
  282. "placeholder": "напр. claude-opus-4-6",
  283. "addButton": "Добавить модель"
  284. }
  285. }
  286. },
  287. "geminiOverrides": {
  288. "title": "Переопределение параметров Gemini",
  289. "desc": "Переопределение параметров запроса Gemini API на уровне провайдера",
  290. "googleSearch": {
  291. "label": "Google Search (веб-доступ)",
  292. "options": {
  293. "inherit": "Без переопределения (следовать клиенту)",
  294. "enabled": "Принудительно включено",
  295. "disabled": "Принудительно отключено"
  296. }
  297. }
  298. },
  299. "modelRedirects": {
  300. "label": "Перенаправление моделей",
  301. "optional": "(необязательно)"
  302. },
  303. "modelWhitelist": {
  304. "allowAll": "✓ Разрешить все модели (рекомендуется)",
  305. "desc": "Ограничьте модели, которые может обслуживать провайдер. По умолчанию доступны все модели данного типа.",
  306. "legacyExactOnlyWarning": "Эта legacy-форма показывает только allowlist-правила с точным совпадением. Сохранение здесь удалит правила prefix, suffix, keyword и regex. Для расширенных правил используйте новую форму провайдера.",
  307. "label": "Разрешённые модели",
  308. "moreModels": "+{count} ещё",
  309. "optional": "(необязательно)",
  310. "selectedOnly": "Разрешены только модели, совпавшие с настроенными {count} правилами. Другие модели не будут направляться к этому провайдеру.",
  311. "title": "Список разрешённых моделей"
  312. },
  313. "clientRestrictions": {
  314. "toggleLabel": "Включить ограничения клиентов",
  315. "toggleDesc": "По умолчанию клиенты не ограничиваются. Включите, чтобы настроить правила белого/чёрного списка.",
  316. "priorityNote": "Чёрный список имеет приоритет над белым списком.",
  317. "allowedLabel": "Разрешённые клиенты",
  318. "allowedPlaceholder": "напр. claude-code-cli",
  319. "blockedLabel": "Заблокированные клиенты",
  320. "blockedPlaceholder": "напр. gemini-cli",
  321. "allowAction": "Разрешить",
  322. "blockAction": "Блокировать",
  323. "customAllowedLabel": "Пользовательские разрешённые шаблоны",
  324. "customAllowedPlaceholder": "напр. my-ide, internal-tool",
  325. "customBlockedLabel": "Пользовательские шаблоны блокировки",
  326. "customBlockedPlaceholder": "напр. legacy-client",
  327. "customHelp": "Без '*': поиск подстроки без учёта регистра ('-' и '_' игнорируются). С '*': glob-шаблон от начала UA (используйте *foo* для поиска в любом месте; без учёта регистра, символы буквальные).",
  328. "presetClients": {
  329. "claude-code": "Claude Code (все)",
  330. "gemini-cli": "Gemini CLI",
  331. "factory-cli": "Droid CLI",
  332. "codex-cli": "Codex CLI"
  333. },
  334. "subClients": {
  335. "all": "Все",
  336. "cli": "CLI",
  337. "vscode": "VS Code",
  338. "sdk-ts": "SDK (TypeScript)",
  339. "sdk-py": "SDK (Python)",
  340. "cli-sdk": "CLI SDK",
  341. "gh-action": "GitHub Action",
  342. "codex-cli-core": "CLI / TUI",
  343. "desktop": "Desktop",
  344. "exec": "Exec"
  345. },
  346. "nSelected": "Выбрано: {count}"
  347. },
  348. "testRule": "Тест совпадения правил",
  349. "preserveClientIp": {
  350. "desc": "Передавать x-forwarded-for / x-real-ip в апстрим (может раскрыть реальный IP клиента)",
  351. "help": "По умолчанию выключено для приватности. Включайте только если апстриму нужен IP пользователя.",
  352. "label": "Пробрасывать IP клиента"
  353. },
  354. "disableSessionReuse": {
  355. "label": "Не использовать повторно сеанс",
  356. "desc": "Если включено, следующий запрос проигнорирует sticky-привязку к этому провайдеру и заново выполнит проверку приоритета и здоровья. Подходит, когда после восстановления нужно как можно скорее вернуться на более дешёвый провайдер с высоким приоритетом."
  357. },
  358. "options": {
  359. "title": "Параметры",
  360. "desc": "Дополнительные параметры и переопределения провайдера"
  361. },
  362. "providerType": {
  363. "desc": "(определяет политику выбора)",
  364. "label": "Тип провайдера",
  365. "placeholder": "Выберите тип провайдера"
  366. },
  367. "providerTypeDesc": "Выберите формат API провайдера.",
  368. "providerTypeDisabledNote": "Примечание: функции типа OpenAI Compatible находятся в разработке и пока недоступны",
  369. "scheduleParams": {
  370. "costMultiplier": {
  371. "desc": "Множитель при расчёте стоимости. Официальный=1.0, дешевле на 20%=0.8, дороже на 20%=1.2 (до 4 знаков после запятой)",
  372. "label": "Множитель стоимости",
  373. "placeholder": "1.0"
  374. },
  375. "group": {
  376. "desc": "Тег группы. Выберите из списка или введите новое имя и нажмите Enter для создания (макс. 50 символов). Только пользователи с соответствующим providerGroup могут использовать этого провайдера.",
  377. "label": "Группа провайдера",
  378. "placeholder": "напр. premium, economy"
  379. },
  380. "groupPriorities": {
  381. "label": "Приоритет по группам",
  382. "desc": "Переопределение глобального приоритета для определённых групп. Оставьте пустым для использования глобального приоритета выше.",
  383. "placeholder": "Использовать глобальный приоритет",
  384. "noGroups": "Сначала задайте тег группы для настройки приоритетов по группам"
  385. },
  386. "priority": {
  387. "desc": "Меньше — выше приоритет (0 — наивысший). Система выбирает только из провайдеров с максимальным приоритетом. Рекомендации: основной=0, резерв=1, аварийный=2",
  388. "label": "Приоритет",
  389. "placeholder": "0"
  390. },
  391. "title": "Параметры выбора",
  392. "weight": {
  393. "desc": "Взвешенное случайное распределение. В пределах одного приоритета больший вес увеличивает вероятность выбора. Пример 1:2:3 ≈ 16%:33%:50%",
  394. "label": "Вес",
  395. "placeholder": "1"
  396. }
  397. },
  398. "activeTime": {
  399. "title": "Расписание активности",
  400. "description": "Автоматически активировать провайдера в указанные временные окна",
  401. "toggleLabel": "Включить расписание",
  402. "toggleDescription": "При включении провайдер активен только в указанном временном окне",
  403. "startLabel": "Время начала",
  404. "endLabel": "Время окончания",
  405. "timezoneNote": "Время указано по системному часовому поясу",
  406. "crossDayHint": "Расписание через полночь: активен с {start} до {end} следующего дня"
  407. },
  408. "summary": {
  409. "models": "{count} моделей в белом списке",
  410. "none": "Не настроено",
  411. "redirects": "{count} правил перенаправления"
  412. },
  413. "title": "Маршрутизация"
  414. },
  415. "timeout": {
  416. "desc": "Установить время ожидания запроса, 0 означает отключение тайм-аута",
  417. "disableHint": "Установите 0 для отключения тайм-аута (только для сценариев отката канарейки, не рекомендуется)",
  418. "nonStreamingTotal": {
  419. "core": "true",
  420. "desc": "Полный тайм-аут непотоковой передачи, диапазон 60-1800 секунд, 0 для отключения (по умолчанию: без ограничений)",
  421. "label": "Полный тайм-аут непотоковой передачи (секунды)",
  422. "placeholder": "0"
  423. },
  424. "streamingFirstByte": {
  425. "core": "true",
  426. "desc": "Тайм-аут первого байта потоковой передачи, диапазон 1-180 секунд, 0 для отключения (по умолчанию: без ограничений)",
  427. "label": "Тайм-аут первого байта потока (секунды)",
  428. "placeholder": "0"
  429. },
  430. "streamingIdle": {
  431. "core": "true",
  432. "desc": "Тайм-аут простоя потоковой передачи, диапазон 60-600 секунд, 0 для отключения (по умолчанию: без ограничений)",
  433. "label": "Тайм-аут простоя потока (секунды)",
  434. "placeholder": "0"
  435. },
  436. "summary": "1 байт: {streaming}с | поток: {idle}с | не поток: {nonStreaming}с",
  437. "title": "Конфигурация тайм-аута"
  438. }
  439. }