Back to home@jiaoTaiLang404

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
GitHub repo

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 #e6e5e6 as 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.