dsh-model-ocean-selector
A DeepSeek Harness plugin with a vertical model list and an animated Three.js particle reasoning-effort control
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 24, 2026
- Updated
- Aug 24, 2026
Introduction
DSH Model Ocean Selector
English | 中文
A DeepSeek Harness Web UI plugin that replaces the stock compact model menu with a vertical model list and an animated reasoning-effort control.
Features
- Displays provider-grouped models as stable vertical rows.
- Uses the project fish icon as the thumb of a compact pill control.
- Renders three independently seeded Three.js square-particle streams from right to left.
- Keeps particle size and stream width constant while each square rotates counterclockwise, spawns at a random offset and angle, and fades without wrap flashes.
- Changes animation speed only after an effort selection is confirmed; pending selections do not reset or accelerate the animation.
- Uses
#e6e5e6as the base background and hides animated fill at the provider's minimum effort. - Preserves the existing
/model, session model selection, keyboard range input, localization, HMR disposal, and WebGL fallback behavior.
Install
Install the plugin into the Web profile from GitHub:
dsh plugin --profile web add github:jiaoTaiLang404/dsh-model-ocean-selector
Restart dsh web after installation. Open the model selector in the conversation composer to use the new model list and effort control.
To remove it:
dsh plugin --profile web remove dsh-model-ocean-selector
Development
Requires Node.js ^22.19.0 || >=24.0.0 and pnpm 11.
pnpm install
pnpm check
pnpm build produces the host entries and browser bundle in lib/. Built files are committed so DeepSeek Harness can install this repository directly from GitHub.
Compatibility and limitations
- WebGL is optional. If initialization fails, a static themed particle fallback remains visible and the range input stays usable.
- The animation requires a modern browser with CSS
color-mix()and:has()support for the full presentation. - Reduced-motion preference is sampled when the control mounts.
- Effort order comes from the selected provider; animation speed represents that order and does not infer compute cost from effort names.
- The selector is hidden for an addressed subagent session, matching the stock model selector behavior.
License
MIT. See THIRD_PARTY_NOTICES.md for bundled and runtime dependencies.