dsh-model-tidy
DeepSeek Harness plugin: keep the model selector tidy — choose which models show up, without touching any provider configuration or running session.
- Stars
- 0
- Language
- JavaScript
- Created
- Oct 16, 2026
- Updated
- Oct 16, 2026
Introduction
dsh-model-tidy
English · 中文
A DeepSeek Harness plugin that keeps the model selector tidy — choose which models appear, and rename the ones you keep.
The problem
Install two or three provider plugins and the model menu turns into a wall. A free-tier lane, a workbench app, a couple of hand-configured gateways, and suddenly there are thirty entries — most of them models you will never pick, several of them near-duplicates reachable through different routes.
A model selector is a decision surface, not an inventory. It should show the handful of models you actually use, under names you recognise.
What it does
Installing the plugin adds a Model Tidy section to the DSH settings with one row per model:
┌────┬──────────────────────────────┬──────────────────────────┐
│ ☑ │ Gemini 3.8 Flash │ [ Gemini Fast ] │
│ │ workbuddy · gemini-3.8-flash │ │
├────┼──────────────────────────────┼──────────────────────────┤
│ ☐ │ grok-4.7 │ [ ] │
│ │ workbuddy · grok-4.7 │ │
└────┴──────────────────────────────┴──────────────────────────┘
show/hide real name your alias
- Show / hide — one switch per model. Off means it disappears from the model selector.
- Alias — type a name and the selector offers the model under it. Blank keeps the original.
- Search — filter by model, provider, or alias.
- Provider chips and batch toggles — hide every model from one provider in a single click.
- Restore — one button clears every alias, another brings every model back.
What it deliberately does not do
Tidying is a display decision, never a configuration change.
- Your provider configuration is never rewritten. The hidden list and the alias table live in this plugin's own settings namespace.
- A model hidden or renamed while a session is using it keeps serving that session — routing keys off the model id, and only the label changes.
- Uninstalling the plugin restores the original list completely.
- New models a provider starts advertising are visible by default. The plugin records what to hide and what to rename, never what to show.
Coverage
Switches work across every source of models, not just hand-configured
providers. The plugin filters the harness's own catalogue enumeration —
ctx.llm.listModels — which is the single list every surface reads. Models
registered by other plugins through ctx.llm.registerAdapter and providers
declared under llm-pi-ai are both covered, because both end up in it.
Rows are keyed by provider + model, so the same model name reached through
two routes stays two independently controlled rows: workbuddy/gemini-3.8-flash
and gemini/gemini-3.8-flash are different upstream services and get their own
switch and their own alias.
Install
dsh plugin --profile desktop add dsh-model-tidy
Then reopen the DSH Web GUI. Model Tidy appears in the settings navigation.
Development
No build step: both halves ship as the plain files the harness loads. The host
half is an ES module; the browser half is a window.__ModuleLoader__.load
factory, the format the client module system calls.
npm test
Runs both suites. test/host.test.mjs drives the catalogue filter against a
fake llm service; test/client.test.mjs loads the real browser half in a
stand-in module environment and checks the section it registers.
Compatibility
Built against DSH 0.2.0-rc.2. Requires DSH >= 0.2.0-rc.1, where the
settings layer gained the configForms service this plugin's section writes
through.
License
MIT