Motuo24/dsh-thinking-slider ↗★ 0
thinking-slider
Thinking-strength slider: replaces the composer model seat's reasoning-effort button list with a snap-to-step slider for the DSH web UI.
AI Analysis
核心用途是优化 DSH 界面中调整模型“思考深度”(reasoning effort)的交互体验,将按钮改为更直观的滑块。适合频繁调整模型思考强度的 Web 端用户。
Install
This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗
README
Read the full README ↗thinking-slider
Thinking-strength slider — a client plugin for the DSH web UI that replaces the discrete button list for "thinking strength" (reasoning effort) in the model picker with a snap-to-step slider.
Introduction
When using the DSH web UI, adjusting how "deeply" a model thinks — its thinking strength (reasoning effort) — hides behind a second-level menu in the model picker as a row of discrete buttons: Default / Off / High / Max. Clicking is straightforward, but for a concept that is inherently a continuous gradient, a button list is neither intuitive nor pleasant to operate.
thinking-slider exists exactly for this: it replaces that row of buttons with a snap-to-step slider, making thinking-strength adjustment as smooth and natural as a volume control.
- More intuitive — drag continuously; release to snap to the nearest step center with a springy settle animation. Every level "lands firmly and reads clearly".
- More restrained — only the "thinking strength" panel is replaced; model switching, the Default level, error retry, and the session lock state all behave exactly as the original.
- Non-invasive — it shadows the original seat (priority
-1); stop or remove the plugin and the original button-list UI returns instantly, with nothing left behind. - User-aware — the explanation text follows the DSH UI language (zh/en); after commit the host remains the single source of truth, so the UI always reflects the real selection.
It is not a standalone app — it is a lightweight DSH client plugin of 3 files and a few hundred lines: the host half merely marks the Loader row, while the browser half carries the entire UI and interaction, wired into DSH's plugin system through the dsh.client declaration and auto-loaded at process start.
Features
- Slider-based thinking strength — open the model picker → "Thinking strength" and pick between
Default/Off/High/Max(whatever levels the model actually provides) - Snap-to-step — drag continuously; on release the thumb snaps to the nearest step center with a springy settle animation
- Visual feedback — capsule track, blue progress fill, middle-level dots (first/last hidden under the thumb), white round thumb
- Explanatory copy — under the title: "Higher strength produces more detailed reasoning but costs more time and resources"
- Bilingual — copy follows the DSH UI language
- Commits immediately — the snapped level is submitted via
session.selectModel; the host is the single source of truth - Keeps original behavior — model list switching, Default level, error retry, and session lock state match the original
How it works
The plugin shadows the conversation.input.model seat via shadow registration (priority -1 Requires the DSH web environment (@deepseek-ai/dsh-web-app and dsh-client-ui-model-selection mounted).
-
Clone this repository and put the
thinking-sliderdirectory into the DSH profile's node_modules (hoisted layout):# assuming DSH_HOME=C:\Users\\.dsh cd %DSH_HOME%\profiles\node_modules git clone https://github.com/Motuo24/dsh-thinking-slider.git thinking-slider # or copy the thinking-slider directory here manually -
Insert the plugin row into the DSH profile's composition patch:
# %DSH_HOME%\profiles\web\cordis.patch.yml - insert: - id: thinking-slider name: thinking-slider -
Restart the DSH process (
client-modulesscansdsh.clientdeclarations at startup and composes the plugin into the browser boot graph). Open the web UI, go to the model picker → "Thinking strength" to see the slider.
Project structure
thinking-slider/
├── package.json # dsh.client declaration (platform: web) + exports["./client"]
└── lib/
├── index.js # host half: empty apply, just so the Loader recognizes the row
└── client.js # browser half: full UI in window.__ModuleLoader__.load format