Shelter(dsh-theme-shelter):为 DSH 界面叠加沉浸式天气氛围

前言

在 DeepSeek Harness(DSH)里长时间对话或写代码时,界面往往是静态的浅色或深色主题。若你希望在不改动 DSH 业务逻辑的前提下,给 Web GUI 增加一点「坐在檐下听雨、看雪或烤火」的氛围,社区里有一款归类为「趣味换装」的插件可以做这件事。下面介绍 Shelter(npm 包名 dsh-theme-shelter,仓库 ifer47/dsh-theme-shelter),维护者为 ifer47,许可证 MIT,当前 package.json 版本为 0.3.1。

这是什么

Shelter 是在 DSH Web GUI 上叠的一层天气视觉效果:雨会在「玻璃」上留下水痕与溅水,雪在窗外缓慢飘落并堆积,炉火在输入区下方脉动。它不改变 DSH 的工作方式,只改变你工作时所处的视觉与听觉环境。入口是右下角 28 px 的小按钮;其余时间动画在后台安静运行。

插件通过 Cordis patch 注入客户端,依赖 @deepseek-ai/dsh-client-ui-theme,面向 Web 平台(README 标明支持 Web + Desktop)。

三种场景与界面配色

README 用表格归纳了三种场景,语义色(错误红、成功绿、警告琥珀)在各场景中均不改动:

场景 视觉效果 配色倾向
Rain(雨) 每条雨滴独立速度、随风倾斜、落地溅水 冷蓝灰、深蓝阴影
Snow(雪) 两种晶型在同一风场中飘落,雪岸随降雪变厚 更冷更白、冰蓝点缀
Fire(炉火) 自下方暖色脉动、余烬、火星、慢烟 暖中性色、琥珀点缀

还可开启 Night(夜间):深色配色加月光洗照。

安装与启用

前置条件:已安装 DeepSeek Harness(桌面版或 Web 版)。

本地路径安装(README 示例)

在 Windows PowerShell 中进入桌面 profile 目录,用本地路径添加包(将路径换成你本机解压或拷贝后的目录):

cd "$env:USERPROFILE\.dsh\profiles\desktop"
pnpm add "C:\path\to\dsh-theme-shelter"

随后在对应 profile 的 package.json 里,把 dsh-theme-shelter 追加到 dsh.profile.bundles,再 重载窗口(Ctrl+R) 或重启 DSH。

npm 与市场

同一包发布在 npm:dsh-theme-shelter,执行 npm i dsh-theme-shelter 可安装相同 bundle;插件市场也会从 npm 拉取。

README 说明:在 npm 12+ 上,默认可能拒绝远程 tarball 或 git URL 依赖;若需远程 tarball 可加 --allow-remote,git 依赖加 --allow-git。本包无 install scripts。

手动 patch(替代方式)

可向 ~/.dsh/profiles/desktop/cordis.patch.yml 追加:

- insert:
    - id: theme-shelter
      name: dsh-theme-shelter

完成任一方式后,同样需要按 DSH 惯例重载或重启使 bundle 生效。

典型用法

右下角控制面板

点击右下角小按钮可切换:

控制项 作用
Scene rain / snow / fire / off
Intensity light / medium / heavy
Palette 是否套用主题色(动画开不开都可)
Lightning 仅雨:闪电、闪光、雷声的间隔与远近感
Sound 雨、火为录音;雪为程序生成的风噪
Night 深色配色 + 月光

音效: 浏览器要求页面在用户点击或按键后才允许播放音频,因此第一次有声需在交互之后。

首次安装: 按钮上方会出现气泡提示「点这里切换天气」;任意点击或按键、或 12 秒 后会消失。按钮图标随场景显示云、伞、雪花或火焰。

设置持久化

选项保存在浏览器 localStorage["dsh-theme-shelter/v2"],刷新后保留。

控制台 API

在开发者工具中可调用:

__dshWeather.setScene("fire")     // rain · snow · fire · none
__dshWeather.setIntensity(2)      // 1 light / 2 medium / 3 heavy
__dshWeather.setPalette(false)    // 仅动画,默认界面色
__dshWeather.setSound(true)
__dshWeather.setNight(false)
__dshWeather.reset()

音频与实现要点(摘要)

  • 雨、火: 约 6.7 MB 实录;宿主只读提供 /dsh-theme-shelter/audio/*,支持 Range、HEAD 等;跨域 Origin 返回 403。
  • 雪: 无录音,用 Web Audio 棕噪低通循环模拟风声,可在资源加载前启动。
  • 性能: 粒子数随视口面积缩放并有上限(雨 520、雪 340、火 64);DPR 上限 2;窗口隐藏时暂停绘制;prefers-reduced-motion 时只画一帧静态图。

配色通过 ctx.theme.overrideTokens() 覆盖 47 个 --dsw-alias-* token,按钮填充、品牌色、链接与焦点环有意保留原样。

适用场景与注意

适合谁: 在 DSH 里希望长时间使用时增加氛围、又不需要改工作流的开发者;归类上属于社区目录中的「趣味换装」类插件,与 DeepSeek / 幻方无官方从属关系,SkillHub 等目录为独立社区站点。

安全与权限: 插件随当前 DSH 进程与 profile 加载,具备与宿主相同的访问边界。安装前应阅读仓库源码与 MIT 许可证,确认 bundle 与 cordis.patch.yml 符合你的环境策略。README 禁止 将本文中的本地路径示例当作唯一方式时,勿凭包名自行拼接未在文档出现的 dsh plugin add 命令。

开发预览: 仓库内 preview/preview.html 可单独打开预览三场景、夜间模式与面板;profile 用 link: 链到本包时,改 client/client.js 后重启 DSH 即可。

结尾

Shelter 把雨、雪、炉火和可选录音叠在 DSH Web GUI 上,用右下角按钮或 __dshWeather 即可切换,不改变对话与工具链本身。更多信息见社区目录页 ifer47/dsh-theme-shelter 与 GitHub github.com/ifer47/dsh-theme-shelter。

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

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

Xiaoye