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:

  1. Uses dsh.bundle.patch to point to cordis.patch.yml, placing the plugin into the profile’s bundle layer.
  2. Declares browser-side dependencies and the ./client entry through dsh.client.
  3. The client registers the rhine-lab-light theme.
  4. Mounts the stylesheet and brand slots.
  5. Listens for theme/change to 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.patch points to cordis.patch.yml, declares the plugin line, and places the plugin into the profile’s bundle layer.
  • Client dependencies: dsh.client declares browser-side dependencies and the ./client entry.
  • Theme registration and mounting: The client registers the rhine-lab-light theme, mounts the stylesheet and brand slots, and listens for the theme/change event to remain applied.

Notes

  • Brand slot priority: The three brand slots (sidebar.brand.mark, sidebar.brand.name, and conversation.hero.brand.mark) use priority: -1 to override the official brand. The smallest numeric value is rendered with priority.
  • Synchronizing source modifications: If you modify lib/client.js and the copy in the profile’s node_modules is not updated, you must run dsh plugin add again or manually synchronize the files.

More Information