Preface¶
Under DSH’s plugin-based extension model, switching the appearance of the Web GUI is not just about swapping a CSS file. It involves how multiple skin packages are discovered, where the settings page entry point is, how different skins are mutually exclusive, how the configuration persists after switching, and whether it works correctly after a page refresh.
dsh-skin-manager is a lightweight skin manager for the DeepSeek Harness web GUI. It centralizes all installed skins in the settings page, offering one-click application, default appearance restoration, and integration handling with dsh-market.
What This Is¶
dsh-skin-manager is maintained by xiaoyangcheng84-svg and licensed under MIT. It is not a standalone theming tool but a plugin mounted onto the DSH web profile: it discovers installed skins, provides a Settings → Skins page, switches the active skin, and synchronizes relevant state when dsh-market is installed.
The problems it solves can be summarized in three points:
- No need to manually maintain the enabled/disabled state of each skin package one by one.
- No need to repeatedly restart
dsh webto confirm whether a skin has taken effect. - When multiple skin packages coexist, there must be clarity on which are active and which are disabled.
Core Features¶
Dynamic Discovery of Installed Skins¶
It discovers installed skins, including skin packages with skin.json and marketplace themes without skin.json.
Based on verified documentation, the recognition prerequisites are: the skin package must meet the skin.json condition or the marketplace theme condition described in the documentation, and provide a pre-built client bundle. Newly installed skins do not require additional registration or modifications to plugin code.
Dedicated Settings Page¶
The plugin adds a Settings → Skins page to the settings sidebar. This page displays Default along with all installed skins.
One-Click Apply and Hot Update¶
When you click Apply on a skin in the settings page, the plugin rewrites the managed configuration section in the profile. DSH’s configuration listener hot-loads the changes within seconds; then, click Refresh as prompted, and the skin takes effect.
Mutually Exclusive Activation¶
Only one skin is active at a time. Selecting a skin deactivates all others.
Restore Default Appearance¶
The page provides a Default option. Clicking Apply on Default restores the default DeepSeek Harness appearance.
Integration with dsh-market¶
When dsh-market is installed in the environment, applying a skin from dsh-skin-manager also performs the following operations:
- Updates
.dsh-market/state.jsonto prevent the newly selected skin from being disabled again at startup; - Unmounts outdated
dsh-markethot mounts that may overlap with the new skin; - Synchronizes the in-memory disabled state of
dsh-marketbefore rewriting the patch.
API Routes¶
The plugin provides the following routes:
/api/skin-manager/list
/api/skin-manager/apply
/api/skin-manager/bundle
These routes are used to fetch the skin list, apply a specified skin, and serve the skin’s client bundle, respectively.
Installation and Activation¶
When installing from the github: source, git must be available on the machine:
dsh plugin --profile web add github:xiaoyangcheng84-svg/dsh-skin-manager
If using a local checkout directory, you can install it via the link: method:
dsh plugin --profile web add link:<path>
After installation, you can restart dsh web, or rely on dsh-market’s hot install mechanism. Then refresh the page and open Settings → Skins.
Typical Usage¶
-
Open
Settings → Skins. -
You will see
Defaultand the list of installed skins on the page. -
Click
Applyon the target skin. -
Click
Refreshwhen prompted, and the skin takes effect. -
If you want to restore the default appearance, click
ApplyonDefault.
Applicable Scenarios and Notes¶
This plugin is suitable for scenarios where multiple skin packages are installed in the DSH web GUI, where you need to centrally switch appearances from the settings page, or where you want to maintain state consistency with dsh-market.
Notes before use:
- The plugin runs with the current
dshprocess permissions; review the source code and license before installation. - The license is MIT.
- Regarding dependencies,
peerDependenciesincludereact ^18.2.0and several@deepseek-aipackages. - Skin package recognition relies on the
skin.jsoncondition or marketplace theme condition described in the documentation, and requires a pre-built client bundle. - The switching operation rewrites the plugin-managed section of the profile’s
cordis.patch.yml; non-skin user patch lines remain unchanged.
Conclusion¶
The value of dsh-skin-manager lies in consolidating skin discovery, activation, mutual exclusion, and default restoration for the DSH web GUI into a single settings page, while handling state synchronization when dsh-market is present.
Related Links:
- GitHub: https://github.com/xiaoyangcheng84-svg/dsh-skin-manager
- Plugin Directory Information: https://www.skillhub.cn/plugins/xiaoyangcheng84-svg/dsh-skin-manager