The Web UI of DeepSeek Harness (DSH) supports configuration-based appearance adjustments, but directly modifying style files is not only tedious but also hard to maintain. The dsh-theme plugin provides a configurable skin system, encapsulating color palettes, fonts, and image slots into configuration items. It includes two built-in preset themes and does not modify DSH source code.

Plugin Purpose

This is a “skin” plugin for the DeepSeek Harness Web UI, maintained by developer naniwet. Its core value is: turning complex style adjustments into configuration file changes. You only need to adjust the YAML configuration to switch the entire UI, without modifying DSH source code.

Core Features

  • Configurable Skin: Color palettes, fonts, and image slots are all configurable.
  • Built-in Presets: Includes two presets: Code Geass and SPY×FAMILY.
    • Code Geass: Uses gold #c9a227 and dark red #a01c26, with Song/serif fonts.
    • SPY×FAMILY: Uses forest green #2f5d50 and rose red #d4788a, with PingFang/rounded sans-serif fonts.
  • Complete Coverage: Covers all UI surfaces, including background, sidebar, buttons, message bubbles, scrollbars, and more.
  • Local Storage: Settings are stored locally, without modifying DSH configuration documents.
  • Non-invasive Uninstall: When the plugin is uninstalled, styles are automatically removed and the default UI is restored.

Installation

Install the plugin using the official command:

dsh plugin --profile web add /path/to/dsh-theme

Note: If you install a local directory using link:, dependencies are not installed automatically. You must manually run npm install in the plugin directory; otherwise, profile startup will fail.

Configuration and Usage

  1. Enable the Plugin: Run the installation command above.
  2. Switch Skin: Go to Settings → General in the DSH Web UI, and choose a preset in the skin option (such as Code Geass or SPY×FAMILY). The selection takes effect immediately, and the browser remembers the preference.
  3. Customize Configuration: Copy the preset file to $DSH_HOME/profiles/web/cordis.patch.yml. Modify the image paths or palette values in it. Note: The config block replaces the entire entry configuration rather than merging key by key, so all required keys must be preserved.

Notes and Limitations

  • border9Slice Behavior: This setting only draws decorations for the four corners; it is not a complete border.
  • Sidebar Collapse: When the sidebar is collapsed, character art is hidden.
  • Icon Matching Mechanism: Built-in icons are matched by substring matching CSS module class names. If upstream renames the class names, matching may fail.
  • active Configuration: The active setting only determines the initial view before the user makes a selection. After switching skins, the user selection takes precedence.
  • Image Source and License: The fan art bundled with the plugin is AI-generated, unofficial content, and is not covered by the MIT License.
  • Permission Scope: Images are served by the host process; the browser does not require filesystem access permissions.