DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Deepseek Harness Background — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

deepseek-harness-background

Deepseek Harness Background

适用于 DeepSeek Harness 网页 GUI 的自定义背景图片插件:上传本地图片或粘贴图片 URL,将其显示在整个应用界面后方,并可调节不透明度、遮罩、面板透明度和磨砂玻璃模糊效果。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add deepseek-harness-background@0.5.4
README兼容性版本
Background settings row with live preview

兼容性与来源证明

Deepseek Harness Background 以 deepseek-harness-background 发布,当前版本为 0.5.4。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.5.4stable
2026/9/9
0.5.3stable
2026/9/3
0.5.2stable
2026/9/1
查看其余 10 个版本收起版本
0.5.1stable
2026/8/31
0.5.0stable
2026/8/29
0.4.2stable
2026/8/26
0.4.1stable
2026/8/26
0.4.0stable
2026/8/25
0.3.2stable
2026/8/23
0.3.1stable
2026/8/23
0.3.0stable
2026/8/22
0.2.1stable
2026/8/21
0.2.0stable
2026/8/20

相关插件

正在加载相关插件…

最新版
0.5.4
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
332.9 kB
文件数
8
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 6
周下载
360
安全扫描
✓ v0.5.4 扫描通过
最近提交
2026/9/17
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

README

DeepSeek Harness Background

DeepSeek Harness Background

English | 中文

A custom background image plugin for the DeepSeek Harness Web GUI (dsh web): upload a local picture, or paste an image URL, and render it behind the whole app surface with adjustable opacity, readability scrim, panel transparency and frosted-glass blur — everything live-previewed inside the settings panel and committed automatically on release.

The look (fixed wallpaper layer + theme-aware scrim + translucent glass panels driven by --dsw-* design tokens) is modeled on the community dsh-wallpaper-engine implementation.

demo: upload a wallpaper, the whole app turns to frosted glass, then jump between turns on the timeline

Screenshots

HomeCustom background on the home screen
ConversationCustom background behind the conversation
SettingsBackground settings row with live preview

Features

  • Local upload — pick a JPG / PNG / WebP / GIF from your computer; the plugin stores it under the harness home and serves it over a same-origin route (admitted only when the declared MIME, detected signature and extension all agree).
  • Paste a URL — drop an http(s) image link and press Enter.
  • In-panel live preview — a preview surface at the top of the row renders the image + scrim + a frosted glass bubble; dragging any slider repaints it instantly.
  • Stepped sliders — ratio controls snap in 5% steps, blur radii in 1/2px steps; dragging only repaints, release commits (one write per gesture, no jank).
  • Five controls — wallpaper opacity, readability scrim, panel opacity, frosted-glass blur, and wallpaper blur.
  • Fit modes — cover (fill, crop) or contain (whole image).
  • Theme-aware scrim — the light theme uses a white veil (lifts the art so dark text keeps contrast); the dark theme automatically switches to a black veil (dims the art so light text keeps contrast).
  • Frosted glass (whitelisted) — while a background is active, only the surfaces that float as small cards over the wallpaper turn into translucent glass (specular sheen + backdrop-filter): the composer card and message bubbles, code blocks / terminal / diff / tool-IO cards / skill & MCP call cards and inline code, the agent task strips and their takeover panels (approval / question / plan review), the chrome buttons (new session, composer plus, scroll-to-bottom), the load-earlier history button, the subagent lineage popover, the sidebar build badge, and the home hero "preview" badge — every glassed surface carries the full recipe (fill + sheen + blur), never translucency without frost. Reading surfaces — dialogs, the settings UI, menus, tooltips, toasts, hover fills and every accent (the send button stays blue) — keep their official opaque paints so nothing legible turns washy (the one documented exception: the turn rail's hover preview, which is rail chrome over the art and joins the glass sheet). The blur radius is driven by the glass-blur slider; panelOpacity at 100% restores the official paints on the whitelisted list too.
  • Third-party glass registry — any plugin can register its own panels into the same frosted-glass system through the published bridge (window.__DSH_BACKGROUND_GLASS__ global + the dsh-background-glass:ready event): token mode adds the missing sheen + blur chain when the panel already fills with an overridden --dsw-* token, fill mode takes the fill over as well; every rule sits under the gate so it toggles with the glass automatically. Consumers take zero dependencies and degrade gracefully when this plugin is absent; the whole bridge tears down with it. See .

Version compatibility

Plugin releaseSupported dsh versions
Current (≥ 0.5.3)dsh 0.1.2-rc.1 and 0.1.3-alpha.x (verified on alpha.2), plus 0.1.5-alpha.1
0.5.2dsh 0.1.1-rc.2 and 0.1.2-alpha.1 ~ alpha.5

⚠️ On older dsh (0.1.1-rc.2, 0.1.2-alpha.x or earlier) install an older plugin release (dsh plugin --profile web add deepseek-harness-background@0.5.2); this plugin no longer adapts to the pre-rc.1 kernels.

Install

The plugin is a standard out-of-tree dsh bundle, published on npm:

dsh plugin --profile web add deepseek-harness-background

From a local checkout (development):

dsh plugin --profile web add /path/to/deepseek-harness-background

From a source checkout:

pnpm dsh plugin --profile web add /path/to/deepseek-harness-background

Or from git:

dsh plugin --profile web add github:<you>/deepseek-harness-background#<commit>

Restart to load it:

dsh --profile web

Usage

  1. Start the Web UI (dsh --profile web) and open it in a browser.
  2. Open Settings (bottom-left) → General → the Custom Background row (in the same area as the Appearance row).
  3. Upload an image or paste a URL — the background applies immediately and the preview surface above updates in sync.
  4. Tune the controls — sliders snap in steps and commit on release:
ControlMeaning
不透明度 / Opacity0..100% image opacity (5% steps); lowering it fades the wallpaper toward the surface.
遮罩 / Scrim0..95% readability veil over the image (5% steps); white in light mode, black in dark mode.
面板不透明度 / Panel opacity0..100% surface transparency (5% steps); at 100% the official panels stay opaque (no glass).
毛玻璃模糊 / Glass blur0..40px backdrop-filter blur on the translucent surfaces (1px steps).
壁纸模糊 / Wallpaper blur0..60px blur of the wallpaper image itself (2px steps).
填充方式 / Fitcover or contain.
会话时间线 / Timelineon/off switch for the conversation timeline (default on). On dsh ≥ 0.1.2-rc.1 the row is labelled 会话时间线增强 / enhancement: the official rail stays and this only improves its behaviour (smooth jumps for loaded turns); turning it off restores stock behaviour.
  1. 清除背景 removes the background and restores the stock look.

How it works

  • The settings row lives in the official General settings section (settings.general.item slot), next to the Appearance row. Its chrome uses only --dsw-alias-* design tokens (buttons / pills / segmented control / slider track match the official shell); sliders are native input[type=range] with 5% / 1–2px steps and release-commit.
  • The plugin's own host routes (/api/bg-wallpaper/*: settings, upload, image/<id>) read/write the section and serve uploads with same-origin + size caps + MIME/signature checks + a path-escape fence. A custom route family is used because the api-proxy settings allowlist does not expose third-party namespaces over the settings RPC.
  • The background is drawn as a fixed z-index:-2 wallpaper layer plus a z-index:-1 scrim on body, toggled by the data-dsh-bg attribute; the scrim switches white/black by data-ds-dark-theme in the injected stylesheet. Frosted glass is whitelist-scoped: only the whitelisted surfaces get --dsw-* surface-token overrides, while everything else is painted by explicit data-dsh-bg-glass-gated rules carrying the FULL recipe (fill + sheen + blur chain): the three chrome buttons, the load-earlier history button, the composer dock family (agent task strips TodoPanel / GoalBar / QueueDock and their takeover panels — approval, question, plan review — whose tokens turn translucent and need the blur added), the subagent lineage popover, the home hero preview badge and the sidebar build badge — every other official token and reading surface (menus, dialogs, tooltips, toasts) stays untouched.
  • The timeline is registered into the conversation.input.dock slot (per-session lifecycle). Detection is a capability check on the slot props rather than a version compare: the official rail is rendered from the very index ui-chat publishes as a session hook (useChat(s => s.navigation.items()), dsh >= 0.1.2), so the presence of that hook is the presence of the official rail — and it survives pre-releases, forks and deployments that mount a different conversation target. With the hook the plugin renders nothing and intercepts clicks on the official rail's loaded marks in the capture phase (React 18 dispatches onClick from the root container during the bubble phase, so a capture listener on the rail runs first and stopImmediatePropagation() keeps the stock handler from ever firing) — resolving the click index against the merged ladder the kernel actually renders (turnOutline outline + loaded window, mirroring mergeTurnRailItems in ui-chat), with marks outside the loaded window (no anchor key) left to the kernel's own load-through jump — and while one of those kernel jumps is still paging (a mark pulses ) the plugin stands down entirely, because the kernel's loaded branch cancels its own pending jump before landing and an interception would bypass that cancellation. The official hover preview joins the glass sheet under the wallpaper gate (same explicit fill recipe as the composer card), and the tick column carries the DeepSeek-web edge dissolve. Supported baseline: dsh >= ; older dsh (0.1.2-alpha.x and 0.1.1-rc.2 or earlier) installs an older plugin release (see Version compatibility).

Development

pnpm install          # first time; runs prepare (build)
pnpm run typecheck    # tsc
pnpm test             # vitest contract tests
pnpm run build        # tsdown: lib/index.js (host) + lib/client.js (browser bundle)
deepseek-harness-background/          # the plugin repo (package name stays the npm-style id)
├── package.json          # dsh.bundle.patch + dsh.client.inject declarations
├── cordis.patch.yml      # inserts the deepseek-harness-background row into the web roster
├── tsdown.config.ts      # official clientBundle preset
├── src/
│   ├── index.ts          # host half: ui-background namespace + API routes
│   ├── routes.ts         # /api/bg-wallpaper/{settings,upload,image/<id>}
│   ├── schema.ts         # host-side schemastery schema
│   ├── settings.ts       # constants/types shared with the client
│   ├── harness-home.ts   # $DSH_HOME / ~/.dsh resolution
│   └── client/
│       ├── index.ts          # painter lifecycle + settings row registration
│       ├── backdrop.ts       # fixed wallpaper layer + scrim + glass surface + preview vars
│       ├── background-css.ts # injected stylesheet (layers, glass, light/dark scrim, variables, read_image card)
│       ├── glass-registry.ts # third-party glass registry (window bridge + gated rule synthesis)
│       ├── timeline/
│       │   ├── index.tsx            # dock entry: official-rail capability probe + re-exports
│       │   ├── official-enhance.tsx # dsh>=0.1.2-rc.1: smooth-jump interception for loaded marks
│       │   ├── jump.ts              # shared jump engine (paging + glide)
│       │   ├── rail-pointer.ts      # frame-rail tick geometry & full-ladder merge
│       │   └── types.ts             # shared shapes
│       ├── SettingsRow.tsx   # the General-settings row (preview surface + stepped sliders)
│       ├── SettingsRow.module.css # row styles (official tokens)
│       ├── settings-client.ts# fetch transport (read/write/upload)
│       └── locales.ts        # zh/en copy
└── tests/                  # schema, routes, apply (painter), settings-row contracts

Activity

HaoyueQin/deepseek-harness-background GitStock K-Line Chart

License

MIT

data-dsh-bg-glass
docs/GLASS_API.md
  • Conversation timeline — the DeepSeek-web turn-navigation rail at the right edge of long conversations, one tick per question, with a hover/focus preview of that turn's prompt. Two frontends, one backend, chosen by what the running kernel supports:
    • dsh ≥ 0.1.2-rc.1 (enhancement) — the kernel ships this rail already, so the plugin renders nothing of its own and only fixes its behaviour (a capability check on the rail's own published metrics, never a version compare). Clicks on a loaded mark become a smooth glide instead of the stock instant jump (ease-in-out, distance-paced, cancelled the moment the reader scrolls, prefers-reduced-motion places directly). The rail's full ladder (turnOutline outline + loaded window) leaves unloaded marks to the kernel's own loadThrough jump — and while one of those kernel jumps is still paging (the mark pulses aria-busy) the plugin stands down entirely. Because the official hover preview card paints an opaque fill, it joins the glass sheet under the wallpaper gate instead (same explicit-fill recipe as the composer card, driven by the glass-blur slider); the tick column carries the DeepSeek-web edge dissolve (paint layer only, hit-testing untouched). The rail's active-mark state stays the kernel's own — the glide scrolls the real scrollport, so the stock scroll handler keeps updating it and the persisted scroll position. The bottom-follow state is detached one frame before the glide (streaming growth / turn-end re-renders cannot yank it back to the floor). Toggle it off with the timeline switch in the row.
  • Persisted in the official settings document ($DSH_HOME/settings.yaml), waits out restarts.
  • Clean teardown — disabling, clearing or uninstalling restores the original background exactly; the plugin only ever removes what it wrote.
  • aria-busy
    0.1.2-rc.1
  • The third-party glass registry (src/client/glass-registry.ts) publishes its bridge on client apply — before any repaint can race it: register({ plugin, selectors, mode }) is idempotent per (plugin, mode, selector) triple and synthesizes explicit body[data-dsh-bg-glass]-gated recipe rules into a dedicated <style data-plugin-css> tag; selectors are structurally validated first (no { } ; @ < > ,, no backslashes, 500-char cap) with per-selector warn-and-drop that never blocks valid siblings; disposing the client fiber retracts the whole bridge (stylesheet, entries, window key). Contract docs in docs/GLASS_API.md / GLASS_API.zh.md; behavior locked by tests/glass-registry.spec.ts.
  • Uploads live under $DSH_HOME/deepseek-harness-background/ (content-addressed ids). Switching to a new image or clearing the background deletes the superseded upload file, so the directory does not accumulate dead images in normal use. (An upload that is never saved into the section — e.g. the tab closes right after an upload — can leave one orphaned file behind.) Disable / uninstall leaves nothing behind.
  • 相关插件

    继续浏览 ui-customization 分类下经过校验的插件。

    Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。