deepseek-harness
starsstreaming/beautiCode为 DSH Web 与 Desktop 设置本地图片与 MP4 视频背景(也支持 Codex、Cursor、豆包、WorkBuddy):侧栏「背景」面板、可保存命名主题、声音开关、恢复上次背景、只留背景的摸鱼模式,以及 /bg、/bg-theme、/bg-clear 命令。
适用于 DeepSeek Harness 的液态玻璃主题:输入卡片、气泡、队列坞、菜单与侧边栏带 SVG 边缘折射;半透明 token 覆盖,色调、不透明度、模糊与折射强度都有实时滑块;壁纸可自定义或使用内置动态壁纸;桌面版另把会话顶栏并入系统标题栏,并补了全屏按钮。
简体中文 · README.zh.md
A frosted-glass rewrite of the DeepSeek Harness interface: real SVG edge refraction on the controls you touch, a wallpaper you choose, and a session bar that shares the window's own title bar instead of stealing a row of its own.
### 🤖 Written end-to-end by an agent
Every line of this plugin — the client bundle, the desktop chrome work, the smoke
tests and these docs — was written **autonomously by the DeepSeek V4.1 Flash agent
running inside the DeepSeek Harness desktop app**. No human-written code.
It worked the whole time inside the app it was theming: reading the harness's own
bundles to find real DOM anchors instead of guessing selectors, driving its own
edit → build → test → typecheck loop, and checking each change against the bundle
the running window was actually serving. See How this was built.
## ⚠️ Please use dark mode
This theme is designed for dark mode and it is the only mode it looks right in.
The whole point is translucent glass over your wallpaper — in light mode a
bright wallpaper leaves the glass washed out and the text on top of it hard to
read.
The theme does darken the light-mode secondary/tertiary greys to recover some
contrast, but that is a mitigation, not a fix. **If you use light mode, expect
readability to suffer.** Switching DSH to dark mode fixes it completely.
tabs on a second row, 76px tall. This theme moves the whole bar into the 40px system caption — same row as 应用菜单/编辑 and the window buttons — and lays it out as one line. You get that vertical space back: the transcript starts 40px from the top instead of 56px, and the tab buttons become small rounded buttons instead of oversized glass capsules.
all — the frameless caption only has minimize/maximize/close, no F11 or togglefullscreen accelerator is registered, and the main process never calls setFullScreen(true). The theme contributes a 28px button in the header that requests document fullscreen and toggles back out; the icon follows the state, and DSH's own fullscreen-aware layout takes over from there.
the strip is no longer a flat translucent rectangle.
(the panel DSH shows when it asks you to pick an option), the file preview that appears when you hover a row in the "已编辑 N 个文件" card, that card itself, and the question/answer receipt bubble in the transcript. Each gets a blur plus a glass fill at a readable opacity.
secondary / tertiary / caption greys are pushed one to two shades darker.
feDisplacementMap filter bendswhat is behind each surface at its rim, the way thick glass does. It rides the composer card, the send button, message bubbles, the queue dock, dialogs, menus and sidebar buttons. Strength is a slider — 0 turns it off, 1 is a full lens.
brightness, frost blur radius, edge refraction strength, and the code-block opacity. All of it applies live — no reload, no restart.
stock gear.
that send X-Frame-Options), a local HTML file, a local image, a local video, or the built-in animated demo wallpaper that works out of the box.
separate from the card frost, so you can keep the background soft while the glass stays crisp.
and opacity, plus a background wash toggle.
then the tabs, the "open in…" dropdown and the right-sidebar toggle all on one line.
as DSH ships it (an earlier version restyled it, which collided with other theme plugins), and hover styling is deliberately scoped to the surfaces this theme actually changes.
General / Model / Plugins, with live preview and a one-click reset.
the theme strips every token override, removes the wallpaper and turns off all frosted/lens rules at once, leaving no residue.
· · Desktop build — one row holds 应用菜单/编辑, the session title, 对话 / 轨迹, the "open in…" dropdown, the fullscreen button and the right-sidebar toggle · The Liquid Glass page: frost blur, edge refraction, glass colour, opacity, brightness and code-block opacity · A custom wallpaper under the glass, on the new-session screen · The built-in animated wallpaper · Composer card, edge refraction close-up · Transcript with glass bubbles · The Liquid Glass settings page ·
The desktop build uses its own profile, named desktop. It is created by the app on first launch, so quit the desktop app before installing:
dsh plugin --profile desktop add dsh-theme-liquid-glassThen start the app again.
dsh plugin add --profile web dsh-theme-liquid-glassRefresh the browser.
Compatibility — requires DeepSeek Harness ≥ `0.1.2-rc.1`, and supports
the 0.2.x runtime, which is what the desktop build ships. Both the web GUI
and the desktop app use the same client bundle: everything above is available in
both, with the desktop-only items marked as such. Harness versions before
0.1.2-rc.1 are not supported.git clone https://github.com/FAVKTOXIC/dsh-theme-liquid-glass
cd dsh-theme-liquid-glass
npm install
npm run buildThen link the directory into a profile. On Windows use a junction — a plain dsh plugin add "" can create a broken relative symlink and drop the plugin from the profile's bundles list:
dsh plugin remove --profile web dsh-theme-liquid-glass
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-theme-liquid-glass" `
-Target "<absolute-path-to-theme-source>" -Force
dsh plugin add --profile web dsh-theme-liquid-glassThe Liquid Glass page (Settings → Liquid Glass) has two groups: *Page Background* and *Input Card · Frosted Glass*.
Setting · What it does · Range enabled · Master switch — off removes every visual change · on / off wallpaper.kind · Wallpaper source · none / url / html / image / video / local wallpaper.value · URL, or a path relative to the wallpapers directory · text wallpaper.proxy · Route web URLs through the host proxy (bypasses X-Frame-Options) · on / off wallpaper.muted · Mute video wallpapers (autoplay policy blocks unmuted) · on / off demo.speed · Demo wallpaper animation speed · 0.1 – 4 demo.blobs · Demo wallpaper blob count · 1 – 6 demo.colorCycle · Demo wallpaper colour cycling (0 = static) · 0 – 10 demo.blur · Demo wallpaper blob blur · 10 – 140px demo.opacity · Demo wallpaper blob opacity · 0.2 – 1 demo.wash · Demo wallpaper background gradient wash · on / off glass.frosted · Frost (backdrop blur) on card / bubbles / dock · on / off glass.blur · Frost blur radius · 0 – 60px glass.bgBlur · Wallpaper blur, independent of the card frost · 0 – 60px glass.refraction · Edge refraction strength · 0 – 1 glass.tint · Glass colour · hex glass.tintOpacity · Glass colour opacity · 0 – 1 glass.glassBrightness · Material brightness of the tint · 0.2 – 1.6 glass.brightness · Wallpaper brightness · 0.2 – 1.6 glass.codeBlockOpacity · Code-block background opacity, independent of the tint · 0.2 – 1 glass.toolTextColor · Tool-call text colour (empty = default) · hex
Settings live in localStorage under dsh-liquid-glass.settings, so they are per browser — a different browser or cleared site data starts from defaults. See *Why localStorage* below.
· Harness · ≥ 0.1.2-rc.1, including the 0.2.x desktop runtime Surfaces · Web GUI and the desktop app (same client bundle) Peer packages · the five @deepseek-ai/dsh-client-* packages, declared as optional peers over ^0.1.2-rc.1 \ · \ · ^0.2.0-0 Model-selection list · left to DSH. An earlier release restyled it; other theme plugins style the same menu and the two overwrote each other, so the theme backed off Hover styling · scoped to the composer, queue dock, dialogs/menus, view tabs and sidebar only — it will not restyle another plugin's controls Light mode · supported, but the glass reads washed out — see the note at the top DSH tooltip bug · known harness bug, reproduces without this theme: hovering the send button or the context-percentage button scrolled the page to the top. The theme works around it by switching container-type off on three composer/transcript boxes, which costs four narrow-window layout tweaks — see CHANGELOG.md Settings storage · localStorage (per browser)