drscrewdriver / dsh-thinking-levels

Listed

deepseek-harness dsh thinging levels 调整 reasoning强度调整

masterOther View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:drscrewdriver/dsh-thinking-levels

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit db3738fSynced Aug 18, 2026

dsh-thinking-levels

Per-round thinking-level (reasoning_effort) control for DeepSeek Harness (dsh): five levels — off / low / high / max for manual control, plus an auto scheduler that keeps cheap tool rounds cheap and never starves heavy work.

中文文档 · 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, and injects a thinking level into the next model request.

Levels

LevelMeaning
offthinking disabled (manual only — never auto-picked)
lowmanual pick for simple chat tasks (cheap rounds stay cheap)
highthe official default effort
maxheavy work
autoschedule per step from the recent tool-call history

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 — this plugin validates the configured level before injecting, fail-loud.

Auto scheduler

The hub is high (the official default). auto schedules between low / high / max; it never picks off, and it always resolves to a wire level before injecting.

Recent tool callsLevel
none (fresh prompt, pure chat)low
≥75% simple tools, small args, downgrades allowedlow
mixed / heavy toolshigh
very heavy payloads, upgrades allowedmax

Install

# 1. install the plugin into a profile from GitHub (web shown; any profile works)
#    (the web profile is a pnpm workspace root, so -w is required)
dsh plugin --profile web add https://github.com/drscrewdriver/dsh-thinking-levels.git -w
#    local-path alternative (no network needed, no -w outside workspace roots):
#    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

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: high            # off | low | high | max | auto
      allowDowngrade: false  # forbid the scheduler dropping 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.

Defaults: { enabled: true, level: 'auto', allowDowngrade: true, allowUpgrade: false }.

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

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected

Repository information

Language
TypeScript
License
Not reported
Last updated
Aug 18, 2026, 4:18 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.