[PR #239] [CLOSED] fix: handle 402 Payment Required error in Kiro provider #315

Closed
opened 2026-02-27 07:18:55 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/justlovemaki/AIClient-2-API/pull/239
Author: @rainboxup
Created: 1/14/2026
Status: Closed

Base: mainHead: fix/kiro-402-quota-exhausted


📝 Commits (1)

  • 7c0d98c fix: handle 402 Payment Required error in Kiro provider

📊 Changes

1 file changed (+25 additions, -5 deletions)

View changed files

📝 src/providers/claude/claude-kiro.js (+25 -5)

📄 Description

问题描述

当号池中某个 Kiro 账号额度用完时,返回 402 (Payment Required) 错误。
由于代码未处理此错误码,导致请求直接断流,即使号池中还有其他 49 个有额度的账号。

复现步骤

  1. 配置 50 个 Kiro 账号到号池
  2. 其中 1 个账号额度用完
  3. 发起 API 请求
  4. 当轮询到额度用完的账号时,请求断流

错误日志

[17:03:33] [ERROR] [Kiro] API call failed (Status: 402, Code: ERR_BAD_REQUEST): Request failed with status code 402
[17:03:33] [ERROR] [Server] Error during unary processing: AxiosError: Request failed with status code 402

修复方案

claude-kiro.js 的三个位置添加 402 错误处理:

  • 非流式 API 调用 (callApi 方法,第 1341-1346 行)
  • 流式 API 调用 (streamApiReal 方法,第 1743-1748 行)
  • 用量查询 (getUsageLimits 方法,第 2596-2600 行)

当检测到 402 错误时:

  1. 立即标记该凭证为不健康
  2. 触发号池管理器切换到其他健康凭证
  3. 请求自动重试,不会断流

代码变更

  • 新增代码:25 行
  • 修改代码:5 行(注释更新)
  • 修改文件:1 个 (src/providers/claude/claude-kiro.js)

测试

  • 人工代码审查通过(8 个维度全面验证)
  • Codex AI 代码审查通过(确认核心功能正确)
  • 与现有 403 错误处理模式完全一致
  • 不影响其他错误码处理
  • 无线程安全问题
  • 无破坏性变更

预期效果

修复前

  • 号池 50 个账号,1 个额度满了返回 402
  • 请求轮询到该账号时直接断流
  • 其他 49 个有额度的账号无法使用

修复后

  • 遇到 402 错误立即标记该账号不健康
  • 自动切换到其他健康账号(49 个可用)
  • 请求正常完成,不会断流

已知限制

Codex 代码审查发现了一些现有错误处理代码的潜在问题(与 401/403 处理共享),这些问题不是本 PR 引入的,建议在后续 PR 中统一改进:

  • 错误标记成功状态验证
  • Axios 错误状态码传播优化
  • getUsageLimits 错误包装改进

本 PR 专注于修复 402 错误未处理导致的断流问题。


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/justlovemaki/AIClient-2-API/pull/239 **Author:** [@rainboxup](https://github.com/rainboxup) **Created:** 1/14/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/kiro-402-quota-exhausted` --- ### 📝 Commits (1) - [`7c0d98c`](https://github.com/justlovemaki/AIClient-2-API/commit/7c0d98c775ec0e1e85fc3a9ce3071da5945313d7) fix: handle 402 Payment Required error in Kiro provider ### 📊 Changes **1 file changed** (+25 additions, -5 deletions) <details> <summary>View changed files</summary> 📝 `src/providers/claude/claude-kiro.js` (+25 -5) </details> ### 📄 Description ## 问题描述 当号池中某个 Kiro 账号额度用完时,返回 402 (Payment Required) 错误。 由于代码未处理此错误码,导致请求直接断流,即使号池中还有其他 49 个有额度的账号。 ## 复现步骤 1. 配置 50 个 Kiro 账号到号池 2. 其中 1 个账号额度用完 3. 发起 API 请求 4. 当轮询到额度用完的账号时,请求断流 ## 错误日志 [17:03:33] [ERROR] [Kiro] API call failed (Status: 402, Code: ERR_BAD_REQUEST): Request failed with status code 402 [17:03:33] [ERROR] [Server] Error during unary processing: AxiosError: Request failed with status code 402 ## 修复方案 在 `claude-kiro.js` 的三个位置添加 402 错误处理: - 非流式 API 调用 (`callApi` 方法,第 1341-1346 行) - 流式 API 调用 (`streamApiReal` 方法,第 1743-1748 行) - 用量查询 (`getUsageLimits` 方法,第 2596-2600 行) 当检测到 402 错误时: 1. 立即标记该凭证为不健康 2. 触发号池管理器切换到其他健康凭证 3. 请求自动重试,不会断流 ## 代码变更 - 新增代码:25 行 - 修改代码:5 行(注释更新) - 修改文件:1 个 (`src/providers/claude/claude-kiro.js`) ## 测试 - [x] 人工代码审查通过(8 个维度全面验证) - [x] Codex AI 代码审查通过(确认核心功能正确) - [x] 与现有 403 错误处理模式完全一致 - [x] 不影响其他错误码处理 - [x] 无线程安全问题 - [x] 无破坏性变更 ## 预期效果 **修复前**: - 号池 50 个账号,1 个额度满了返回 402 - 请求轮询到该账号时直接断流 - 其他 49 个有额度的账号无法使用 **修复后**: - 遇到 402 错误立即标记该账号不健康 - 自动切换到其他健康账号(49 个可用) - 请求正常完成,不会断流 ## 已知限制 Codex 代码审查发现了一些现有错误处理代码的潜在问题(与 401/403 处理共享),这些问题不是本 PR 引入的,建议在后续 PR 中统一改进: - 错误标记成功状态验证 - Axios 错误状态码传播优化 - getUsageLimits 错误包装改进 本 PR 专注于修复 402 错误未处理导致的断流问题。 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 07:18:55 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/AIClient-2-API-justlovemaki#315
No description provided.