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, and credentials.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 /model command 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

  1. Find and click the slider button in the conversation title bar to open the model selection panel.
  2. First click a provider Chip at the top; the model list for that provider is then displayed below.
  3. 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 modelDirectories state (using react.useSyncExternalStore) to stay consistent with the internal model directory in DSH.
  • Slot location: Inserted into the conversation.session.header.actions slot 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.