Skip to content

[code-review] vendorToCatwalk maps zai and minimax to two byte-identical model-list sources with no dedup in populateDefaultModels, so the default vendor's onboarding model panel shows every GLM (and MiniMax) model twice; budget.go's tool_result branch counts only Output text - embedded Images cost 0 tokens in analysis while the provider side actually uploads (and bills) them as image blocks #1525

Description

@topcheer

文件行号

internal/config/vendor_defaults.go L943("zai": {"zai", "zhipu-coding"}——vendorModels["zai"] L853-864 与 ["zhipu-coding"] L877-888 逐字节相同的 10 项列表 glm-5.1…glm-4.5v)+ L975-979(populateDefaultModels 顺序 append 两源无去重)+ L954("minimax": {"minimax", "minimax-china"}——L211-219 与 L220-228 相同 7 项)+ 消费方 internal/tui/onboard_update.go L227-229(m.allModels = ep.Models——新用户模型面板每个 GLM/MiniMax 模型显示两遍);L952-953("moonshot": {"kimi","moonshot"} + "kimi": {"kimi"}——vendorModels 无 "kimi" 键(仅 kimi-coding L208 未被引用)——lookupVendorModels("kimi") 恒 nil 死配置);internal/context/budget.go L239-241(tool_result 仅计 block.Output——block.Images 无分支覆盖每图计 0)对照 L249-251(独立 image 块固定 300)+ internal/provider/anthropic.go L631-644(发送侧将 tool_result Images 转 image block 上送——真实计费但分析侧不计

问题

案 A(Med×2·UX+一致性):zai/minimax 端点模型列表双源重复——新用户面板每模型两遍

  • zai 是默认 vendor(config.go:708)6 端点均无预置 Models → 各得 20 项含 10 重复;minimax ≥3 端点 14 项 7 重复——测试只断言 len>0 测不出重复
    :populateDefaultModels 合并循环按名去重(一处修复两 vendor 消解)。

案 B(Med-Low·口径不一致):tool_result 内嵌图片 token 预算漏计

  • 截图/读图高频会话 tool_result 类别系统性低估每图 300+(Anthropic 实际 1k+)——AnalyzeBudget 自言服务 compaction 决策,低估恰发生在图像膨胀最需压缩的形态——同构数据两种计法
    :tool_result 分支补 len(block.Images)*300

案 C(Low·死配置):catwalk 映射引用不存在的 "kimi" 键

  • moonshot 第一源恒空;kimi 端点 Models 不填充——双层兜底(DefaultModel kimi-for-coding + /v1/models 动态发现)掩盖功能损失,静默无报错
    :键名改为 kimi-coding 或补 "kimi" 键。

干净项

vendor_display_i18n:回退语义/复合格式键无冲突/键与真实端点 ID 对应抽查全对。budget 其余:TotalTokens 逐块求和无双计/#702c 口径统一在位。manager:#196 瞬态错误处理在位/阈值 floor 保守方向/#382/#702b 双路径 pinned 注入+recalcTokens 在位/锁序单向。pinned:三重上限(10 条/rune 预算/2000 截断 #386 rune 安全)/Render-marker 配对/跨 compaction 幸存自洽。

排除

#1519 context_window(vision 表不在本文件);config 族 13 件已案;#1518 anchor 语义(本轮仅审 pinned 自身);estimateTokensChars 死代码;zh-TW 回退简体设计取舍。

严重程度

Med×2 + Med-Low + Low


独立复核确认:4/4——逐项对照(修正 zai 为 10 项非 11)、消费方 6/3 端点实证、发送侧 Images 转换链、键存在性+双层兜底。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions