问题描述
我目前通过 claude-code-hub 作为中转服务给 Gemini CLI 分发请求。
在 Gemini CLI 中,官方实际使用的模型名是:
gemini-3.1-pro-preview-customtools
如果不做模型重定向,上游会返回 503,但从错误体来看,真实原因其实是 model_not_found。
随后我尝试在 provider 中配置模型重定向:
gemini-3.1-pro-preview-customtools -> gemini-3.1-pro-preview
从日志看,重定向已经成功发生;但请求后续仍然失败,并出现:
ProviderSelector: No providers support the requested model
而这里日志里的 requestedModel 仍然是原始模型名 gemini-3.1-pro-preview-customtools。
这让我怀疑:模型重定向虽然已经执行,但后续某一段 provider 支持性校验仍然使用了原始模型名,导致请求被错误拦截。
运行环境
- 部署方式:Docker Compose
- 镜像:
ghcr.io/ding113/claude-code-hub:latest
- 本地版本参考:
0.6.4
- 发现时间:
2026-03-19
复现步骤
- 配置一个
gemini provider,通过中转/分发上游转发请求
- 使用
Gemini CLI 发起请求
Gemini CLI 请求模型为 gemini-3.1-pro-preview-customtools
- 在 provider 中配置模型重定向:
gemini-3.1-pro-preview-customtools -> gemini-3.1-pro-preview
- 再次发起请求
实际表现
情况 1:未配置重定向
请求会直接失败,返回 503,但上游错误体显示实际是 model_not_found。
日志片段:
requestedModel="gemini-3.1-pro-preview-customtools"
Provider <provider> returned 503: new_api_error:
No available channel for model gemini-3.1-pro-preview-customtools under group <group> ...
Upstream: {"error":{"code":"model_not_found","message":"No available channel for model gemini-3.1-pro-preview-
customtools under group <group> ...","type":"new_api_error"}}
### 情况 2:已配置重定向
日志显示模型重定向已经成功执行:
originalModel="gemini-3.1-pro-preview-customtools"
redirectedModel="gemini-3.1-pro-preview"
msg="[ModelRedirector] Model redirected"
但随后仍然失败,并出现:
requestedModel="gemini-3.1-pro-preview-customtools"
msg="ProviderSelector: No providers support the requested model"
## 期望行为
我期望以下任一行为成立:
1. claude-code-hub 对 Gemini CLI 的 -customtools 模型名自动做兼容处理/归一化
2. 一旦模型重定向已经生效,后续 provider 支持性校验、转发逻辑也应统一使用重定向后的模型名,而不是继续使用原始模型名
## 怀疑相关位置
根据现象,问题可能与以下模块之间的协作有关:
- src/app/v1/_lib/proxy/model-redirector.ts
- src/app/v1/_lib/proxy/provider-selector.ts
从日志看,ModelRedirector 已经把:
gemini-3.1-pro-preview-customtools -> gemini-3.1-pro-preview
但后续 ProviderSelector 仍然基于原始模型名报:
No providers support the requested model
## 附加日志片段
下面是我本地容器中的实际日志(已做适度脱敏):
{"requestedModel":"gemini-3.1-pro-preview-customtools","msg":"ProviderSelector: Selection decision"}
{"statusCode":503,"error":"Provider <provider> returned 503: new_api_error: No available channel for model gemini-3.1-
pro-preview-customtools under group <group> ...","msg":"ProxyForwarder: Non-retryable client error, stopping
immediately"}
{"originalModel":"gemini-3.1-pro-preview-customtools","redirectedModel":"gemini-3.1-pro-
preview","msg":"[ModelRedirector] Model redirected"}
{"requestedModel":"gemini-3.1-pro-preview-customtools","msg":"ProviderSelector: No providers support the requested
model"}
问题描述
我目前通过
claude-code-hub作为中转服务给Gemini CLI分发请求。在
Gemini CLI中,官方实际使用的模型名是:gemini-3.1-pro-preview-customtools如果不做模型重定向,上游会返回
503,但从错误体来看,真实原因其实是model_not_found。随后我尝试在 provider 中配置模型重定向:
gemini-3.1-pro-preview-customtools -> gemini-3.1-pro-preview从日志看,重定向已经成功发生;但请求后续仍然失败,并出现:
ProviderSelector: No providers support the requested model而这里日志里的
requestedModel仍然是原始模型名gemini-3.1-pro-preview-customtools。这让我怀疑:模型重定向虽然已经执行,但后续某一段 provider 支持性校验仍然使用了原始模型名,导致请求被错误拦截。
运行环境
ghcr.io/ding113/claude-code-hub:latest0.6.42026-03-19复现步骤
geminiprovider,通过中转/分发上游转发请求Gemini CLI发起请求Gemini CLI请求模型为gemini-3.1-pro-preview-customtoolsgemini-3.1-pro-preview-customtools -> gemini-3.1-pro-preview实际表现
情况 1:未配置重定向
请求会直接失败,返回
503,但上游错误体显示实际是model_not_found。日志片段: