Gateway
Семантика облікових даних автентифікації
Цей документ визначає канонічну семантику придатності та розв’язання облікових даних, що використовується в:
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
Мета — узгодити поведінку під час вибору та під час виконання.
Стабільні коди причин перевірки
okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
Облікові дані токена
Облікові дані токена (type: "token") підтримують вбудований token та/або tokenRef.
Правила придатності
- Профіль токена непридатний, коли відсутні і
token, іtokenRef. expiresє необов’язковим.- Якщо
expiresнаявний, він має бути скінченним числом, більшим за0. - Якщо
expiresнедійсний (NaN,0, від’ємне значення, нескінченне значення або неправильний тип), профіль є непридатним ізinvalid_expires. - Якщо
expiresу минулому, профіль є непридатним ізexpired. tokenRefне обходить перевіркуexpires.
Правила розв’язання
- Семантика розв’язувача відповідає семантиці придатності для
expires. - Для придатних профілів матеріал токена може бути розв’язано з вбудованого значення або
tokenRef. - Посилання, які неможливо розв’язати, створюють
unresolved_refу виводіmodels status --probe.
Портативність копії агента
Успадкування автентифікації агентом працює наскрізним читанням. Коли агент не має локального профілю, він може розв’язувати профілі зі сховища стандартного/основного агента під час виконання без копіювання секретного матеріалу у власний auth-profiles.json.
Явні потоки копіювання, як-от openclaw agents add, використовують цю політику портативності:
- Профілі
api_keyпортативні, якщо не заданоcopyToAgents: false. - Профілі
tokenпортативні, якщо не заданоcopyToAgents: false. - Профілі
oauthтипово не портативні, оскільки refresh-токени можуть бути одноразовими або чутливими до ротації. - OAuth-потоки, якими володіє провайдер, можуть увімкнути це через
copyToAgents: trueлише тоді, коли відомо, що копіювання refresh-матеріалу між агентами безпечне.
Непортативні профілі залишаються доступними через наскрізне успадкування, якщо цільовий агент не ввійде окремо та не створить власний локальний профіль.
Маршрути автентифікації лише з конфігурації
Записи auth.profiles з mode: "aws-sdk" є метаданими маршрутизації, а не збереженими обліковими даними. Вони дійсні, коли цільовий провайдер використовує models.providers.<id>.auth: "aws-sdk" або вбудований стандартний маршрут AWS SDK для Amazon Bedrock. Ці ідентифікатори профілів можуть з’являтися в auth.order і перевизначеннях сеансу, навіть коли відповідного запису немає в auth-profiles.json.
Не записуйте type: "aws-sdk" в auth-profiles.json. Якщо застаріле встановлення має такий маркер, openclaw doctor --fix переміщує його до auth.profiles і видаляє маркер зі сховища облікових даних.
Явна фільтрація порядку автентифікації
- Коли
auth.order.<provider>або перевизначення порядку зі сховища автентифікації задано для провайдера,models status --probeперевіряє лише ідентифікатори профілів, які залишаються в розв’язаному порядку автентифікації для цього провайдера. - Збережений профіль для цього провайдера, пропущений в явному порядку, не буде непомітно спробовано пізніше. Вивід перевірки повідомляє про нього з
reasonCode: excluded_by_auth_orderі деталлюExcluded by auth.order for this provider.
Розв’язання цілі перевірки
- Цілі перевірки можуть надходити з профілів автентифікації, облікових даних середовища або
models.json. - Якщо провайдер має облікові дані, але OpenClaw не може розв’язати кандидатну модель, яку можна перевірити, для нього,
models status --probeповідомляєstatus: no_modelзreasonCode: no_model.
Виявлення облікових даних зовнішнього CLI
- Облікові дані лише для виконання, якими володіють зовнішні CLI, виявляються лише тоді, коли провайдер, середовище виконання або профіль автентифікації входить до області поточної операції, або коли збережений локальний профіль для цього зовнішнього джерела вже існує.
- Викликачі сховища автентифікації мають вибирати явний режим виявлення зовнішнього CLI:
noneдля постійної/Plugin автентифікації,existingдля оновлення вже збережених профілів зовнішнього CLI абоscopedдля конкретного набору провайдерів/профілів. - Шляхи лише для читання/статусу передають
allowKeychainPrompt: false; вони використовують лише файлові облікові дані зовнішнього CLI й не читають та не використовують повторно результати macOS Keychain.
Запобіжник політики OAuth SecretRef
- Вхідні дані SecretRef призначені лише для статичних облікових даних.
- Якщо облікові дані профілю мають
type: "oauth", об’єкти SecretRef не підтримуються для матеріалу облікових даних цього профілю. - Якщо
auth.profiles.<id>.modeдорівнює"oauth", введенняkeyRef/tokenRefна основі SecretRef для цього профілю відхиляється. - Порушення є жорсткими помилками в шляхах розв’язання автентифікації під час запуску/перезавантаження.
Повідомлення, сумісні із застарілими сценаріями
Для сумісності зі скриптами помилки перевірки зберігають цей перший рядок без змін:
Auth profile credentials are missing or expired.
Зручні для людини деталі та стабільні коди причин можуть додаватися в наступних рядках.