Introduction¶
In DeepSeek Harness (DSH), under Settings → Models, when loading the candidate list via Fetch Available Models, if the list is long, manually finding a specific model ID can be cumbersome. For this scenario, a lightweight tool is needed to improve the usability of the selector.
Plugin Overview¶
masknull/dsh-fetch-models-search is a browser-side DSH plugin. Its core purpose is to inject a search box at the top of the Fetch Available Models candidate dialog, supporting real-time filtering of the candidate list as you type.
Core Features¶
- Injects a search box: Adds a search input field above the candidate list and supports real-time filtering.
- Pure DOM enhancement: It does not modify component code and works based on a stable DOM structure (without CSS-hash class selectors).
- Adapts to re-renders: Uses
MutationObserverto monitor DOM changes, ensuring that the filtering state remains valid after React re-renders. - Logic isolation: Filtering only controls showing/hiding and does not affect checkbox selection, select all/deselect all, or similar semantics.
- Fully reversible: When removed, it only removes the injected elements and styles, without affecting the original page state.
- Localization support: Displays prompts according to the page language (such as Chinese or English).
- Zero dependencies: Does not introduce
@deepseek-ai-related modules.
Installation and Activation¶
Install it into the web configuration file via the command line:
dsh plugin --profile web add github:masknull/dsh-fetch-models-search
After installation, you need to restart the DSH service or refresh the page to load the plugin.
Typical Usage¶
- Open DSH’s
Settings → Models. - Expand a pi-ai provider card and click
Fetch Available Models. - A search box will appear above the candidate list in the dialog.
- Enter part of a model ID (such as
chat), and the list will filter in real time. - Clearing the search box restores the display of all candidates.
- Verify the selection behavior: selecting, select all/deselect all, adding selections, and similar operations are not affected by filtering.
Applicable Scenarios and Notes¶
- Scope of application: It only affects the
Fetch Available Modelsselector and does not involve manually edited model rows. - Matching rules: Case-insensitive substring matching (matches only candidate ID text).
- Select all logic: The select all/deselect all buttons still target all candidates and are not affected by the current filtering.
- Runtime environment: The plugin runs in the browser context. Before installation, it is recommended to review the source code and license (MIT).
Conclusion¶
This plugin uses browser-side DOM enhancement to solve the problem of finding models in long lists, with no intrusive modification to the original logic. For more details, see GitHub.