dsh-happy:为 DSH 对话区添加整屏动效背景

前言

DeepSeek Harness(DSH)的插件生态通过 patch 和 client 两半区解耦,让宿主与扩展互不干扰。在对话面板上增加一层动效背景,需要同时处理 Canvas 渲染、混合模式、可读性遮罩,以及与宿主状态机(工具运行、回合切换、窗口可见性)的同步。dsh-happy 就是为此设计的一款插件:它在对话区底层画 10 个 Canvas 场景,正文列覆盖一层按列宽计算的纱罩,保证文字可读,同时只在“干活”时渲染,空闲即停。

它是什么

  • 定位:为 DSH 对话区提供整屏动效背景的插件,将对话画布作为 Canvas 画布,内置 10 个场景。
  • 维护者:18383337799。
  • 解决的问题:让 AI 对话在视觉上更有沉浸感,同时避免背景干扰正文阅读;按回合随机,又支持固定和一键随机。
  • 曾用名:dsh-conversation-aurora(包名与插件目录在 0.5.0 后统一为 dsh-happy)。

安装与启用

从 npm 安装(推荐):

  1. 在 DSH 插件页点击 添加插件。
  2. 输入包名 dsh-happy。
  3. 安装源选 npm 官方。
  4. 安装后点击 立即启用。

国内镜像(registry.npmmirror.com)同步有延迟;刚发布时建议先用官方源。

开发调试可从本地目录安装:插件页 → 添加插件 → 填本目录绝对路径 → 安装 → 立即启用。

卸载:在插件页点击卸载,效果随插件 context 一起回收,页面恢复原样。

核心功能

10 个背景主题

插件内置 10 个 Canvas 场景,每个回合随机选一个(不与上一轮重复):

主题 内容
星空跃迁 星点从中心向外飞出,长条纹
代码雨 竖列字符下落,带拖尾
电路脉冲 直角走线 + 沿线跑的光点
华山论剑 三层远山视差 + 冷月 + 云岚 + 偶尔一道剑气 + 落叶(没有人物、没有招式名,只有山水与光)
小猫散步 矢量剪影小猫走路、尾巴摆动、留下爪印
小女生 连衣裙剪影 + 马尾 + 牵着气球,一路小跑掉小心心
飞机大战 我方战机从画面下方飞入、左右巡航连续开火,敌机从上方成批压下来,击中炸成火星
赛车 横向速度线 + 小车剪影
飘雪 雪花慢落 + 摇摆
肥皂泡 径向渐变薄膜 + 高光,缓缓升起

控制快捷键

  • Alt+T:切换到下一个背景并固定(10 个循环,选择会记住)。
  • Alt+R:回到随机并立刻换一个(清掉固定值)。
  • Alt+D:浅色 / 深色主题互换(走宿主 theme.setTheme,与「设置 → 外观」同步)。

运行时机与性能

  • 背景只在“干活”时出现:任何工具在跑、或回合进行中才播放;空闲、切会话、窗口隐藏时立刻停掉 requestAnimationFrame 并淡出,两侧恢复普通白纸。
  • 每个回合随机一个主题:你发一条消息、我把这一轮做完 = 一个回合;回合内背景不变(中间停顿多久都不换),下一个回合重新随机,且不会和上一个重复。
  • 固定值存储在 localStorage 的 dsh.happy.theme(0.4.0 之前是 dsh.conversation-aurora.theme,首次启动会自动搬过去)。
  • 性能优化:只有一张 canvas;每帧只做绘制,无 filter/backdrop-filter;空闲时 rAF 归零。

可读性保证

  • .dsh-stage__veil 是一条按 --dsh-chat-content-width 计算的横向纱:正文列内 84% 遮盖,列外 110px 内快速放开,两侧完全透明。
  • 浅色主题用 multiply(正片叠底)+ 墨色(靛蓝 / 紫 / 青),像印在白纸上;深色主题用 lighter(加色)+ 亮色,才有发光感。
  • 背景层是 z-index:-1,永远在正文之下,pointer-events:none,不挡任何交互。

调参

视觉参数集中在 client.js 顶部:

位置 含义
TUNE.holdIdleMs 工具停下后多久淡出(默认 420ms,防抖)
TUNE.switchQuietMs 切会话后的静默期(默认 600ms)
stagePalette() 浅色/深色两套墨色 + 混合模式
THEMES 里各主题的常量 数量、速度、尺寸
.dsh-stage__veil 的 .84 文字列遮盖强度,调高更护眼、调低更炫

改完 client.js 后刷新页面(Ctrl+R)即可生效。

已知限制

  1. 依赖宿主的 DOM 语义属性:[data-conversation-content] / [data-tool][data-state] / [data-chat-running] / [data-streaming]。DSH 大版本升级后如果这些改名,插件会安静地什么都不做(不会报错、不会挡交互)。
  2. 没有“背景层”插槽:DSH 目前没有这个扩展点,所以背景层是挂在对话画布元素内部的(z-index:-1)。这是刻意偏离“只能注册进 slot”的地方,随插件停用一起消失。
  3. 切会话会静默 600ms:避免把上一轮残留的工具行当成“正在工作”,看到几秒特效。
  4. 减少动态效果:系统开启后只画一帧静止画面,不跑 requestAnimationFrame。
  5. 性能:只有一张 canvas;每帧只做绘制,无 filter/backdrop-filter;空闲时 rAF 归零。
  6. 不做设置项:没有“设置”里的面板,调参靠改常量。

适用场景与注意

适合希望在 DSH 对话区增加视觉沉浸感、又不希望背景喧宾夺主的使用者。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

总结

dsh-happy 通过 Canvas 场景与纱罩遮罩的组合,在 DSH 对话区提供 10 种风格各异的整屏动效背景,同时保证正文可读性与性能。它只在“干活”时渲染,空闲即停,支持回合随机与快捷键固定,适合追求沉浸式对话体验的开发者。

  • 目录页:https://www.skillhub.cn/plugins/18383337799/dsh-happy
  • GitHub:https://github.com/18383337799/dsh-happy
  • 官网:https://happy.yimeng.life/
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye