mirror of
https://github.com/justlovemaki/AIClient-2-API.git
synced 2026-04-27 10:25:50 +03:00
[GH-ISSUE #75] 提供商池模式下:Kiro 提供商因 400 错误级联导致标记为不健康状态 #62
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/AIClient-2-API-justlovemaki#62
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @kuangquanshuisn on GitHub (Nov 15, 2025).
Original GitHub issue: https://github.com/justlovemaki/AIClient-2-API/issues/75
Bug 描述
在进行多次 API 调用后,Kiro Claude 提供商会因级联错误而完全失效:
assistantResponseMessage.content格式错误3. 重新初始化时因缺少认证凭据而失败环境信息
复现步骤
错误日志
阶段 1: 格式错误的请求(400 Bad Request)
请求数据显示内容格式错误:
阶段 2: 提供商被标记为不健康
阶段 3: 兜底逻辑重新初始化时因找不到默认认证凭据而失败
因为我部署在vps无该默认文件
根本原因分析
问题似乎出现在
src/claude/claude-kiro.js:662的消息处理逻辑中:可能的原因
getContentText()方法(第 463 行)可能无法正确处理不完整的 assistant 消息预期行为
- 认证凭据应在重新初始化时持久化实际行为
assistantResponseMessage.content只包含"{"字符- 因缺少认证凭据,服务无法恢复说明
因为对项目整体不熟悉,所以没有提交修复。
@justlovemaki commented on GitHub (Nov 15, 2025):
因缺少认证凭据,服务无法恢复?
不是有凭据才能正常使用吗?
@kuangquanshuisn commented on GitHub (Nov 15, 2025):
提供商池模式下配置如下:
config.json:
provider_pools.json:
主要问题是由于
assistantResponseMessage.content只包含"{"字符,AWS CodeWhisperer API 返回 400 ValidationException。累积 3 次错误后,提供商永久不可用。
提供商都不可用以后,程序应该是默认取~/.aws/sso/cache/kiro-auth-token.json文件,来兜底生成kiro认证,由于我部署在vps,没有该文件,所以claude-kiro-oauth彻底不可用
@justlovemaki commented on GitHub (Nov 15, 2025):
你这边是必现还是偶现?我这边测试无法复现
@kuangquanshuisn commented on GitHub (Nov 15, 2025):
必现的。使用install-and-run.sh启动。
1)使用默认的config.json(指定:"PROVIDER_POOLS_FILE_PATH": "provider_pools.json")和默认的provider_pools.json。
2)没有~/.aws/sso/cache/kiro-auth-token.json文件。
3)页面登陆以后删除其它提供商,上传一个kiro-auth-token01.json配置claude-kiro-oauth提供商。
4)cc发起调用,前几次没问题,次数一多报错超过3次,该提供商被禁用,全局无可用提供商。
另外,使用node src/api-server.js --host 127.0.0.1 --port 3000 --api-key 123456 --model-provider claude-kiro-oauth --kiro-oauth-creds-file ./kiro-auth-token.json这种方式启动,可以一直正常调用。但是,也有上述4000报错,应该是没有超过3次禁用的操作,
@justlovemaki commented on GitHub (Nov 15, 2025):
上传完配置文件,重启服务再试试。
不想3次失败就禁用,改ProviderPoolManager里面的maxErrorCount。
而且感觉你说的逻辑顺序有问题,走提供商池的情况下,是被禁用了才会读默认配置。问题应该是为什么会报错?而不是后续的降级处理。最上面你又猜测是断流,其实是400造成的。400的原因是kiro的接口不接受某些传值。所以需要提供转换后的完整的请求参数,才能定位问题在哪里。
@kuangquanshuisn commented on GitHub (Nov 15, 2025):
是的,就是某些传值,造成400,然后提供商被禁用了。
在AIClient-2-API项目,用cc提问:帮我检查最后3次提交的代码变更是否正确
报错日志如下:
@justlovemaki commented on GitHub (Nov 15, 2025):
确实无法复现,要不更新下cc,或者用这个插件版试试?
@kuangquanshuisn commented on GitHub (Nov 15, 2025):
无法复现就算了,我指定kiro文件也能用。我用的最新的CC + CC Switch插件。