dsh-thinking-effort:为第三方 API 路由补全推理等级声明

前言

在 DeepSeek Harness(dsh)里,如果你用 llm-pi-ai 适配器接 OpenAI 兼容的中转或自建网关,选好模型后,Composer 里常见的「推理等级」面板往往会消失。这不是密钥无效,也不是厂商不支持,而是配置里缺少适配器读取的 reasoningEfforts 声明:自声明路由没有安装目录里的 catalog base,@deepseek-ai/dsh-llm-pi-ai 会把这类模型解析为 reasoning: false,界面没有档位可选,强行指定还会遇到 UNSUPPORTED_REASONING_EFFORT。下面介绍社区插件 dsh-thinking-effort(维护者 buguoshixc),它通过官方支持的 settings 接缝写入缺失声明,把推理等级选择器找回来。

这是什么

dsh-thinking-effort 是 DSH 的第三方 bundle 插件,分类属于「模型推理」。它不做适配器接管、不拦截 HTTP、不 patch harness,只在适配器会读取的配置位置补上 reasoningEfforts(以及必要时相关的 compat),让 Composer 的「推理等级」、斜杠命令和插件页的下拉框重新有内容可选。目录页:skillhub.cn/plugins/buguoshixc/dsh-thinking-effort;源码与文档:github.com/buguoshixc/dsh-thinking-effort。

问题从哪来

第三方提供方在 profile 里通常长这样(节选):

# $DSH_HOME/profiles/<profile>/cordis.patch.yml
- id: llm-pi-ai
  name: '@deepseek-ai/dsh-llm-pi-ai'
  config:
    providers:
      qiyuan:
        apiKeyEnv: QIYUAN_API_KEY
        api: openai-completions
        baseURL: https://api.qiyuanapi.cc/v1
        models:
          - id: deepseek-v4.1
            contextWindow: 1000000

这条链路不会自动写入 reasoningEfforts。适配器逻辑是:若 entry.reasoningEfforts === undefined,则回退为 reasoning: base?.reasoning ?? false;自声明路由没有 base,于是每个模型都被当成不可调思考强度。同一中转若走 llm-deepseek 适配器可能仍有档位,那是因为那条适配器会为所服务的路由宣告 effort——本质是声明缺失,不是 key 或厂商本身的问题。

核心功能

插件围绕一套共用的 planner,提供四种入口:

  1. 启动时自动适配:默认在 load 阶段扫描所有尚未声明的第三方路由并写入档位映射,安装后通常无需额外操作。
  2. 斜杠命令:/thinking、/thinking presets、/thinking adapt、/thinking set <provider>/<model> <preset>、/thinking remove … 等。
  3. Plugins 页:侧栏 Plugins → dsh-thinking-effort,按模型下拉选择,即时生效。
  4. 模型工具:thinking_effort_status、thinking_effort_set,便于在对话里排查「这个模型调不了思考强度」。

启动时还会诊断仍无法调整的路由,避免等到第一次打开模型选择器才发现新加的 key 未声明。

自动适配只处理配置里自声明的路由,不会覆盖你已写的模型声明,也不会改动 reasoningEfforts: false(明确表示该模型不推理)。对已判定不支持 reasoning_effort 的端点会写入 openai-null-off;能识别厂商主机名时用对应 preset;否则默认 autoAdaptPreset: passthrough,七档按原名下发。声明只解决「有没有档位可选」,无法从配置证明远端是否真正遵守这些值,改完后可用 /thinking explain 看每档实际发送的参数。

写入示例(与 README 一致):

providers:
  qiyuan:
    models:
      - id: deepseek-v4.1
        contextWindow: 1000000
        reasoningEfforts:
          off:
          low: low
          high: high
          max: max
        compat:
          thinkingFormat: deepseek

安装与启用

插件以当前 dsh profile 的权限运行,安装前请自行审阅源码与许可证(MIT)。dsh plugin 会在 profile 目录内转发到 pnpm;从 GitHub 安装会拉取源码并在 prepare 阶段构建 lib/。

# from a checkout
dsh plugin --profile <profile> add /path/to/dsh-thinking-effort

# from GitHub (replace with your fork)
dsh plugin --profile <profile> add github:<you>/dsh-thinking-effort

在 pnpm ≥ 10 上,首次 git 依赖构建可能被拒绝,需把 pnpm 提示的包名加入 profile 的 pnpm-workspace.yaml 后重试:

allowBuilds:
  dsh-thinking-effort: true

allowlist 表示允许该包在安装时执行构建脚本,只应对你信任的源码开启,并建议固定提交:github:<you>/dsh-thinking-effort#<sha>。

安装后重启 dsh(bundle 成员仅在启动时读取),并确认层已合成:

dsh --profile <profile> --dump-config    # expect a row named dsh-thinking-effort

Windows 桌面版中 desktop profile 由运行中的应用占用文件锁:向 desktop 安装前请先退出 DeepSeek Harness。

兼容性(来自 README):面向 dsh 0.2.1-rc.2 构建,engines.dsh 为 >=0.2.1-rc.2 <0.3.0,dsh.manifestVersion 对应 0.2.1 包清单格式;0.2.1 之前的客户端绑定方式已不存在,更早版本不受支持。package 版本为 0.2.0,Node 要求 ^22.19.0 || >=24。

典型用法

默认无需操作:新加的第三方 key 在启动时会被自动声明,日志会标明路由与档位映射,例如:

# dsh-thinking-effort: 自动适配完成。
# ✅ 已自动声明 1 个模型的思考强度档位:
#   路由 qiyuan → passthrough(1 个模型)
#     端点检测为 openai,写入 passthrough
#     档位:off→(不发) minimal→minimal low→low medium→medium high→high xhigh→xhigh max→max

随后在 Composer 打开模型选择器 → 推理等级,可选 Off / Minimal / Low / Medium / High / XHigh / Max;选择与内置提供方一样会保存为 Agent 默认。

查看当前声明:

/thinking

查看某模型每档实际下发的参数:

/thinking explain qiyuan/deepseek-v4.1

按 preset 手动写入:

/thinking set qiyuan/deepseek-v4.1 deepseek-relay

需要时对单路由重新跑适配:/thinking adapt qiyuan --preset deepseek-relay。

若只想在手动执行 /thinking adapt 时才写入,可在插件自身配置中关闭自动适配:

- id: dsh-thinking-effort
  name: 'dsh-thinking-effort'
  config:
    autoAdapt: false
    autoAdaptPreset: passthrough

适用场景与注意

适合在 dsh 0.2.1-rc.2 线路上,用 llm-pi-ai 接 OpenAI 兼容第三方 key,且需要在 Composer 里调节推理等级(reasoning effort / 思考强度)的开发者。catalog 内置路由仍由安装目录解析能力,本插件不会去「收窄」已有 catalog 行为。

社区插件目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,选用第三方 bundle 时请自行评估信任边界与网络侧是否真正支持各档参数。

结尾

dsh-thinking-effort 用最小侵入的方式补全 reasoningEfforts 声明,让第三方自声明路由重新出现「推理等级」选择器,并支持自动适配、斜杠命令与 Plugins 页微调。进一步了解可访问目录页 skillhub.cn/plugins/buguoshixc/dsh-thinking-effort 与 GitHub 仓库 github.com/buguoshixc/dsh-thinking-effort。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜