- 二、429 Rate Limit:请求频率超限
- 三、Connection Timeout:网络超时
- 四、终极排查清单(速查表)
- 五、常见 FAQ
- 六、相关阅读 --- ## 一、401 Unauthorized:认证失败 ### 典型现象
`
HTTP/1.1 401 Unauthorized
{ "error": { "message": "Incorrect API key provided: sk-", "type": "invalid_request_error", "code": "invalid_api_key" }
}
` 或 `
Error: 401 Unauthorized
X-Error-Message: API key not found in request headers
` ### 原理剖析 401 是 HTTP 协议中标准的"未授权"状态码。它意味着你的请求已经成功到达了 API 服务器,但服务器在验证你的身份凭证(通常是 Authorization 头里的 API Key)时失败了。 说白了,服务商在告诉你:"我知道你来了,但你没带钥匙,或者你带的钥匙是假的。"这跟 404(找不到资源)、403(权限不足)有本质区别——401 的问题出在"你证明不了你是谁"这一环节。 ### 可能原因 1. API Key 填写错误:复制粘贴时多带了空格、换行符、不可见字符,这是新手最常踩的坑,老手也偶尔翻车。
- API Key 已过期或被吊销:服务商出于安全考虑会定期轮换 Key,或者你的账户欠费、被封禁后 Key 直接失效。
- baseUrl 指向错误的端点:比如用了 OpenAI 的 Key 但 baseUrl 指向了代理服务,或者反过来。
- Key 配到了错误的位置:在 OpenClaw 这种多 Provider 架构里,Key 可能配到了
providers.openai.apiKey,但你实际调用的是 providers.anthropic.apiKey,这种"张冠李戴"非常隐蔽。 ### 解决步骤 第一步,验证 Key 本身是否有效: 直接用 curl 测试 Key 是否能正常返回 200: `bash
curl -i https://api.openai.com/v1/models \ -H "Authorization: Bearer $YOUR_API_KEY"
` 如果返回 200,说明 Key 有效;如果返回 401,则 Key 本身有问题。 第二步,清洗 Key 中的隐藏字符: 从服务商控制台复制 Key 时,经常会混入 \r、\n、空格等不可见字符。建议清洗后再使用: `bash
echo -n "$YOUR_API_KEY" | tr -d '\r' > clean_key.txt
` 第三步,检查 baseUrl 是否匹配 Key 类型: 不同服务商的 baseUrl 完全不同,常见的有: - OpenAI 官方:https://api.openai.com/v1
- Anthropic 官方:
https://api.anthropic.com/v1
- DeepSeek:
https://api.deepseek.com/v1
- Azure OpenAI:
https://{your-resource}.openai.azure.com/openai/deployments/{deployment-id} 第四步,若 Key 确认有效但仍报 401,重置配置后重启: `bash
openclaw config unset providers.openai.apiKey
openclaw config unset providers.openai.baseUrl openclaw config set providers.openai.apiKey "sk-correct-key-here"
openclaw config set providers.openai.baseUrl "https://correct-endpoint.com/v1" openclaw gateway restart
` > 📌 这一组 unset + set + restart 的命令链是实战中验证有效的"重置大法",适用于所有 Provider 的 Key 更换场景,建议记到笔记里。 --- ## 二、429 Rate Limit:请求频率超限 ### 典型现象 `
Error: 429 Too Many Requests
Retry-After: 60
` 或 `
Error: 429 Rate limit exceeded
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1719123456
` ### 原理剖析 429 错误的本质是 API 服务商对客户端请求频率的限制机制。当用户在单位时间内发送的请求数量超过了服务商设定的阈值时,服务商会暂时拒绝后续请求,并返回 429 状态码告知客户端需要降低请求频率。这种限流机制的核心目的是保护 API 服务的稳定性和公平性,防止个别用户过度消耗服务器资源而影响其他用户的正常使用。 从技术实现角度,API 限流通常基于以下几种策略: - RPM(Requests Per Minute):每分钟允许的最大请求数
- TPM(Tokens Per Minute):每分钟允许的最大 Token 消耗量
- RPD(Requests Per Day):每日允许的最大请求数
- 并发连接数限制:同一时刻允许的最大并发请求数 理解这些限流维度对于精准定位 429 错误原因至关重要。说白了,有时候请求数没超标,但 Token 消耗量超标了(比如你把 max_tokens 设得特别大),照样会触发 429——这是很多教程不讲清楚的细节。 ### 可能原因 1. 短时间内请求频率超过 API 提供商限额 —— 这是最直接的触发原因。当 Agent 在短时间内密集调用 API(如批量处理任务、实时对话流式响应等场景),很容易突破 RPM 限制。
- 多个 Agent 或任务并行使用同一 API Key —— 在分布式部署或多任务并行场景下,多个进程共享同一个 API Key,其请求量会叠加计算,容易触发共享密钥的全局限流。
- 未配置指数退避(Exponential Backoff),失败重试时雪崩 —— 当请求失败后,客户端如果立即发起重试,会在原有请求量的基础上叠加额外的重试请求,导致"重试风暴",使限流情况急剧恶化。
- 所用模型的 RPM 限额本身较低 —— 部分高参数量的模型(如旗舰推理模型、长上下文版本)由于运行成本高昂,服务商设置的默认 RPM 限额相对较低,更容易触发限流。 ### 解决步骤 第一步,查看当前请求量与限额差距:
`bash
openclaw config get rateLimits
` 2026 年主流 API 服务商默认限额参考表(实际限额因账户等级、付费档位差异较大,请以官方控制台为准): | API 提供商 | 代表模型 | RPM 范围 | TPM 范围 |
|-----------|---------|---------|---------|
| OpenAI | GPT-5 / GPT-5 mini | 500 – 10,000 | 200,000 – 5,000,000 |
| OpenAI | GPT-4o(legacy) | 500 – 10,000 | 150,000 – 2,000,000 |
| Anthropic | Claude 4 Sonnet / Opus | 50 – 4,000 | 40,000 – 400,000 |
| DeepSeek | DeepSeek V3 / R1 | 1,000 – 10,000 | 200,000 – 5,000,000 |
| 智谱 AI | GLM-4 / GLM-4.5 系列 | 500 – 5,000 | 100,000 – 1,000,000 |
| 阿里云百炼 | Qwen3 系列 | 500 – 6,000 | 100,000 – 2,000,000 |
| MiniMax | 文本模型(abab 系列 / 新版本) | 1,000 – 5,000 | 100,000 – 1,000,000 | > ⚠️ 重要提示:上表给出的是各档位常见范围,不是承诺数值。服务商在 2026 年普遍采用"分级限额"机制(Tier 1 ~ Tier 5),同一模型在不同账户等级下的限额可能相差几十倍。请登录对应服务商控制台查看你的账户实际配额。 第二步,配置请求频率限制与指数退避: 在 ~/.openclaw/openclaw.json 中配置全局限频策略: `json
{ "rateLimits": { "apiCallsPerMinute": 20, "apiCallsPerHour": 200, "apiCallsPerDay": 2000 }, "retry": { "maxAttempts": 3, "backoff": "exponential", "initialDelay": "30s", "maxDelay": "5m", "retryableStatuses": [429, 500, 502, 503, 504] }
}
` > 📌 修正说明:原配置示例中 retry 块的闭合括号与逗号在某些版本下会导致 JSON 解析失败,上述版本已经修正,可直接复制使用。 指数退避原理详解: 指数退避是防止重试风暴的关键机制。其核心思想是:每次重试失败后,等待时间按指数增长,而非线性或立即重试。 `
重试次数 等待时间
第1次失败 → 等待 30 秒
第2次失败 → 等待 60 秒(30 × 2^1)
第3次失败 → 等待 120 秒(30 × 2^2)
第4次失败 → 等待 240 秒(30 × 2^3)
...
最大等待时间不超过 5 分钟
` 这种策略的优势在于:当限流发生时,客户端会主动降低请求频率,给服务端足够的时间来刷新限流计数器,从而避免持续触发限流。说白了,这就是"越堵越慢"的智慧,而不是跟服务器硬刚。 第三步,拆分 Key 负载: 如果单一 Key 实在扛不住,可以申请多个 Key 做负载分摊: `bash
openclaw config set providers.openai-secondary.apiKey "sk-secondary-key-here"
openclaw config set providers.openai-secondary.baseUrl "https://api.openai.com/v1"
` 然后在业务代码里做 Key 轮询,让不同请求走不同 Key,相当于把单 Key 的限额乘以 N。 第四步,若持续触发 429,考虑升级套餐或换用限额更高的 API 提供商: 到了这一步基本就是"钞能力"环节了。各大服务商的高 Tier 套餐(如 OpenAI 的 Tier 4/5、DeepSeek 的企业版)能拿到远超免费档的配额。如果你的业务规模已经稳定,升级套餐反而比花时间优化限频策略更划算——时间也是有成本的。 --- ## 三、Connection Timeout:网络超时 ### 典型现象 `
Error: ECONNREFUSED
Connection refused - HTTP/2 connection failed
` 或 `
Error: ETIMEDOUT
Connection timed out after 30000ms
` 或 `
Error: EAI_AGAIN
DNS lookup failed for api.openai.com
` ### 原理剖析 Connection Timeout 错误的本质是客户端与 API 服务器之间的网络通道无法建立或中途断裂。与 401(认证问题)和 429(频率问题)不同,Timeout 错误的根因完全在网络层面,涉及 DNS 解析、TCP 连接建立、TLS 握手、HTTP/2 流协商等网络通信的各个环节。 从一次 HTTP 请求的生命周期来看,可能触发 Timeout 的关键节点包括: 1. DNS 解析阶段:客户端将域名解析为 IP 地址,国内服务器访问海外 API 时,DNS 污染或解析超时是常见问题。
- TCP 三次握手阶段:客户端向服务器 IP 发起 SYN 包,如果被防火墙拦截或路由不可达,会卡在这一步。
- TLS 握手阶段:需要多轮加密协商,证书校验失败、协议版本不兼容都会让连接挂掉。
- HTTP/2 流协商阶段:部分老旧代理或中间件不支持 HTTP/2,会导致流协商超时。
- 请求处理阶段:服务端处理时间过长(特别是长上下文推理),超过了客户端设置的 timeout 阈值。 ### 可能原因 1. DNS 污染或解析失败:国内网络环境下,
api.openai.com、api.anthropic.com 等域名的 DNS 经常被污染,返回错误的 IP 或者直接解析超时。
- 防火墙/安全组拦截:云服务器的默认安全组规则可能屏蔽了 443 端口出站流量,或者公司内网有严格的出口策略。
- 代理配置错误:用了代理但代理本身不稳定,或者代理认证信息过期,导致连接在代理层就断了。
- HTTP/2 兼容性问题:某些老版本的 OpenClaw、Node.js 版本与部分服务商的 HTTP/2 实现存在兼容 bug,握手后立即被 RST。
- 服务端响应过慢:长上下文(200K+ tokens)的推理任务,单次响应可能耗时数十秒甚至数分钟,超过了客户端默认的 30s 超时阈值。
- 本地网络抖动:WiFi 不稳定、移动网络切换、跨境链路拥塞等都会导致间歇性超时。 ### 解决步骤 第一步,基础网络连通性测试: 先用最朴素的命令排查网络层:
`bash
DNS 解析测试
nslookup api.openai.com
dig api.openai.com # TCP 连通性测试(443 端口)
telnet api.openai.com 443
或
nc -zv api.openai.com 443 # HTTPS 联通测试(带超时)
curl -I --max-time 10 https://api.openai.com/v1/models
` 如果 nslookup 都拿不到 IP,说明问题出在 DNS;如果能解析但 telnet 443 连不上,说明 TCP 层被拦截。 第二步,针对 DNS 污染的解决: 方案 A:更换公共 DNS(推荐 Cloudflare 或 Google): `bash
临时修改(重启失效)
sudo systemd-resolve --set-dns=1.1.1.1,8.8.8.8 # 或修改 /etc/resolv.conf
nameserver 1.1.1.1
nameserver 8.8.8.8
` 方案 B:使用 DoH(DNS over HTTPS)规避污染: `bash
curl -H "accept: application/dns-json" \ "https://cloudflare-dns.com/dns-query?name=api.openai.com&type=A"
` 方案 C:在 /etc/hosts 中写死 IP: `
注意:以下 IP 仅为示例,请通过 DoH 查询获取最新 IP
104.18.32.47 api.openai.com
` 第三步,配置超时参数与代理: 在 ~/.openclaw/openclaw.json 中调整网络相关参数: `json
{ "network": { "requestTimeout": "120s", "connectTimeout": "30s", "keepAlive": true, "maxSockets": 50, "proxy": { "enabled": true, "url": "http://127.0.0.1:7890", "noProxy": ["localhost", "127.0.0.1"] } }, "http": { "preferHTTP2": true, "fallbackToHTTP1": true }
}
` > 💡 关键配置解读:
> - requestTimeout:单次请求总超时,长上下文任务建议调到 120s 甚至 300s。
> - connectTimeout:建立连接的超时,默认 30s 一般够用。
> - fallbackToHTTP1:HTTP/2 协商失败时自动降级到 HTTP/1.1,能避开一部分握手 bug。
> - proxy:如果你在用代理工具(Clash、V2Ray 等),需要正确配置才能访问海外 API。 第四步,云服务器场景的特殊处理: 如果你的 Agent 跑在云服务器上,还要注意: - 安全组规则:检查出站规则是否放行 443 端口,建议放行 0.0.0.0/0:443。
- 镜像源选择:优先选择海外地域的云服务器(如 AWS Tokyo、Singapore、GCP Taiwan),避免国内地域访问海外 API 的高延迟。
- BGP 线路:选择 CN2 GIA、CMI 等优质线路的云服务商,普通线路晚高峰可能丢包率高达 10%+。 第五步,重启服务并验证:
`bash
openclaw gateway restart
openclaw healthcheck --network
` healthcheck --network 会主动探测所有已配置 Provider 的连通性,是验证网络修复是否生效的"一键体检"命令,真香。 --- ## 四、终极排查清单(速查表) 为了方便大家快速定位问题,我整理了一份"按报错倒推原因"的速查清单: | 报错关键字 | 优先怀疑方向 | 一句话排查指令 |
|-----------|-------------|--------------|
| 401 / Unauthorized | Key 错误、过期、baseUrl 不匹配 | curl -I https://api.xxx.com/v1/models -H "Authorization: Bearer $KEY" |
| 403 / Forbidden | 账户欠费、地区限制、模型未授权 | 登录服务商控制台查看账户状态 |
| 404 / Not Found | 模型名拼错、baseUrl 路径少 /v1 | 查看服务商文档中的正确模型标识 |
| 429 / Too Many Requests | 触发 RPM/TPM/RPD 限额 | openclaw config get rateLimits |
| 500 / Internal Server Error | 服务端故障(与你无关,等就行) | 1 小时后重试,或查 status 页面 |
| 502 / 503 / 504 | 网关问题或服务端过载 | 配置指数退避后重试 |
| ECONNREFUSED | 端口被拦截、服务挂了 | telnet api.xxx.com 443 |
| ETIMEDOUT | 网络慢、DNS 慢 | nslookup + 加大超时阈值 |
| EAI_AGAIN | DNS 解析失败 | 换 DNS 1.1.1.1 / 8.8.8.8 |
| EAI_FAIL | DNS 配置错误 | 检查 /etc/resolv.conf |
| CERT_HAS_EXPIRED | 系统时间不准或证书过期 | date + 更新 CA 证书 | > 📋 使用建议:把这份表存到你的笔记里,下次再遇到报错直接对照查,省下来的时间可以多跑两轮实验。 --- ## 五、常见 FAQ ### Q1:401 和 403 有什么区别? A:401 表示"你没带钥匙"(未认证),403 表示"你带了钥匙但没权限进这扇门"(已认证但权限不足)。最常见的 403 场景是账户欠费或地区限制(部分模型仅在特定地区可用)。 ### Q2:429 重试到底要等多久? A:优先看响应头里的 Retry-After 字段,服务商给的建议最准确。如果没带这个字段,按本文给出的指数退避表(30s → 60s → 120s → 240s)来。老实讲,等够时间再重试比反复立即重试快得多,因为后者只会延长限流时间。 ### Q3:HTTP/1.1 和 HTTP/2 哪个更适合 AI API 调用? A:现代 API 服务商几乎都支持 HTTP/2,它的多路复用特性对长连接更友好。但部分老版本客户端存在 HTTP/2 兼容 bug,开启 fallbackToHTTP1 是个稳妥的兜底策略。 ### Q4:用了代理反而更慢是怎么回事? A:可能是代理服务器带宽瓶颈或地理位置不佳。建议选择离 API 服务商近的代理节点(如东京、新加坡代理访问美西 API),而不是用国内代理绕一圈。 ### Q5:多 Key 轮询能绕过限流吗? A:能缓解但不能完全绕过。服务商可能会按账户 IP、账户 ID、组织 ID 做更高维度的限流。但对于单 Key RPM 500 的情况,3 个 Key 轮询基本能撑到 1500 RPM,够大多数业务用了。 ### Q6:OpenClaw 的 config 命令支持哪些子命令? A:核心子命令包括 get、set、unset、list、validate,配合 gateway restart、healthcheck 使用基本能覆盖日常运维场景。具体用法建议查阅你当前版本的官方文档。 --- ## 六、写在最后 说真的,API 集成从来不是一次性工作,服务商在迭代、模型在更新、限额在调整,2026 年的 API 生态相比两年前又复杂了不少。本文就当下遇到的三类高频报错做了一次系统梳理,按"现象 → 原理 → 原因 → 步骤"的模板拆解,你可以把它当作速查手册,遇到问题再来翻对应章节。 如果还有其他报错(比如 503、SSL 证书问题、流式响应中断等)想深入聊,欢迎留言,我后面再单独开一篇。 --- 【标签】
API故障排查、OpenClaw配置、401错误解决、429限流处理、指数退避、API超时排查、AI Agent开发、大模型API接入 【相关阅读】
- OpenClaw 多模型集成配置指南:从单 Provider 到混合路由
- DeepSeek API 接入与高并发调优实战
- Claude 4 API 流式响应与长上下文最佳实践
- AI Agent 部署中的网络安全与代理配置
来源华强北商行 · 数码科技资讯