my-dsh-plugin/thinking-level-override ↗★ 2
dsh-thinking-level-override
DeepSeek Harness plugin that autonomously overrides and adjusts third-party model thinking levels, fixing missing or mismatched built-in presets
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:my-dsh-plugin/thinking-level-override说明文档
阅读完整 README ↗thinking-level-override
English | 中文
自主覆盖与调整第三方模型的思考等级,修复工具内置预设缺失或不匹配的问题。这是一个 DeepSeek Harness 插件。
第三方模型经由适配器的内置目录接入 harness,其中的推理预设并不总与事实相符:选择器给出了模型实际不支持的等级、会话在切换模型后继承了旧的思考等级、或者部署方就是想给整条路由固定一个等级。默认情况下,这类请求会在到达供应商之前以 UNSUPPORTED_REASONING_EFFORT 失败。本插件拦截请求配置,按规则改写推理等级(reasoning effort),自动修复不可用的等级而不是让请求失败。
快速开始
两种用法,可同时使用:
A. 在 Web 设置页面勾选等级(不用写 YAML)。 打开 Web GUI → 设置 → 思考等级("模型"正下方)。为每个模型勾选它实际能提供的等级,点保存。对话的模型选择器从此只显示这些等级——具体选哪个等级仍在对话框里选。页面会替你把每个模型的 reasoningEfforts 写进 settings.yaml 的 llm-pi-ai 段。
B. 用 YAML 写覆盖规则。 规则可以按供应商/模型强制、默认或重映射等级,并修复模型提供不了的等级:
thinking-level-override:
rules:
# openrouter 上的 kimi-k2 系列预设上报有误:一律用 high。
- provider: openrouter
models: ['kimi-k2*']
effort: high
# acme-gateway 用另一套词表:重命名等级,默认 medium。
- provider: acme-gateway
map:
max: high
xhigh: high
default: medium
# legacy-gw 无法服务继承来的等级:直接移除,而不是报错。
- provider: legacy-gw
onUnsupported: drop
规则是热加载的:写入 settings.yaml 后,下一个请求即生效,无需重启。
工作原理
插件监听 agent/request 瀑布事件——冻结调用配置的文档化拦截点——在 LLM 服务按模型能力校验之前改写已解析的 LlmCallConfig。监听器以 prepend 方式注册,位于瀑布最外层,对模型选择等后续监听器拥有最终决定权。循环按常规 request/header 路径记录改写后的配置,因此每次覆盖都是持久的,可从会话日志重建。
每个请求的处理流程:
- 第一条匹配
provider(精确匹配)与model(*通配符)的规则生效;后续规则忽略。 - 提议目标等级:规则的强制
effort最优先,其次是请求自身的等级(若规则声明了map则先重映射),最后是规则的default。 - 在
clamp或drop策略下,插件通过ctx.llm.resolveModelInfo()读取目标模型的真实能力。模型支持该等级则保留;不支持则按策略修复;模型未声明任何推理能力则移除该等级。能力读取失败时请求原样放行,由 LLM 服务兜底裁决。
安装
需要已安装的 dsh(开发者预览版)。
从本目录安装(以链接方式安装——之后你本地 pnpm run build 的改动立即生效):
