Skip to content

fix(discovery): getAvailableModels 缺少 spaceId 导致模型列表永久回落内置表 - #14

Open
gxmst wants to merge 1 commit into
GALIAIS:mainfrom
gxmst:fix/available-models-spaceid
Open

fix(discovery): getAvailableModels 缺少 spaceId 导致模型列表永久回落内置表#14
gxmst wants to merge 1 commit into
GALIAIS:mainfrom
gxmst:fix/available-models-spaceid

Conversation

@gxmst

@gxmst gxmst commented Jul 30, 2026

Copy link
Copy Markdown

问题

fetchAvailableModelsMetadata 调用 getAvailableModels 时传的是空 body {},上游一律返回:

400 ValidationError: Invalid input.

调用处用 if err == nil 吞掉了这个错误:

if models, err := fetchAvailableModelsMetadata(...); err == nil {
    meta.Models = models
}

所以失败是完全静默的 —— meta.Models 恒为空,cfg.Models 永远不会被写入,模型列表无条件回落到 builtinModelDefinitions() 的内置表。也就是说自动同步从来没有生效过,日志里也看不到任何线索。

原因

getAvailableModels 要求 spaceId 参数。实测各种 body 形态:

body 结果
{} 400 ValidationError
{"space_id": ...} 400 ValidationError
{"spaceIds": [...]} 400 ValidationError
{"spaceId": ...} 200,返回完整目录

改动

fetchAvailableModelsMetadata 增加 spaceID 参数并放进请求体。调用点传 meta.SpaceID —— 此处 loadUserContent / getSpacesInitial 已经执行完,该字段可用。

spaceID 为空时直接返回 error,避免再发一次注定 400 的请求。调用方本来就忽略错误,因此没有行为回归。

验证

  • go test ./internal/app/ 通过
  • 修改前:config.models 为空,/v1/models 返回 13 个内置模型
  • 修改后:导入账号时拉到 27 个上游模型,/v1/models 返回 28 个(内置 + 上游合并去重)

同时暴露出内置表已有两处过期数据,本 PR 未改动,仅作记录:

  • opus-4.7apricot-sorbet-medium,上游当前为 apricot-sorbet-high
  • fireworks-minimax-m2.5 已不在目录中,调用返回 502

注:仅在单个账号上验证(商用体验版)。不同 plan 返回的目录会不同,但 spaceId 缺失时报的是 ValidationError 而非权限错误,与 plan 无关。

本 PR 不改变同步时机,仍然只在账号导入/发现时刷新。

🤖 Generated with Claude Code

`fetchAvailableModelsMetadata` 给 `getAvailableModels` 发的是空 body `{}`,
上游一律返回 400 ValidationError。调用方用 `if err == nil` 吞掉了这个错误,
所以失败没有任何征兆:`meta.Models` 恒为空,模型列表永久回落到
`builtinModelDefinitions()` 的内置表,自动同步实际上从未生效。

该接口要求 `spaceId`。补上之后可正常返回账号的完整模型目录。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant