dsh-slothy-model-picker
English | 中文
A Slothy-style model picker plugin for the DeepSeek Harness Web GUI. It replaces the composer's model control with a trigger button, a provider-grouped model list, and a two-stage reasoning-effort slider — over the same per-session model directory used by the built-in picker and the /model popup.
Features
- Provider-grouped model list with the deployment order (account → official → third-party).
- Two-stage effort control: pick a model, then drag the slider; a click on the model name goes back to the list.
- Smooth level switching:
requestAnimationFrame-coalesced drag updates, a locked settle position until the host confirms, and CSS transitions between levels. - Wide, rounded slider with a left-side fill that always reaches the thumb.
- Top-level effects only: shimmer, flowing gradient, glow and particle sparks appear only at the highest effort level, are clipped inside the track, and never change layout size.
- Appearance settings page (Settings → Appearance): default mode follows the DSH theme; custom mode overrides background color/image, accent, track, thumb, text and max-effort color with the highest cascade priority, and raises the seat registration priority.
- Bilingual UI (
en/zh) through the host locale service.
Requirements
- DeepSeek Harness
0.2.2-rc.1or newer with the Web GUI (ui-conversation). - The shipped
@deepseek-ai/dsh-client-ui-model-selectionpackage (bundled with DSH) providesctx.modelDirectories; this plugin reads it and does not reimplement model selection. - Installing a plugin requires Full access / approval in the Harness, as for any third-party plugin.
Install
npm (one command)
plugin_manager action: install_bundle
target: dsh-slothy-model-picker
The plugin manager resolves the npm package, links it into the profile, and activates the bundle.
The npm package is not published yet. Until the first publish, install from the GitHub Release or the source checkout below. Maintainers: see docs/PUBLISHING.md.
GitHub Release
- Download
dsh-slothy-model-picker-<version>.tgzfrom Releases and extract it. - Point
plugin_manager install_bundleat the extracted directory.
From source
git clone https://github.com/Mzys521/dsh-slothy-model-picker.git
Then point plugin_manager install_bundle at the cloned directory.
Usage
- Open the trigger: with a model that has reasoning levels, the effort pane opens first; click the model name to return to the model list.
- Pick a model: it is submitted with that model's default effort and the effort pane opens (or the popup closes when the model has no levels).
- Drag the slider: the thumb follows the pointer, levels transition smoothly, and the selection is submitted once on release (
pointerup/keyup/blur). - At the highest level the slider shows its effects and the reasoning-level labels use the configured max effort color.
Escand outside clicks close the popup. The popup portals todocument.bodyso the docked composer cannot clip it.- Switching the model goes through the same host path as the built-in picker (
directory.select({ provider, model, reasoningEffort })) and applies to the next request; a running step keeps the model it started with.
Appearance
Open Harness Settings → Appearance:
- Default mode keeps the current DSH theme and seat priority
-1. - Custom mode sets background color/image, accent, track, thumb, text and max-effort color. Values are applied as inline CSS custom properties (highest priority over theme/skin rules) and the seat registers at
-1000so this plugin renders the composer model control. Clear a value to fall back to the theme; Reset restores the default mode. - Settings live in the browser's
localStorageunderdsh-slothy-model-picker:appearance:v1.
See docs/CUSTOMIZATION.md for the full mechanism.
Compatibility
Tested on DeepSeek Harness 0.2.2-rc.1 Web GUI. The plugin shadows the conversation.input.model seat; if the slot contract changes in a future Harness release, an update may be required. Disabling the plugin restores the shipped picker without a restart.
Uninstall
plugin_manager action: set_plugin target: include:slothy-model-picker enabled: false
plugin_manager action: remove_bundle target: dsh-slothy-model-picker
Development
npm test # node --test tests/
npm pack # build the installable tarball
Layout:
lib/index.js— host half (applyonly; rendering is browser-side).lib/client.js— browser half: registers the composer seat and the appearance settings page, subscribes toctx.modelDirectories, renders with React without JSX.src/— original extracted sources (ModelPicker.tsx,ModelPicker.vue,types.ts) kept for provenance; not loaded at runtime.tests/— offline wiring tests with a fake module loader and fake Cordis services.docs/— installation, development and customization notes.
See docs/DEVELOPMENT.md for the release checklist.
License
MIT © 2026 Mzys521
No comments yet. Be the first to write one.