8.4 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Канонічна семантика придатності та розв’язання облікових даних для профілів автентифікації | Семантика облікових даних автентифікації |
|
Цей документ визначає канонічну семантику придатності й розв’язання облікових даних, що використовується в:
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за замовчуванням не портативні, оскільки токени оновлення можуть бути одноразовими або чутливими до ротації. - OAuth-потоки, що належать провайдеру, можуть увімкнути це через
copyToAgents: trueлише коли відомо, що копіювання матеріалу оновлення між агентами є безпечним.
Непортативні профілі лишаються доступними через успадкування з наскрізним читанням, якщо цільовий агент не ввійде окремо та не створить власний локальний профіль.
Фільтрування явного порядку автентифікації
- Коли для провайдера задано
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.
Зручні для людини деталі та стабільні коди причин можуть додаватися в наступних рядках.