Skip to main content

dsh-effort-slider

7Stars0Forks0Issues0Watchers

Replaces the official tier list in the DSH model menu with an Effort slider panel mimicking Claude Code, and auto-completes reasoning tier metadata for any third-party model, enabling thinking intensity to actually take effect.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
TypeScript
License
BSD-3-Clause
Branch
main
claude-codedeepseek-harnessdshdsh-plugineffort-sliderwebgl

Install

cmdweb profile
$ dsh plugin --profile web add dsh-effort-slider

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin 2768651338/dsh-effort-slider for me: review the repository at https://github.com/2768651338/dsh-effort-slider first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Line Positioning

Replaces the official effort selector in DeepSeek Harness's model menu with a Claude Code-style infinite-drag Effort slider panel; also enables any third-party custom models to have truly effective thinking intensity levels.

Core Capabilities

  • Intercept the "Reasoning Level" row in the official model menu and pop up a Claude Code-style Effort slider panel (infinite drag, snap on release, WebGL flame follow)
  • Automatically inject generic 5-level scale (OFF / Low / Medium / High / Ultracode) for third-party models that haven't declared reasoning metadata, making the official level list and this panel selectable and request validation passing
  • Automatically complement line-level dictionary and protocol dialect (compat) for pi-ai custom models, translating levels to real online fields like reasoning_effort / thinking, with changes taking effect hot without restart
  • After panel closes, the level value in the menu row and the "Model · Level" entry button above the input box continue to display the current level's corresponding color and glow
  • Respect user's existing reasoningEfforts declarations (set to false or custom dictionary), never override
  • Provide 8 kinds of line dialects (OpenAI effort / DeepSeek / OpenRouter / Together / Z.AI / Qwen / string-thinking / ant-ling), and support overriding default dialect by route

Technical Implementation

  • Language: TypeScript + React 18 (browser side uses JSX/TSX), host side pure TS
  • Key Dependencies: @deepseek-ai/cordis (host context), @deepseek-ai/dsh-settings (settings segment registration), @deepseek-ai/schemastery (configuration Schema validation), react-dom/client (panel rendering)
  • Architecture Pattern: DSH dual-half external plugin — host side lib/index.js listens to llm/adapters-updated / settings/updated events for metadata wrapping and pi-ai line-level supply; browser side lib/client.js performs click interception on the "Reasoning Level" row in model menu and renders the panel with React 18; styles are injected by lightningcss inlining effort.module.css hash as <style data-plugin>
  • Entry Files: src/index.ts (host) / src/client/index.ts (browser)

Use Cases

  • Configured multiple third-party provider models in DSH, but the official level selector doesn't work or won't take effect on most models
  • Accustomed to Claude Code's infinite drag panel with flame effects and want the same interaction to adjust levels in DSH
  • Want reasoning_effort field to actually reach the request body under different OpenAI-compatible endpoints (different line dialects)

Prerequisites & Compatibility

DependencyMin VersionDescription
DSHNot declaredInjected into host via dsh.bundle.patch, needs to use dsh plugin --profile web installation channel; after offline local installation, restart DSH once (README.md:96-104)
NodeNot declaredNo explicit engines field
PlatformCross-platformNo OS/CPU limitations on compatibility; verification in README only noted on Windows (README.md:88-91)
Native modulesNoneRepository declares no native dependencies

Installation

dsh plugin --profile web add dsh-effort-slider

Configuration Options

Configuration is written to the effort-slider segment under DSH's ~/.dsh/settings.yaml and can be applied hot:

ConfigTypeDescriptionDefault
enabledBooleanWhether to enable the host-side generic thinking intensity supply master switch; when closed, no longer supplement metadata for third-party modelstrue
defaultDialectEnumLine dialect used when not overridden by route, 8 options available: effort (OpenAI-style reasoning_effort) / deepseek / openrouter / together / zai / qwen / string-thinking / ant-lingeffort
routes.<route name>EnumOverride line dialect for single provider route, value set same as above; falls back to defaultDialect when not specified{}

FAQ

Q: Do I need to restart DSH after installation?

A: Yes. Host-side patch must be injected at restart; after installation, restart DeepSeek Harness once, and press Ctrl+F5 in the web page to reload the browser-side script.

Q: What if I don't see the "Reasoning Level" row in the model menu?

A: If the model itself has no reasoning metadata and the host-side metadata supply didn't take effect, the "Reasoning Level" row won't appear. First confirm DSH has been restarted, and check if effort-slider.enabled is set to true in ~/.dsh/settings.yaml; if still ineffective, check the DevTools console for [effort-slider] intercept row: ... to determine if the interception layer is working.

Q: If I only write reasoningEffort in the panel, will it change my selected model?

A: No. The panel only calls selectModel({ reasoningEffort }) to write the level, keeping the model selection unchanged; models that don't support multi-level reasoning will display "Current model does not provide multi-level reasoning levels".

Q: Can third-party models really make thinking intensity take effect?

A: Yes. The host side does two things simultaneously: injects generic 5-level metadata for adapters that haven't declared reasoning; complements line-level dictionary and compat dialect for pi-ai custom models, which takes effect hot, then pi-ai translates the levels to real online fields like reasoning_effort / thinking / OpenRouter reasoning.effort.

Q: Can I configure different line dialects for different providers?

A: Yes. Specify the dialect for that route in effort-slider.routes.<route> (such as deepseek / openrouter / qwen etc.); when not written, it falls back to defaultDialect.

Q: How do I uninstall?

A: Execute dsh plugin --profile web remove dsh-effort-slider, and if you previously manually modified cordis.patch.yml, also delete the ui-effort-slider line, then restart DSH.

Q: Does this plugin read my conversation content or make network requests?

A: No. Host side doesn't read any user files, only writes its own settings segment; browser side only interacts with the local DSH's /api RPC endpoint, never reads credentials or conversation history.

Difficulty Level

Beginner — only one installation command + one DSH restart needed; if the default 5 levels work, no configuration needed at all; only need to configure defaultDialect by route when specific OpenAI-compatible endpoint fields are incorrect.

Known Issues & Limitations

  • When the current model itself doesn't provide multi-level reasoning, the panel will display "Current model does not provide multi-level reasoning levels", cannot adjust (README.md:60)
  • When the host's llm or settings service is not ready, the entire supply will be turned off and log effort-slider: llm/settings service unavailable, at which point the panel will get empty directory/fallback scale (src/index.ts:76-79)
  • May conflict with skin plugins that also intercept the "Reasoning Level" menu (like dsh-ui-web's aurora skin), potentially showing two panels simultaneously; need to disable its interception in the other skin to avoid conflicts (README.md:165)
  • pi-ai settings segment registration happens after its adapter, and the registration process doesn't trigger settings/updated event; host side uses up to 30 seconds of ready retry as fallback; very short cold starts before this time may need to wait a few seconds (src/index.ts:82-120)

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/2768651338/dsh-effort-slider)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory