Skip to content

v0.1.8 · 修复模型无思考挡位问题

Choose a tag to compare

@fu827707013 fu827707013 released this 10 Sep 10:06
· 4 commits to main since this release

修复 DeepSeek-V4.1-Flash 没有思考挡位选项(而 GLM-5.3-Flash 有)的问题。

根因

CodeBuddy 上游目录里存在两种 reasoning 行形态:

① 声明集行(有 supportedEfforts)—— 例如 glm-5.3-flash:

"reasoning": { "supportedEfforts": ["low", "high", "max"],
               "defaultEffort": "high", "canDisableThinking": true }

② 旧式行(只有 effort + summary,没有集合)—— 例如 deepseek-v4.1-flash:

"reasoning": { "effort": "high", "summary": "auto" }

插件原来把第二种形态当作"该模型不可选挡位",直接构造 reasoning: false,于是模型选择器里没有挡位按钮。

但这个判断是错的。 实测该端点对 deepseek-v4.1-flash 的响应:

传入值 结果
low / medium / high / xhigh / max 全部 200 ✅
bogus(非法值) 400 code 11150 the reasoning effort value is not supported by the current model

两个模型接受的范围完全一致。官方 CLI 的行为也印证了这点:它只判断 supportsReasoning,然后套用全局 reasoningEffort 设置,其允许值就是这个固定阶梯,从不查询逐模型集合。

修复

  • 声明集仍然权威:上游声明了就用声明的值
  • 没有声明集时,回退到标准阶梯 low / medium / high / xhigh / max
  • 有意不含 minimal —— 它不在上游的 effort 词汇表内,尽管实测端点接受,但发送词汇表之外的档位属于越界
  • off(关闭思考)仍只在 canDisableThinking === true 时提供,旧式行都不满足

顺带修正了 catalog.ts 里的一处错误注释(它声称"已为这些行提供完整阶梯",而代码实际做的是相反的),注释与实现互相矛盾正是这个 bug 长期未被发现的原因。

修复后各模型提供的挡位

模型 来源 提供的挡位
deepseek-v4.1-flash 标准阶梯 low, medium, high, xhigh, max
deepseek-v4-pro 标准阶梯 low, medium, high, xhigh, max
glm-5.3-flash 声明集 low, high, max, off
glm-5.3 声明集 low, high, max, off
hy4-preview 声明集 high
hy3-x 声明集 low, high

注意:本次修复同时让 auto / glm-5.1 / glm-5.2 / kimi-* / minimax-m3 等旧式行也获得了挡位选项 —— 依据是与官方 CLI 行为保持一致;如你希望只对部分模型生效,请反馈。

验证

  • 测试 190 通过 / 1 跳过(新增 8 条挡位策略回归测试)
  • 对真实上游端点实测确认挡位接受范围
  • 与本机已安装的 CodeBuddy CLI 二进制逻辑逐一比对
  • 构建产物实测已包含该修复

升级与生效

dsh plugin --profile web add dsh-codebuddy-cli

装好后重启 dsh web,模型选择器里 DeepSeek-V4.1-Flash 就会出现推理挡位选项。