chore(i18n): refresh uk translations
This commit is contained in:
parent
a344388b2a
commit
43c8e39c25
@ -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 використовує порядок round‑robin:
|
||||
|
||||
- **Основний ключ:** тип профілю (**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-ключа, round‑robin може перемикатися між ними між повідомленнями, якщо вони не закріплені. Щоб примусово використовувати один профіль:
|
||||
|
||||
- Закріпіть через `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), щоб отримати ширший огляд вибору моделей і резервного переходу.
|
||||
|
||||
@ -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
Loading…
Reference in New Issue
Block a user