Introduction¶
When developing agents or chatting in DeepSeek Harness (DSH) for a long time, the interface often sticks to the default theme: fully functional, but visually monotonous. Changing the system light/dark mode only adjusts the color scheme; it is hard to switch to pixel art, terminal green text, retro panels like early QQ, or full-page gradient backgrounds. Modifying CSS yourself risks conflicts with the Harness theme service, and it is easy for it to become invalid after upgrades.
dsh-skin-switcher follows the official Client plugin route: it adds a palette entry in the left sidebar. Opening it reveals a “Style Wall”; selecting a card applies the skin globally to the application; clicking “Default Appearance” reverts to the original. Implementation-wise, it uses token overlays and disposable style injection, relying on no extra npm packages, making it suitable for users who just want to change the look without forking the frontend.
What is it¶
- Repository / Directory Name:
BXCQ/dsh-skin-switcher(Community directory entry:bxcq/dsh-skin-switcher) - Package Name:
@local/dsh-skin-switcher(package.jsonversion 1.3.0, license MIT, maintainer BXCQ) - Category: Fun Skins; Pure Web Client capability, Host side is empty implementation
- Summary: Zero-dependency sidebar plugin providing 11 overall visual styles and 1 “Default Appearance” option for DeepSeek Harness Web/GUI; switching applies globally to the application, and preferences are persisted.
The community plugin directory is at skillhub.cn, and the source code is on GitHub. The directory site has no official affiliation with DeepSeek / Fangzhuang; the DSH ecosystem is “everything is a plugin”; it is recommended to check the source code and license before installing. The plugin runs with the current dsh process permissions; installing is equivalent to trusting the repository author.
Core Features¶
Eleven Styles + Default Reversion¶
The styles listed in the README are as follows (Item 12 is Harness’s native appearance):
| Style | ID | Feel (excerpt from docs) |
|---|---|---|
| Pixel | pixel |
Warm paper background, hard shadows, scanlines, right angles, monospaced font |
| Terminal | terminal |
Near-black green text, no rounded corners, no shadows, scanlines |
| Paper | paper |
Off-white background, thin black borders, serif headings |
| Aurora | aurora |
Deep blue-purple background, glass layers, large rounded corners, soft glow |
| Candy | candy |
High saturation macaron colors, extra-large rounded corners, capsule buttons |
| QQ Classic | qq |
Early QQ: Sky blue gradient, 98-style 3D borders, Tahoma + Songti |
| Sunset | sunset |
Apricot-orange → Rose-pink → Violet warm gradient |
| Ocean | ocean |
Cyan → Sky blue → Indigo cool gradient |
| Cyber Neon | cyber |
Near-black purple background, Cyan/Magenta glow, monospaced font |
| Mint | mint |
Mint green → Cyan → Light blue |
| Mist | mist |
Neutral gradient from cool grey to pale purple |
| Default Appearance | (Option in panel) | Restore Harness native colors, rounded corners, and fonts |
Planar styles mainly rely on 14 alias tokens (one set for light/dark each) to override colors; rounded corners, shadows, fonts, scanlines, etc. are injected via CSS in the package. Gradient styles and QQ Classic draw gradients on the html canvas, using semi-transparent surface tokens to give the panel a frosted glass effect; the right-side dock and floating document windows also draw matching fixed canvases to avoid text obscuration caused by semi-transparent backgrounds.
Relationship with Native Theme¶
- Colors are applied via the Client
themeservice’stheme.overrideTokens('@local/dsh-skin-switcher', tokens), stacking on top of the current theme, not modifying the theme registry; Light/Dark/System settings in preferences can still be switched. - When switching styles, the previous
styles.insertinjected stylesheet is destroyed to avoid leaks. - Gradient styles subscribe to
theme/changeand redraw with color scheme changes; if the theme service is missing, it degrades toprefers-color-scheme, with diagnostic information left in the console.
Persistence¶
The selected style is written to localStorage and a cookie named dsh_skin; the Cookie scope is by hostname, so preferences are retained even when DSH changes ports on startup.
Installation & Enablement¶
In an environment with a configured DSH desktop profile, use the command given in the README (do not manually concatenate other dsh plugin add forms based on the repository name):
dsh plugin --profile desktop add git+https://github.com/BXCQ/dsh-skin-switcher.git
After installation, refresh the page (F5). A palette icon will appear in the left sidebar (after icons related to Plugins / Schedules / Context, as documented, fixed at approx. position 30).
When github.com:443 is blocked, use:
dsh plugin --profile desktop add git+ssh://git@github.com/BXCQ/dsh-skin-switcher.git
You can also clone the repository locally and fill in the absolute path of that directory in the plugin manager (consistent with the README).
Typical Usage¶
- Click the palette icon in the left sidebar to open the style panel.
- Click any style card; the entire application changes skin immediately (cards themselves also preview in real-time).
- To restore, click “Default Appearance”.
- Next time you open the DSH Web interface on the same host, the previous selection will be restored automatically.
Uninstall: Close or uninstall @local/dsh-skin-switcher in the “Plugins” page; before uninstalling, it reverts to the default appearance, and the overlay is destroyed when the Client ends.
Applicability & Notes¶
Who is it for
- Users who use DSH Desktop Web GUI for a long time, want a distinct interface or mood-based skin switching, and do not want to maintain private CSS.
- Users who need to experience pixel, terminal, paper, aurora, candy, QQ retro, and various gradient skins without breaking Light/Dark mode switching.
Known Limitations (from README)
- Few hardcoded color areas (e.g., some code highlighting, Markdown inline colors) do not change with tokens, which falls within the boundaries of the Harness theme mechanism.
- Gradients are drawn on the
htmlcanvas: if an area has its own opaque non-token background, the underlying gradient might not be visible, but the semi-transparent surface tones will still take effect. - Pure visual presentation has not undergone browser screenshot regression testing; logic and slot behavior are covered by
node test/harness.mjs(75 assertions).
If developers need to add styles: In client.js, supplement light/dark palettes, SKINS items, and locale text according to the README; for gradient styles, use gradientChrome and provide bgImage in preview.
Local Verification (inside repository):
node test/harness.mjs
Conclusion¶
dsh-skin-switcher turns skin switching into a panel in the sidebar: eleven styles with one-click switching, default appearance reversion, and preference persistence across ports; implementation-wise, it respects the Harness theme service rather than replacing it. To try it, check the entry info from the community directory; installation and source code follow GitHub.
- Directory page: https://www.skillhub.cn/plugins/BXCQ/dsh-skin-switcher
- GitHub: https://github.com/BXCQ/dsh-skin-switcher