← 返回列表
未验证
把 Wallpaper Engine 壁纸设为应用背景并控制桌面壁纸
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/12 · 已提供中文文档
DeepSeek Harness 个性化插件(dsh-wallpaper):Wallpaper Engine 动态壁纸集成
综合分
29.6
GitHub 分
29.6
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add jiumengya/dsh-wallpaper该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-wallpaper — DeepSeek Harness 的 Wallpaper Engine 插件
将桌面版 DeepSeek Harness 连接到 Wallpaper Engine:可从设置面板的壁纸分区将任意壁纸设为 DeepSeek Harness 应用背景(视频壁纸直接播放原始视频);同时为智能体提供 4 个用于控制桌面 Wallpaper Engine 的工具。
前置条件
- 已安装 Steam 和 Wallpaper Engine(任意 Steam 库位置均可;自动发现)
- 已安装 DshNative 桌面应用(rc.17 或更新版本)
安装
右键点击 install.ps1 → 使用 PowerShell 运行(或:
powershell -ExecutionPolicy Bypass -File install.ps1
该脚本会做三件事:
1. 将插件包复制到 %LOCALAPPDATA%\DshNative\runtime\node_modules\@deepseek-ai\dsh-wallpaper
2. 创建 ~\.dsh\profiles\node_modules\@deepseek-ai\dsh-wallpaper 联接(配置文件解析所需)
3. 生成 %LOCALAPPDATA%\DshNative\desktop.yml 覆盖文件(数据目录覆盖优先于应用目录,无需管理员权限),将此插件追加到应用的内置条目中
重启 DeepSeek Harness 后生效。
用法
更改应用背景(图形界面):点击左侧边栏底部的 ⚙ 设置按钮,然后点击左侧导航中的壁纸分区——顶部显示当前背景,搜索框可按标题筛选,下方是预览缩略图网格:点击任意卡片即可将其设为整页背景(整个界面,包括侧边栏后方,都会显示该壁纸,且没有遮罩层)。"恢复默认"可一键还原。卡片上标注了其动画支持类型:web 类型 = 完整动画,video 类型 = 动画,scene 类型 = 实时粒子动画(scene 是 Wallpaper Engine 专有格式,浏览器无法原生渲染;后端从 scene.pkg 中提取图层以合成静态基础图像,并将粒子系统导出为纯数据定义,由前端 canvas 实时逐帧模拟——花瓣/雪花/光尘以与 Wallpaper Engine 相同的物理语义在整个页面飘动;更复杂的效果(如骨骼绑定动画)仍仅支持 web/video 类型)。每张卡片的缩略图右上角还有一个悬停时出现的小"桌面"按钮,可让你将其设为桌面壁纸(通过 Wallpaper Engine)。所选内容会持久保存在 ~\.dsh\plugin-wallpaper-ui.json 中,并在重启后自动恢复。
你也可以用自然语言与智能体对话(操作桌面 Wallpaper Engine):
- "列出我已安装的壁纸"
- "换成与初音未来相关的壁纸"
- "我现在用的是什么壁纸"
- "暂停壁纸""静音壁纸""隐藏桌面图标""下一张壁纸"
提供的 4 个工具:
| 工具 | 用途 |
|------|---------|
| wallpaper_list | 列出已安装的壁纸(id/标题/类型),支持按标题筛选 |
| wallpaper_apply | 通过创意工坊 id 或标题应用壁纸,可选显示器;若 Wallpaper Engine 未运行则自动启动,然后回读配置以确认 |
| wallpaper_control | pause / play / stop / mute / unmute / next / close / hide_icons / show_icons |
| wallpaper_current | 显示当前壁纸(路径 + 标题) |
配置(可选)
当 Steam 或 Wallpaper Engine 安装在特殊位置时,编辑 %LOCALAPPDATA%\DshNative\desktop.yml 中的插件条目:
- insert:
- id: wallpaper
name: '@deepseek-ai/dsh-wallpaper'
config:
steamPath: 'E:\Steam' # Steam 根目录(默认:从注册表自动发现)
wallpaperEnginePath: '' # wallpaper64.exe 的完整路径(默认:从 Steam 库自动发现)
卸载
右键点击 uninstall.ps1 → 使用 PowerShell 运行。移除插件包和链接,并删除数据目录覆盖层(应用将恢复为安装目录随附的覆盖层)。
实现说明
- 应用背景(整页,两种挂载模式):一旦选中,官方 UI 的大块不透明背景全部变为透明(--dsw-alias-bg-base、--dsw-specific-sidebar-fill;输入框 --dsw-specific-input-major 变为半透明玻璃色,浅色/深色主题各一套)——壁纸贯穿整个页面,包括侧边栏后方;消息卡片等内容面板保留自身背景以保证可读性,不叠加遮罩。图片/场景壁纸直接绘制为 body 自身的不透明根背景(CSS 双层叠加:场景合成层位于工坊方形预览之上,底部有不透明回退色;预览层在场景提取的最初几秒内填充,真实图片就绪后覆盖它,若真实图片不可用则自然回退到预览)——透明的根背景会使 Chromium 对整个文档禁用次像素抗锯齿(ClearType);灰度渲染的字形是“壁纸文字看起来模糊”的根本原因,而不透明的根背景可恢复彩色次像素渲染(端到端测量:文字边缘的彩色比例达 56–60%,而灰度渲染下接近 0)。视频/网页壁纸仍使用 body 下方 position:fixed; z-index:-1 的背景层(/ 无法作为 CSS 背景);其上的文字保持灰度是 Chromium 的固有约束。弹窗(设置/Modal)为液态玻璃且壁纸保持动态:弹窗打开时壁纸动画继续运行(弹窗仅悬浮其上);面板为静态绘制的液态玻璃(82% 半透明基底 + 160° 镜面渐变高光 + 1px 亮边 + 内发光,浅色/深色主题各一套),遮罩减淡至 45%。刻意避免使用 backdrop-filter:在 Chromium 中,任何覆盖视频/iframe 壁纸的 backdrop-filter 元素都会冻结其动画帧(官方遮罩自身的 blur(2px) 也在其中);全部显式禁用,玻璃质感通过多个静态图层来表现。
- 本地自适应对比度反转(深色壁纸可读性):客户端对壁纸进行逐区域亮度采样(64×36 画布,左侧 22% 为侧边栏区域,其余为主区域;视频每 2 秒重新采样,而图片/网页壁纸从预览图采样一次),侧边栏区域和主区域各自独立判断:在浅色主题下,如果壁纸较暗(0.62)→ 翻转回浅色主题的墨色;中间色调保持主题默认值。作用范围仅覆盖直接位于壁纸上的两个块——侧边栏([class='sidebarCol'])和空状态主视觉([class='_composerHero']),不包括新会话按钮(它有自己的白色背景);输入框玻璃效果在冲突时增强到 86%,以保持深色文字可读。简而言之,“深色壁纸 → 白色文字,亮色壁纸 → 黑色文字”,自动跟随视频的亮度变化。
- 进程稳定性(流和子进程):每个视频/静态文件流式响应都附加一个错误监听器(stream.on('error') 销毁响应,res.on('close') 销毁流——浏览器在切换壁纸或隐藏标签页时会随时中断后台视频请求,而未消费的错误事件会杀死整个后端进程);startWallpaperEngine 的分离 spawn 会获得一个错误监听器(无效的 exe 路径是一个异步 'error' 事件,同样会导致进程崩溃);JSON/text 响应在响应头已发送后绝不会再次调用 writeHead。
- 三种渲染模式(按壁纸类型自动选择):视频壁纸播放原始视频(,原生 4K 画质);Web 壁纸通过 iframe 加载其 html 入口,因此其自身的动画和粒子效果原生运行(spine 骨骼动画、canvas 粒子等);场景壁纸 = 静态底图 + 实时粒子动画:后端从 scene.pkg 中提取并合成无粒子图层作为底图(?flat=1),并将粒子系统编译为纯数据定义(/scene-anim/ JSON + /scene-anim-tex// 纹理图集;scene-art.js:发射器/初始化器/操作器语义,包括 alpha/大小/颜色的 33 点曲线以及振荡频率范围),前端 #dshWpAnim 叠加层(z-index:-1,pointer-events none)canvas 逐帧模拟——年龄推进/重生、解析弹道积分(重力/阻力/涡旋)、与参考实现语义匹配的角速度积分、独立的 X/Y 轴随机振荡、精灵表帧动画、逐粒子色调缓存;canvas 每帧先重绘底图,然后混合粒子,并使用加法混合(lighter)直接叠加到真实场景像素上(透明叠加层会使加法纹理的黑色背景通过元素级合成显示为黑色方块);cover 变换与 body 背景匹配,针对 dpr≤2 进行过采样;当导出不可用或底图解码失败时,自动回退到烘焙的稳态合成图像(纹理链支持 RGBA/DXT1/3/5/RG88/R8/JPEG + LZ4——大约 1/4 的场景壁纸具有 JPEG-in-TEX 主图层,由内置 jpeg-js 解码器(vendored,Apache-2.0)栅格化,因此图层不会被丢弃;共享粒子纹理会回退到 WE 资源库;提取在工作线程中运行,磁盘缓存 v5)。
- Web 壁纸的静态资源(html/js/css/images/fonts/embedded video)由宿主端通过 /plugin-wallpaper/web// 流式传输(支持 HTTP Range,解析路径后针对目录遍历进行前缀验证,非文件返回 404)。
- 控制通过 Wallpaper Engine 的官方命令行接口(wallpaper64.exe -control ...)进行;读取当前壁纸通过其 config.json 进行(实践测量:-control getWallpaper 的输出无法从外部进程捕获)。
- 每次壁纸列表调用都会实时扫描创意工坊目录,因此新安装的壁纸无需重启。
- 应用壁纸时统一传递 scene/video/web 类型的 project.json 路径(官方文档支持)。同作者(jiumengya)的其他插件
扫码进群