Gemini CLI · API 限流

Gemini CLI 429 RESOURCE_EXHAUSTED 怎么解决?

同样是 429,可能是密钥额度不足、请求速率过高、目标模型暂时无容量,也可能是 Gemini CLI 的 fallback 没有正常结束。先看错误正文和日志,再决定等待、降并发、切换模型还是升级客户端。

更新日期:2026-09-01·作者:island AI Coding 技术团队·主词:Gemini CLI 429
错误码429 RESOURCE_EXHAUSTED
重点区分额度 / 容量 / 客户端
重试原则有限退避 + 随机抖动

1. 先读完整错误:429 不等于余额用完

错误表现更可能的原因优先动作
RESOURCE_EXHAUSTED,控制台额度或速率已到上限密钥额度、RPM/TPM 或项目限额查余额与并发,等待限额窗口恢复
MODEL_CAPACITY_EXHAUSTED,只在某个模型出现目标模型当前容量不足切换同类模型或稍后重试
所有模型都报 429,中转控制台也显示额度不足中转密钥预算或账户余额调整额度、充值或降低并发
终端一直 Thinking...,日志反复从 Attempt 1 开始客户端 fallback/retry 循环停止会话,升级 CLI 或固定模型验证

先记录错误类型、模型代号、客户端版本、认证方式和发生时间。只保留“429”两个数字,会丢掉最有用的分流信息。

2. Gemini CLI 一直 Thinking,可能不是还在推理

Gemini CLI 的公开 issue 记录过一种情况:后台压缩、工具任务或子任务使用的模型返回 retryable 429 后,fallback 链没有找到实际失败的模型,重试计数从 10 又回到 1。用户看到的只是一直旋转的 Thinking...

典型日志特征(示意)
Attempt 1 failed: 429 RESOURCE_EXHAUSTED
...
Attempt 10 failed: 429 RESOURCE_EXHAUSTED
Attempt 1 failed: 429 RESOURCE_EXHAUSTED
...

如果同一模型、同一错误和同一组计数持续重复,继续挂机不是有效重试。先中止当前会话,执行 /about 记录版本,再升级到当前稳定版本。若更新后仍可复现,固定一个可用模型发送短请求,排除 Auto/fallback 链。

不要删除项目文件或全部配置429 和 fallback 循环通常与代码仓库内容无关。先保存日志和会话摘要,再重启客户端。

3. Gemini CLI 429 六步排查

  1. 查看错误正文:区分普通 RESOURCE_EXHAUSTED 与模型容量提示。
  2. 检查控制台:核对余额、密钥额度、并发和请求记录。
  3. 固定模型:暂时不要使用 Auto,选择一个当前可用的文字模型做短请求。
  4. 降低负载:停止并行会话、子任务和批处理,只保留一个请求。
  5. 检查版本:通过 /about 记录 CLI 版本,更新后重复同一最小请求。
  6. 更换路径:同模型持续容量不足时切换同类模型;全部失败再检查密钥和中转账户。

模型代号和密钥分组以模型广场及创建密钥页面为准,不要从旧教程复制已下线的预览模型。

脱敏 Gemini API Key 返回 400 API_KEY_INVALID 的终端证据
API Key 分支探针记录:脱敏密钥返回 400 API_KEY_INVALID,不能把认证错误当作 429 额度错误。

4. 正确重试:指数退避、抖动和明确上限

Google 官方故障排查建议只对 429、408 和 5xx 等暂时性错误重试,并为重试设置上限。400、403 通常属于参数或权限错误,重复请求只会制造更多失败。

有限重试伪代码
MAX_RETRIES = 4
BASE_DELAY_SECONDS = 1

for attempt in range(MAX_RETRIES):
    response = request()
    if response.ok:
        return response
    if response.status not in [408, 429, 500, 502, 503, 504]:
        raise response.error
    sleep((2 ** attempt) * BASE_DELAY_SECONDS + RANDOM_JITTER)

raise "retry limit reached"

中转应用还应保存请求 ID并避免自动重复执行写入、发送或扣费任务。有限重试失败后,明确返回“等待、切换模型或停止”,比无限转圈更可靠。

5. 使用 Gemini API 中转站时如何定位限流层

验证结果判断方向
同一密钥换模型后成功原模型容量或模型级限流
同账户所有密钥、所有模型都失败账户余额、全局并发或线路故障
控制台没有请求记录客户端配置、Base URL、DNS 或请求尚未到达网关
控制台有 429 和请求 ID带时间、模型和请求 ID 联系支持,区分网关与上游响应
REST 最小请求成功,CLI 一直 Thinking优先检查 CLI 版本、Auto/fallback 和后台任务

island AI Coding 的 Gemini CLI 配置入口见Gemini CLI API 教程。排查期间不要公开 API Key、Cookie 或包含业务内容的完整请求体。

6. 修复后用同一请求验证

  1. 保存修复前的错误正文和 CLI 版本。
  2. 用固定模型发送一句短提示,记录首字时间和状态码。
  3. 逐步恢复上下文、工具和并发,不要一次全部开启。
  4. 连续测试数次,确认没有重复 Attempt 计数或静默转圈。
  5. 记录实际解决动作,便于版本升级后回归检查。

7. 常见问题

? Gemini CLI 429 是额度用完了吗?

不一定。查看错误正文和控制台用量;只在单模型出现的容量错误与所有请求都因额度不足失败,是两种处理方式。

? 一直 Thinking 要等多久?

如果日志的 Attempt 1 到 10 周期不断重置,就不是正常等待。停止会话、记录版本,更新客户端并固定模型复测。

? 429 可以无限重试吗?

不应无限重试。使用有限次数指数退避和随机抖动,达到上限后停止或切换模型。

? 中转 API 如何提交排查信息?

提供脱敏的时间、模型、状态码、错误类型、请求 ID、CLI 版本和复现步骤,不要发送完整 API Key。

* 本文为 island AI Coding 技术团队原创整理。故障分类参考 Google Gemini API 官方文档与 Gemini CLI 公开 issue;issue 中的客户端行为可能随版本修复,操作前请记录版本并保留回滚路径。更新时间:2026-08-19。

参考:Gemini API 官方故障排查 · 429 / Capacity 跟踪 · 无限 fallback issue