Skip to content

在使用gemini-3.1-pro-preview时,重定向模型会出现503错误,gemini-cli 的 customtools 模型已发生重定向,但后续仍按原始模型名校验,导致请求失败 #953

@flowing-water1

Description

@flowing-water1

问题描述

我目前通过 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

复现步骤

  1. 配置一个 gemini provider,通过中转/分发上游转发请求
  2. 使用 Gemini CLI 发起请求
  3. Gemini CLI 请求模型为 gemini-3.1-pro-preview-customtools
  4. 在 provider 中配置模型重定向:
    • gemini-3.1-pro-preview-customtools -> gemini-3.1-pro-preview
  5. 再次发起请求

实际表现

情况 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"}

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:Google Geminiarea:providerbugSomething isn't workingoncallCritical blocking issue requiring immediate oncall attention

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions