DSH Eye-care Theme

August 17, 2026 · View on GitHub

English | 简体中文

A customizable eye-care palette plugin for DeepSeek Harness Web. It uses the supported DSH Theme Service and public --dsw-* tokens; it does not query product DOM nodes or depend on product CSS selectors.

Keywords: DeepSeek Harness · DSH · DeepSeek · harness plugin · Cordis plugin · web UI theme · eye-care · color scheme · accessibility

Verified with DeepSeek Harness 0.1.0-rc.6.

Features

  • 11 coordinated palettes: 4 light and 7 dark.
  • Instant palette switching with browser-local persistence.
  • Common controls for surfaces, text, borders, status colors, Markdown, message bubbles, and scrollbars.
  • Advanced JSON editor for arbitrary public --dsw-* token overrides.
  • Enable, disable, and reset controls.
  • Automatic cleanup through the Theme Service disposer.

Palettes

LightDark
Soft Light / 柔和亮色Soft Dark / 柔和深色
Frost / 霜白青Low Blue / 低蓝光深色
Paper Gray / 纸张灰Deep Teal / 深海青
Mist Blue / 雾蓝Forest Night / 森林夜
Midnight Ink / 午夜墨蓝
Sakura Ink / 樱墨
Graphite / 石墨灰

Each palette coordinates the page background, layered surfaces, sidebar, input, primary and secondary text, borders, accent and status colors, code blocks, message bubbles, and scrollbars.

Requirements

  • DeepSeek Harness with the web profile.
  • dsh and pnpm available on PATH.
  • GitHub access from the machine running DSH.

Install

Install the latest version from GitHub:

dsh plugin --profile web add "github:Cocowwy/dsh-plugin-eyecare-theme"

Equivalent explicit Git URL:

dsh plugin --profile web add "git+https://github.com/Cocowwy/dsh-plugin-eyecare-theme.git"

For a reproducible install, pin a release tag:

dsh plugin --profile web add "github:Cocowwy/dsh-plugin-eyecare-theme#v0.2.0"

After installation:

  1. Stop the currently running dsh web process.
  2. Start dsh web again from your workspace.
  3. Refresh the existing Web GUI.
  4. Open Settings > 护眼主题.

A browser refresh alone does not reload the Web profile's plugin set.

Update

For an unpinned GitHub installation:

dsh plugin --profile web update dsh-plugin-eyecare-theme

Then restart dsh web and refresh the page. If installed from a tag or commit, remove it and install the desired new ref explicitly.

Uninstall

Remove the package by its manifest name:

dsh plugin --profile web remove dsh-plugin-eyecare-theme

Restart dsh web and refresh the page. The Theme Service override is removed automatically when the plugin is unloaded.

The saved browser preference is intentionally retained, so reinstalling on the same DSH origin restores the previous palette. For complete cleanup, delete this browser storage key:

dsh-plugin-eyecare-theme.config.v1

Advanced Token Overrides

The advanced editor adds custom values on top of the selected preset. Keys must be public DSH theme tokens beginning with --dsw-, and values must be CSS strings:

{
  "--dsw-alias-bg-base": "#1b1e1f",
  "--dsw-alias-label-primary": "rgb(215, 220, 216)",
  "--dsw-alias-border-l2": "rgba(209, 221, 214, 0.12)"
}

Precedence is:

DSH built-in theme -> selected preset -> advanced overrides

Use 重置覆盖 to discard advanced and common-field overrides while keeping the selected preset.

Persistence

Configuration is stored in origin-scoped browser localStorage under:

dsh-plugin-eyecare-theme.config.v1

It is specific to the browser profile and exact DSH origin. Changing the browser, hostname, protocol, or port creates a separate preference store.

DSH 0.1.0-rc.6 exposes a fixed Host settings namespace allowlist. Third-party plugins cannot add their own writable namespace, so this plugin intentionally uses browser storage instead of the Host settings API.

How It Works

The Client plugin calls:

ctx.theme.overrideTokens('dsh-plugin-eyecare-theme', overrides)

Every token supplies both light and dark values. Replacing a palette disposes the previous override layer first, and plugin teardown invokes the final disposer. The product UI remains responsible for rendering the resulting Theme Snapshot.

Troubleshooting

The settings page is missing

Confirm the plugin is installed in the Web profile:

dsh plugin --profile web why dsh-plugin-eyecare-theme

Then restart dsh web and refresh the page.

Git installation reports a blocked build

Follow the exact allowBuilds instruction printed by pnpm in the Web profile's pnpm-workspace.yaml, then rerun the same install command. This plugin has no build or prepare script, but transitive tooling policies can vary.

The palette does not persist

Confirm that browser privacy settings allow localStorage and that the page still uses the same origin.

The old palette remains after uninstall

Restart dsh web and refresh the page. Delete the storage key above only if the saved preference should also be removed.

License

MIT