FanXi1230/fanxi

dsh-reasoning-effort-dock

在输入框模型栏加入可拖拽吸附的 off / low / high / max 推理强度滑轨,并把选中档位应用到当前 DSH 会话。仅在模型同时提供这四个推理档位时才会显示滑轨。

UI 개선

Reasoning Effort Dock icon

Reasoning Effort Dock

A draggable four-stop reasoning-effort slider for the DeepSeek Harness composer model row.
中文说明

Reasoning Effort Dock at max effort

What it does

Reasoning Effort Dock adds a compact slider to the composer's model-control row, immediately to the left of the model selector. It represents DeepSeek's four native reasoning levels as a snap slider rather than a menu:

StopMeaning
offNo reasoning effort
lowLight reasoning
highHigh reasoning
maxMaximum reasoning effort
  • Drag the thumb, click the track, or use the arrow keys; the thumb always snaps to one of the four fixed levels.
  • The right-hand model menu and this slider are two views of one source of truth. Changing the level in either place updates the other.
  • The selected level is written to the current session through DSH's own session.selectModel({ provider, model, reasoningEffort }) path. It is the real reasoning parameter used by the next request, not a display-only value.
  • Blank new sessions and existing conversations both render the control, because it is registered in conversation.input.right in the composer row.
  • Only max adds the white-blue electric layer. off, low, and high cross-fade through their own fill colors while a subtle iridescent highlight keeps the bar visually continuous.
  • The component follows the active DSH theme tokens and respects prefers-reduced-motion.

Requirements

  • DeepSeek Harness Web UI 0.2.1-rc.2 or another build in the 0.2.1 line.
  • The stock ui-conversation and ui-model-selection plugins enabled, as they are in the default Web profile.
  • A model whose catalog advertises all four effort ids. The current DeepSeek account and API-key routes do; the control hides itself on other models.

Install

From the plugin market

Once the listing is merged into awesome-dsh-plugin, install Reasoning Effort Dock from the DSH plugin market / Discover page.

From the GitHub release tarball

dsh plugin --profile web add \
  https://github.com/FanXi1230/fanxi/releases/download/dsh-reasoning-effort-dock-v1.0.0/dsh-reasoning-effort-dock-1.0.0.tgz

Restart dsh web if the plugin does not appear immediately.

From this repository during development

git clone https://github.com/FanXi1230/fanxi.git
cd fanxi/plugins/dsh-reasoning-effort-dock
node scripts/validate.mjs

Then add the local package directory with the DSH plugin manager, or install it into a profile with dsh plugin --profile <profile> add <package-directory>.

Usage

  1. Start a new conversation or open an existing one.
  2. Move the slider to off, low, high, or max.
  3. Send the next message. The selected level is the reasoning effort used for the request; the native model menu shows the same level.

The model's native four-level effort metadata is the only source of stops. If a model does not advertise all four, the slider is hidden instead of sending an unsupported value.

How it works

The plugin is a standard DSH bundle with an empty Host half. Its Client half reads the existing ctx.modelDirectories.directoryFor(sessionId) directory and calls the same directory.select(...) operation as DSH's model menu. It owns no session state, does not call the network, and does not store credentials.

The MAX lightning layer is pure CSS/SVG, is always mounted, and cross-fades by opacity; its animations are paused while another level is active. That is what makes level changes smooth rather than switching a display on and off.

Validation

The repository ships a dependency-free validation script:

node scripts/validate.mjs

It checks the bundle manifest, patch insert, module identifier, locale JSON, screenshots, license, and JavaScript syntax. The same command runs in GitHub Actions for changes in this plugin's directory.

The plugin was also exercised in the running DSH Web UI against 0.2.1-rc.2:

  • a new blank session renders the 400 × 38 control;
  • switching to an existing session keeps it rendered;
  • a pointer-driven move to high changes the native model-selection state to High, and moving back to max restores Max.

License

This plugin is released under the MIT License.

The enclosing fanxi repository has its own AGPL-3.0 license; this plugin lives in its own package directory with a separate MIT license.