dsh-image-skin:从一张图片生成 DSH 主题配色,附带桌面宠物

前言

DSH 的理念是「一切皆插件」,界面外观也不例外。不过想让 web 界面换一套配色,常规做法是手动调主题配置:背景、面板、侧栏、边框、强调色,一项一项对着色板试。

dsh-image-skin 把这件事反了过来:挑一张你喜欢的图片,插件用 k-means 从中提取颜色,自动生成明暗两套主题 token,让整个界面跟着图片的色调走。它还附带一个可选的桌面宠物,agent 在后台干活时能给个视觉提示。

这是什么

dsh-image-skin 是一个 DSH 图片皮肤插件,维护者是 GitHub 用户 Jack-sun-learner,当前版本 0.1.0,MIT 许可证。按插件自述:导入 PNG/JPG/WebP 自动生成主题配色,可选 Q 版宠物(程序化/AI 生图)。

插件客户端平台为 web(package.json 中 dsh.client.platform: web),所以安装时使用 --profile web。Node 引擎要求 ^22.19.0 || >=24.0.0

图片皮肤:从图片到主题 token

用法集中在 设置 → 图片皮肤 页面:

1、上传照片到图库,支持多选;
2、点击缩略图一键应用。

应用时插件做两件事。

第一件是配色。k-means 从图片中提取主色、辅色、强调色,自动生成明暗两套主题 token:背景、面板、侧栏、边框、品牌强调色、文字色都跟随图片主色调。

第二件是背景。图片作为页面背景,半透明面板透出图片;浓度和模糊都可调,模糊采用画布预烘焙。

图库以缩略图网格展示:当前应用的项高亮“应用中”,缩略图右上角的 × 可删除单项。图库和皮肤状态保存在浏览器 localStorage,重启后自动恢复。

桌面宠物

宠物部分是可选的。共 5 个预设形象:猫、兔、鲸、龙、柴犬,合计 30 张 GDI+ 生成的表情素材,大小 60–240px 可调。

行为按顺序是:

  • 出现时打招呼;
  • 30 秒无互动,躲到屏幕右缘露出半身;
  • 鼠标悬停时跳跃回应;
  • 左键拖拽自由摆放,位置自动记住;
  • 右键关闭。

与 DSH 的联动是这套设计的核心:宠物轮询宿主的 /api/dsh-image-skin/busy,检测到 agent 正在运作时进入思考状态,完成后弹出气泡“搞定啦!”。宠物的启动和停止通过宿主 API(pet-launch / pet-stop)完成,由 PowerShell/WPF 实现,不引入额外依赖。

安装与启用

从 GitHub 安装(推荐):

dsh plugin --profile web add github:jack-sun-learner/dsh-image-skin

安装后重启 web 服务生效。

本地开发安装:

dsh plugin --profile web add link:D:\AI_video\plugins\dsh-image-skin

profile 对 link: 源的处理方式是创建 junction 指向源码目录,因此修改源码不需要同步副本,重启 web 服务后生效。

改动源码时的注意

改完代码先做语法检查:

node --check lib/client.js lib/host.js

有两处容易踩坑:

1、宠物脚本在 PowerShell 5.1 下需要 UTF-8 with BOM 编码,否则中文注释无法正确解析;
2、宠物窗口位置使用 Win32 SetWindowPos 按物理坐标定位——WPF 自带的 Left/Top 在幽灵显示器、虚拟桌面场景下会把窗口落到屏幕外。

已知限制

背景图方案依赖面板半透明:图片要靠半透明面板透出来。如果某个面板不支持半透明,它会显得不跟随,这是预期行为,不是 bug。

适用场景与安装前检查

适合两类人:想让 DSH web 界面带上个人配色的用户;想要一个轻量的 agent 状态提示、而不是一直盯日志的用户。

安全方面要说明:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。dsh-image-skin 采用 MIT,源码集中在 lib/host.js(宿主端路由)、lib/client.js(客户端皮肤/图库/宠物控制/设置页)和 pet/ 目录(宠物窗口与素材生成脚本),装之前可以过一遍。

小结

dsh-image-skin 做的事情不大,但路径完整:从一张图到一套可用的主题 token,再到一个能反映 agent 状态的桌面宠物,状态落在 localStorage,重启后自动恢复。如果你想让 DSH 界面有点个人色彩,可以试一下。

相关链接:

  • 社区插件目录:https://www.skillhub.cn/plugins/Jack-sun-learner/dsh-image-skin
  • GitHub 仓库:https://github.com/Jack-sun-learner/dsh-image-skin

社区目录为独立站点,与 DeepSeek、幻方无官方从属关系。

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

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

Xiaoye