前言¶
DeepSeek Harness(DSH)的 Web GUI 默认是纯色或主题背景。长时间在对话、设置、插件面板之间切换时,界面功能完整,但缺少一层可自定义的视觉底色。社区里「趣味换装」类插件的作用,就是在不改动核心业务逻辑的前提下,给壳层加一层可开关、可逆的装饰。
下面介绍维护者 woshishujiedegou 的 dsh-plugin-wallpaper:给 DSH Web GUI 铺一层整窗壁纸,让面板像「开向壁纸的窗」,卡片与菜单保持实心。壁纸可以来自浏览器实时绘制的动态场景、内置渐变、本地图片,也可以从本机 Wallpaper Engine(WE)库导入——并通过探测流水线判断每条工程实际是视频、网页、GIF 还是静态图,而不是只信 project.json 里的 type。
这是什么¶
dsh-plugin-wallpaper 是 DSH 的 GUI 壁纸插件,分类为「趣味换装」。它只读你本机的 Steam / WE 目录,不联网、不上传、不复制素材;仓库里不含任何壁纸文件。
插件在 Client(浏览器)与 Host(DSH 进程)之间通过本机 HTTP 路由通信:浏览器侧只拿到 16 位不透明 id,真实路径只在 Host 扫描白名单内反查。
核心功能¶
动态与内置壁纸(无需外部素材)¶
- 动态壁纸(默认):极光、星尘、深潮三套场景由一个
<canvas>实时绘制(rAF、约 30fps、0.75× 缓冲;页面隐藏时停画;prefers-reduced-motion只画一帧)。 - 内置壁纸:8 套渐变,亮/暗各一张,跟随
body[data-ds-dark-theme]自动切换素材。
自定义图片¶
在设置页选图或拖图,本地压缩后存入浏览器 localStorage(偏好键 dsh-plugin-wallpaper:v8)。
Wallpaper Engine 导入¶
Host 半边会:
- 自动发现 Steam 库(读
steamapps/libraryfolders.vdf与各盘常见路径),扫描wallpaper_engine/projects/**与workshop/content/431960/*; - 独立视频用
<video>播原文件(支持Range→206流式); - 视频嵌在
scene.pkg里的场景壁纸,从 pkg 内部按 Range 取字节播放(不落地、不解包); - 网页工程用
<iframe>跑真实工程目录; - 带 GIF 的壁纸直接铺 GIF;
- 其余按静态壁纸,优先用工程自带大图。
识别流水线(v2):每个工程按优先级探测得出 motion,并把 reason、视频 codec 写入接口与设置页卡片 tooltip(例如 标题 · 动态 · h264 · video-packed)。浏览器解不了的编码(如 HEVC)会标注 codec-unplayable 并降级,避免黑屏。
显示与安全层叠¶
所有绘制层放在同一容器 #dshw-wallpaper(z-index:-1,isolation:isolate,contain:layout paint),子层 pointer-events:none,从结构上避免壁纸翻到 UI 之上。关掉总开关时,样式表与 <video> / <iframe> / <canvas> 一并移除,主题原样恢复。
可调参数¶
可读性遮罩(15%–80%)、模糊(0–30px)、填充方式(铺满 / 完整 / 拉伸)、亮度(50%–130%)、缓慢漂移;WE 列表支持「只看动态」过滤。
安装与启用¶
在 DSH 里用插件管理器安装本仓库(需替换为仓库在本机的绝对路径):
plugin_manager { action: "install_bundle", target: "<本仓库绝对路径>" }
或手动:
- 在 profile 的
package.jsondependencies中加入:"dsh-plugin-wallpaper": "file:<绝对路径>"; - 在
dsh.profile.bundles数组中加入"dsh-plugin-wallpaper"; - 让 profile 的
node_modules/dsh-plugin-wallpaper指向本仓库(junction / symlink 均可)。
装好后刷新页面即生效。
Host 半边只在 DSH 启动时 import。装好或改过 Host 代码后需重启一次 DeepSeek Harness;未重启时设置页可能提示「壁纸服务还没加载」,内置壁纸与 canvas 动态场景仍可用。
当前 package 版本为 2.1.0,许可证 MIT。
典型用法¶
侧边栏 → 设置 → 背景壁纸:
| 控件 | 说明 |
|---|---|
| 启用背景壁纸 | 总开关 |
| 动态壁纸 | 极光 / 星尘 / 深潮 |
| 内置壁纸 | 8 套渐变 |
| 自定义图片 | 选图或拖图 |
| Wallpaper Engine | 本机库缩略图墙,右上「重新扫描」 |
| 只看动态 | 默认关闭;打开后只留视频、网页工程与 GIF |
| 可读性遮罩 / 模糊 / 填充 / 亮度 / 缓慢漂移 | 见上文 |
| 恢复默认 | 清空自定义与导入,回到动态壁纸 |
WE 相关 Host 路由(节选):
| 路由 | 作用 |
|---|---|
GET /wallpaper-engine/library |
扫描结果 JSON;?refresh=1 跳过 30s 缓存 |
GET /wallpaper-engine/media?id=<id>&role=media |
视频,支持 Range |
GET /wallpaper-engine/web/<id>/<path> |
网页工程文件 |
仓库还提供离线开发工具(无需 DSH 即可验证扫描与 Host):
node tools/scan-library.mjs "<projects 路径>" "<workshop/431960 路径>"
node tools/host-check.mjs lib/host.js
node tools/render-client.mjs lib/client.js dark video
适用场景与注意¶
适合:已在 DSH Web GUI 上日常开发或对话,希望整窗背景可换、且本机已安装 Wallpaper Engine 并希望复用库内壁纸的用户。
权限与安全:插件以当前 DSH 进程权限运行,安装前应阅读源码与 MIT 许可证,确认可接受其读 Steam 目录、在本地提供 HTTP 媒体路由的行为。
已知限制(来自 README):
scene.pkg无浏览器端完整渲染器:插件主要取出 pkg 内视频;纯粒子 / 着色器场景只能 GIF 或静态帧。- 部分网页壁纸依赖 WE 专属 API,在 iframe 内可能退化。
- 首次加载大视频或 pkg 扫描可能有数秒延迟;大结构面透明后,少数直接用
bg-base的弹层也会变透明。
结尾¶
dsh-plugin-wallpaper 把 DSH Web GUI 的背景做成可开关、可探测、可逆的一层:内置 canvas 与渐变、本地图、以及本机 WE 库的真实视频 / 网页 / GIF / 静态资源,都在同一设置页里完成。