DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
R

dsh-reasoning-effort-slider

Reasoning Effort Slider

Codex-style reasoning-effort slider for DeepSeek Harness: turns the model menu's Effort row into a continuous, level-snapping slider.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:sleepinggggggggggg/dsh-reasoning-effort-slider#6a99d3ca365be0d04a796e44af1c085357dfa1d9
READMECompatibilityVersions

Compatibility and provenance

Reasoning Effort Slider is published as dsh-reasoning-effort-slider and currently resolves to version 0.2.4. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/24/2026

Versions

0.2.4stable
10/24/2026
0.2.2stable
10/23/2026

Related plugins

Loading related plugins…

Latest
0.2.4
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/24/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Experimental Session Titles Bundle@deepseek-ai/dsh-experimental-session-titles-bundleRefresh session titles as new human prompts arrive.Personalized Recommendations@deepseek-ai/dsh-personalized-recommendationsPersonalized pages and built-in plugin recommendations offered as cards below answersExperimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI plugins

README

dsh-reasoning-effort-slider

English | 中文

Turns the Effort row of DeepSeek Harness's model menu into a Codex-style reasoning-effort slider:

┌────────────────────────────────────────┐
│ Model       DeepSeek-V4.1-Flash 1017 › │
├────────────────────────────────────────┤
│ Effort                        Max    › │   ← native row; its value text is tinted by level
│ ●━━━━━━━━━━━━━━━━━━━━━━━━━◯           │   ← injected: 28px track + white knob
│ ·           ·           ·          ·   │   ← level ticks (reached ones brighten)
│                   Max                  │   ← current level name (live while dragging)
└────────────────────────────────────────┘

Nothing is added to the composer tool row. The collapsed model seat keeps the native model · effort ⌄ typography; only that effort text is tinted.

Interaction

ActionBehaviour
Press on the trackJumps to the pressed cell
DragThe knob follows the pointer: knob and fill track the cursor, while the level name, ticks and writes use the nearest level; on release it snaps onto the cell in 80 ms, without bounce
ReleaseCommits immediately (resting the pointer for ~160 ms also commits)
← → ↑ ↓One level per press, committed immediately
Home / EndLowest / highest level
HoverTooltip with the current level and “further right costs more tokens”

Writes are deduplicated and coalesced: a drag commits at most a few times, and picking the level already in effect writes nothing. A failure shows its reason under the track and clears after 4 s.

Colour and effects (driven by level position, independent of level count)

PositionFill right endStarfieldLevel text
First levelblue #4d93f8nonenative (an Off level is never tinted)
Middleblue → violet #9333eanoneblue → indigo
Highestdeep violet #4c1d9526 staggered stars + violet nova layerviolet #8b5cf6
  • The fill is linear-gradient(90deg, blue → colour at the current position): always blue on the left, deepening to the right.
  • The nova layer and the starfield are clipped to the filled part, so nothing glows to the right of the knob.
  • The knob is a white circle as tall as the track (28 px) whose centre is inset by 14 px, so it stays a full circle at both ends.

Why it cannot break the native menu

  • It only adds a data-dres-row attribute to the native effort row (taller, wrapping). Native classes, copy and chevron are untouched.
  • Anything unexpected is fail-open: no aria-controls on the trigger, a menu that is not the model/effort pair, or a row outside this composer card means “do not inject” — the native menu keeps working.
  • Growing that row triggers the menu's own ResizeObserver, which re-measures and clamps the panel back on screen.
  • On close or unload the container is removed, the attribute dropped, and every tinted text colour restored.

Data path (native public surface only)

PurposeAPI
Read levelssession.modelCatalog() → groups[].models[].reasoning.efforts
Read current valuethe modelSelection session projection (useProjection), falling back to the catalog default
Write levelsession.selectModel({ sessionId, provider, model, reasoningEffort }) — the same entry the native menu uses

Install

From GitHub:

dsh plugin --profile <profile> add github:sleepinggggggggggg/dsh-reasoning-effort-slider

From a local directory:

dsh plugin --profile <profile> add <absolute path to this directory>

On desktop, use Settings → Plugins → Add plugin with the same value, then reload the page (or restart the app).

Compatibility

The supported host range is declared in package.json as engines.dsh: DSH >=0.2.0-rc.2 <0.3.0-0, verified against 0.2.1-rc.2.

DSH checks that range before loading a plugin. A host release outside it is refused with an explicit incompatibility message instead of leaving a slider that silently never appears.

Known limits

  • Depends on the native menu's semantic structure (aria-haspopup / aria-expanded / aria-controls, two root rows with role="menuitem"). If a host release changes it, the plugin silently does nothing — it never breaks the menu — and needs a follow-up.
  • The model menu has to be open to change the level; nothing is shown in the composer tool row.
  • A model that advertises a single level (for example with thinking disabled) renders no control, and the native row keeps its original height (setActive drops the growth).
  • The model catalog is cached for the page lifetime (a reconnect refetches it). Providers or models added in Settings need one page reload.
  • The selection applies to the next request; a running step keeps the level it started with (same as the native menu).

Acknowledgements

The design decisions come from reading three sibling implementations. No code was copied; this repository is an independent implementation.

  • HanaAyane/dsh-reasoning-effort — the white knob + track + ticks + level-name visual language, and the modelSelection projection + session.selectModel data path.
  • Microqian2th/dsh-codex-effort-slider — the DOM anchor strategy for injecting into the native Effort row (aria-haspopup / aria-expanded / aria-controls / role="menuitem"), plus the blue → violet → deep violet palette and the starfield position curve.
  • Bai-2008/a-better-dsh-codex-effort-slider — the trade-offs of taking over the model seat entirely, a route this plugin does not take.

Feedback

  • Bugs and feature requests — open an issue. The template asks for the plugin and DSH versions; that pair is usually the whole diagnosis.
  • Setup help, custom model profiles, "does this work with X" — email nupotecrosstvo@gmail.com.
  • Security — email the same address instead of opening a public issue; see SECURITY.md.
  • Quick questions / build logs — @nupote_ on X.

Licence

MIT — see LICENSE.

Files

FilePurpose
index.jsHost half: empty apply(), only there so the bundle enters the profile
client.jsEverything: DOM bridge, portaled slider, colour/starfield logic, dictionaries
cordis.patch.ymlInserts the bundle row
locale/{zh,en}.jsonPlugin-manager copy and control strings
icon.svgIcon shown in the plugin manager