生成模型:Claude Opus 4.6 (anthropic/claude-opus-4-6) Token 消耗:输入 ~400,000 tokens,输出 ~32,000 tokens(本章合计)
LLM API 调用需要认证凭据。OpenClaw 通过 Auth Profile 机制统一管理所有提供者的认证信息——包括 API Key、OAuth Token、和特殊的 Copilot Token。多个 Profile 可以为同一个提供者提供冗余凭据,实现自动轮换和故障隔离。
8.2.1 Auth Profile 机制(src/agents/auth-profiles.ts)
Auth Profile 子系统的代码组织在 src/agents/auth-profiles/ 目录下,通过 auth-profiles.ts 聚合导出:
src/agents/auth-profiles/
├── constants.ts ← 特殊 Profile ID 常量
├── display.ts ← Profile 显示标签
├── doctor.ts ← 诊断提示
├── oauth.ts ← OAuth Token 解析
├── order.ts ← Profile 排序
├── paths.ts ← 存储路径
├── profiles.ts ← Profile CRUD 操作
├── repair.ts ← Profile ID 修复
├── store.ts ← 持久化存储
├── types.ts ← 类型定义
└── usage.ts ← 使用统计与冷却
Auth Profile 存储在 Agent 目录下的 auth-profiles.json 文件中。AuthProfileStore 类型定义了存储结构:
每个 Profile 包含凭据和元数据:
8.2.2 OAuth 认证流程
OpenClaw 支持多个提供者的 OAuth 认证,允许用户使用自己的订阅账号(如 Claude Pro/Max、ChatGPT Plus)而非直接的 API Key。
OAuth 流程的基本步骤:
发起授权——用户通过 openclaw auth 命令启动 OAuth 流程
浏览器授权——系统打开浏览器,用户在提供者网站上登录并授权
回调接收——本地 HTTP 服务器接收回调,获取 authorization code
Token 交换——用 code 交换 access token 和 refresh token
存储 Profile——将 Token 存储为一个 Auth Profile
每次 LLM 调用时,resolveApiKeyForProfile 函数检查 Token 是否过期,必要时使用 refresh token 自动刷新。
8.2.3 API Key 认证
API Key 是最简单的认证方式。用户通过配置文件或 openclaw auth 命令设置 API Key:
API Key 可以从多个来源获取:
Auth Profile Store 中的 api-key 类型 Profile
环境变量(如 ANTHROPIC_API_KEY)
获取优先级为:Profile Store > 环境变量 > Keychain。
8.2.4 Profile 轮换与冷却(Cooldown)
当一个 Auth Profile 因为速率限制或其他错误而失败时,系统不会立即放弃,而是将该 Profile 标记为冷却状态,然后尝试下一个可用的 Profile。
一个 Profile 处于冷却状态意味着它的 cooldownUntil 或 disabledUntil 时间戳大于当前时间。
冷却时间采用指数退避(Exponential Backoff)策略:
衍生解释:指数退避是分布式系统中的经典策略。当一个操作失败后,等待时间按指数增长(而非线性增长),以避免在问题未解决时持续发送请求(称为"惊群效应")。OpenClaw 使用 5 的幂次(5^0=1, 5^1=5, 5^2=25),比常见的 2 的幂次更激进,因为 API 速率限制通常需要较长的恢复时间。
当 Profile 被成功使用后,错误计数器重置:
这意味着一次成功的使用会完全清除该 Profile 的"前科"——即使之前连续失败了多次。
系统通过 resolveAuthProfileOrder 确定 Profile 的尝试顺序。优先使用配置中指定的顺序,其次按最近成功使用的时间排序。冷却中的 Profile 不会从排序中移除(仍可能被选中后跳过),但在实际轮换时会被 isProfileInCooldown 过滤。
8.2.5 GitHub Copilot Token 认证
GitHub Copilot 使用了一种特殊的认证流程——需要先用 GitHub Personal Access Token(PAT)换取一个短期的 Copilot API Token:
GitHub Copilot 的认证链:
resolveCopilotApiToken 函数处理了 Token 的缓存和自动刷新,避免每次 LLM 调用都重新获取 Token。
Auth Profile 是 OpenClaw 的统一凭据管理抽象,支持 API Key、OAuth Token 和特殊 Token 三种类型。
OAuth 认证允许用户使用订阅账号(Claude Pro/Max、ChatGPT Plus)而非直接的 API Key,系统自动处理 Token 刷新。
Profile 轮换在凭据失败时自动切换到下一个可用 Profile,指数退避冷却避免反复使用已知失败的凭据。
冷却时间从 1 分钟到 60 分钟递增,成功使用一次即完全重置冷却状态。
GitHub Copilot 使用二阶 Token 交换机制,PAT 换取短期 API Token,由专用函数处理缓存和刷新。