Introduction

The core design philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” In practical use, the default UI color scheme may not match personal preferences, while manually modifying the host source code is not only cumbersome but may also cause compatibility issues after host upgrades. dsh-skin-center addresses this pain point by providing an official plugin-based theme customization solution, allowing UI appearance to be changed through runtime injection without touching the host source code.

Plugin Overview

dsh-skin-center is an official DSH plugin maintained by bruce-hmz. It provides skin functionality through additive installation, retaining DSH’s native appearance by default, with new skin options listed below the native options. The plugin adopts a dual-side architecture between the host side and the browser side, achieving zero source-code changes, zero first-screen flash, and real-time synchronization across multiple tabs.

Installation and Enablement

Before installing, make sure your DeepSeek Harness version is 0.1.5-rc.2 or later.

Use the CLI to install the plugin:

dsh plugin --profile web add dsh-skin-center

After installation, start Web mode:

dsh web

Open http://127.0.0.1:3080 in a browser and go to the Settings -> General Settings -> Skins page to see the skin list. Click to switch skins.

Core Features

The plugin mainly includes the following capabilities:

  1. 35 built-in skins: Includes 21 ACG-style skins (such as QQ Retro, Genshin Impact, Naruto, and Wuthering Waves) and 14 classic developer color schemes (such as Gruvbox, Nord, Dracula, Tokyo Night, and Catppuccin).
  2. Zero host source-code changes: It does not overwrite any host files or patch the source code. UI hooks are stamped by the plugin during browser runtime, so the plugin remains largely unaffected even if the host is upgraded.
  3. Additive installation: It retains DSH’s native appearance (light/dark/follow system) by default, with skin options appearing below as supplemental choices. After installation, “Default” is selected by default, without changing the existing appearance.
  4. Skin package import/export: Supports exporting the current skin as a JSON file, or importing and using a JSON file. This makes sharing skins within communities easier.
  5. One-image customization: Supports uploading one PNG, JPG, or WebP image as a skin background. The system automatically performs 96px color sampling and WebP encoding.
  6. Real-time multi-tab synchronization: Using the BroadcastChannel mechanism, when one tab switches skins, all open tabs update in real time.
  7. Zero first-screen flash: The skin selection is persisted in ~/.dsh/skins/selection.json, and the host inlines the first-screen color scheme in the HTML to avoid visual flickering during switches.

How It Works and Data Storage

The plugin adopts a “host-side” and “browser-side” architecture:
* Host side: Responsible for registering skin routes, reading and writing background images, checking for updates, and inlining first-screen color-scheme attributes in the HTML.
* Browser side: Loaded through the official browser manifest, responsible for inserting settings rows, stamping the DOM UI, building title-bar DOM islands, and cross-tab broadcasting.

Skin data and configuration are stored in the user directory:

~/.dsh/skins/

Notes

  1. License: The code follows the MIT License, but third-party assets (skin images) have separate licenses. Please verify asset sources before commercial use.
  2. Desktop installation: The desktop version no longer supports CLI plugin installation. Search for dsh-skin-center in the app’s built-in “Plugin Management” interface to install it.