メインコンテンツへスキップ

認証情報の認証セマンティクス

このドキュメントでは、以下で共通して使用される認証情報の適格性および解決セマンティクスの正規仕様を定義します。
  • resolveAuthProfileOrder
  • resolveApiKeyForProfile
  • models status --probe
  • doctor-auth
目的は、選択時の動作と実行時の動作を一致させることです。

安定したプローブ理由コード

  • ok
  • excluded_by_auth_order
  • missing_credential
  • invalid_expires
  • expired
  • unresolved_ref
  • no_model

トークン認証情報

トークン認証情報(type: "token")は、インラインのtokenおよび/またはtokenRefをサポートします。

適格性ルール

  1. tokentokenRefの両方が存在しない場合、トークンプロファイルは不適格です。
  2. expiresは任意です。
  3. expiresが存在する場合、それは0より大きい有限数でなければなりません。
  4. expiresが無効な場合(NaN0、負数、非有限、または型が不正)、そのプロファイルはinvalid_expiresで不適格になります。
  5. expiresが過去の時刻である場合、そのプロファイルはexpiredで不適格になります。
  6. tokenRefexpiresの検証を回避しません。

解決ルール

  1. リゾルバーのセマンティクスは、expiresに関して適格性セマンティクスと一致します。
  2. 適格なプロファイルでは、トークンの内容はインライン値またはtokenRefから解決される場合があります。
  3. 解決できない参照は、models status --probeの出力でunresolved_refになります。

明示的な認証順序フィルタリング

  • あるプロバイダーに対してauth.order.<provider>または認証ストアの順序オーバーライドが設定されている場合、models status --probeは、そのプロバイダーに対して解決された認証順序に残っているプロファイルIDのみをプローブします。
  • そのプロバイダー用に保存されているプロファイルで、明示的な順序から除外されているものは、後で暗黙的に試行されません。プローブ出力では、それはreasonCode: excluded_by_auth_orderおよび詳細Excluded by auth.order for this provider.として報告されます。

プローブ対象の解決

  • プローブ対象は、認証プロファイル、環境認証情報、またはmodels.jsonから取得される場合があります。
  • あるプロバイダーに認証情報があっても、OpenClawがそのプロバイダーに対してプローブ可能なモデル候補を解決できない場合、models status --probereasonCode: no_modelを伴うstatus: no_modelを報告します。

OAuth SecretRef ポリシーガード

  • SecretRef入力は静的な認証情報専用です。
  • プロファイル認証情報がtype: "oauth"である場合、そのプロファイル認証情報の内容についてはSecretRefオブジェクトはサポートされません。
  • auth.profiles.<id>.mode"oauth"である場合、そのプロファイルに対するSecretRefベースのkeyRef/tokenRef入力は拒否されます。
  • 違反は、起動時またはリロード時の認証解決パスでハードエラーになります。

レガシー互換メッセージ

スクリプト互換性のため、プローブエラーではこの1行目を変更せずに維持します。 Auth profile credentials are missing or expired. 人間にわかりやすい詳細および安定した理由コードは、後続の行に追加できます。