chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-06 13:01:49 +00:00
parent a344388b2a
commit 43c8e39c25
3 changed files with 895 additions and 895 deletions

View File

@ -1,55 +1,55 @@
---
read_when:
- Діагностика ротації профілів автентифікації, cooldown або поведінки резервного переходу між моделями
- Діагностика ротації профілів автентифікації, періодів охолодження або поведінки резервного переходу моделей
- Оновлення правил резервного переходу для профілів автентифікації або моделей
- Розуміння того, як перевизначення моделі сесії взаємодіють із повторними спробами резервного переходу
summary: Як OpenClaw ротує профілі автентифікації та переходить до резервних моделей
title: Резервне переключення моделей
- Розуміння того, як перевизначення моделі сеансу взаємодіють із повторними спробами резервного переходу
summary: Як OpenClaw перемикає профілі автентифікації та виконує резервний перехід між моделями
title: Резервний перехід моделей
x-i18n:
generated_at: "2026-04-05T18:02:10Z"
generated_at: "2026-04-06T12:57:31Z"
model: gpt-5.4
provider: openai
source_hash: 899041aa0854e4f347343797649fd11140a01e069e88b1fbc0a76e6b375f6c96
source_hash: d88821e229610f236bdab3f798d5e8c173f61a77c01017cc87431126bf465e32
source_path: concepts/model-failover.md
workflow: 15
---
# Резервне переключення моделей
# Резервний перехід моделей
OpenClaw обробляє збої у два етапи:
1. **Ротація профілю автентифікації** в межах поточного провайдера.
1. **Ротація профілів автентифікації** в межах поточного провайдера.
2. **Резервний перехід моделі** до наступної моделі в `agents.defaults.model.fallbacks`.
У цьому документі пояснюються правила під час виконання та дані, на яких вони ґрунтуються.
У цьому документі пояснюються правила виконання під час роботи та дані, на яких вони ґрунтуються.
## Потік виконання
## Потік виконання під час роботи
Для звичайного текстового запуску OpenClaw оцінює кандидатів у такому порядку:
Для звичайного текстового запуску OpenClaw оцінює кандидати в такому порядку:
1. Поточна вибрана модель сесії.
1. Поточна вибрана модель сеансу.
2. Налаштовані `agents.defaults.model.fallbacks` у заданому порядку.
3. Налаштована основна модель наприкінці, якщо запуск почався з перевизначення.
У межах кожного кандидата OpenClaw спочатку намагається виконати резервний перехід профілю автентифікації, перш ніж перейти
до наступної моделі-кандидата.
У межах кожного кандидата OpenClaw спочатку намагається виконати резервний перехід між профілями автентифікації, перш ніж переходити
до наступного кандидата моделі.
Високорівнева послідовність:
Послідовність верхнього рівня:
1. Визначити активну модель сесії та перевагу профілю автентифікації.
2. Побудувати ланцюжок моделей-кандидатів.
3. Спробувати поточного провайдера з правилами ротації/cooldown профілів автентифікації.
4. Якщо можливості цього провайдера вичерпано через помилку, що допускає резервний перехід, перейти до наступного
1. Визначити активну модель сеансу та пріоритет профілю автентифікації.
2. Побудувати ланцюжок кандидатів моделей.
3. Спробувати поточний провайдер із правилами ротації/охолодження профілів автентифікації.
4. Якщо цей провайдер вичерпано через помилку, що допускає резервний перехід, перейти до наступного
кандидата моделі.
5. Зберегти вибране перевизначення резервної моделі до початку повторної спроби, щоб інші читачі
сесії бачили того самого провайдера/модель, яких виконавець ось-ось використає.
6. Якщо кандидат резервної моделі не спрацює, відкотити лише поля перевизначення сесії, що належать резервному переходу,
коли вони все ще відповідають цьому невдалому кандидату.
7. Якщо всі кандидати не спрацюють, згенерувати `FallbackSummaryError` із деталями по кожній спробі
та найближчим часом завершення cooldown, якщо він відомий.
5. Зберегти вибране перевизначення резервного переходу до початку повторної спроби, щоб інші
читачі сеансу бачили того самого провайдера/модель, яких виконавець ось-ось використає.
6. Якщо кандидат резервного переходу завершується помилкою, відкотити лише поля перевизначення сеансу,
що належать резервному переходу, якщо вони все ще відповідають цьому невдалому кандидату.
7. Якщо всі кандидати завершилися помилкою, згенерувати `FallbackSummaryError` із деталями
для кожної спроби та найближчим часом завершення охолодження, якщо його відомо.
Це навмисно вужче за підхід «зберегти й відновити всю сесію». Виконавець
відповіді зберігає лише поля вибору моделі, якими він володіє для резервного переходу:
Це навмисно вужче, ніж «зберегти й відновити весь сеанс». Виконавець
відповідей зберігає лише поля вибору моделі, якими він володіє для резервного переходу:
- `providerOverride`
- `modelOverride`
@ -57,33 +57,34 @@ OpenClaw обробляє збої у два етапи:
- `authProfileOverrideSource`
- `authProfileOverrideCompactionCount`
Це запобігає тому, щоб невдала повторна спроба резервного переходу перезаписала новіші, не пов’язані із цим зміни
сесії, такі як ручні зміни `/model` або оновлення ротації сесії, що
сталися під час виконання спроби.
Це запобігає тому, щоб невдала повторна спроба резервного переходу перезаписувала новіші, не пов’язані із цим зміни сеансу,
такі як ручні зміни `/model` або оновлення ротації сеансу, які
відбулися під час виконання спроби.
## Зберігання автентифікації (ключі + OAuth)
## Сховище автентифікації (ключі + OAuth)
OpenClaw використовує **профілі автентифікації** як для ключів API, так і для OAuth-токенів.
OpenClaw використовує **профілі автентифікації** як для API-ключів, так і для токенів OAuth.
- Секрети зберігаються в `~/.openclaw/agents/<agentId>/agent/auth-profiles.json` (застаріле: `~/.openclaw/agent/auth-profiles.json`).
- Конфігурація `auth.profiles` / `auth.order` — це **лише метадані + маршрутизація** (без секретів).
- Секрети зберігаються в `~/.openclaw/agents/<agentId>/agent/auth-profiles.json` (застарілий шлях: `~/.openclaw/agent/auth-profiles.json`).
- Стан маршрутизації автентифікації під час роботи зберігається в `~/.openclaw/agents/<agentId>/agent/auth-state.json`.
- Конфігурація `auth.profiles` / `auth.order` містить **лише метадані та маршрутизацію** (без секретів).
- Застарілий файл OAuth лише для імпорту: `~/.openclaw/credentials/oauth.json` (імпортується в `auth-profiles.json` під час першого використання).
Детальніше: [/concepts/oauth](/concepts/oauth)
Докладніше: [/concepts/oauth](/uk/concepts/oauth)
Типи облікових даних:
- `type: "api_key"``{ provider, key }`
- `type: "oauth"``{ provider, access, refresh, expires, email? }` (+ `projectId`/`enterpriseUrl` для деяких провайдерів)
## Ідентифікатори профілів
## ID профілів
OAuth-входи створюють окремі профілі, щоб можна було співіснувати кільком обліковим записам.
Входи OAuth створюють окремі профілі, щоб могли співіснувати кілька облікових записів.
- Типово: `provider:default`, коли email недоступний.
- За замовчуванням: `provider:default`, якщо email недоступний.
- OAuth з email: `provider:<email>` (наприклад, `google-antigravity:user@gmail.com`).
Профілі зберігаються в `~/.openclaw/agents/<agentId>/agent/auth-profiles.json` у `profiles`.
Профілі зберігаються в `~/.openclaw/agents/<agentId>/agent/auth-profiles.json` у розділі `profiles`.
## Порядок ротації
@ -93,75 +94,76 @@ OAuth-входи створюють окремі профілі, щоб можн
2. **Налаштовані профілі**: `auth.profiles`, відфільтровані за провайдером.
3. **Збережені профілі**: записи в `auth-profiles.json` для цього провайдера.
Якщо явний порядок не налаштовано, OpenClaw використовує порядок round-robin:
Якщо явний порядок не налаштовано, OpenClaw використовує порядок roundrobin:
- **Основний ключ:** тип профілю (**OAuth перед ключами API**).
- **Другорядний ключ:** `usageStats.lastUsed` (найдавніші спочатку, у межах кожного типу).
- **Профілі в cooldown/вимкнені** переміщуються в кінець, упорядковані за найближчим завершенням блокування.
- **Основний ключ:** тип профілю (**OAuth перед API-ключами**).
- **Вторинний ключ:** `usageStats.lastUsed` (найдавніші першими в межах кожного типу).
- **Профілі в охолодженні/вимкнені профілі** переміщуються в кінець, упорядковані за найближчим завершенням терміну дії.
### Прикріплення до сесії (дружнє до кешу)
### Закріплення сеансу (сприятливе для кешу)
OpenClaw **закріплює вибраний профіль автентифікації за сесією**, щоб підтримувати кеші провайдера «теплими».
Він **не** виконує ротацію на кожний запит. Закріплений профіль використовується повторно, доки не станеться:
OpenClaw **закріплює вибраний профіль автентифікації за сеансом**, щоб підтримувати кеші провайдера активними.
Він **не** виконує ротацію для кожного запиту. Закріплений профіль використовується повторно, доки:
- скидання сесії (`/new` / `/reset`)
- завершення compaction (лічильник compaction збільшується)
- профіль потрапляє в cooldown/вимикається
- сеанс не скинуто (`/new` / `/reset`)
- не завершиться компакція (лічильник компакції збільшується)
- профіль не перебуває в охолодженні/не вимкнений
Ручний вибір через `/model …@<profileId>` задає **перевизначення користувача** для цієї сесії
і не ротуватиметься автоматично, доки не почнеться нова сесія.
Ручний вибір через `/model …@<profileId>` встановлює **перевизначення користувача** для цього сеансу
і не бере участі в автоматичній ротації, доки не почнеться новий сеанс.
Автоматично закріплені профілі (вибрані маршрутизатором сесії) вважаються **перевагою**:
вони перевіряються першими, але OpenClaw може перейти на інший профіль при rate limit/тайм-аутах.
Профілі, закріплені користувачем, залишаються прив’язаними до цього профілю; якщо він не спрацьовує і налаштовано резервні моделі,
OpenClaw переходить до наступної моделі, а не перемикає профілі.
Автоматично закріплені профілі (вибрані маршрутизатором сеансів) розглядаються як **пріоритет**:
їх пробують першими, але OpenClaw може переключитися на інший профіль у разі лімітів швидкості/тайм-аутів.
Профілі, закріплені користувачем, залишаються прив’язаними до цього профілю; якщо він завершується помилкою і налаштовано резервні переходи моделей,
OpenClaw переходить до наступної моделі замість перемикання профілів.
### Чому OAuth може «здаватися втраченим»
Якщо у вас є і OAuth-профіль, і профіль із ключем API для одного провайдера, round-robin може перемикатися між ними між повідомленнями, якщо профілі не закріплено. Щоб примусово використовувати один профіль:
Якщо для одного й того самого провайдера у вас є і профіль OAuth, і профіль API-ключа, roundrobin може перемикатися між ними між повідомленнями, якщо вони не закріплені. Щоб примусово використовувати один профіль:
- Закріпіть через `auth.order[provider] = ["provider:profileId"]`, або
- Використайте перевизначення для конкретної сесії через `/model …` із перевизначенням профілю (коли це підтримується вашим UI/поверхнею чату).
- Використовуйте перевизначення для окремого сеансу через `/model …` із перевизначенням профілю (якщо це підтримує ваш UI/поверхня чату).
## Cooldown
## Періоди охолодження
Коли профіль не спрацьовує через помилки автентифікації/rate limit (або тайм-аут, що
схожий на rate limiting), OpenClaw позначає його як такий, що перебуває в cooldown, і переходить до наступного профілю.
Цей кошик rate limit є ширшим за простий `429`: він також включає повідомлення
Коли профіль завершується помилкою через помилки автентифікації/ліміту швидкості (або тайм-аут, схожий
на обмеження швидкості), OpenClaw позначає його як такий, що перебуває в охолодженні, і переходить до наступного профілю.
Ця категорія обмежень швидкості ширша за звичайний `429`: вона також включає повідомлення
провайдерів, такі як `Too many concurrent requests`, `ThrottlingException`,
`concurrency limit reached`, `workers_ai ... quota limit exceeded`,
`throttled`, `resource exhausted` і періодичні ліміти вікна використання, такі як
`throttled`, `resource exhausted` і періодичні обмеження вікон використання, такі як
`weekly/monthly limit reached`.
Помилки формату/некоректного запиту (наприклад, помилки валідації ID виклику інструмента Cloud Code Assist) вважаються такими, що допускають резервний перехід, і використовують ті самі cooldown.
Помилки OpenAI-compatible stop reason, такі як `Unhandled stop reason: error`,
Помилки формату/некоректного запиту (наприклад, помилки валідації ID виклику інструмента Cloud Code Assist)
вважаються такими, що допускають резервний перехід, і використовують ті самі періоди охолодження.
Сумісні з OpenAI помилки причини зупинки, такі як `Unhandled stop reason: error`,
`stop reason: error` і `reason: error`, класифікуються як сигнали
тайм-ауту/резервного переходу.
Загальний текст серверних помилок у межах провайдера також може потрапляти в цей кошик тайм-аутів, якщо
джерело відповідає відомому шаблону тимчасової помилки. Наприклад, для Anthropic просте
`An unknown error occurred` і JSON-пейлоади `api_error` із тимчасовим текстом серверної помилки, таким як
`internal server error`, `unknown error, 520`, `upstream error`
або `backend error`, вважаються такими, що допускають резервний перехід через тайм-аут. Загальний висхідний текст OpenRouter,
наприклад простий `Provider returned error`, також розглядається як
тайм-аут лише тоді, коли контекст провайдера справді є OpenRouter. Загальний внутрішній
Загальний текст серверних помилок на рівні провайдера також може потрапляти до цієї категорії тайм-аутів, коли
джерело відповідає відомому тимчасовому шаблону. Наприклад, у Anthropic просте
`An unknown error occurred` і JSON-повідомлення `api_error` із тимчасовим серверним
текстом, таким як `internal server error`, `unknown error, 520`, `upstream error`,
або `backend error`, вважаються такими, що допускають резервний перехід через тайм-аут. Специфічний для OpenRouter
загальний upstream-текст, такий як просте `Provider returned error`, також розглядається як
тайм-аут, але лише тоді, коли контекст провайдера справді OpenRouter. Загальний внутрішній
резервний текст, такий як `LLM request failed with an unknown error.`, залишається
консервативним і сам по собі не запускає резервний перехід.
Cooldown через rate limit також можуть бути прив’язані до моделі:
Періоди охолодження через ліміти швидкості також можуть бути прив’язані до моделі:
- OpenClaw записує `cooldownModel` для помилок rate limit, коли відомий
ідентифікатор моделі, що не спрацювала.
- Сусідню модель у того самого провайдера все ще можна спробувати, коли cooldown
прив’язано до іншої моделі.
- Billing/вікна вимкнення все одно блокують весь профіль у всіх моделях.
- OpenClaw записує `cooldownModel` для збоїв через ліміти швидкості, коли відомо
ID моделі, що завершилася помилкою.
- Споріднена модель у того самого провайдера все ще може бути випробувана, коли охолодження
прив’язане до іншої моделі.
- Вікна білінгу/вимкнення, як і раніше, блокують увесь профіль для всіх моделей.
Cooldown використовують експоненційний backoff:
Періоди охолодження використовують експоненційне збільшення інтервалу:
- 1 хвилина
- 5 хвилин
- 25 хвилин
- 1 година (максимум)
Стан зберігається в `auth-profiles.json` у `usageStats`:
Стан зберігається в `auth-state.json` у розділі `usageStats`:
```json
{
@ -175,22 +177,22 @@ Cooldown використовують експоненційний backoff:
}
```
## Billing-вимкнення
## Вимкнення через білінг
Помилки billing/кредитів (наприклад, «insufficient credits» / «credit balance too low») вважаються такими, що допускають резервний перехід, але зазвичай вони не є тимчасовими. Замість короткого cooldown OpenClaw позначає профіль як **вимкнений** (з довшим backoff) і переходить до наступного профілю/провайдера.
Збої через білінг/кредити (наприклад, «недостатньо кредитів» / «занадто низький баланс кредитів») вважаються такими, що допускають резервний перехід, але зазвичай вони не є тимчасовими. Замість короткого періоду охолодження OpenClaw позначає профіль як **вимкнений** (із довшим інтервалом зворотного відліку) і переходить до наступного профілю/провайдера.
Не кожна відповідь, схожа на billing, є `402`, і не кожен HTTP `402` потрапляє
сюди. OpenClaw зберігає явний текст billing у гілці billing, навіть коли
провайдер повертає `401` або `403`, але matchers, специфічні для провайдера, залишаються
обмеженими тим провайдером, якому вони належать (наприклад, OpenRouter `403 Key limit
exceeded`). Тим часом тимчасові `402` для вікон використання та
лімітів витрат організації/workspace класифікуються як `rate_limit`, коли
Не кожна відповідь, схожа на проблему з білінгом, має код `402`, і не кожен HTTP `402` потрапляє
сюди. OpenClaw зберігає явний текст, пов’язаний із білінгом, у категорії білінгу навіть тоді, коли
провайдер натомість повертає `401` або `403`, але специфічні для провайдера зіставлення залишаються
обмеженими провайдером, якому вони належать (наприклад, OpenRouter `403 Key limit
exceeded`). Водночас тимчасові `402` помилки вікна використання та
помилки ліміту витрат організації/робочого простору класифікуються як `rate_limit`, коли
повідомлення виглядає придатним для повторної спроби (наприклад, `weekly usage limit exhausted`, `daily
limit reached, resets tomorrow` або `organization spending limit exceeded`).
Такі випадки залишаються на шляху короткого cooldown/резервного переходу замість довгого
шляху вимкнення через billing.
Вони залишаються на шляху короткого охолодження/резервного переходу замість довгого
шляху вимкнення через білінг.
Стан зберігається в `auth-profiles.json`:
Стан зберігається в `auth-state.json`:
```json
{
@ -203,29 +205,29 @@ limit reached, resets tomorrow` або `organization spending limit exceeded`).
}
```
Типові значення:
Значення за замовчуванням:
- Backoff для billing починається з **5 годин**, подвоюється з кожною помилкою billing і обмежується **24 годинами**.
- Лічильники backoff скидаються, якщо профіль не помилявся протягом **24 годин** (можна налаштувати).
- Для перевантажених повторних спроб дозволяється **1 ротація профілю того самого провайдера** перед переходом до резервної моделі.
- Для перевантажених повторних спроб типово використовується backoff **0 мс**.
- Інтервал зворотного відліку для білінгу починається з **5 годин**, подвоюється з кожним збоєм через білінг і обмежується **24 годинами**.
- Лічильники зворотного відліку скидаються, якщо профіль не зазнавав збоїв протягом **24 годин** (налаштовується).
- Повторні спроби при перевантаженні допускають **1 ротацію профілю того самого провайдера** перед резервним переходом моделі.
- Повторні спроби при перевантаженні за замовчуванням використовують інтервал зворотного відліку **0 мс**.
## Резервний перехід моделі
Якщо всі профілі провайдера не спрацювали, OpenClaw переходить до наступної моделі в
`agents.defaults.model.fallbacks`. Це стосується помилок автентифікації, rate limit і
Якщо всі профілі для провайдера завершилися помилкою, OpenClaw переходить до наступної моделі в
`agents.defaults.model.fallbacks`. Це стосується помилок автентифікації, лімітів швидкості та
тайм-аутів, які вичерпали ротацію профілів (інші помилки не просувають резервний перехід).
Перевантаження і помилки rate limit обробляються агресивніше, ніж cooldown billing.
Типово OpenClaw дозволяє одну повторну спробу з іншим профілем того самого провайдера,
а потім без очікування переходить до наступної налаштованої резервної моделі.
Сигнали зайнятості провайдера, такі як `ModelNotReadyException`, потрапляють у цей кошик перевантаження.
Налаштовуйте це через `auth.cooldowns.overloadedProfileRotations`,
Помилки перевантаження та ліміту швидкості обробляються агресивніше, ніж періоди охолодження через білінг.
За замовчуванням OpenClaw дозволяє одну повторну спробу з іншим профілем автентифікації в того самого провайдера,
а потім без очікування перемикається на наступну налаштовану резервну модель.
Сигнали зайнятості провайдера, такі як `ModelNotReadyException`, належать до цієї категорії перевантаження.
Налаштуйте це за допомогою `auth.cooldowns.overloadedProfileRotations`,
`auth.cooldowns.overloadedBackoffMs` і
`auth.cooldowns.rateLimitedProfileRotations`.
Коли запуск починається з перевизначення моделі (hooks або CLI), резервні переходи все одно завершуються на
`agents.defaults.model.primary` після спроби всіх налаштованих резервних варіантів.
`agents.defaults.model.primary` після спроб усіх налаштованих резервних варіантів.
### Правила ланцюжка кандидатів
@ -235,111 +237,112 @@ OpenClaw будує список кандидатів із поточного з
Правила:
- Запитана модель завжди перша.
- Явно налаштовані резервні варіанти дедуплікуються, але не фільтруються за списком дозволу моделей.
Вони вважаються явним наміром оператора.
- Якщо поточний запуск уже працює на налаштованому резервному варіанті в тій самій родині провайдера,
- Явно налаштовані резервні варіанти дедуплікуються, але не фільтруються за списком дозволених
моделей. Вони розглядаються як явний намір оператора.
- Якщо поточний запуск уже використовує налаштований резервний варіант у тому самому сімействі провайдерів,
OpenClaw продовжує використовувати весь налаштований ланцюжок.
- Якщо поточний запуск працює на іншому провайдері, ніж у конфігурації, і ця поточна
модель ще не є частиною налаштованого ланцюжка резервного переходу, OpenClaw не
додає непов’язані резервні варіанти з іншого провайдера.
- Коли запуск почався з перевизначення, налаштована основна модель додається в кінці,
щоб ланцюжок міг повернутися до звичайного типового значення після вичерпання
- Якщо поточний запуск використовує іншого провайдера, ніж у конфігурації, і ця поточна
модель ще не є частиною налаштованого ланцюжка резервних варіантів, OpenClaw не
додає непов’язані налаштовані резервні варіанти від іншого провайдера.
- Коли запуск почався з перевизначення, налаштована основна модель додається в
кінець, щоб ланцюжок міг повернутися до звичайного значення за замовчуванням після вичерпання
попередніх кандидатів.
### Які помилки просувають резервний перехід
Резервний перехід моделі продовжується у випадках:
Резервний перехід моделі продовжується за таких умов:
- збої автентифікації
- rate limit і вичерпання cooldown
- ліміти швидкості та вичерпання періоду охолодження
- помилки перевантаження/зайнятості провайдера
- помилки резервного переходу, схожі на тайм-аут
- вимкнення через billing
- `LiveSessionModelSwitchError`, який нормалізується в шлях резервного переходу, щоб
- вимкнення через білінг
- `LiveSessionModelSwitchError`, яка нормалізується до шляху резервного переходу, щоб
застаріла збережена модель не створювала зовнішній цикл повторних спроб
- інші нерозпізнані помилки, коли ще залишилися кандидати
- інші нерозпізнані помилки, коли ще залишаються кандидати
Резервний перехід моделі не продовжується у випадках:
Резервний перехід моделі не продовжується за таких умов:
- явне переривання, яке не схоже на тайм-аут/помилку резервного переходу
- помилки переповнення контексту, які мають залишатися в логіці compaction/повторних спроб
- явні переривання, які не мають форми тайм-ауту/резервного переходу
- помилки переповнення контексту, які мають залишатися в межах логіки компакції/повторної спроби
(наприклад, `request_too_large`, `INVALID_ARGUMENT: input exceeds the maximum
number of tokens`, `input token count exceeds the maximum number of input
tokens`, `The input is too long for the model` або `ollama error: context
length exceeded`)
- фінальна невідома помилка, коли кандидатів більше немає
- фінальна невідома помилка, коли кандидатів більше не залишилося
### Поведінка пропуску cooldown проти probe
### Поведінка пропуску через охолодження та пробних спроб
Коли всі профілі автентифікації провайдера вже перебувають у cooldown, OpenClaw
Коли всі профілі автентифікації для провайдера вже перебувають в охолодженні, OpenClaw
не пропускає цього провайдера автоматично назавжди. Він ухвалює рішення для кожного кандидата окремо:
- Стійкі збої автентифікації негайно пропускають увесь провайдер.
- Вимкнення через billing зазвичай пропускаються, але основного кандидата все ще можна probe
з throttling, щоб відновлення було можливе без перезапуску.
- Основного кандидата можна probe ближче до завершення cooldown із throttling для кожного провайдера.
- Сусідні резервні моделі того самого провайдера можна спробувати попри cooldown, якщо
збій виглядає тимчасовим (`rate_limit`, `overloaded` або unknown). Це
особливо важливо, коли rate limit прив’язано до моделі і сусідня модель може
одразу відновитися.
- Тимчасові cooldown probe обмежуються однією спробою на провайдера в межах одного резервного запуску, щоб
- Стійкі збої автентифікації відразу пропускають увесь провайдер.
- Вимкнення через білінг зазвичай пропускаються, але основного кандидата все одно можна пробно перевірити
із обмеженням частоти, щоб відновлення було можливим без перезапуску.
- Основного кандидата можна пробно перевірити ближче до завершення періоду охолодження, з
обмеженням частоти для кожного провайдера.
- Резервні споріднені моделі того самого провайдера можна пробувати попри охолодження, коли
збій виглядає тимчасовим (`rate_limit`, `overloaded` або невідомий).
Це особливо важливо, коли обмеження швидкості прив’язане до моделі, а споріднена модель може
все ще відновитися негайно.
- Тимчасові пробні спроби під час охолодження обмежуються однією на провайдера за один запуск резервного переходу, щоб
один провайдер не затримував міжпровайдерний резервний перехід.
## Перевизначення сесії та живе перемикання моделі
## Перевизначення сеансу та живе перемикання моделі
Зміни моделі сесії — це спільний стан. Активний виконавець, команда `/model`,
оновлення compaction/сесії та узгодження живої сесії читають або записують
частини того самого запису сесії.
Зміни моделі сеансу — це спільний стан. Активний виконавець, команда `/model`,
оновлення компакції/сеансу та узгодження живого сеансу читають або записують
частини одного й того самого запису сеансу.
Це означає, що повторні спроби резервного переходу мають координуватися з живим перемиканням моделі:
Це означає, що повторні спроби резервного переходу мають узгоджуватися з живим перемиканням моделі:
- Лише явні зміни моделі, ініційовані користувачем, позначають очікуване живе перемикання. Це
включає `/model`, `session_status(model=...)` і `sessions.patch`.
- Зміни моделі, ініційовані системою, такі як ротація резервного переходу,
перевизначення heartbeat або compaction, самі по собі ніколи не позначають очікуване живе перемикання.
- Перед початком повторної спроби резервного переходу виконавець відповіді зберігає вибрані
поля перевизначення резервного переходу в запис сесії.
- Узгодження живої сесії надає перевагу збереженим перевизначенням сесії над застарілими
перевизначення heartbeat або компакція, самі по собі ніколи не позначають очікуване живе перемикання.
- Перш ніж почнеться повторна спроба резервного переходу, виконавець відповідей зберігає вибрані
поля перевизначення резервного переходу в запис сеансу.
- Узгодження живого сеансу віддає перевагу збереженим перевизначенням сеансу перед застарілими
полями моделі під час виконання.
- Якщо спроба резервного переходу не спрацює, виконавець відкочує лише ті поля перевизначення,
які він записав, і лише якщо вони все ще відповідають невдалому кандидату.
- Якщо спроба резервного переходу завершується помилкою, виконавець відкочує лише ті поля перевизначення,
які він записав, і лише якщо вони все ще відповідають цьому невдалому кандидату.
Це запобігає класичній гонці:
1. Основна модель не спрацьовує.
2. Кандидат резервної моделі вибирається в пам’яті.
3. У сховищі сесії все ще вказано стару основну модель.
4. Узгодження живої сесії читає застарілий стан сесії.
5. Повторну спробу відкидає назад на стару модель до початку спроби резервного переходу.
1. Основний варіант завершується помилкою.
2. Кандидат резервного переходу вибирається в пам’яті.
3. Сховище сеансу все ще вказує старий основний варіант.
4. Узгодження живого сеансу читає застарілий стан сеансу.
5. Повторна спроба повертається до старої моделі ще до початку спроби резервного переходу.
Збережене перевизначення резервної моделі закриває це вікно, а вузький відкат
зберігає новіші ручні або runtime-зміни сесії без змін.
Збережене перевизначення резервного переходу закриває це вікно, а вузький відкат
зберігає новіші ручні зміни або зміни сеансу під час виконання.
## Спостережуваність і підсумки збоїв
## Спостережуваність і зведення помилок
`runWithModelFallback(...)` записує деталі кожної спроби, які потрапляють у журнали та
повідомлення користувача про cooldown:
`runWithModelFallback(...)` записує деталі кожної спроби, які використовуються для журналів і
повідомлень для користувача про період охолодження:
- спроба provider/model
- спроба `provider/model`
- причина (`rate_limit`, `overloaded`, `billing`, `auth`, `model_not_found` та
подібні причини резервного переходу)
- необов’язковий status/code
- зрозумілий для людини підсумок помилки
- зрозуміле людині зведення помилки
Коли всі кандидати не спрацьовують, OpenClaw генерує `FallbackSummaryError`. Зовнішній
виконавець відповіді може використати це, щоб побудувати точніше повідомлення на кшталт «усі моделі
тимчасово обмежені через rate limit» і додати найближчий час завершення cooldown, якщо він відомий.
Коли всі кандидати завершуються помилкою, OpenClaw генерує `FallbackSummaryError`. Зовнішній
виконавець відповідей може використати це для побудови точнішого повідомлення, наприклад «усі моделі
тимчасово обмежені за швидкістю», і включити найближчий час завершення періоду охолодження, якщо його відомо.
Цей підсумок cooldown враховує модель:
Це зведення про охолодження враховує модель:
- непов’язані rate limit, прив’язані до інших моделей, ігноруються для ланцюжка
спроб provider/model
- якщо блокування, що залишилося, є відповідним rate limit, прив’язаним до моделі, OpenClaw
повідомляє останній відповідний час завершення, який все ще блокує цю модель
- не пов’язані з поточним ланцюжком `provider/model` обмеження швидкості, прив’язані до моделі,
ігноруються
- якщо блокування, що залишилося, є відповідним обмеженням швидкості, прив’язаним до моделі, OpenClaw
повідомляє про останній відповідний час завершення, який усе ще блокує цю модель
## Пов’язана конфігурація
Див. [Конфігурація шлюзу](/gateway/configuration), щоб дізнатися про:
Див. [Конфігурація Gateway](/uk/gateway/configuration) для:
- `auth.profiles` / `auth.order`
- `auth.cooldowns.billingBackoffHours` / `auth.cooldowns.billingBackoffHoursByProvider`
@ -347,6 +350,6 @@ length exceeded`)
- `auth.cooldowns.overloadedProfileRotations` / `auth.cooldowns.overloadedBackoffMs`
- `auth.cooldowns.rateLimitedProfileRotations`
- `agents.defaults.model.primary` / `agents.defaults.model.fallbacks`
- маршрутизацію `agents.defaults.imageModel`
- маршрутизація `agents.defaults.imageModel`
Ширший огляд вибору моделей і резервного переходу див. у [Моделі](/concepts/models).
Див. [Моделі](/uk/concepts/models), щоб отримати ширший огляд вибору моделей і резервного переходу.

View File

@ -1,51 +1,51 @@
---
read_when:
- Налагодження auth моделі або завершення строку дії OAuth
- Налагодження автентифікації моделей або завершення строку дії OAuth
- Документування автентифікації або зберігання облікових даних
summary: 'Автентифікація моделей: OAuth, API ключі та застарілий setup-token Anthropic'
summary: 'Автентифікація моделей: OAuth, API-ключі та застарілий setup-token Anthropic'
title: Автентифікація
x-i18n:
generated_at: "2026-04-05T18:03:09Z"
generated_at: "2026-04-06T12:57:04Z"
model: gpt-5.4
provider: openai
source_hash: f59ede3fcd7e692ad4132287782a850526acf35474b5bfcea29e0e23610636c2
source_hash: b13cc0bca2b27a6d8326a8cb3f8b1e1810ecd722f29c7a199ceff2fbaf70c6aa
source_path: gateway/authentication.md
workflow: 15
---
# Автентифікація (Провайдери моделей)
# Автентифікація (постачальники моделей)
<Note>
Ця сторінка описує автентифікацію **провайдера моделей** (API ключі, OAuth і застарілий Anthropic setup-token). Для автентифікації **підключення gateway** (token, password, trusted-proxy) див. [Configuration](/gateway/configuration) і [Trusted Proxy Auth](/gateway/trusted-proxy-auth).
Ця сторінка охоплює автентифікацію **постачальника моделей** (API-ключі, OAuth і застарілий setup-token Anthropic). Для автентифікації **підключення шлюзу** (токен, пароль, trusted-proxy) див. [Configuration](/uk/gateway/configuration) і [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth).
</Note>
OpenClaw підтримує OAuth і API ключі для провайдерів моделей. Для постійно
увімкнених хостів gateway API ключі зазвичай є найбільш передбачуваним варіантом. Потоки
передплати/OAuth також підтримуються, коли вони відповідають моделі облікового запису вашого провайдера.
OpenClaw підтримує OAuth і API-ключі для постачальників моделей. Для хостів
шлюзу, що працюють постійно, API-ключі зазвичай є найпередбачуванішим варіантом. Також
підтримуються потоки підписки/OAuth, якщо вони відповідають моделі облікового запису вашого постачальника.
Див. [/concepts/oauth](/concepts/oauth) для повного потоку OAuth і структури
Див. [/concepts/oauth](/uk/concepts/oauth), щоб ознайомитися з повним потоком OAuth і схемою
зберігання.
Для auth на основі SecretRef (providers `env`/`file`/`exec`) див. [Secrets Management](/gateway/secrets).
Для правил допустимості облікових даних/кодів причин, які використовує `models status --probe`, див.
[Auth Credential Semantics](/auth-credential-semantics).
Щодо автентифікації на основі SecretRef (постачальники `env`/`file`/`exec`) див. [Secrets Management](/uk/gateway/secrets).
Щодо правил відповідності облікових даних/кодів причин, які використовує `models status --probe`, див.
[Auth Credential Semantics](/uk/auth-credential-semantics).
## Рекомендоване налаштування (API ключ, будь-який провайдер)
## Рекомендоване налаштування (API-ключ, будь-який постачальник)
Якщо ви запускаєте довготривалий gateway, почніть з API ключа для обраного
провайдера.
Зокрема для Anthropic auth через API ключ є безпечним шляхом. Auth Anthropic у стилі
передплати всередині OpenClaw — це застарілий шлях setup-token, і його
слід розглядати як шлях **Extra Usage**, а не як шлях лімітів плану.
Якщо ви запускаєте довготривалий шлюз, почніть з API-ключа для вибраного
постачальника.
Для Anthropic зокрема, автентифікація через API-ключ є безпечним шляхом. Автентифікація Anthropic
у стилі підписки в OpenClaw — це застарілий шлях setup-token, і її
слід розглядати як шлях **Extra Usage**, а не як шлях лімітів тарифного плану.
1. Створіть API ключ у консолі вашого провайдера.
2. Розмістіть його на **хості gateway** (машині, де виконується `openclaw gateway`).
1. Створіть API-ключ у консолі вашого постачальника.
2. Розмістіть його на **хості шлюзу** (машині, на якій виконується `openclaw gateway`).
```bash
export <PROVIDER>_API_KEY="..."
openclaw models status
```
3. Якщо Gateway працює під systemd/launchd, краще додати ключ у
3. Якщо Gateway працює під systemd/launchd, краще розмістити ключ у
`~/.openclaw/.env`, щоб демон міг його прочитати:
```bash
@ -61,44 +61,44 @@ openclaw models status
openclaw doctor
```
Якщо ви не хочете самостійно керувати env vars, onboarding може зберігати
API ключі для використання демоном: `openclaw onboard`.
Якщо ви не хочете самостійно керувати змінними середовища, onboarding може зберігати
API-ключі для використання демоном: `openclaw onboard`.
Див. [Help](/help) для подробиць про успадкування env (`env.shellEnv`,
Див. [Help](/uk/help), щоб дізнатися подробиці про успадкування env (`env.shellEnv`,
`~/.openclaw/.env`, systemd/launchd).
## Anthropic: сумісність із застарілим токеном
## Anthropic: сумісність із застарілими токенами
Auth через setup-token Anthropic все ще доступна в OpenClaw як
застарілий/ручний шлях. Публічна документація Anthropic для Claude Code все ще описує пряме використання
Claude Code у терміналі в межах планів Claude, але Anthropic окремо повідомив користувачам
OpenClaw, що шлях входу Claude в **OpenClaw** вважається використанням стороннього
harness і вимагає **Extra Usage**, що оплачується окремо від
передплати.
Автентифікація Anthropic setup-token усе ще доступна в OpenClaw як
застарілий/ручний шлях. Публічна документація Anthropic Claude Code і далі охоплює пряме
використання Claude Code у терміналі в межах тарифів Claude, але Anthropic окремо повідомила
користувачам OpenClaw, що шлях входу Claude в **OpenClaw** вважається використанням
стороннього harness і потребує **Extra Usage**, що оплачується окремо від
підписки.
Для найзрозумілішого шляху налаштування використовуйте API ключ Anthropic. Якщо вам потрібно зберегти
шлях Anthropic у стилі передплати в OpenClaw, використовуйте застарілий шлях setup-token
Для найзрозумілішого шляху налаштування використовуйте API-ключ Anthropic. Якщо вам потрібно зберегти
шлях Anthropic у стилі підписки в OpenClaw, використовуйте застарілий шлях setup-token
з очікуванням, що Anthropic розглядатиме це як **Extra Usage**.
Ручне введення токена (будь-який провайдер; записує `auth-profiles.json` + оновлює config):
Ручне введення токена (будь-який постачальник; записує в `auth-profiles.json` + оновлює config):
```bash
openclaw models auth paste-token --provider openrouter
```
Також підтримуються посилання на auth profile для статичних облікових даних:
Також підтримуються посилання на профілі автентифікації для статичних облікових даних:
- облікові дані `api_key` можуть використовувати `keyRef: { source, provider, id }`
- облікові дані `token` можуть використовувати `tokenRef: { source, provider, id }`
- Профілі в режимі OAuth не підтримують облікові дані SecretRef; якщо `auth.profiles.<id>.mode` встановлено в `"oauth"`, вхідні `keyRef`/`tokenRef` на основі SecretRef для цього профілю відхиляються.
- Облікові дані `api_key` можуть використовувати `keyRef: { source, provider, id }`
- Облікові дані `token` можуть використовувати `tokenRef: { source, provider, id }`
- Профілі режиму OAuth не підтримують облікові дані SecretRef; якщо для `auth.profiles.<id>.mode` встановлено `"oauth"`, введення `keyRef`/`tokenRef` на основі SecretRef для цього профілю відхиляється.
Перевірка, зручна для автоматизації (код виходу `1`, якщо строк дії завершився/відсутній, `2`, якщо строк дії скоро завершиться):
Перевірка, зручна для автоматизації (вихід `1`, якщо строк дії минув/відсутній, `2`, якщо скоро мине):
```bash
openclaw models status --check
```
Live probes auth:
Живі перевірки автентифікації:
```bash
openclaw models status --probe
@ -106,66 +106,66 @@ openclaw models status --probe
Примітки:
- Рядки probe можуть походити з auth profiles, облікових даних env або `models.json`.
- Якщо явний `auth.order.<provider>` пропускає збережений profile, probe повідомляє
`excluded_by_auth_order` для цього profile замість спроби його використати.
- Якщо auth існує, але OpenClaw не може визначити кандидата моделі для probe для
цього провайдера, probe повідомляє `status: no_model`.
- Cooldown через rate limit можуть бути прив’язані до моделі. Profile у cooldown для однієї
моделі все ще може бути придатним для спорідненої моделі того самого провайдера.
- Рядки probe можуть надходити з профілів автентифікації, облікових даних env або `models.json`.
- Якщо явний `auth.order.<provider>` пропускає збережений профіль, probe повідомляє
`excluded_by_auth_order` для цього профілю замість спроби використати його.
- Якщо автентифікація існує, але OpenClaw не може визначити кандидата моделі для probe
для цього постачальника, probe повідомляє `status: no_model`.
- Затримки охолодження через обмеження частоти можуть бути прив’язані до моделі. Профіль, який охолоджується для однієї
моделі, усе ще може бути придатним для спорідненої моделі того самого постачальника.
Необов’язкові scripts для ops (systemd/Termux) описані тут:
[Auth monitoring scripts](/help/scripts#auth-monitoring-scripts)
Необов’язкові операційні скрипти (systemd/Termux) задокументовані тут:
[Auth monitoring scripts](/uk/help/scripts#auth-monitoring-scripts)
## Примітка щодо Anthropic
Backend Anthropic `claude-cli` було видалено.
Бекенд Anthropic `claude-cli` було видалено.
- Використовуйте API ключі Anthropic для трафіку Anthropic в OpenClaw.
- Setup-token Anthropic залишається застарілим/ручним шляхом і має використовуватися з
очікуванням білінгу Extra Usage, про який Anthropic повідомив користувачам OpenClaw.
- Використовуйте API-ключі Anthropic для трафіку Anthropic в OpenClaw.
- Anthropic setup-token залишається застарілим/ручним шляхом і має використовуватися з
очікуванням тарифікації Extra Usage, про яку Anthropic повідомила користувачам OpenClaw.
- `openclaw doctor` тепер виявляє застарілий видалений стан Anthropic Claude CLI. Якщо
байти збережених облікових даних усе ще існують, doctor перетворює їх назад у
профілі Anthropic token/OAuth. Якщо ні, doctor видаляє застарілу конфігурацію Claude CLI
і вказує вам на відновлення через API ключ або setup-token.
байти збережених облікових даних усе ще існують, doctor перетворює їх назад на
профілі токена/OAuth Anthropic. Якщо ні, doctor видаляє застарілу конфігурацію Claude CLI
і вказує вам на відновлення через API-ключ або setup-token.
## Перевірка стану auth моделі
## Перевірка стану автентифікації моделі
```bash
openclaw models status
openclaw doctor
```
## Поведінка ротації API ключів (gateway)
## Поведінка ротації API-ключів (шлюз)
Деякі провайдери підтримують повторну спробу запиту з альтернативними ключами, коли виклик API
натрапляє на rate limit провайдера.
Деякі постачальники підтримують повторну спробу запиту з альтернативними ключами, коли виклик API
натрапляє на обмеження частоти постачальника.
- Порядок пріоритету:
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (одне перевизначення)
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (єдиний override)
- `<PROVIDER>_API_KEYS`
- `<PROVIDER>_API_KEY`
- `<PROVIDER>_API_KEY_*`
- Провайдери Google також включають `GOOGLE_API_KEY` як додатковий fallback.
- Постачальники Google також включають `GOOGLE_API_KEY` як додатковий резервний варіант.
- Той самий список ключів дедуплікується перед використанням.
- OpenClaw повторює спробу з наступним ключем лише для помилок rate limit (наприклад
- OpenClaw виконує повторну спробу з наступним ключем лише для помилок обмеження частоти (наприклад,
`429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent
requests`, `ThrottlingException`, `concurrency limit reached` або
`workers_ai ... quota limit exceeded`).
- Помилки, не пов’язані з rate limit, не повторюються з альтернативними ключами.
- Якщо всі ключі не спрацювали, повертається фінальна помилка з останньої спроби.
- Помилки, не пов’язані з обмеженням частоти, не повторюються з альтернативними ключами.
- Якщо всі ключі не спрацюють, повертається остаточна помилка з останньої спроби.
## Керування тим, які облікові дані використовуються
### Для сесії (команда чату)
### Для сеансу (команда чату)
Використовуйте `/model <alias-or-id>@<profileId>`, щоб закріпити конкретні облікові дані провайдера для поточної сесії (приклади id профілів: `anthropic:default`, `anthropic:work`).
Використовуйте `/model <alias-or-id>@<profileId>`, щоб закріпити конкретні облікові дані постачальника для поточного сеансу (приклади ідентифікаторів профілів: `anthropic:default`, `anthropic:work`).
Використовуйте `/model` (або `/model list`) для компактного вибору; використовуйте `/model status` для повного перегляду (кандидати + наступний auth profile, а також подробиці endpoint провайдера, якщо налаштовано).
Використовуйте `/model` (або `/model list`) для компактного вибору; використовуйте `/model status` для повного подання (кандидати + наступний профіль автентифікації, а також відомості про endpoint постачальника, якщо їх налаштовано).
### Для агента (перевизначення CLI)
### Для агента (override CLI)
Установіть явне перевизначення порядку auth profile для агента (зберігається в `auth-profiles.json` цього агента):
Установіть явний override порядку профілів автентифікації для агента (зберігається в `auth-state.json` цього агента):
```bash
openclaw models auth order get --provider anthropic
@ -173,36 +173,36 @@ openclaw models auth order set --provider anthropic anthropic:default
openclaw models auth order clear --provider anthropic
```
Використовуйте `--agent <id>`, щоб націлитися на конкретного агента; не вказуйте його, щоб використати налаштованого агента за замовчуванням.
Коли ви налагоджуєте проблеми з порядком, `openclaw models status --probe` показує пропущені
збережені profiles як `excluded_by_auth_order` замість того, щоб мовчки їх пропускати.
Коли ви налагоджуєте проблеми з cooldown, пам’ятайте, що cooldown через rate limit можуть бути прив’язані
до одного id моделі, а не до всього profile провайдера.
Використовуйте `--agent <id>`, щоб націлити на конкретного агента; не вказуйте його, щоб використовувати налаштованого агента за замовчуванням.
Під час налагодження проблем із порядком `openclaw models status --probe` показує пропущені
збережені профілі як `excluded_by_auth_order` замість того, щоб мовчки їх пропускати.
Під час налагодження проблем із затримками охолодження пам’ятайте, що вони можуть бути прив’язані
до одного id моделі, а не до всього профілю постачальника.
## Усунення несправностей
### "No credentials found"
### "Облікові дані не знайдено"
Якщо profile Anthropic відсутній, налаштуйте API ключ Anthropic на
**хості gateway** або налаштуйте застарілий шлях setup-token Anthropic, а потім повторно перевірте:
Якщо профіль Anthropic відсутній, налаштуйте API-ключ Anthropic на
**хості шлюзу** або налаштуйте застарілий шлях Anthropic setup-token, а потім повторно перевірте:
```bash
openclaw models status
```
### Термін дії токена спливає/сплив
### Строк дії токена скоро минає/минув
Запустіть `openclaw models status`, щоб підтвердити, у якого profile спливає строк дії. Якщо застарілий
profile токена Anthropic відсутній або строк його дії завершився, оновіть це налаштування через
setup-token або перейдіть на API ключ Anthropic.
Виконайте `openclaw models status`, щоб підтвердити, строк дії якого профілю скоро минає. Якщо застарілий
профіль токена Anthropic відсутній або строк його дії минув, оновіть це налаштування через
setup-token або перейдіть на API-ключ Anthropic.
Якщо на машині все ще є застарілий видалений стан Anthropic Claude CLI зі старіших
збірок, запустіть:
збірок, виконайте:
```bash
openclaw doctor --yes
```
Doctor перетворює `anthropic:claude-cli` назад на Anthropic token/OAuth, якщо
збережені байти облікових даних усе ще існують. Інакше він видаляє застарілі
посилання на profile/config/model Claude CLI і залишає вказівки щодо наступних кроків.
Doctor перетворює `anthropic:claude-cli` назад на токен/OAuth Anthropic, якщо
байти збережених облікових даних усе ще існують. Інакше він видаляє застарілі
посилання профілю/конфігурації/моделі Claude CLI і залишає вказівки щодо наступних кроків.

File diff suppressed because it is too large Load Diff