前言¶
DeepSeek Harness (DSH) 的设计理念是“一切皆插件”。对于开发者或长期使用的用户而言,纯白的对话界面可能显得单调。dsh-motion-background 插件通过引入动态背景,解决了界面视觉单一的问题。该插件将对话界面的底色替换为实时演算的画面或一段素材。
核心功能¶
该插件提供两类动态背景方案:
- 着色器型(GLSL):利用 WebGL2 进行逐帧实时演算,画面由代码生成。
- 媒体型:使用 MP4、WebM、GIF、图片等素材文件作为背景,不依赖 WebGL2,在无 WebGL2 环境下也能运行。
插件内核不含任何第三方着色器代码,通过函数名全词匹配检测。此外,插件支持视频往返播放以避免循环接缝跳变,并根据窗口状态动态调整帧率(前台 30fps、失焦 15fps、后台 0fps)以优化性能。
安装与启用¶
插件以文件夹形式挂载,无需通过命令行安装。
- 在 DSH 插件目录下创建一个文件夹。
- 在文件夹内放置
mod.json和fragment.glsl(仅着色器型需要)。 - 刷新 DSH 页面,插件会自动扫描并加载新效果,无需重启。
效果扩展点¶
着色器型¶
着色器型效果通过 GLSL 代码实现。在 fragment.glsl 中必须声明 GLSL 版本和输出变量:
#version 300 es
out vec4 fragColor;
void main() {
// 你的代码
}
着色器必须自己实现 hash 随机数,且不得声明采样器。
在 mod.json 中:
* colors 字段必须是 "front" 或 "array",否则效果不可用。
* fragment.glsl 中使用的 uniform 类型必须与内核契约一致。
媒体型¶
媒体型效果通过声明媒体字段实现。
在 mod.json 中:
* 必须声明 media 字段。
* media.src 只能是本效果目录下的文件名,不得包含路径分隔符或 ..。
* 支持的素材扩展名包括 mp4、webm、gif、webp、png、jpg。
资源占用与注意事项¶
- 帧率限制:为了防止 GPU 占用过高,内核对帧率进行了限制。前台运行时上限为 30fps,窗口失焦时降为 15fps,标签页隐藏时停止渲染(0fps)。
- 往返播放:HTML 规范不支持
video playbackRate = -1,往返播放(倒放)需脚本逐帧驱动。在往返播放模式下,loop必须设为false,否则ended事件无法触发。 - 不猜测原则:内核不提供默认值,未在
mod.json中声明的 uniform 不会自动创建。
许可与链接¶
- 许可证:MIT
- 仓库:dsh-motion-background