前言¶
DeepSeek Harness(DSH)的界面默认偏实用,聊天、代码和设置页都是常规 Web 壳。若你希望桌面或 Web 端在长时间对话时仍有一点「活」的背景——而不是静态壁纸或纯色——需要自己接一层渲染与 UI 半透明。ShaderToy 社区已有大量 GLSL 作品,但把作品搬进 DSH、还要兼顾性能、卡死保护和聊天输入不冲突,通常要单独写播放器并维护背景库。
下面介绍维护者 zdjmrq 发布的 npm 插件 dsh-shadertoy-skin:零运行时依赖的 WebGL2 小播放器,自带背景库与玻璃界面,让聊天界面浮在实时着色器之上。分类上属于 DSH 社区目录里的「趣味换装」;GitHub 仓库 zdjmrq/dsh-shadertoy-skin 当前约 3 stars。插件本体代码为 MIT 许可证(见 package.json 0.4.3);内置部分第三方 ShaderToy 预设按各自许可证收录(README 说明默认 CC BY-NC-SA 3.0 等,详见仓库 THIRD-PARTY-NOTICES.md)。
这是什么¶
一句话:dsh-shadertoy-skin 是给 DeepSeek Harness 套一层实时 ShaderToy 背景皮肤——桌面版与 Web 端均可用。
解决的具体问题是:在不动 DSH 核心的前提下,用独立 Worker 跑着色器编译与渲染,主线程只负责玻璃 UI 与配置;自带 12 个预设(README 写明 3 个自写 MIT + 8 个第三方及 1 个无闪电变体),并支持从 ShaderToy 粘贴、多文件项目、本地目录批量导入,把作品收进「背景库」后一键切换。
社区插件目录页:https://www.skillhub.cn/plugins/zdjmrq/dsh-shadertoy-skin。DSH 生态强调「一切皆插件」;该目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
WebGL2 播放器与界面¶
插件描述为 zero-runtime-dependency:播放器、面板与默认配置打包在 native-dist/,Host 通过 Cordis 补丁接入。设置页左栏入口为「Shader 背景」,分组包括背景与外观、渲染与性能、画面播放、声音;宽窗口双栏、窄窗口单栏,深浅色主题各有可读表面。页头「预览背景」可临时收起设置查看实际背景,按 Esc 返回,不增加第二个渲染器。
「玻璃」指界面半透明:glass(默认 60%)同时影响背景滤镜与卡片、输入框、代码块等表面不透明度;panels 可选 opaque / half / clear。背景亮度、倍速、循环与声音策略按作品记忆;启用开关、透明档、分辨率、帧率、音量等全局偏好切换背景时保留。
背景库与 ShaderToy 兼容¶
内置预设列表见 native-dist/presets/index.json 与同目录 GLSL / 多文件子目录(如 seascape、mario、take-on-me 等)。用户侧扩展方式 README 归纳为三块:
- 粘贴代码:设置页 → 背景库 → 「粘贴 ShaderToy 代码」,填名字,粘 Image(及可选 Sound);带
Common的单文件需把 Common 函数一并放在开头;多 pass 作品用「导入多文件项目」。 - 多文件项目:可选文件夹或多个文件,检查 Image / Sound / Common / Buffer A–D / Include 与 iChannel0–3;支持
#include、项目内嵌图片;多 pass 按 A → B → C → D → Image 执行。 - 本地目录:把 ShaderToy 导出的 JSON 或
.glsl/.txt放进$DSH_HOME/shader-skin/presets/(Windows 默认C:\Users\<你>\.dsh\shader-skin\presets\),背景库 → 「从本地目录导入」。该目录不进包、不进 git。
带 mainSound 的作品支持 README 列出的四种函数签名;浏览器拦截自动播放时,点界面任意位置可解锁。
参数与稳定性¶
默认值集中在 native-dist/defaults.json,面板「恢复默认」与 Host 兜底均读该文件。常用项包括:enabled(默认 true)、glass 20–95、brightness 30–180、scale(渲染倍率,DPR 上限 1.5,总像素上限 800 万)、fps 15/20/30/60、speed 0–2、画面与声音的 loop / 自动结束检测等。完整表格见 GitHub README「参数与默认值」一节。
着色器编译、Buffer 渲染、自动结束检测和声音 GPU 采样在独立 Worker 中执行;编译最长 30 秒,运行无响应 12 秒会终止线程并报告错误,可换背景重试。README 还说明快速切换会取消旧编译、GPU 上下文丢失等情况的处理(正文截断处仍属同一保护策略)。
安装与启用¶
npm 包名没有 scope:安装时填 dsh-shadertoy-skin,不是 @zdjmrq/dsh-shadertoy-skin。可用下面命令确认 npm 上的版本:
npm view dsh-shadertoy-skin version
桌面版:菜单「插件 → 添加插件」,填写 dsh-shadertoy-skin,安装完成后完全退出并重启客户端。
命令行(README 原文,profile 为 desktop):
dsh plugin --profile desktop add dsh-shadertoy-skin
装好后左栏应出现「Shader 背景」;enabled 默认为 true,若只想去掉背景层可在设置里关闭,设置页仍保留。
典型用法¶
先用内置预设¶
打开「Shader 背景」设置页 → 背景库 → 在列表中选预设(例如 README 提到的内置「海面(Seascape)」源于 ShaderToy Ms2SD1 的个人修改版)→ 点 使用。夜景偏暗时调高 背景亮度;想让聊天卡片更透,把 界面不透明度 或 panels 调到 transparent / clear 档,README 演示视频中有「设置页 → 卡片透明档 → 代码页 → 聊天」的路径。
从 ShaderToy 装一个作品(手动粘贴)¶
- 打开
https://www.shadertoy.com/view/xxxxxxxx,右上角 Shader 页签。 - 全选 Image 页签代码;若用了 Common,把 Common 函数复制到开头(多文件则用「导入多文件项目」)。
- 插件设置 → 背景库 → 「粘贴 ShaderToy 代码」→ 填名字 → 粘贴 → 加入背景库。
- 列表点 使用,确认非黑屏且无编译报错。
README 推荐可试作品链接示例:https://www.shadertoy.com/view/4dfXWj。作品许可证由原作者决定(ShaderToy 默认 CC BY-NC-SA 3.0):仅本机使用一般无妨;若要 PR 进仓库或随包分发,须确认许可证并署名。
排查与配置路径¶
装不上、画面不对或想要新功能,README 建议到 GitHub Issues 反馈,并附上截图与 $DSH_HOME/shader-skin.json 里对应条目。用户自写或改编的背景库数据也在用户目录下,与 npm 包分离。
若希望 AI 协助导入,README 提供一段可复制指令模板(含插件名、安装方式、粘贴步骤与「抓不到页面则手动粘贴」的说明),把作品链接替换进去即可;AI 经常无法爬 ShaderToy 时,仍应走手动粘贴。
适用场景与注意¶
适合谁:长期在 DSH 桌面或 Web 端工作、愿意用 ShaderToy 或自写 GLSL 做动态背景的用户;显卡较弱时可把 scale 降到 0.25–0.5×、fps 设为 30,README 写明聊天场景 30 fps 通常足够。
权限与安全:与其它 DSH 插件一样,以当前 dsh 进程权限运行。安装前建议浏览 GitHub 源码与 MIT / 第三方 NOTICES;不要从未知来源安装同名包。
许可与分享:本仓库自写代码 MIT;内置第三方预设非全部 MIT。仅在本机导入社区作品自行欣赏,与「提交进 git / 随包发布」是不同约束。改好参数或发现好作品,README 欢迎通过 Issues 分享截图与参数,或按规则提 PR。
生态:更多插件见社区目录;Awesome DSH Plugin 列表收录了本插件(README badge 指向 awesome-dsh-plugin.com)。
结尾¶
dsh-shadertoy-skin 把 ShaderToy 的实时 GLSL 背景、可管理的背景库和可调玻璃 UI 收成一颗零运行时依赖的 DSH 插件:内置预设开箱,背景库可无限扩展。目录页:https://www.skillhub.cn/plugins/zdjmrq/dsh-shadertoy-skin;源码与完整参数说明:https://github.com/zdjmrq/dsh-shadertoy-skin。