插件目录 / Developer / dsh-thinking-levels
dsh-thinking-levels
未验证 drscrewdriver
功能简介
deepseek-harness dsh thinging levels 调整 reasoning强度调整
未验证 — 尚未实测
deepseek-harness dsh thinging levels 调整 reasoning强度调整 尚未验证——请自行安装测试。
「未验证」表示我们的自动化 CI 尚未安装过该插件。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-thinking-levels
Per-round thinking-level (reasoning_effort) control for DeepSeek Harness (dsh): pick Auto (a mask) in the session model selector and the plugin schedules low / high / max from the recent tool-call history before submitting the API effort — or fix a wire level (off / low / high / max) manually. Cheap tool rounds stay cheap; heavy work never starves.
中文文档 · English
In a multi-step tool chain, the model re-thinks before every tool call — and that thinking dominates the wall-clock time (a 50-step agent task can spend minutes reasoning between tools). dsh-thinking-levels plugs into the agent/request waterfall that dsh re-resolves for every step (registered with prepend so the session model-selection assembly cannot overwrite its decision) and injects a thinking level into the next model request.
Levels
| Level | Meaning | Where |
|---|---|---|
off |
thinking disabled (manual only — never auto-picked) | model selector / default level |
low |
manual pick for simple chat tasks (cheap rounds stay cheap) | model selector / default level |
high |
the official default effort | model selector / default level |
max |
heavy work | model selector / default level |
auto |
mask: schedule per step from the recent tool-call history, resolved to a wire level before submission | model selector (injected by the plugin) / default level |
Wire-level facts (verified against the official DeepSeek docs and dsh's llm-deepseek adapter): low maps 1:1 on deepseek-v4-flash / v4-pro, while medium / xhigh collapse onto high. The adapter accepts off | low | high | max and rejects anything else with UNSUPPORTED_REASONING_EFFORT — auto is the plugin's mask layer, never sent to the API, always resolved to a concrete wire level before injection.
Model-selector Auto
The session model selector (next to the model) now offers Auto after Off / Low / High / Max (injected into the model-directory metadata by the plugin):
| Model-selector pick | Behavior |
|---|---|
| Auto | plugin schedules via tool history + the upgrade/downgrade toggles, resolves to low / high / max before submission |
off / low / high / max |
manual choice wins — plugin does not intervene |
| unset | the plugin's default level applies (below) |
Auto scheduler
The hub is high (the official default). auto schedules between low / high / max; it never picks off.
| Recent tool calls | Level |
|---|---|
| none (fresh prompt, pure chat) | low |
| ≥75% simple tools, small args, downgrades allowed | low |
| mixed / heavy tools | high |
| very heavy payloads, upgrades allowed | max |
The scheduling policy is the same source as dsh-tool-turbo (same simple-tool whitelist / payload thresholds / 75% ratio rule).
Install
# 1. install the plugin into a profile from npm (web shown; any profile works)
# (the web profile is a pnpm workspace root, so -w is required)
dsh plugin --profile web add dsh-thinking-levels -w
# GitHub alternative:
# dsh plugin --profile web add https://github.com/drscrewdriver/dsh-thinking-levels.git -w
# local-path alternative (no network needed):
# dsh plugin --profile web add /absolute/path/to/dsh-thinking-levels
# 2. restart dsh web (a running instance does not hot-load new bundle layers)
dsh web
Note: the dsh runtime uses pnpm 11, whose
minimumReleaseAgesupply-chain policy may block a
freshly published version withERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION— add the version tominimumReleaseAgeExcludein~/.dsh/profiles/web/pnpm-workspace.yamlto lift the cooling period.
Manual link: registration (alternative to dsh plugin add):
# ~/.dsh/profiles/web/package.json dependencies:
# "dsh-thinking-levels": "link:<absolute path to 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
Configuration
Two surfaces share one schema:
- Assembly — the plugin row's
config:in the profile composition (e.g.cordis.yml):config: level: auto # off | low | high | max | auto — the default level when the session picks nothing allowDowngrade: true # let the scheduler drop below `high` allowUpgrade: false # forbid the scheduler lifting to `max` - Runtime — the dsh-settings namespace
thinking-levels(level,allowDowngrade,allowUpgrade,enabled): changes apply to the next model request, no restart needed. A visual editor is available under Settings → Plugins → configurable plugins.
Defaults: { enabled: true, level: 'auto', allowDowngrade: true, allowUpgrade: false }.
Semantics: the model-selector pick outranks the plugin's default level. Pick
auto(mask) → plugin schedules; pickoff/low/high/max→ applied directly; pick nothing → the plugin'sleveldefault is used.allowDowngrade/allowUpgradeconstrainautoscheduling only.
Dependency note
The host half does not value-depend on @deepseek-ai/dsh-settings (settings registration goes through the cordis settings service provided by the dsh runtime) — no need to install official packages into the profile manually. dependencies is just @deepseek-ai/schemastery (installed automatically with the package).
Development
npm run lint # eslint (typescript-eslint flat config)
npm run typecheck # tsc --noEmit
npm test # vitest — 21 tests
Test coverage: level policy (manual pass-through, auto scheduler, validation, simple-tool boundary), session-event parsing (guards, window cap, malformed records), and the config schema (defaults lockstep, out-of-band rejection).
License
MIT
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-thinking-levels」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:drscrewdriver/dsh-thinking-levels Headless(CLI)profile:
dsh plugin --profile headless add github:drscrewdriver/dsh-thinking-levels 实测报告
尚未 L3 验证——若已跑过,见下方失败备注。