DSH 逐轮思考级别(reasoning_effort)控制:选择 Auto 即按近期工具调用历史自动调度 low/high/max,或手动固定线路档位(off/on/minimal/low/medium/high/xhigh/max),支持自定义线路映射、模型能力护栏与上下文窗口预设(64K–1M);其逐模型能力卡片与另一独立插件 [dsh-llm-openai-completions](https://github.com/drscrewdriver/dsh-llm-openai-completions)(可在 dsh-market 安装)联动,让自定义 OpenAI 兼容网关(vLLM / LM Studio / 自托管)也能试用推理——卡片写入 llm-pi-ai 能力,适配器接管线路(compat.thinkingFormat),本插件自动维护接管列表。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-thinking-levels
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:drscrewdriver/dsh-thinking-levels
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
为 DeepSeek Harness (dsh) 提供按轮次的思考档位(reasoning_effort)控制:在会话模型选择器中可选 Auto(mask)——由插件按工具调用历史自动在 low / high / max 间调度后提交 API;也可手动固定 off / on / minimal / low / medium / high / xhigh / max,让廉价工具轮次保持廉价,同时绝不让重任务缺少推理。
v0.7.0-beta.1(2026-09-06):短路路线退役。 本版本不再依赖
dsh-llm-openai-completions——自定义网关修复全部改走 dsh 官方llm-pi-aicompat 面(要求 dsh ≥ v0.1.0-rc.8),短路插件应保持卸载。详见 CHANGELOG。
- English README
- 中文 README
- 日本語 README
- 한국어 README
- README en français
- Deutsche README
- README in italiano
- README на русском
- README en español
- 安装指南
- English installation guide
- 日本語インストールガイド
- 한국어 설치 안내
- Guide d'installation en français
- Installationsanleitung auf Deutsch
- Guida all'installazione in italiano
- Руководство по установке на русском
- Guía de instalación en español
- 版本更新日志
- 日本語 changelog
- 한국어 changelog
- Changelog en français
- Changelog auf Deutsch
- Changelog in italiano
- Список изменений на русском
- Changelog en español
兼容性说明:
0.6.0已包含日本語(ja)和한국어(ko)字典及选择项,但当前官方 DSH 只通过LocaleRuntime提供zh和en。在原版 DSH 中选择ja或ko会失败,并提示locale "<id>" is not registered。需要等待官方 DSH 增加对应 locale ID 后才能正常使用。高级用户可以维护 DSH fork,在packages/client/locale/src/locale-settings.ts更新LOCALE_IDS,在packages/client/locale/src/client/index.ts更新LOCALES标签,并补齐核心字典和测试,然后重新构建并运行 fork 版本。仅修改本插件无法扩展 DSH 的全局 locale 列表。
版本兼容: 本版本(4.0.0)仅支持 DSH ≥ 0.2.0-rc.1 且 < 0.2.1。自 0.1.7-rc.1 边界起,DSH 移除了命令式设置注册(
settings.register/installSettingsSection)与客户端settingsScope服务及每插件卡片槽位,运行时调整的配置字段在 schemastery schema 中标.volatile(),设置表单由宿主按 schema 自动生成(无注册调用、无客户端设置卡片),插件按请求读取实时值(由loader/volatile-update驱动)——4.0.x 面向 0.2.0-rc 区段的同一声明式表面;0.1.7-rc.1 至 <0.2.0 的宿主请使用 3.x 线(3.4.3,npm dist-tagdsh-0.1.7),0.1.2–0.1.6 宿主请继续使用插件 3.0.2。
版本范围约定: 每条兼容线都把宿主钉在本线自己的区段内。面向 0.1.x 宿主的线遵循
>=0.1.x-rc.1 <0.1.(x+1)-0(3.1.x:>=0.1.7-rc.1 <0.1.8-0;3.0.x:>=0.1.5-alpha.1 <0.1.6-0;2.0.x:>=0.1.2-alpha.1 <0.1.3-0;1.0.0-beta:>=0.1.0-rc.8 <0.1.2-alpha.1);面向 0.2.x 区段的线遵循>=0.2.0-rc.1 <0.2.1-0(4.0.x:>=0.2.0-rc.1 <0.2.1-0)。任何线都不声明开放的上限,兼容性解析器因此绝不会把插件线匹配到它并未适配的更新宿主区段。0.4.0–0.6.0 完全没有声明 dsh peer 依赖,属于无兼容性标注版本——不要安装。
在多步工具链任务中,模型在每一次工具调用前都会重新思考——而这个思考过程占据了绝大部分墙钟时间(一个 50 步的 agent 任务可能在工具之间花费数分钟思考)。dsh-thinking-levels 接入 dsh 每一步都会重新解析的 agent/request waterfall(以 prepend 置于最外层,避免被会话模型选择覆盖),向下一次模型请求注入思考档位。
档位
| 档位 | 含义 | 位置 |
|---|---|---|
off |
关闭思考(仅手动选择,自动调度永不选用) | 模型选择器 / 默认档位 |
on |
开启思考(仅 toggle 型模型):只发 enable_thinking,不发 think effort |
模型选择器 / 默认档位 |
minimal |
最低档(极轻任务) | 模型选择器 / 默认档位 |
low |
手动低档,对应简单对话任务(廉价轮次保持廉价) | 模型选择器 / 默认档位 |
medium |
中档 | 模型选择器 / 默认档位 |
high |
官方默认档位 | 模型选择器 / 默认档位 |
xhigh |
特高档 | 模型选择器 / 默认档位 |
max |
重任务 | 模型选择器 / 默认档位 |
auto |
mask:按最近的工具调用历史逐轮调度,提交 API 前解析为具体档位 | 模型选择器(由插件注入元数据)/ 默认档位 |
线缆档位事实(对照官方 DeepSeek 文档与 dsh llm-deepseek 适配器核实):deepseek-v4-flash / v4-pro 上 low 1:1 生效,medium / xhigh 折叠到 high。适配器只接受 off | low | high | max,其他值抛 UNSUPPORTED_REASONING_EFFORT——auto 是插件的 mask 层,永不直接发送给 API,注入前必然解析为具体线缆档位。on 不是 effort 档位:它只由 toggle 型模型(Qwen3.6 类)广告,且只把 enable_thinking 置 true——不发送 reasoning_effort;effort 能力模型永不广告 on,所以手动选 on 会被剥离。
自定义传输字段映射
对 llm-pi-ai 手工声明的模型,可以把每个档位映射为你网关真正接受的值(借鉴 dsh-thinking-effort):勾选档位并填写线上值,例如 high → ultra。映射存为该模型的 reasoningEfforts 表——Composer 选中 High 时,网关实际收到 ultra。off 留空表示不发送。
该映射的可视化编辑器原先搭载在插件设置卡片上,DSH 0.1.7 迁移已将其移除(对应槽位不复存在)。请改为通过官方「模型」设置面编辑
reasoningEfforts表——host 侧的检测与注入本就实时读取该配置。
- 官方预设:
Off / High / Max(官方 DeepSeek 风格) - 通用预设:
Off / Low / Medium / High
思考强度滑块(逐模型行)
模型面板里的逐行思考强度下拉框已改造为分段滑块:点击模型行的档位 chip(显示当前生效档位或「提供方默认」),该行下方展开全宽滑动条。分段数随模型广告的档位自适应——toggle 型只有两档、官方 off/low/high/max、网关自定义线上值均可;目录带 auto mask 时 auto 恒在最左,其后依次 off/on 与强度递增档,未知线上值排最末。
交互对齐 dsh-reasoning-effort 已批准的视觉基线:滑钮拖动时连续跟手、松手吸附提交(每次手势只写一次路由);普通滑钮全主题纯白;两端刻度处滑钮完整可见;键盘 ←/→/Home/End 逐档移动。原「提供方默认」重置保留为滑块行的 ↺ 按钮。
DeepSeek 行(官方路由,或 id/名称含 deepseek 的网关模型)滑钮为鲸鱼娘奔跑立绘:8 帧侧面奔跑 strip,乒乓循环(静止 720ms/单向,拖动中 420ms/单向),prefers-reduced-motion 下冻结;其他模型为普通白色圆钮。
立绘为社区鲸鱼娘二创,来源 HanaAyane/dsh-reasoning-effort(assets/chibi-runner-strip.png);用 python tools/whale-mascot.py 可重新生成内联素材。
模型能力守卫(v0.5.0)
插件绝不向未声明推理能力的模型发送 reasoning_effort。自定义 openai-completions 路由(如未配置 reasoningEfforts 的本地 Qwen3.6)通过 ctx.llm.resolveModelInfo 被判定为非推理模型,任何档位(继承的或调度产生的)都会被剥离而不是下发——dsh 的逐请求 UNSUPPORTED_REASONING_EFFORT 拒绝因此不会触发。不支持的字段绝不打进 API。
版本行为:
| dsh 版本 | low 处理 |
|---|---|
| rc.6(老) | 非原生:仅当配置 models 覆盖确认该档位时选择器才显示;注入展示(选择器 + 请求校验放行)后原样透传 |
| rc.7+(新) | 原生:插件既不重写也不重复注入;手动选 low 原样透传 |
auto 调度对支持的模型仍可选出 low——由上面的能力守卫负责让它远离不能接收它的模型。
模型选择器 Auto
会话界面模型选择器(模型旁)现在提供 Auto 档位(由插件注入模型目录元数据,位于线缆档位之后):
| 模型选择器选择 | 行为 |
|---|---|
| Auto | 插件按工具调用历史 + 升降档开关调度,解析成 low / high / max 后提交 API |
off / on / minimal / low / medium / high / xhigh / max |
尊重手动选择,插件不介入(toggle 型模型上 on 保持 on,绝不升为 effort;effort 能力模型剥离它) |
| 未选择 | 使用插件的默认档位(见下) |
自动调度
中枢为 high(官方默认)。auto 只在 low / high / max 之间调度;永不选 off。
| 最近的工具调用 | 档位 |
|---|---|
| 无(全新提示,纯对话) | low |
| ≥75% 简单工具、小载荷、允许降档 | low |
| 混合 / 重工具 | high |
| 超大载荷、允许升级 | max |
调度策略与 dsh-tool-turbo 同源(同一套简单工具白名单 / 载荷阈值 / 75% 比例规则)。
安装
完整流程(profile 确认、升级、迁移、验证、排查)见 INSTALL.zh.md。快速开始:
# 1. 从 npm 把插件装进某个 profile(以 web 为例,任意 profile 均可)
# (web profile 是 pnpm workspace root,必须带 -w)
dsh plugin --profile web add dsh-thinking-levels -w
# GitHub 安装备选:
# dsh plugin --profile web add https://github.com/drscrewdriver/dsh-thinking-levels.git -w
# 本地路径备选(无需网络):
# dsh plugin --profile web add /dsh-thinking-levels 的绝对路径/
# 2. 重启 dsh web(运行中的实例不会热加载新的 bundle 层)
dsh web
注意:dsh 运行环境使用 pnpm 11,新发布的版本会受
minimumReleaseAge冷却期约束;如安装报ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION,在~/.dsh/profiles/web/pnpm-workspace.yaml的minimumReleaseAgeExclude中加入对应版本即可。
手动 link: 注册(dsh plugin add 的备选方式):
# ~/.dsh/profiles/web/package.json dependencies 增加:
# "dsh-thinking-levels": "link:<dsh-thinking-levels 的绝对路径>"
# ~/.dsh/profiles/web/cordis.patch.yml:
# - insert:
# - id: thinking-levels
# name: dsh-thinking-levels
cd ~/.dsh/profiles/web && pnpm install && dsh web
配置
两个配置面共用同一套 schema:
- 装配层 — profile 组合中插件行的
config:(如cordis.yml):config: level: auto # off | on | minimal | low | medium | high | xhigh | max | auto —— 会话未显式选择时的默认档位 allowDowngrade: true # 允许调度器降到 `high` 以下 allowUpgrade: false # 禁止调度器升到 `max` - 运行时 — 插件的
.volatile()配置字段(enabled、level、allowDowngrade、allowUpgrade):DSH 0.1.7 按声明的 schema 自动生成「插件」设置表单,提交的改动以实时配置引用送达插件(loader/volatile-update),对下一次模型请求生效,无需重启。(models仍是配置级字段:请在 profile 组合中编辑。)
按模型的 models 覆盖(键为 provider/model)用于确认自动检测结果,配置者拥有最终决定权:
config:
level: auto
models:
llm-pi-ai/Qwen3.6-35B-A3B: # 非 effort 思考模型(思考开关 + budget)
vision: false
thinking: true
efforts: false # 永不发送 reasoning_effort(请求时剥离)
llm-pi-ai/Qwen3.8-27B: # effort 模型(rc.6 时代适配器没有 low)
efforts: [low, high] # 确认 low → 选择器展示 + 透传
对 Qwen 思考开关 + budget,请配置 llm-pi-ai 路由:
compat.thinkingFormat: qwen(→ 线缆enable_thinking+thinking_budget,经thinkingBudgets),或qwen-chat-template(→chat_template_kwargs.enable_thinking) 用于 Qwen3.8-27B 这类 effort 模型。
默认值:{ enabled: true, level: 'auto', allowDowngrade: true, allowUpgrade: false, models: {} }。
语义说明:模型选择器选择优先于插件默认档位。选
auto(mask)→ 插件调度;选线缆档位 → 直接生效;未选择 → 使用插件的level默认档位。allowDowngrade/allowUpgrade只约束auto调度。
官方 compat 面:短路工具退役(0.7.0-beta.1)
自定义网关(vLLM / LM Studio / 自建 OpenAI 兼容代理)声明思考功能后,本插件自动把修复写入 dsh 官方 llm-pi-ai compat 面(dsh ≥ v0.1.0-rc.8 引入,commit 884f7b9c41)——不再需要 dsh-llm-openai-completions 接管路由,短路插件应保持卸载:
- 扫描
llm-pi-ai.providers,识别「自定义 openai-completions 网关(api: openai-completions或非官方 baseURL)且 任一模型(含modelOverrides)声明reasoningEfforts表」的路由,自动写入:- 路由级
compat.supportsDeveloperRole: false——系统提示词按system角色发送,修复 vLLM / SGLang 的Unexpected message role400; - toggle 型思考模型(思考表存在、行级无
supportsReasoningEffort)自动补模型级compat.thinkingFormat: 'qwen-chat-template'——pi-ai 发chat_template_kwargs.enable_thinking(裸 vLLM 忽略顶层enable_thinking);
- 路由级
- 写入走官方设置通道(读 → 纯变换 → 整段
settings.update('llm-pi-ai', …)),dsh 的 schema 在写入处校验:低于 rc.8 的 dsh 会拒绝并日志告警,绝不静默错配;任何层级的显式值(true/false、已声明格式)永不覆盖; - 触发时机:插件启动、
llm/adapters-updated、llm-pi-ai的 settings 变化——无需手动改配置; - 响应侧的内联
<think>拆分是网关职责:裸 vLLM 请加--reasoning-parser qwen3(pi-ai 只解析reasoning_content/reasoning/reasoning_text)。
依赖说明
插件 host 侧不值依赖 @deepseek-ai/dsh-settings——DSH 0.1.7 起不再有任何设置注册:设置表单由宿主按插件声明的 schemastery schema(.volatile() 字段)生成,客户端通过 dsh 运行时提供的 configForms 服务协作。无需在 profile 中手动安装官方包。dependencies 仅 @deepseek-ai/schemastery(随包自动安装)。
开发
npm run lint # eslint(typescript-eslint flat config)
npm run typecheck # tsc --noEmit
npm test # vitest — 65 个测试
测试覆盖:档位策略(手动透传含扩展档位、on 钳制、auto 调度、档位校验、简单工具边界)、模型能力守卫(reasoningEffortSupported、resolveEffortInjection 剥离/透传)、会话事件解析(守卫、窗口截断、畸形记录)、配置 schema(默认值同步、越界拒绝、models 覆盖)、官方 compat 同步(识别、显式值尊重、身份幂等、写入处 schema 校验)。
许可
MIT
链接
同类插件
V1ki/dsh-plugin-subscriptions★ 422
把 ChatGPT(Codex)、Claude、Grok 订阅当作 DeepSeek Harness 的 LLM 提供方:设置页登录、模型目录、用量展示,以及 image_generate、video_generate 与 x_search 工具。
Mars-Sea/dsh-commandcode-provider★ 370
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
corrinehu/dsh-workbuddy-connect★ 303
将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness,在 DSH 对话窗口里零配置使用。
cv-superding/dsh-deepseek-web-login★ 230
新增 deepseek-web provider,把 chat.deepseek.com 网页端模型接入 DSH:浏览器登录抓取、PoW 请求签名、SSE 流式传输与基于提示词的工具调用。
FishBottle7/opencode2dsh★ 143
将 OpenCode Zen 免费模型接入 DeepSeek Harness,无需 API Key。
WSL043/dsh-codex-subscription★ 142
通过 ChatGPT OAuth 在 DSH 中使用 Codex 模型,提供订阅联网搜索、额度与安全重置、图片工具、高速模式和模型感知上下文;无需 API Key 或 Codex CLI。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。