Gateway
Semantyka poświadczeń uwierzytelniania
Ten dokument definiuje kanoniczne semantyki kwalifikowalności i rozstrzygania poświadczeń używane w:
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
Celem jest utrzymanie zgodności zachowania w czasie wyboru i w czasie wykonywania.
Stabilne kody przyczyn sondowania
okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
Poświadczenia tokenów
Poświadczenia tokenów (type: "token") obsługują wbudowane token i/lub tokenRef.
Reguły kwalifikowalności
- Profil tokenu jest niekwalifikowalny, gdy brakuje zarówno
token, jak itokenRef. expiresjest opcjonalne.- Jeśli
expiresjest obecne, musi być skończoną liczbą większą niż0. - Jeśli
expiresjest nieprawidłowe (NaN,0, ujemne, nieskończone lub niewłaściwego typu), profil jest niekwalifikowalny zinvalid_expires. - Jeśli
expiresjest w przeszłości, profil jest niekwalifikowalny zexpired. tokenRefnie omija walidacjiexpires.
Reguły rozstrzygania
- Semantyka resolvera odpowiada semantyce kwalifikowalności dla
expires. - Dla kwalifikowalnych profili materiał tokenu może zostać rozstrzygnięty z wartości wbudowanej lub
tokenRef. - Nierozstrzygalne referencje generują
unresolved_refw danych wyjściowychmodels status --probe.
Przenośność kopiowania agenta
Dziedziczenie uwierzytelniania agenta działa przez odczyt przelotowy. Gdy agent nie ma profilu lokalnego, może w czasie wykonywania rozstrzygać profile z domyślnego/głównego magazynu agenta bez kopiowania materiału tajnego do własnego auth-profiles.json.
Jawne przepływy kopiowania, takie jak openclaw agents add, używają tej polityki przenośności:
- Profile
api_keysą przenośne, chyba żecopyToAgents: false. - Profile
tokensą przenośne, chyba żecopyToAgents: false. - Profile
oauthdomyślnie nie są przenośne, ponieważ tokeny odświeżania mogą być jednorazowe lub wrażliwe na rotację. - Przepływy OAuth należące do dostawcy mogą wyrazić zgodę przez
copyToAgents: truetylko wtedy, gdy wiadomo, że kopiowanie materiału odświeżania między agentami jest bezpieczne.
Profile nieprzenośne pozostają dostępne przez dziedziczenie z odczytem przelotowym, chyba że agent docelowy zaloguje się osobno i utworzy własny profil lokalny.
Jawne filtrowanie kolejności uwierzytelniania
- Gdy
auth.order.<provider>lub nadpisanie kolejności magazynu uwierzytelniania jest ustawione dla dostawcy,models status --probesonduje tylko identyfikatory profili, które pozostają w rozstrzygniętej kolejności uwierzytelniania dla tego dostawcy. - Zapisany profil dla tego dostawcy, który został pominięty w jawnej kolejności, nie jest po cichu próbowany później. Dane wyjściowe sondowania zgłaszają go z
reasonCode: excluded_by_auth_orderi szczegółemExcluded by auth.order for this provider.
Rozstrzyganie celu sondowania
- Cele sondowania mogą pochodzić z profili uwierzytelniania, poświadczeń środowiskowych lub
models.json. - Jeśli dostawca ma poświadczenia, ale OpenClaw nie może rozstrzygnąć dla niego możliwego do sondowania kandydata modelu,
models status --probezgłaszastatus: no_modelzreasonCode: no_model.
Wykrywanie poświadczeń zewnętrznego CLI
- Poświadczenia wyłącznie wykonawcze należące do zewnętrznych CLI są wykrywane tylko wtedy, gdy dostawca, środowisko wykonawcze lub profil uwierzytelniania znajduje się w zakresie bieżącej operacji albo gdy zapisany profil lokalny dla tego zewnętrznego źródła już istnieje.
- Wywołujący magazyn uwierzytelniania powinni wybrać jawny tryb wykrywania zewnętrznego CLI:
nonedla utrwalonego uwierzytelniania/plugin auth,existingdla odświeżania już zapisanych profili zewnętrznego CLI alboscopeddla konkretnego zestawu dostawców/profili. - Ścieżki tylko do odczytu/statusu przekazują
allowKeychainPrompt: false; używają wyłącznie poświadczeń zewnętrznego CLI opartych na plikach i nie odczytują ani nie wykorzystują ponownie wyników macOS Keychain.
Strażnik polityki OAuth SecretRef
- Dane wejściowe SecretRef są przeznaczone wyłącznie dla statycznych poświadczeń.
- Jeśli poświadczenie profilu ma
type: "oauth", obiekty SecretRef nie są obsługiwane dla materiału poświadczeń tego profilu. - Jeśli
auth.profiles.<id>.modema wartość"oauth", dane wejściowekeyRef/tokenRefoparte na SecretRef dla tego profilu są odrzucane. - Naruszenia są twardymi błędami w ścieżkach rozstrzygania uwierzytelniania podczas uruchamiania/przeładowania.
Komunikaty zgodne ze starszymi wersjami
Dla zgodności skryptów pierwsza linia błędów sondowania pozostaje bez zmian:
Auth profile credentials are missing or expired.
Przyjazne dla użytkownika szczegóły i stabilne kody przyczyn mogą zostać dodane w kolejnych liniach.