Preface¶
DeepSeek Harness (dsh) packages models, tools, sessions and Web UI as plugins. In the default web interface, switching models and reasoning effort is done via the model selector next to the input box: open the list, then select the preset. When there are many presets, the operation becomes “first find the model, then find Off / High / Max”.
Someone in the community turned this into a slider. Liang-Saint-Slider maintained by BruzWJ (Chinese name on the directory page: “Liang-Saint Slider”) adapts Lichtspektrum’s web toy “Sliding Ancestor Maker” to the model selection slot of DeepSeek Harness: click the model position in the input box, and a 0–31 level calibrator will appear directly. Drag it to switch both the model and reasoning effort at the same time.
This article is collated after checking against the community plugin directory, GitHub repository README / package.json / source code, and official DeepSeek Harness instructions. The community directory site is not officially affiliated with DeepSeek / Horizon AI, do not treat it as an official app store.
What is this¶
Liang-Saint-Slider is a model and provider plugin for the Web interface of DeepSeek Harness, maintained by BruzWJ, with the GitHub repository at BruzWJ/Liang-Saint-Slider. It was收录 by the community directory on 2026-08-15, categorized as “Models and Providers” and marked as featured. As of 2026-08-17, both the GitHub and directory page stars are 77.
The package name in the repository’s package.json is dsh-plugin-liang-calibrator, version 1.0.0, and the Cordis plugin ID is liang-calibrator. These three names coexist with the GitHub repository name and directory page name, do not mix them up during installation.
It solves the model selection interaction on the Web composer: without modifying Harness source code, it uses slot overrides to replace the default selector, turning “model × reasoning effort” into a single slider. The code and license are MIT; the portrait keyframes are from the original project liang-intensity-calibrator, not shared under the MIT license, which will be explained separately below.
Core Features¶
Click the model slot to open the 31-level calibrator¶
After installation and activation, clicking the model position in the input box (conversation.input.model) will display the calibrator as the root panel, instead of first popping up a model list. The slider range is 0–30, corresponding to frame-00.webp … frame-30.webp in lib/assets/frames/. The portrait switches via keyframes while dragging, and the current combination is submitted to the session’s model directory when you release the slider, while the popup remains open.
There is still a Model row below the slider, where you can enter the regular model list again. The stage name corresponding to the current combination will appear on the trigger button.
Correspondence between six stages and DeepSeek directory¶
In the default DeepSeek model directory, the six stages correspond one-to-one with “2 models × 3 reasoning effort levels”. The mapping given in the repository README is as follows:
| Stage | Slider Position | Model · Reasoning Effort |
|---|---|---|
| Xiao Nan Liang | 00 | DeepSeek-V4-Flash · Off |
| Lao Liang | 06 | DeepSeek-V4-Flash · High |
| Liang Zi | 12 | DeepSeek-V4-Flash · Max |
| Liang Sheng | 18 | DeepSeek-V4-Pro · Off |
| Liang Shen | 24 | DeepSeek-V4-Pro · High |
| Liang Zu | 30 | DeepSeek-V4-Pro · Max |
If the current session’s model directory is not these six combinations, the slider will proportionally split 0–30 to each “provider / model / reasoning effort” group in the directory, and the stage name will follow the current combination instead of being hardcoded in the table above.
The client source code hardcodes the stage names as: Xiao Nan Liang, Lao Liang, Liang Zi, Liang Sheng, Liang Shen, Liang Zu. The selection result uses the built-in modelDirectories service, sharing the same session directory as the /model popup, and the plugin does not build a separate model call system.
Why use portrait keyframes instead of video¶
The README clearly states: The built-in static server of Harness does not support HTTP Range, so using <video> to seek will fail silently. Therefore, the calibrator loads WebP keyframes by level, and the host side mounts the files to /liang-assets/frames/ without using a CDN or modifying the static server.
Override method: Low-priority slot, restore after uninstallation¶
The browser side (lib/client.js) is registered as a dsh.client package, setting the priority of the conversation.input.model slot to -1. The slot rendering rule is “lower numbers take effect”, the default selector uses priority 0, so the calibrator will override it without deleting the original registration. After uninstalling the plugin, the original model selector will return.
The host side (lib/index.js) only does one thing: depends on webServer and mounts the local lib/assets to /liang-assets. Requests with .. or parsed paths escaping the resource root directory will return 403 directly.
package.json declares dependencies on @deepseek-ai/dsh-client-ui-model-selection (and @deepseek-ai/dsh-client-ui-primitives) that come with the default web profile, to reuse the model directory service. Without this service, the calibrator will have no directory to render. The engine requires Node.js >= 22.
Installation and Activation¶
The installation command given on the community directory page is as follows, execute it in the DeepSeek Harness terminal:
dsh plugin add github:BruzWJ/Liang-Saint-Slider
For reproducible installations, pin the commit hash at the end as per the directory page instructions (replace commit with the actual hash):
dsh plugin add github:BruzWJ/Liang-Saint-Slider#commit
The repository README is targeted at the web profile, with more complete steps, which are not exactly the same as the directory page. The README uses the package name dsh-plugin-liang-calibrator from package.json and requires adding it to the profile’s cordis.patch.yml. If installing from GitHub and following the activation method in the README, follow the steps below.
- Install to the web profile:
dsh plugin --profile web add github:BruzWJ/Liang-Saint-Slider
- Register the entry in
$DSH_HOME/profiles/web/cordis.patch.yml(the README uses the package name):
- insert:
- id: liang-calibrator
name: dsh-plugin-liang-calibrator
- Restart the web interface:
dsh web
The command on the directory page without --profile will install to the currently active configuration; the README clearly requires the web profile, because dsh.client.platform in package.json is web. Do not mix the two commands: use github:BruzWJ/Liang-Saint-Slider as the standard for the directory page, do not construct the installation string based on the Chinese repository name or “Liang-Saint Slider”.
To uninstall, follow the README:
dsh plugin --profile web remove dsh-plugin-liang-calibrator
Also delete the corresponding insert entry in cordis.patch.yml. If you installed from the GitHub source, use the package name that was added to the profile when uninstalling, check the profile dependencies first before deleting.
Typical Usage¶
After enabling and opening the Web UI, the operation path is the steps listed in the README.
- Locate the model slot in the conversation input box (displays the current model name and reasoning effort).
- Click it. The root panel is the 31-level calibrator: portrait at the top, stage name (from Xiao Nan Liang to Liang Zu), current combination description, slider and six stage scales at the bottom.
- Drag the slider. The portrait changes according to the keyframes; during dragging, the mapped “model + reasoning effort” will be submitted, and the popup will not close.
- To select precisely by model name, click the Model row below the slider to enter the regular model list.
- If the directory fails to load, a retry bar will appear in the menu; when the selection is rejected, the built-in Toast will appear on the composer card.
For developers who modify the browser side, the repackaging method given in the README is: execute the following in the installed DSH directory:
python3 scripts/assemble-client.py /path/to/node_modules/@deepseek-ai [region.js]
This is not a daily usage step. For daily use, you only need to install the plugin, modify the patch, and restart.
Applicable Scenarios and Notes¶
It is suitable for users who are already using DeepSeek Harness Web UI and frequently switch between Flash / Pro and Off / High / Max. It only modifies the selector interaction, does not provide new model providers, and does not replace the directory service behind session.selectModel.
Please note the following items, all from the directory page, README or source code, not made up based on user experience:
- Permissions and Supply Chain. The directory page states: The plugin runs with the permissions of the current dsh process, and may execute code during installation. You should read the repository source code and license before installing; for reproducible installations, fix the commit hash.
- License Scope. The code is MIT. Both the README and the original project state: The portraits in
lib/assets/frames/are frompublic/framesof liang-intensity-calibrator, you must confirm that you have relevant portrait and material rights before reusing or redistributing them. The Awesome Sliders list in the original project README includes this repository, and also emphasizes that the materials are not shared under the MIT license. - Only covers Web model slots.
dsh.client.platformisweb, and it depends onwebServer,slots,sessions,modelDirectories. The command line / headless profile does not have this UI slot, so the calibrator will not be clickable even if installed. - Inconsistent package name and repository name. The external name is Liang-Saint-Slider / Liang-Saint Slider, the internal names are
dsh-plugin-liang-calibrator/liang-calibrator. When checking dependencies, writing patches, or executing remove commands, you should use thenamefield inpackage.json, instead of guessing based on the directory title. - Portrait resources are local static files. The host reads the frame files from the disk and attaches a one-year cache header (
max-age=31536000, immutable). When the frame files are missing, the corresponding request will return 404, and the calibrator canvas will stay in the loading state, which is not a model API error.
Summary¶
Liang-Saint-Slider does a very specific thing: on the DeepSeek Harness Web composer, use a 31-level slider to select both the model and reasoning effort at the same time. The six “Liang” stages correspond to Flash/Pro × Off/High/Max in the default DeepSeek directory. It uses official slots and model directory services for implementation, and the default selector will return after uninstallation.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/liang-saint-slider/
GitHub: https://github.com/BruzWJ/Liang-Saint-Slider