In the DeepSeek Harness (DSH) Web GUI, switching the model or provider for a conversation typically requires accessing the settings page. For developers or debugging scenarios that require frequent model switching, this approach is inefficient. The following section introduces a client-side plugin that adds a slider button to the conversation title bar, pushes the model-switching logic down to the client side, and enables one-click switching.
Core Features¶
This plugin primarily addresses conversation-level model switching. Its core capabilities are as follows:
- Two-level linked selection: Replaces the native model selector and uses a two-level design. The top displays provider Chips (provider labels); after clicking one, the available model list for that provider is displayed below in a linked manner. Clicking a model completes the switch.
- Configuration filtering: The panel checks
llm.providers,settings.describe, andcredentials.describe, and only displays providers whose API Key has been configured. After completing the API Key, the provider automatically appears in the list. - Status display: The currently selected provider and model are highlighted in blue and marked with “✓”.
- Real-time synchronization: The model directory shares the same state as the
/modelcommand and the Composer slot. Switching from any entry point updates the directory in real time. - Error notifications: Provides error notifications for situations such as provider unavailability and directory loading failures.
- Conversation limitation: Sub-agent conversations do not support model switching; the plugin automatically disables and prompts accordingly.
Installation and Enablement¶
It is recommended to use the built-in DSH CLI for installation, as it automatically handles dependencies and configuration writing.
dsh plugin --profile web add github:2275803244-cpu/dsh-model-switcher
After installation is complete, the DSH application must be restarted. The slider button will then appear in the conversation title bar.
Typical Usage¶
- Find and click the slider button in the conversation title bar to open the model selection panel.
- First click a provider Chip at the top; the model list for that provider is then displayed below.
- Click the target model to complete the switch.
Note: This feature is disabled in sub-agent conversations.
Technical Implementation and Notes¶
- Runtime environment: Implemented entirely on the browser side, depending on
react/react/jsx-runtime, with zero build process. - State synchronization: Subscribes to the
modelDirectoriesstate (usingreact.useSyncExternalStore) to stay consistent with the internal model directory in DSH. - Slot location: Inserted into the
conversation.session.header.actionsslot in the conversation title bar (order=25). - Dependencies: Provider directories come from adapter configurations in settings.
For more information, you can visit the plugin catalog page or the GitHub repository.