Introduction¶
The DeepSeek Harness (DSH) Web client supports extending its functionality and interface through plugins. For teams that need a unified visual style, or for developers who prefer a specific aesthetic, custom themes are a common requirement. The dsh-rhine-theme plugin provides this customization capability.
Core Features¶
The plugin mainly includes the following features:
- Uses
dsh.bundle.patchto point tocordis.patch.yml, placing the plugin into the profile’s bundle layer. - Declares browser-side dependencies and the
./cliententry throughdsh.client. - The client registers the
rhine-lab-lighttheme. - Mounts the stylesheet and brand slots.
- Listens for
theme/changeto keep the theme applied.
Installation and Enablement¶
Please choose one of the following methods to install the plugin based on your environment. The plugin runs with the current DSH process permissions. Check the source code and license before installing.
Install from npm¶
dsh plugin --profile web add dsh-rhine-theme
Install from GitHub¶
dsh plugin --profile web add github:mjn96/dsh-rhine-theme
Install from a local path¶
dsh plugin --profile web add file:/绝对路径/dsh-rhine-theme
After installation, restart the web profile so the configuration takes effect:
# 重启 web profile(按你的实际启动方式)
How It Works¶
The plugin declares its behavior through its configuration file:
- Bundle layer mounting:
dsh.bundle.patchpoints tocordis.patch.yml, declares the plugin line, and places the plugin into the profile’s bundle layer. - Client dependencies:
dsh.clientdeclares browser-side dependencies and the./cliententry. - Theme registration and mounting: The client registers the
rhine-lab-lighttheme, mounts the stylesheet and brand slots, and listens for thetheme/changeevent to remain applied.
Notes¶
- Brand slot priority: The three brand slots (
sidebar.brand.mark,sidebar.brand.name, andconversation.hero.brand.mark) usepriority: -1to override the official brand. The smallest numeric value is rendered with priority. - Synchronizing source modifications: If you modify
lib/client.jsand the copy in the profile’snode_modulesis not updated, you must rundsh plugin addagain or manually synchronize the files.