[PR #233] [MERGED] fix(kiro): 增强 Kiro Provider 的认证恢复机制和并发处理能力 #313

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/233
Author: @leonaii
Created: 1/14/2026
Status: Merged
Merged: 1/14/2026
Merged by: @justlovemaki

Base: mainHead: main


📝 Commits (6)

📊 Changes

3 files changed (+220 additions, -27 deletions)

View changed files

📝 src/providers/claude/claude-kiro.js (+169 -17)
📝 src/providers/provider-pool-manager.js (+47 -10)
📝 static/app/i18n.js (+4 -0)

📄 Description

fix(kiro): 增强 Kiro Provider 的认证恢复机制和并发处理能力

📋 概述

本 PR 包含两个关键修复,旨在提升 Kiro Provider 的稳定性和可靠性:

  1. 增强 401 错误处理并支持 Gemini 格式请求体自动转换
  2. 添加 token 刷新单例锁机制并增强 JSON 解析容错能力

🔧 主要变更

1. 401 错误处理增强 & Gemini 格式支持 (6e65ba3)

修改文件:

  • src/providers/claude/claude-kiro.js
  • src/providers/provider-pool-manager.js

变更内容:

  • callApicallApiStream 方法中添加 contentsmessages 格式的自动转换,兼容 Gemini 格式请求体
  • 优化 401 错误恢复策略:先刷新 UUID 再刷新 token,提高认证恢复成功率
  • 新增 _refreshUuid() 方法用于生成新的 UUID 标识
  • ProviderPoolManager 新增 refreshProviderUuid() 方法支持 UUID 刷新
  • 移除 Kiro OAuth 的 contents 格式备用请求,统一使用 messages 格式
  • 修复 Kiro 健康检查错误

2. Token 刷新单例锁 & JSON 解析容错 (f52e4b5)

修改文件:

  • src/providers/claude/claude-kiro.js

变更内容:

  • 引入 tokenRefreshPromises Map 实现按凭证文件路径的单例锁机制
  • 防止多个并发请求同时刷新同一个 token 导致的文件锁串行化问题
  • 添加 repairJson 函数处理损坏的 JSON 文件,增强解析容错能力
  • 重构 token 刷新逻辑,提取 _doTokenRefresh()_reloadCredentialsAfterRefresh() 方法

🎯 解决的问题

  1. 认证失败恢复率低:之前 401 错误只刷新 token,现在先刷新 UUID 再刷新 token,提高恢复成功率
  2. Gemini 格式不兼容:自动将 contents 格式转换为 messages 格式,无需客户端修改
  3. 并发刷新冲突:多个请求同时触发 token 刷新时,现在只有一个会执行实际刷新,其他请求等待结果
  4. JSON 文件损坏:增加容错处理,即使凭证文件部分损坏也能尝试修复并继续工作

📊 影响范围

文件 新增行数 删除行数
src/providers/claude/claude-kiro.js 175+ 14
src/providers/provider-pool-manager.js 52+ 5

🔗 相关提交

  • 6e65ba3 - fix(kiro): 增强401错误处理并支持Gemini格式请求体转换,修复健康KIRO健康检查错误
  • f52e4b5 - fix(kiro): 添加token刷新单例锁并增强JSON解析容错

🔄 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/233 **Author:** [@leonaii](https://github.com/leonaii) **Created:** 1/14/2026 **Status:** ✅ Merged **Merged:** 1/14/2026 **Merged by:** [@justlovemaki](https://github.com/justlovemaki) **Base:** `main` ← **Head:** `main` --- ### 📝 Commits (6) - [`901b5ec`](https://github.com/justlovemaki/AIClient-2-API/commit/901b5ec8ea087a328e97ceb8cc0cf033e76b11d4) fix(i18n): 添加 credentialSwitchMaxRetries 配置项的中英文翻译 - [`499b974`](https://github.com/justlovemaki/AIClient-2-API/commit/499b974c65707c824c6a46103e653b09a936314d) Merge branch 'main' of https://github.com/leonaii/AIClient-2-API - [`6e65ba3`](https://github.com/justlovemaki/AIClient-2-API/commit/6e65ba3fa8d7df5537c25ca5ed7808131d854f63) fix(kiro): 增强401错误处理并支持Gemini格式请求体转换,修复健康KIRO健康检查错误。 - [`5a93f59`](https://github.com/justlovemaki/AIClient-2-API/commit/5a93f59c3be8da0116ad258660c2a38d1c6b4aab) Merge branch 'justlovemaki:main' into main - [`36d45df`](https://github.com/justlovemaki/AIClient-2-API/commit/36d45dfe477dd2e1409e6528a6e020be2c504235) Merge branch 'main' of https://github.com/leonaii/AIClient-2-API - [`f52e4b5`](https://github.com/justlovemaki/AIClient-2-API/commit/f52e4b56ac656a910479b89d04ddea61af7caeea) fix(kiro): 添加token刷新单例锁并增强JSON解析容错 ### 📊 Changes **3 files changed** (+220 additions, -27 deletions) <details> <summary>View changed files</summary> 📝 `src/providers/claude/claude-kiro.js` (+169 -17) 📝 `src/providers/provider-pool-manager.js` (+47 -10) 📝 `static/app/i18n.js` (+4 -0) </details> ### 📄 Description ## fix(kiro): 增强 Kiro Provider 的认证恢复机制和并发处理能力 ### 📋 概述 本 PR 包含两个关键修复,旨在提升 Kiro Provider 的稳定性和可靠性: 1. 增强 401 错误处理并支持 Gemini 格式请求体自动转换 2. 添加 token 刷新单例锁机制并增强 JSON 解析容错能力 ### 🔧 主要变更 #### 1. 401 错误处理增强 & Gemini 格式支持 (6e65ba3) **修改文件:** - `src/providers/claude/claude-kiro.js` - `src/providers/provider-pool-manager.js` **变更内容:** - 在 `callApi` 和 `callApiStream` 方法中添加 `contents` 到 `messages` 格式的自动转换,兼容 Gemini 格式请求体 - 优化 401 错误恢复策略:先刷新 UUID 再刷新 token,提高认证恢复成功率 - 新增 `_refreshUuid()` 方法用于生成新的 UUID 标识 - `ProviderPoolManager` 新增 `refreshProviderUuid()` 方法支持 UUID 刷新 - 移除 Kiro OAuth 的 `contents` 格式备用请求,统一使用 `messages` 格式 - 修复 Kiro 健康检查错误 #### 2. Token 刷新单例锁 & JSON 解析容错 (f52e4b5) **修改文件:** - `src/providers/claude/claude-kiro.js` **变更内容:** - 引入 `tokenRefreshPromises` Map 实现按凭证文件路径的单例锁机制 - 防止多个并发请求同时刷新同一个 token 导致的文件锁串行化问题 - 添加 `repairJson` 函数处理损坏的 JSON 文件,增强解析容错能力 - 重构 token 刷新逻辑,提取 `_doTokenRefresh()` 和 `_reloadCredentialsAfterRefresh()` 方法 ### 🎯 解决的问题 1. **认证失败恢复率低**:之前 401 错误只刷新 token,现在先刷新 UUID 再刷新 token,提高恢复成功率 2. **Gemini 格式不兼容**:自动将 `contents` 格式转换为 `messages` 格式,无需客户端修改 3. **并发刷新冲突**:多个请求同时触发 token 刷新时,现在只有一个会执行实际刷新,其他请求等待结果 4. **JSON 文件损坏**:增加容错处理,即使凭证文件部分损坏也能尝试修复并继续工作 ### 📊 影响范围 | 文件 | 新增行数 | 删除行数 | |------|---------|---------| | `src/providers/claude/claude-kiro.js` | 175+ | 14 | | `src/providers/provider-pool-manager.js` | 52+ | 5 | ### 🔗 相关提交 - `6e65ba3` - fix(kiro): 增强401错误处理并支持Gemini格式请求体转换,修复健康KIRO健康检查错误 - `f52e4b5` - fix(kiro): 添加token刷新单例锁并增强JSON解析容错 --- <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#313
No description provided.