首页 资讯 下载 教程 Skills 社群

OpenClaw Provider Auth 别名配置:简化多 Provider 认证管理

问题背景

在 OpenClaw 使用过程中,一个常见痛点是同一个 Provider 可能有多个变体需要接入:

  • OpenAI:官方 API、Azure OpenAI、代理端点
  • Anthropic:官方 Claude、Bedrock 上的 Claude
  • Qwen:DashScope、百炼、阿里云海外

这些变体使用相同的 API Key 或相似的认证方式,但在 v2026.4.8 及之前需要重复配置每一个:

# 旧方式:重复配置
providers:
  openai:
    apiKey: "sk-xxx"
  openai-proxy:
    apiKey: "sk-xxx"  # 重复
  openai-azure:
    apiKey: "sk-xxx"  # 重复

Provider Auth Aliases 解决方案

OpenClaw v2026.4.9 引入了 providerAuthAliases 机制,允许 Provider 变体声明共享认证配置

Provider manifest 可以声明它与其他 Provider 共享:

  • 环境变量
  • 认证 Profile
  • 配置文件中的认证信息
  • API Key 注入流程

基础用法

场景 1:OpenAI 及其变体

# config.yaml
providers:
  openai:
    apiKey: "$OPENAI_API_KEY"
    baseUrl: "https://api.openai.com/v1"

  openai-proxy:
    baseUrl: "https://my-proxy.example.com/v1"
    authAlias: "openai"  # 继承 openai 的 apiKey

  openai-forward:
    baseUrl: "https://forward.example.com/v1"
    authAlias: "openai"

这样三个 Provider 变体共享同一个 API Key,只需更新一处即可影响所有。

场景 2:多区域 Anthropic

providers:
  anthropic:
    apiKey: "$ANTHROPIC_API_KEY"

  anthropic-bedrock:
    region: "us-east-1"
    authAlias: "anthropic"

  anthropic-vertex:
    project: "my-gcp-project"
    authAlias: "anthropic"

场景 3:Qwen 多平台

providers:
  qwen:
    apiKey: "$DASHSCOPE_API_KEY"
    baseUrl: "https://dashscope.aliyuncs.com/api/v1"

  qwen-intl:
    baseUrl: "https://dashscope-intl.aliyuncs.com/api/v1"
    authAlias: "qwen"

  qwen-bailian:
    baseUrl: "https://bailian.aliyuncs.com/v1"
    authAlias: "qwen"

高级用法

环境变量共享

可以通过环境变量级别共享:

providers:
  claude-official:
    envAlias: "CLAUDE_KEY"

  claude-cn:
    envAlias: "CLAUDE_KEY"  # 使用相同的环境变量
    baseUrl: "https://claude-cn.example.com"

只需设置一次环境变量:

export CLAUDE_KEY=sk-ant-xxx

Auth Profile 共享

如果使用 Auth Profile 机制:

authProfiles:
  corporate:
    apiKey: "$CORP_KEY"
    headers:
      X-Company: "acme"

providers:
  gpt-corporate:
    authProfile: "corporate"

  claude-corporate:
    authProfile: "corporate"  # 共享同一 profile

条件别名

可以根据环境选择不同的别名:

providers:
  primary-llm:
    authAlias: "${ENV == 'prod' ? 'openai-prod' : 'openai-dev'}"

实际场景

场景:开发/生产环境切换

# config.dev.yaml
providers:
  openai-dev:
    apiKey: "$OPENAI_DEV_KEY"
    baseUrl: "https://api.openai.com/v1"

  primary:
    authAlias: "openai-dev"

# config.prod.yaml
providers:
  openai-prod:
    apiKey: "$OPENAI_PROD_KEY"
    baseUrl: "https://api.openai.com/v1"

  primary:
    authAlias: "openai-prod"

Agent 代码始终使用 primary,部署时切换配置文件即可。

场景:多租户隔离

providers:
  openai-tenant-a:
    apiKey: "$TENANT_A_KEY"

  openai-tenant-b:
    apiKey: "$TENANT_B_KEY"

  openai-tenant-c:
    authAlias: "openai-tenant-a"  # 租户 C 复用 A 的配额

场景:成本优化路由

providers:
  openai:
    apiKey: "$OPENAI_KEY"

  openai-cheap:
    authAlias: "openai"
    modelOverride: "gpt-5-nano"  # 简单任务用低成本模型

  openai-smart:
    authAlias: "openai"
    modelOverride: "gpt-5-pro"   # 复杂任务用高性能模型

调试技巧

查看别名解析

openclaw doctor providers

输出会显示每个 Provider 实际使用的认证来源:

openai          → direct (apiKey)
openai-proxy    → alias: openai
openai-azure    → alias: openai

验证认证链

openclaw providers auth-trace openai-proxy

显示从 openai-proxy 到最终认证源的完整链路。

测试连接

openclaw providers test openai-proxy

最佳实践

  1. 使用有意义的 alias 名称:避免循环依赖
  2. 环境变量优先:敏感信息放环境变量而非配置文件
  3. 文档化别名关系:在配置文件加注释说明别名意图
  4. 避免深层嵌套:Provider A 的别名指向 B,B 的别名再指向 C 会让调试复杂
  5. 定期审计:用 openclaw doctor providers 检查别名关系

迁移指南

从旧配置迁移到 Auth Aliases:

迁移前

providers:
  openai:
    apiKey: "sk-xxx"
  openai-2:
    apiKey: "sk-xxx"
  openai-3:
    apiKey: "sk-xxx"

迁移后

providers:
  openai:
    apiKey: "$OPENAI_KEY"
  openai-2:
    authAlias: "openai"
  openai-3:
    authAlias: "openai"

运行迁移辅助工具:

openclaw doctor providers --suggest-aliases

注意事项

  • Provider Auth Aliases 需要 OpenClaw v2026.4.9 或更高版本
  • 别名只影响认证信息共享,不影响 endpoint 和模型选择
  • 循环别名(A → B → A)会导致配置加载失败
  • 别名关系在网关启动时解析,运行时修改需要重启
  • Provider 的能力(支持的模型、功能)仍由各自配置决定