Back to home@Triple3h

dsh-reasoning-effort

DSH Web plugin: per-model reasoning-effort configuration and selection — settings page + slider embedded in the model picker. DSH Web 插件:逐模型推理力度配置与选择(设置页 + 模型选择器内嵌滑块)。

Stars
1
Language
JavaScript
Created
Aug 19, 2026
Updated
Aug 23, 2026
GitHub repo

Introduction

dsh-reasoning-effort

English | 中文

GitHub stars GitHub license

A DeepSeek Harness (dsh) Web plugin that integrates per-model reasoning-effort configuration and selection into the Web UI — a settings page plus a slider embedded right in the model picker.

DSH Reasoning Effort integrates per-model reasoning-effort configuration and selection into the DeepSeek Harness Web UI:

  1. Settings page — choose which reasoning levels each custom-provider model exposes (off / minimal / low / medium / high / xhigh / max).
  2. Model selector slider — pick the reasoning level for the current session, embedded directly in the composer's model picker.

Both read and write the same llm-pi-ai configuration, so the settings page defines what's available and the slider picks what to use now.

What it does

  • Adds Settings → Reasoning effort to the DSH Web UI.
  • Lists models explicitly configured in llm-pi-ai.providers.<provider>.models.
  • Lets you toggle the reasoning levels offered per model, with a live slider preview.
  • Preserves the model's other fields and existing provider-specific wire values.
  • Saves through DSH's settings service — no manual configuration-file editing.
  • Embeds a reasoning-effort slider in the model picker: select a model, then drag to choose its level.
  • The slider supports mouse drag, keyboard arrows, and scroll wheel.

The settings page intentionally does not show catalog-only providers. Add a model list to a custom provider first, then open this page to tune that model.

Install from a release

Windows PowerShell

Run PowerShell as your normal user and execute:

irm https://raw.githubusercontent.com/Triple3h/dsh-reasoning-effort/main/scripts/Install-DshEffortTweak.ps1 | iex

To install into another Profile without starting Web UI:

$script = "$env:TEMP\Install-DshEffortTweak.ps1"
Invoke-WebRequest https://raw.githubusercontent.com/Triple3h/dsh-reasoning-effort/main/scripts/Install-DshEffortTweak.ps1 -OutFile $script
& $script -Profile work -NoStart

macOS and Linux

curl -fsSL https://raw.githubusercontent.com/Triple3h/dsh-reasoning-effort/main/scripts/install-dsh-effort-tweak.sh | bash

For another Profile:

curl -fsSL https://raw.githubusercontent.com/Triple3h/dsh-reasoning-effort/main/scripts/install-dsh-effort-tweak.sh -o install-dsh-effort-tweak.sh
bash install-dsh-effort-tweak.sh --profile work --no-start

The scripts download the latest GitHub Release archive, verify the GitHub-provided SHA-256 digest when available, keep it under DSH_HOME/plugin-archives/dsh-effort-tweak/ for future dependency resolution, install it with dsh plugin, and start the default web Profile unless --no-start or -NoStart is supplied.

Install a local package

npm install
npm run build
dsh plugin --profile web add ./dsh-reasoning-effort-0.2.0.tgz

Restart DSH Web after installing or updating the plugin so the new client bundle is loaded.

Link install (development)

npm install
npm run build
npm run link-profile

This symlinks the plugin into ~/.dsh/profiles/web and runs pnpm install there. Restart dsh web afterwards.

Development

Requirements: Node.js 22 or newer.

npm install      # install esbuild
npm run build    # bundle src/client.js → lib/client.js

The client source is plain JavaScript + JSX, bundled with esbuild. React is externalized and resolved at runtime by DSH's ModuleLoader. No TypeScript toolchain required.

Configuration shape

The plugin edits this part of the llm-pi-ai namespace:

providers:
  my-gateway:
    models:
      - id: my-reasoning-model
        reasoningEfforts:
          off: null
          low: low
          high: high

The selected model's reasoningEfforts map determines which effort levels the slider can offer. The plugin uses the existing value for a level when one is already present; a newly enabled level is initialized with its canonical name.

License

MIT. See LICENSE.