🎨 动态背景切换器 (Dynamic Background Switcher)
DeepSeek Harness (DSH) 动态背景插件:上传 GIF/WebP 动图与静态图、内置 12 色纯色调色板,定时丝滑交叉淡入淡出切换页面背景,聊天区自动叠加主题色保护层。
✨ 特性
- 上传动图/静态图:GIF / WebP / APNG 动图与 PNG / JPG / SVG 等静态图,支持多选与拖拽上传,带进度条,缩略图逐张即时出现(单张 ≤25MB)
- 内置纯色调色板:赤橙黄绿青蓝紫粉白灰黑棕 12 色,点击即添加并立即应用,可与上传图片混合轮换
- 定时丝滑切换:间隔 3–120s,顺序 / 随机模式,双图层 opacity 交叉淡入淡出 + 慢速 Ken Burns 缩放(默认 1.4s 过渡),尊重系统"减少动态"偏好
- 自动可读性保护层(主题自适应
color-mix):- 聊天内容列
[data-chat-flow] - 状态栏(输入框下方统计行)
- 会话头部整条带(会话名 / 模式标签 / 「对话·轨迹」导航)
- 聊天内容列
- 完整显示模式:默认
contain(图片等比缩放、整张可见、居中),可选cover铺满 - 可选美化:背景虚化(0–12px)、遮罩强度(0–90%)
- 常驻运行:状态与定时器挂在插件实例上,关闭设置页后背景仍自动切换
- 全程无后端依赖:上传走浏览器
File.arrayBuffer()+ 纯 JS base64,不依赖受限全局
📸 截图
占位:将真实截图(PNG)放入
assets/后替换下面的链接。
| 设置页 | 背景效果 |
|---|---|
![]() |
![]() |
📦 安装
本插件是 DSH 动态 Cordis 插件(会话内临时、仅客户端)。在任何 DSH 会话中:
- 定义:调用
cordis_defineplugin:{ "kind": "new", "idPrefix": "bgx" }(升级已有实例用{ "kind": "existing", "pluginId": "bgx-1" })name:动态背景切换器purpose: 一句话描述code.client: 取 bgx-dynamic-background.client.js 文件内容,原样作为函数体粘贴
- 激活:
cordis_run激活返回的pluginId/packageId,首次运行需在界面批准授权
⚠️ 动态插件定义不随进程持久化;重启后按上述两步重新安装即可(源码已在此仓库归档)。
🎛️ 使用
激活后进入 设置 → 动态背景 页:
| 控件 | 说明 |
|---|---|
| 开启背景 | 总开关 |
| 纯色背景 | 12 色色板,点击添加并立即应用 |
| 选择图片 / 拖拽 | 上传动图与静态图(多选,Ctrl/Shift) |
| 显示模式 | 完整显示(contain,默认)/ 铺满(cover) |
| 切换间隔 | 3–120s(默认 15s) |
| 过渡时长 | 0.3–3s 交叉淡入淡出(默认 1.4s) |
| 背景虚化 / 遮罩强度 | 可选美化 |
| 随机 / 顺序 · 播放 / 暂停 · 下一张 · 清空 | 播放控制与列表管理 |
🧩 技术要点
- 背景舞台:
styles.insert维护body::before/body::after两个z-index:-1固定图层,切换时旧图淡出、新图淡入;图层规则 = rgba 兜底 +color-mix主题自适应渐变(含 Ken Burns 与prefers-reduced-motion) - 画布透明:
theme.overrideTokens将--dsw-alias-bg-base置为transparent,背景图在非保护区域完整透出 - 保护层选择器全部基于稳定
data-*属性与结构选择器(无哈希类名依赖),默认 84% 主题表面色 - ⚠️ 踩坑记录:
overrideTokens的 source 会被动态客户端守卫钉死为包 ID——多组 token 必须合并进同一次调用,否则后者整体替换前者(曾导致背景图整体消失的 bug) - 上传:
file.arrayBuffer()+ 纯 JS base64 编码,无FileReader/URL等全局依赖
📁 目录结构
bgx-dynamic-background/
├── package.json # npm 包元数据(npm pack 打包)
├── index.js # 可编程入口(导出 clientCode / defineArgs)
├── bgx-dynamic-background.client.js # 插件客户端源码(cordis_define 的 code.client)
├── assets/
│ ├── banner.svg # 仓库 Banner
│ └── screenshot-*.png # 截图(待替换为真实截图)
├── README.md
└── LICENSE # MIT
打包:
npm pack生成bgx-dynamic-background-<version>.tgz;npm registry 发布需npm login后npm publish(当前无 npm 凭据,尚未发布到 registry,发布包随 GitHub Release 分发)。
📜 版本历史
pkg-1 初版(聊天区浮窗)→ pkg-2 迁入设置页 → pkg-3 修复 clearAll 崩溃 → pkg-4 修复缩略图刷新 / 多选 / 进度条 → pkg-5 默认可读保护层 → pkg-7 自适应亮度 + 完整显示 → pkg-8 保护层收窄到聊天列 → pkg-9 状态栏保护层 → pkg-10 头部保护层 + 侧边栏半透明 → pkg-11 修复 override 层覆盖 → pkg-13(当前)移除侧边栏样式 + 纯色调色板
🤝 贡献
欢迎 Issue 与 PR:新色板、动效优化、更多保护区域、性能改进等。
📄 License
MIT © 2025 Kasakaze (njuptlzf)


No comments yet. Be the first to write one.