StarryHui/dsh-custom-background
vibe coding初作品,自定义 DeepSeek Harness(DSH)WebUI 背景插件。在设置侧边栏「agent 预设」下方提供「背景」页面,全部调整实时生效,刷新 / 重启后保持。
catalog 简介 / catalog descriptioncatalog description:DSH 自定义 WebUI 背景插件
编辑导读Editor's Brief
## 核心特性
- 该插件在 DeepSeek Harness WebUI 设置侧边栏的 agent 预设区域下方添加“背景”页面。
- 它可以将本地图片文件夹作为图库,并扫描 png、jpg、webp、gif、bmp、avif 和 svg 文件,用于缩略图选择或随机选择。
- 预览裁剪框可以从四个角或四条边调整大小,并可在框内移动,同时背景实时更新。
- 背景渲染支持水平与垂直缩放、位置调整、背景不透明度、面板不透明度、高斯模糊,以及 cover、contain 或 fill 显示模式。
- 多张图片可以以交叉淡入淡出方式轮播,并支持按图库顺序定时切换。
## 使用场景
- 用户可以从本地文件夹中选择图片,作为持久保留的 WebUI 背景。
- 用户可以从扫描出的图库中选择随机显示图片,而不是固定使用单个文件。
- 用户可以调整不透明度、模糊和显示模式,以改变背景在界面面板后面的呈现效果。
## 技术细节
- 配置存储在 settings.yaml 的 background 命名空间下,并在刷新或重启后保留。
- 该插件在 /dsh-bg/state、/dsh-bg/save 和 /dsh-bg/css 暴露同源路由,用于读取状态、保存状态和提供 CSS。
- 这种基于路由的配置路径不依赖官方 settings RPC 命名空间白名单。
- 仓库包含 src 中的源代码文件和 lib 中已提交的构建产物,因此可以通过仓库安装而无需本地构建步骤。
## 注意事项
- 该插件需要已安装 DeepSeek Harness 环境,并且 dsh web 可以正常启动。
- 仓库安装用于开发调试,需要 Node.js 22 或更高版本、pnpm,并且在 src 变更时需要在 DSH 源码检出环境中重新构建。
- 在 pnpm 11 或更高版本中,默认的 minimumReleaseAge 限制可能会隔离新发布的版本,除非将 minimumReleaseAge 设置为 0 或将该包排除。
## Core Features. Need base claims strictly README. Need categories exist web-ui, so Use Cases. Need objective no praise. Need count words 250-450. Need ensure bullets one sentence each. Need maybe 3-5 Core, 2-4 Use Cases, 2-4 Technical, 1-3 Notes. Need total words. Let's draft and count. Need English only. Claims from README: custom background plugin for DeepSeek Harness WebUI. Settings sidebar under agent presets provides Background page. Changes real-time, persist after refresh/restart. Gallery background local folder scans images png/jpg/webp/gif/bmp/avif/svg, thumbnails and random. Crop frame drag corners/edges move, live preview. Effects: horizontal/vertical scale, position, background opacity, panel opacity, gaussian blur. Display modes cover/contain/fill. Multi-image crossfade carousel, optional timed by gallery order. Config persisted in settings.yaml background namespace. Install npm command. Requirements: DSH installed, dsh web. npm install no extra; repo install needs Node.js >=22 and pnpm. Technical: plugin creates same-origin routes /dsh-bg/state, /dsh-bg/save, /dsh-bg/css to read/write background namespace, not rely on official settings RPC namespace whitelist. src source, lib build artifacts committed. Maybe notes: repo installation requires Node.js >=22 and pnpm, for development debugging. pnpm 11+ minimumReleaseAge may delay latest; set minimumReleaseAge 0 or exclude. Building from src requires DSH source checkout and commands, lib committed. Need avoid unsupported? all supported.
Need word count. Let's draft:
## Core Features
- The plugin adds a Background page under the agent presets area of the DeepSeek Harness WebUI settings sidebar.
- It can use a local image folder as a gallery and scans png, jpg, webp, gif, bmp, avif, and svg files for thumbnail selection or random selection.
- A preview crop frame can be resized from four corners or four edges and moved inside the frame while the background updates in real time.
- Background rendering supports horizontal and vertical scaling, position adjustment, background opacity, panel opacity, Gaussian blur, and cover, contain, or fill display modes.
- Multiple images can rotate with a crossfade transition, including optional timed switching according to the gallery order.
Words: The1 plugin2 adds3 a4 Background5 page6 under7 the8 agent9 presets10 area11 of12 the13 DeepSeek14 Harness15 WebUI16 settings17 sidebar18. It1 can2 use3 a4 local5 image6 folder7 as8 a9 gallery10 and11 scans12 png13 jpg14 webp15 gif16 bmp17 avif18 and19 svg20 files21 for22 thumbnail23 selection24 or25 random26 selection27. A1 preview2 crop3 frame4 can5 be6 resized7 from8 four9 corners10 or11 four12 edges13 and14 moved15 inside16 the17 frame18 while19 the20 background21 updates22 in23 real24 time25. Background1 rendering2 supports3 horizontal4 and5 vertical6 scaling7 position8 adjustment9 background10 opacity11 panel12 opacity13 Gaussian14 blur15 and16 cover17 contain18 or19 fill20 display21 modes22. Multiple1 images2 can3 rotate4 with5 a6 crossfade7 transition8 including9 optional10 timed11 switching12 according13 to14 the15 gallery16 order17. Total core 18+27+25+22+17=109.
## Use Cases
- Operators can assign a personal image collection as the persistent background of a DSH web profile.
- A shared deployment can use random gallery selection to change the displayed background without manual file replacement.
- A user can reduce visual contrast by adjusting panel transparency, background opacity, and blur behind interface elements.
Words: Operators1 can2 assign3 a4 personal5 image6 collection7 as8 the9 persistent10 background11 of12 a13 DSH14 web15 profile16. A1 shared2 deployment3 can4 use5 random6 gallery7 selection8 to9 change10 the11 displayed12 background13 without14 manual15 file16 replacement17. A1 user2 can3 reduce4 visual5 contrast6 by7 adjusting8 panel9 transparency10 background11 opacity12 and13 blur14 behind15 interface16 elements17. total 50. Running 159.
## Technical Details
- Configuration is stored under the background namespace in settings.yaml and remains after refresh or restart.
- The plugin exposes same-origin routes at /dsh-bg/state, /dsh-bg/save, and /dsh-bg/css for reading state, saving state, and delivering CSS.
- This route-based configuration path does not depend on the official settings RPC namespace whitelist.
- The repository includes source files in src and committed build output in lib, allowing repository installation without a local build step.
Words: Configuration1 is2 stored3 under4 the5 background6 namespace7 in8 settings.yaml9 and10 remains11 after12 refresh13 or14 restart15. The1 plugin2 exposes3 same-origin4 routes5 at6 /dsh-bg/state7 /dsh-bg/save8 and9 /dsh-bg/css10 for11 reading12 state13 saving14 state15 and16 delivering17 CSS18. This1 route-based2 configuration3 path4 does5 not6 depend7 on8 the9 official10 settings11 RPC12 namespace13 whitelist14. The1 repository2 includes3 source4 files5 in6 src7 and8 committed9 build10 output11 in12 lib13 allowing14 repository15 installation16 without17 a18 local19 build20 step21. total 68. Running 227.
## Notes
- Installation from the repository requires Node.js 22 or newer and pnpm, while npm installation has no additional stated requirements.
- Repository installation is described as development debugging, and changing src requires rebuilding in a DSH source checkout before copying new lib output back.
- With pnpm 11 or newer, the default minimumReleaseAge gate may isolate newly published versions unless minimumReleaseAge is set to 0 or the package is excluded.
Words: Installation1 from2 the3 repository4 requires5 Node.js6 227 or8 newer9 and10 pnpm11 while12 npm13 installation14 has15 no16 additional17 stated18 requirements19. Repository1 installation2 is3 described4 as5 development6 debugging7 and8 changing9 src10 requires11 rebuilding12 in13 a14 DSH15 source16 checkout17 before18 copying19 new20 lib21 output22 back23. With1 pnpm2 113 or4 newer5 the6 default7 minimumReleaseAge8 gate9 may10 isolate11 newly12 published13 versions14 unless15 minimumReleaseAge16 is17 set18 to19 020 or21 the22 package23 is24 excluded25. total 67. Overall 294. Good 250-450. Need one sentence each. Yes. Need no empty praise. Good. Need exact headings. Output only markdown. Need maybe avoid "Operators"? fine. Need categories web-ui use cases. Good.
Double-check claims: "Background page under the agent presets area" README: 设置侧边栏「agent 预设」下方提供「背景」页面. yes. "persistent background" config persists. yes. "shared deployment" maybe use case inferred but categories exist; must be typical use cases only if categories exist. Is it grounded? It says random selection, local folder. Shared deployment not explicit but use cases can be typical, but all claims should be grounded? "Base every claim strictly on README content; drop any claim with no data support." Use case "shared deployment" not in README. Could be unsupported. Need avoid unsupported. Use cases should be derived from features. Maybe:
- A user can select images from a local folder as the WebUI background.
- A user can choose random image display from the scanned gallery.
- A user can adjust opacity and blur to change the visibility of background and panel layers.
These are grounded. Need 2-4. Let's revise Use Cases to avoid unsupported. Words maybe lower.
Use Cases:
- A user can select images from a local folder as the persistent WebUI background.
- A user can choose random image display from the scanned gallery instead of fixing one file.
- A user can adjust opacity, blur, and display mode to change how the background appears behind interface panels.
Words: A1 user2 can3 select4 images5 from6 a7 local8 folder9 as10 the11 persistent12 WebUI13 background14. A1 user2 can3 choose4 random5 image6 display7 from8 the9 scanned10 gallery11 instead12 of13 fixing14 one15 file16. A1 user2 can3 adjust4 opacity5 blur6 and7 display8 mode9 to10 change11 how12 the13 background14 appears15 behind16 interface17 panels18. total 48. Similar. Grounded.
Need maybe "persistent" supported by refresh/restart keep. yes.
Technical Details: "same-origin routes" README: 同源路由. yes. "delivering CSS" inferred from /dsh-bg/css. OK maybe "serving CSS" but route name. Good.
Notes: "npm installation has no additional stated requirements" README: npm 安装方式无额外要求; from repo needs Node >=22 pnpm. Good. "Repository installation is described as development debugging" yes. "changing src requires rebuilding in DSH source checkout..." yes. pnpm note yes. Need maybe mention DSH web must start? Could be note: Requires installed DeepSeek Harness with working dsh web. But already have 3 notes. Could include instead of pnpm? Need 1-3. Current 3. Good. Maybe first note include DSH requirement? It says system requirements: installed DSH, dsh web normal. Could add but max 3. Could merge: "Installation requires a working DeepSeek Harness web profile, and repository installation additionally requires Node.js 22 or newer and pnpm." But current note omits DSH requirement. It's a caveat. Maybe replace first note:
- The plugin requires an installed DeepSeek Harness environment where dsh web starts normally.
But then repo requirements? Need include. Could have 3 notes:
1. The plugin requires an installed DeepSeek Harness environment where dsh web starts normally.
2. Installation from the repository requires Node.js 22 or newer and pnpm, while npm installation has no additional stated requirements.
3. With pnpm 11 or newer...
But then omit src rebuild? Could be limitation. Need 1-3 only. Which caveats most important? Dependencies, limitations. DSH requirement, repo build requirements, pnpm gate. The src rebuild is a limitation for repo dev. Could include instead of pnpm gate? The pnpm gate is specific. Need objective. Maybe combine repo requirements and rebuild in one sentence? One sentence each. "Repository installation is intended for development debugging and requires Node.js 22 or newer, pnpm, and a DSH source checkout rebuild when src changes." That's long but one sentence. Then pnpm gate? We can have 3 notes: DSH requirement, repository dev requirements, pnpm release age. But npm install no extra? Could be in note 2. Let's craft:
- The plugin requires an installed DeepSeek Harness environment where dsh web starts normally.
- Repository installation is for development debugging and requires Node.js 22 or newer, pnpm, and rebuilding in a DSH source checkout when src changes.
- With pnpm 11 or newer, the default minimumReleaseAge gate may isolate newly published versions unless minimumReleaseAge is set to 0 or the package is excluded.
Words: The1 plugin2 requires3 an4 installed5 DeepSeek6 Harness7 environment8 where9 dsh10 web11 starts12 normally13. Repository1 installation2 is3 for4 development5 debugging6 and7 requires8 Node.js9 2210 or11 newer12 pnpm13 and14 rebuilding15 in16 a17 DSH18 source19 checkout20 when21 src22 changes23. With1 pnpm2 113 or4 newer5 the6 default7 minimumReleaseAge8 gate9 may10 isolate11 newly12 published13 versions14 unless15 minimumReleaseAge16 is17 set18 to19 020 or21 the22 package23 is24 excluded25. total 61. Previous notes 67, overall 288. Good. But note says repository installation requires pnpm and Node; README: from repository install need Node >=22 and pnpm. yes. "rebuilding in DSH source checkout when src changes" yes. It omits npm no extra, fine. Need maybe "dsh web starts normally" supported. Good.
Need ensure no first person, no praise. Good.
Need word count final with revised use cases and notes. Let's recalc carefully with final draft:
Core Features:
1 The plugin adds a Background page under the agent presets area of the DeepSeek Harness WebUI settings sidebar. (18? Let's count: The1 plugin2 adds3 a4 Background5 page6 under7 the8 agent9 presets10 area11 of12 the13 DeepSeek14 Harness15 WebUI16 settings17 sidebar18)
2 It can use a local image folder as a gallery and scans png, jpg, webp, gif, bmp, avif, and svg files for thumbnail selection or random selection. Count: It1 can2 use3 a4 local5 image6 folder7 as8 a9 gallery10 and11 scans12 png13 jpg14 webp15 gif16 bmp17 avif18 and19 svg20 files21 for22 thumbnail23 selection24 or25 random26 selection27.
3 A preview crop frame can be resized from four corners or four edges and moved inside the frame while the background updates in real time. Count A1 preview2 crop3 frame4 can5 be6 resized7 from8 four9 corners10 or11 four12 edges13 and14 moved15 inside16 the17 frame18 while19 the20 background21 updates22 in23 real24 time25.
4 Background rendering supports horizontal and vertical scaling, position adjustment, background opacity, panel opacity, Gaussian blur, and cover, contain, or fill display modes. Count Background1 rendering2 supports3 horizontal4 and5 vertical6 scaling7 position8 adjustment9 background10 opacity11 panel12 opacity13 Gaussian14 blur15 and16 cover17 contain18 or19 fill20 display21 modes22.
5 Multiple images can rotate with a crossfade transition, including optional timed switching according to the gallery order. Count Multiple1 images2 can3 rotate4 with5 a6 crossfade7 transition8 including9 optional10 timed11 switching12 according13 to14 the15 gallery16 order17.
Core total 109.
Use Cases:
1 A user can select images from a local folder as the persistent WebUI background. Count A1 user2 can3 select4 images5 from6 a7 local8 folder9 as10 the11 persistent12 WebUI13 background14.
2 A user can choose random image display from the scanned gallery instead of fixing one file. Count A1 user2 can3 choose4 random5 image6 display7 from8 the9 scanned10 gallery11 instead12 of13 fixing14 one15 file16.
3 A user can adjust opacity, blur, and display mode to change how the background appears behind interface panels. Count A1 user2 can3 adjust4 opacity5 blur6 and7 display8 mode9 to10 change11 how12 the13 background14 appears15 behind16 interface17 panels18.
Use total 48. Running 157.
Technical Details:
1 Configuration is stored under the background namespace in settings.yaml and remains after refresh or restart. Count Configuration1 is2 stored3 under4 the5 background6 namespace7 in8 settings.yaml9 and10 remains11 after12 refresh13 or14 restart15.
2 The plugin exposes same-origin routes at /dsh-bg/state, /dsh-bg/save, and /dsh-bg/css for reading state, saving state, and delivering CSS. Count The1 plugin2 exposes3 same-origin4 routes5 at6 /dsh-bg/state7 /dsh-bg/save8 and9 /dsh-bg/css10 for11 reading12 state13 saving14 state15 and16 delivering17 CSS18.
3 This route-based configuration path does not depend on the official settings RPC namespace whitelist. Count This1 route-based2 configuration3 path4 does5 not6 depend7 on8 the9 official10 settings11 RPC12 namespace13 whitelist14.
4 The repository includes source files in src and committed build output in lib, allowing repository installation without a local build step. Count The1 repository2 includes3 source4 files5 in6 src7 and8 committed9 build10 output11 in12 lib13 allowing14 repository15 installation16 without17 a18 local19 build20 step21.
Tech total 68. Running 225.
Notes revised:
1 The plugin requires an installed DeepSeek Harness environment where dsh web starts normally. Count The1 plugin2 requires3 an4 installed5 DeepSeek6 Harness7 environment8 where9 dsh10 web11 starts12 normally13.
2 Repository installation is for development debugging and requires Node.js 22 or newer, p
安装Install
dsh plugin --profile web add @starryhui/dsh-background@latest
把 StarryHui/dsh-custom-background 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-background
vibe coding初作品,自定义 DeepSeek Harness(DSH)WebUI 背景插件。在设置侧边栏「agent 预设」下方提供「背景」页面,全部调整实时生效,刷新 / 重启后保持。
功能
- 图库背景:指定本地文件夹,自动扫描其中的图片(png/jpg/webp/gif/bmp/avif/svg),支持缩略图点选与「随机一张」。
- 自由拉伸裁切框:预览图上拖拽 4 角 / 4 边自由拉伸、框内平移,实时预览背景。
- 效果调节:水平/垂直缩放、位置、背景不透明度、面板透明度、高斯模糊。
- 显示模式:cover(铺满裁剪)/ contain(完整显示)/ fill(拉伸填充)。
- 多图交叉淡化轮播:切换时双图层交叉淡化过渡,可选按图库顺序定时切换,
- 实时生效:所有调整即时刷新背景;配置持久化在 settings.yaml 的
background命名空间,重启不丢。

快速开始
系统要求
- 已安装 DeepSeek Harness,
dsh web可正常启动。 - npm 安装方式无额外要求;从仓库安装需要 Node.js >= 22 与 pnpm。
三步上手
- 安装:
dsh plugin --profile web add @starryhui/dsh-background@latest - 重启
dsh web - 打开「设置 → 背景」配置图库与效果
从 npm 安装(推荐)
插件已发布到 npm(@starryhui scope),一条命令安装:
dsh plugin --profile web add @starryhui/dsh-background@latest
装完重启 dsh web,设置侧边栏「agent 预设」下方出现「背景」入口。
装到了旧版本? pnpm 11+ 默认的发布年龄门禁(
minimumReleaseAge,内置 24 小时)会把新发布的版本静默隔离。解决办法:在 profile 的pnpm-workspace.yaml设置minimumReleaseAge: 0(或把@starryhui/*加进minimumReleaseAgeExclude),再执行dsh plugin --profile web update @starryhui/dsh-background@latest。
从 GitHub 仓库安装(开发调试)
# 1. 克隆仓库
git clone https://github.com/StarryHui/dsh-custom-background.git
cd dsh-custom-background
# 2. 安装到 web profile(lib/ 已随仓库提交,无需本地构建)
dsh plugin --profile web add link:$(pwd)
# 3. 重启 dsh web,设置 → 背景 即可配置
dsh web
仓库安装仅供开发调试:改
src/后需在 DSH 源码 checkout(packages/client)中重新构建 (tsc -b+tsdown --env.DSH_BUILD_FACE client)并把新lib/复制回本仓库。
说明
- 配置命名空间
background通过插件自建同源路由(/dsh-bg/state、/dsh-bg/save、/dsh-bg/css)读写,不依赖官方 settings RPC 的命名空间白名单。 src/为源码;lib/为构建产物(随仓库提交,便于免构建安装)。
许可证
MIT
amruthpillai/reactive-resume
tt-a1i/archify
zhu1090093659/dsh-web-ui
strukto-ai/mirage
liustack/modlens
omdsh-dev/DSH-better-sidebar
ccch1mneyyy/dsh-TUI