Preface¶
After subscribing to a large number of models, the “Select Model” menu in the DSH chat input box becomes very long: frequently used models are buried deep in the list, and models with the same name from different vendors are mixed together, requiring a long scroll to select one. dsh-model-pin is a small plugin targeting this menu. The idea is straightforward: pin frequently used models to the top of the menu and add display prefixes to models from different vendors so that models with the same name are easily distinguishable at a glance.
Below is an introduction to the positioning, features, installation method, and precautions of this plugin.
What is this¶
dsh-model-pin is a browser-side extension for DeepSeek Harness (DSH), maintained by GreyYao. The repository address is https://github.com/GreyYao/dsh-model-pin, and the community directory page is https://www.skillhub.cn/plugins/GreyYao/dsh-model-pin .
It does not modify the DSH source code but purely extends the model selection menu on the browser side. It performs three tasks: pinning frequently used models, drag-and-drop sorting within the “Pinned” section, and adding display prefixes by vendor. There is a fourth behavioral improvement in the repository README: if the selected model is already pinned, the menu will stop at the “Pinned” section when opened.
Core Features¶
1. Pinning Models¶
Move the mouse to a model row, and a pin icon will appear at the end of the row; clicking the pin pins that model to the top, appearing in the “Pinned” section at the very top of the menu, and the pin becomes solid. Clicking the pin again (whether at the original position or within the “Pinned” section) will unpin it. Clicking the model name within “Pinned” is equivalent to clicking the original model, which selects it and closes the menu.
A few details:
- Pinning records are saved in local browser storage and remain after restarting DSH.
- It only takes effect on the model selection menu of the chat input box.
- When searching and filtering, the “Pinned” section only displays models that still match.
- Pinned models still retain a copy in their original groups, and keyboard up/down navigation is unaffected.
2. Drag-and-Drop Sorting¶
In the “Pinned” section, hold the ⠿ handle at the beginning of a row to drag and sort: dragging to the upper part of the target row places it before it, and dragging to the lower part places it after it. An insertion line is shown during dragging, and the order is also saved.
Only the handle can be dragged. Pressing on the model name is still for normal selection and will not accidentally trigger a drag. The DSH menu cancels default behavior in the button’s mousedown, preventing native browser drag-and-drop from working, so the plugin implements drag-and-drop using pointer events.
3. Vendor Display Prefix¶
In “Settings → Models”, an additional “Display Prefix” input box appears below the vendor’s “Display Name” input box. After filling in content, the display name of all models under that vendor in the chat becomes “Prefix + Space + Original Name”, for example [Official] DeepSeek-V4.1-Flash.
Behavior description:
- Display prefixes appear in three places: the model selection menu, the “Pinned” section, and the current model name next to the input box. The settings page remains unchanged.
- It only changes the display, does not change the model ID, and does not affect API calls.
- Input is saved immediately, and clearing restores it; when added via “Add Custom Model API”, it is recorded according to the entered Provider ID.
- For built-in vendors without a “Display Name”, the prefix input box appears at the very top of their “Custom” accordion section.
- Limitation: The built-in search in the menu only matches the original model name and cannot search for prefixes.
4. Scroll Behavior¶
When the currently selected model is pinned, opening the menu (or refreshing the list) will stop at the top “Pinned” section, rather than being pulled down to the original group below. After mouse hover, arrow key navigation, or the user manually scrolling the menu, the plugin no longer intervenes. When the selected model is not pinned, it completely retains DSH’s original behavior.
Installation and Activation¶
This plugin does not have a generic CLI installation command. It is integrated via DSH profile dependencies. The profile directory is typically ~/.dsh/profiles/<profile>/ (on Windows it is C:\Users\<You>\.dsh\profiles\<profile>\). Specific steps come from the README:
- Clone or download the repository to any location on your local machine.
# Repository URL
https://github.com/GreyYao/dsh-model-pin
- Modify the profile’s
package.json. Back up the file before proceeding, then add a line independenciespointing to the absolute path of this repository, and add the plugin name to thedsh.profile.bundlesarray:
{
"dependencies": {
"dsh-model-pin": "link:/absolute/path/to/dsh-model-pin"
},
"dsh": {
"profile": {
"bundles": ["dsh-model-pin"]
}
}
}
- Execute dependency installation in the profile directory, or manually link
node_modules/dsh-model-pinto this repository directory:
cd ~/.dsh/profiles/<profile>
npm install
- Restart DSH or refresh the page.
To uninstall, delete the two entries mentioned above in package.json and the node_modules/dsh-model-pin link. Saved pinning and prefix data only exists locally in the browser, so uninstalling does not affect other functions.
Typical Usage¶
After installation, no additional configuration is needed. Open the model menu directly in the chat input box to see the effect. For daily tuning, follow the order below:
- Open the model menu and pin the two or three most frequently used models.
- If the order is not suitable, hold the handle at the beginning of a row in the “Pinned” section and drag it to the target position.
- In “Settings → Models”, fill in display prefixes for vendors that are easily confused, for example, filling
[Official]for official channels. - Return to the chat and confirm the prefixes and order in the “Pinned” section at the top of the menu.
The configuration items themselves do not involve model IDs or API keys; prefixes are merely decorative for the display layer, and can be cleared at any time if filled in incorrectly.
Applicable Scenarios and Precautions¶
Suitable for scenarios where the model list is long and the same model name appears repeatedly under different vendors; also suitable for developers who have fixed preferences for available models and wish to keep frequently used items at the top.
A few things to note:
- The plugin runs with the permissions of the current DSH process; before installing, you should check the repository source code and license (the repository declares MIT).
- The plugin works based on the model selection menu structure of the current DSH version. The menu structure is taken from
@deepseek-ai/dsh-client-ui-model-selection:div[role=menu][id$="-models"] > section[data-menu-group] > button[role=menuitemradio], and models are identified byspan[data-provider-id][data-model-id]. If DSH upgrades and adjusts the menu structure, pinning or the “Pinned” section may become ineffective. In this case, you need to watch for plugin updates or submit an issue to the repository. - Search cannot match display prefixes; this is a known limitation.
- This plugin is a purely browser-side community project; the community directory of the DSH ecosystem is an independent site with no official affiliation with DeepSeek / Hypi. Do not treat it as an entry in an official app store.
Summary¶
dsh-model-pin addresses the two tasks of “pinning frequently used models” and “vendor prefixes” directly on the model selection menu. It is simple to configure and clean to uninstall, suitable for DSH developers who feel the model list is too long or find models with the same name hard to distinguish.
- Community Directory Page: https://www.skillhub.cn/plugins/GreyYao/dsh-model-pin
- GitHub: https://github.com/GreyYao/dsh-model-pin