docs/design/issue-783-investigation-and-fix-plan.zh.md
agents.*.model.primary/fallbacks 使用 model_name 别名(如 step-3.5-flash)时,fallback 链路将别名当作真实 provider/model 解析,导致 provider 可能为空、model 可能错误。ResolveCandidates 仅对字符串做 ParseModelRef,未先通过 model_list 将别名映射到真实 model 字段。Unknown Model。defaults.provider 为空时,日志出现 provider= 空值。model_list 解析别名。model_list,继续走原有 ParseModelRef 兜底。openrouter/stepfun/...)、空默认 provider。model 字段的推荐处理。外部参考要点(来自 OpenRouter/LiteLLM/Cloudflare AI Gateway 等官方文档):
参考链接:
与本仓库对应的可执行约束:
model_name -> model_list.model 映射。pkg/agent + pkg/providers)。make check)。pkg/providers/fallback.go:新增 ResolveCandidatesWithLookup,并保持 ResolveCandidates 向后兼容。pkg/agent/instance.go:在构建 fallback candidates 前,优先通过 model_list 解析别名,并对无协议模型补齐默认 openai/ 前缀后再解析。pkg/providers/fallback_test.go:新增别名解析与去重测试。pkg/agent/instance_test.go:新增 agent 侧别名解析到嵌套模型路径、无协议模型解析测试。pkg/providers/fallback_test.go、pkg/providers/model_ref_test.go 现有模式一致。make generate,后 make check 全量通过。