openclaw/docs/zh-CN/gateway/authentication.md
2026-03-16 07:03:19 +00:00

185 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
read_when:
- 调试模型认证或 OAuth 过期
- 编写有关认证或凭证存储的文档
summary: 模型认证OAuth、API key 和 setup-token
title: 认证
x-i18n:
generated_at: "2026-03-16T06:22:17Z"
model: gpt-5.4
provider: openai
source_hash: 219ac1acd7d192a5a12779e204cca65dae77a852fdc668271c45c01e0c69b7c9
source_path: gateway/authentication.md
workflow: 15
---
# 认证
OpenClaw 支持模型提供商使用 OAuth 和 API key。对于始终在线的 Gateway 网关
主机API key 通常是最可预测的选项。当它们与你的提供商账号模型匹配时,
也支持订阅/OAuth 流程。
完整的 OAuth 流程和存储布局,请参阅 [/concepts/oauth](/concepts/oauth)。
关于基于 SecretRef 的认证(`env`/`file`/`exec` 提供商),请参阅 [Secrets Management](/gateway/secrets)。
关于 `models status --probe` 使用的凭证资格/原因码规则,请参阅
[Auth Credential Semantics](/auth-credential-semantics)。
## 推荐设置API key任意提供商
如果你正在运行长期存活的 Gateway 网关,请先为你选择的
提供商配置一个 API key。
对于 AnthropicAPI key 认证是更稳妥的方式,推荐优先于
订阅 setup-token 认证。
1. 在你的提供商控制台中创建一个 API key。
2. 将它放在 **Gateway 网关主机** 上(运行 `openclaw gateway` 的机器)。
```bash
export <PROVIDER>_API_KEY="..."
openclaw models status
```
3. 如果 Gateway 通过 systemd/launchd 运行,建议将 key 放入
`~/.openclaw/.env`,这样守护进程就可以读取它:
```bash
cat >> ~/.openclaw/.env <<'EOF'
<PROVIDER>_API_KEY=...
EOF
```
然后重启守护进程(或重启你的 Gateway 网关进程)并重新检查:
```bash
openclaw models status
openclaw doctor
```
如果你不想自己管理环境变量,设置向导可以为守护进程使用场景存储
API key`openclaw onboard`
有关环境继承(`env.shellEnv`
`~/.openclaw/.env`、systemd/launchd的详细信息请参阅 [Help](/help)。
## Anthropicsetup-token订阅认证
如果你使用的是 Claude 订阅,则支持 setup-token 流程。请在
**Gateway 网关主机** 上运行:
```bash
claude setup-token
```
然后将它粘贴到 OpenClaw 中:
```bash
openclaw models auth setup-token --provider anthropic
```
如果 token 是在另一台机器上创建的,请手动粘贴:
```bash
openclaw models auth paste-token --provider anthropic
```
如果你看到类似这样的 Anthropic 错误:
```
This credential is only authorized for use with Claude Code and cannot be used for other API requests.
```
……请改用 Anthropic API key。
<Warning>
Anthropic setup-token 支持仅是技术兼容性。Anthropic 过去曾阻止
Claude Code 之外的某些订阅用法。只有在你认为相关策略风险可接受时才使用它,
并请你自行核实 Anthropic 当前的条款。
</Warning>
手动输入 token任意提供商会写入 `auth-profiles.json` + 更新配置):
```bash
openclaw models auth paste-token --provider anthropic
openclaw models auth paste-token --provider openrouter
```
静态凭证也支持凭证配置文件引用:
- `api_key` 凭证可以使用 `keyRef: { source, provider, id }`
- `token` 凭证可以使用 `tokenRef: { source, provider, id }`
适合自动化的检查(已过期/缺失时退出码为 `1`,即将过期时为 `2`
```bash
openclaw models status --check
```
可选的运维脚本systemd/Termux记录在这里
[/automation/auth-monitoring](/automation/auth-monitoring)
> `claude setup-token` 需要交互式 TTY。
## 检查模型认证状态
```bash
openclaw models status
openclaw doctor
```
## API key 轮换行为Gateway 网关)
某些提供商支持在 API 调用触发提供商限流时,使用替代 key 重试请求。
- 优先级顺序:
- `OPENCLAW_LIVE_<PROVIDER>_KEY`(单个覆盖值)
- `<PROVIDER>_API_KEYS`
- `<PROVIDER>_API_KEY`
- `<PROVIDER>_API_KEY_*`
- Google 提供商还将 `GOOGLE_API_KEY` 作为额外回退项。
- 使用前会对同一组 key 列表去重。
- 仅当出现限流错误时OpenClaw 才会使用下一个 key 重试(例如
`429``rate_limit``quota``resource exhausted`)。
- 非限流错误不会使用替代 key 重试。
- 如果所有 key 都失败,则返回最后一次尝试的最终错误。
## 控制使用哪个凭证
### 每个会话(聊天命令)
使用 `/model <alias-or-id>@<profileId>` 为当前会话固定使用特定的提供商凭证(示例配置文件 id`anthropic:default``anthropic:work`)。
使用 `/model`(或 `/model list`)查看紧凑选择器;使用 `/model status` 查看完整视图(候选项 + 下一个凭证配置文件,以及在已配置时显示提供商端点详情)。
### 每个智能体CLI 覆盖)
为智能体设置显式的凭证配置文件顺序覆盖(存储在该智能体的 `auth-profiles.json` 中):
```bash
openclaw models auth order get --provider anthropic
openclaw models auth order set --provider anthropic anthropic:default
openclaw models auth order clear --provider anthropic
```
使用 `--agent <id>` 指定特定智能体;省略它则使用已配置的默认智能体。
## 故障排除
### “No credentials found”
如果缺少 Anthropic token 配置文件,请在
**Gateway 网关主机** 上运行 `claude setup-token`,然后重新检查:
```bash
openclaw models status
```
### Token 即将过期/已过期
运行 `openclaw models status` 以确认哪个配置文件即将过期。如果该配置文件
缺失,请重新运行 `claude setup-token` 并再次粘贴 token。
## 要求
- Anthropic 订阅账号(用于 `claude setup-token`
- 已安装 Claude Code CLI`claude` 命令可用)