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

前言

在 DeepSeek Harness(DSH)里长时间跑工具、等流式输出时,对话区往往是静态白底。社区里已有不少扩展方向,但「整块画布当背景、正文仍可读」这类体验,需要单独处理遮罩、明暗主题和性能。下面介绍维护者 yimeng-life 发布的 dsh-happy(分类:趣味换装):在对话画布下层挂一层 Canvas 动效,工具运行或回合进行中才播放,空闲时停帧并淡出。

DSH 生态主张「一切皆插件」;插件目录站 SkillHub 上的 dsh-happy 页 与 DeepSeek / 幻方无官方从属关系,安装前请自行查看源码与 MIT 许可证。插件以当前 DSH 进程权限在浏览器端运行。

这是什么

dsh-happy(npm 包名 dsh-happy,当前资料版本 0.5.2)给 DSH 对话区加一层整屏动效背景:星空跃迁、代码雨、电路脉冲、华山论剑、小猫散步、小女生、飞机大战、赛车、飘雪、肥皂泡共 十种场景。正文列用按 --dsh-chat-content-width 计算的横向纱罩住,动效在字下「退到后面」,不挡交互。每个回合随机换一个主题,回合内不变;也可快捷键固定或恢复随机。实拍与说明见 happy.yimeng.life。

核心功能

十种背景

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

何时播放、何时停

背景只在「你干活」时出现:任意工具在跑,或回合进行中,才播放;空闲、切会话、窗口隐藏时立刻停掉 requestAnimationFrame 并淡出,两侧恢复普通白纸。切会话后有默认 600ms 静默(TUNE.switchQuietMs),避免误判上一轮工具行为。

每个回合随机一个主题:发一条消息、这一轮做完算一个回合;回合内背景不变,下一回合重新随机,且不与上一回合重复。固定选择写入 localStorage 键 dsh.happy.theme。

可读性与层叠

  • .dsh-stage__veil:正文列内约 84% 遮盖,列外 110px 内快速放开,两侧透明。
  • 浅色主题用 multiply + 墨色;深色主题用 lighter + 亮色(stagePalette())。
  • 背景层 z-index:-1,pointer-events:none,永远在正文之下。

右上角有淡字标 dsh-happy(.dsh-stage::after),仅在背景播放时淡入,无额外 DOM。

快捷键

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

系统开启「减少动态效果」时只画一帧静止画面,不跑动画循环。

安装与启用

推荐从 npm 官方源安装(国内镜像 registry.npmmirror.com 同步可能有延迟,刚发布时请用官方源):

  1. 打开 DSH 插件页 → 添加插件
  2. 输入包名 dsh-happy
  3. 安装源选 npm 官方 → 安装 → 立即启用

卸载:插件页 → 卸载;效果随插件 context 回收,页面恢复原样。

开发调试可从源码目录用插件页「添加插件 → 填目录绝对路径」安装;日常用户按上表 npm 流程即可。

典型用法

安装并启用后,无需在设置里配面板:正常对话、跑工具即可看到背景。需要手动换景时用快捷键:

  • 想固定某一种背景循环使用:连按 Alt+T 直到满意,选择会保存在 dsh.happy.theme。
  • 想恢复「每回合随机且不重复」:Alt+R。
  • 动效与当前明暗不协调:Alt+D 与宿主外观同步切换。

调视觉常量可改 client.js 顶部 TUNE、各主题常量或 .dsh-stage__veil 的 .84 遮盖强度,改完 Ctrl+R 刷新。离线可看仓库内 preview.html 加载 client.js 预览(不必启动 DSH)。

扩展新背景:在 client.js 写 themeXxx(g) 返回 { resize(), step(dt) },再往 STAGE_THEMES 加 { id, name, create };共用一张 canvas,颜色用 pal 勿硬编码。

适用场景与注意

适合:希望在 DSH 对话区有轻量动效、又在意正文可读性的开发者;接受「无设置面板、改参靠改源码常量」的插件形态。

注意:

  1. 依赖宿主 DOM 语义:[data-conversation-content]、[data-tool][data-state]、[data-chat-running]、[data-streaming]。DSH 大版本若改名,插件可能安静失效(不报错、不挡交互)。
  2. 背景层挂在对话画布内部(无官方「背景层」插槽),停用插件即消失。
  3. 仅一张 canvas,空闲时 rAF 归零;仍是在浏览器里多一层绘制,低配或极长会话请自行观察 CPU。
  4. 安装前阅读 GitHub 仓库 与许可证;插件权限等同当前 DSH Web 客户端,勿安装未审源码。

结尾

dsh-happy 用十种全屏 Canvas 场景点缀 DSH 对话区,并在工具/回合生命周期内自动控制播放与淡出,通过纱罩与明暗调色保证文字可读。目录与元数据:SkillHub 插件页;源码与 README:github.com/yimeng-life/dsh-happy。

羽毛球分组比赛记分
小程序二维码

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

小夜