dsh-skin-kit

August 19, 2026 · View on GitHub

DeepSeek Harness(DSH)换皮肤的工具箱。装一次,之后全在界面里点。

English · 功能规划与架构 · 做自己的皮肤 · 故障排查

Node.js >=18.17 License: MIT

DSH Desktop using the Glacier River default wallpaper

它能做什么

  • 十套内置壁纸皮肤,一张壁纸对应一套完整配色:云海星球、比奇堡晴日、白崖小径、冷峻次元、冰川河谷、暮色湖灯、海岸霓虹、海边书屋、富士夜色、晴空仰望。
  • 换皮肤不用重启。点一下卡片,界面立刻变。
  • 三个滑杆实时调参:主界面面板不透明度、壁纸模糊、壁纸亮度。点击「设置」打开的整个对话框固定为 70%,设置之外的主界面仍可自由调节。
  • 自己的图片或视频一键变皮肤。每次上传都会新增一张皮肤卡;mp4/webm 保留原始画质和帧率,ffmpeg 只负责取色,图片和其他视频格式才做必要优化。
  • 调好的皮肤能打包分享。导出一个 .dshskin 文件,配色、参数、壁纸都在里面,别人导入就是一模一样的效果。
  • 体检和安全卸载。DSH 有个坑:profile 里列了却解析不到的插件会让它直接启动不了doctor 专治这个,包括别人留下的悬空依赖。

快速开始

# 装进 DSH(默认桌面端 profile,其次 web)
npx github:mysn777/dsh-skin-kit install

# 重启一次 DSH,然后打开 设置 →「皮肤工坊」

不想开界面也行:

npx github:mysn777/dsh-skin-kit list                 # 看有哪些皮肤
npx github:mysn777/dsh-skin-kit use fuji-night        # 换皮肤
npx github:mysn777/dsh-skin-kit set alpha=0.5 blur=12

把自己的素材变成皮肤:

dsh-skin-kit diy ./我的壁纸.jpg --name "我的皮肤"
dsh-skin-kit diy ./城市夜景.mp4 --name "夜行"      # 视频动态壁纸也行

需要更多静态或动态壁纸,可浏览哲风壁纸。它是独立第三方网站,与本项目不存在隶属、合作或授权代理关系。本项目不镜像或再分发该站素材;下载和使用前请确认具体素材许可,并遵守网站用户协议及原作者权利。

需要 Node.js ≥ 18.17。不需要 pnpm,也不需要任何构建工具——绝大多数 DSH 桌面端用户机器上没有 pnpm,所以这个工具自己完成 profile 接线。 ffmpeg 是可选的:装了可自动取色、优化图片并转换非 mp4/webm 视频;直传 mp4/webm 不转码。

十套内置皮肤

id名称风格
bikini-breeze比奇堡晴日明亮海蓝、珊瑚橙点缀
chalk-cliffs白崖小径海岸草坡、温柔浅色
cloud-orbit云海星球黑色太空、蓝色地球
cold-anime冷峻次元雪原灰蓝、冰蓝高光
fuji-night富士夜色深蓝山影、暖光小店
glacier-river冰川河谷雪山河流、青绿冷色
ocean-avenue海岸霓虹紫红晚霞、街头路牌
seaside-study海边书屋晴海书亭、暖木点缀
skyward-blue晴空仰望蓝天树影、清透浅蓝
twilight-lake暮色湖灯蓝调湖面、暖色路灯

十套内置皮肤和今后新建的图片/视频 DIY 皮肤统一默认:主界面不透明度 15%、模糊 0px、壁纸亮度 100%。这组值不模糊、不增减原片亮度,并尽量少遮挡壁纸;手动参数仍可覆盖。

命令一览

命令作用
install [--profile <名>]装进 DSH profile
uninstall [--purge]卸载;--purge 连皮肤和壁纸数据一起删
doctor [--fix]体检所有 profile,找出会让 DSH 起不来的条目
list列出皮肤和当前状态
use <id|none>换皮肤 / 关掉皮肤
set alpha=.. blur=.. brightness=..调参数
diy <图片或视频>生成一套自己的皮肤
export [id] [--out 文件]导出 .dshskin
import <文件>导入 .dshskin
prune清理没人引用的壁纸文件

通用参数:--home <路径> 指定 DSH home(默认 $DSH_HOME~/.dsh),--json 输出机器可读结果。

它怎么工作

dsh-skin-kit(一个包,三重身份)
├─ CLI            装/卸/体检/DIY/导入导出
├─ DSH host 半    /api/skin-kit/* 路由 + 配置读写 + 壁纸伺服
└─ DSH client 半  套用皮肤 + 「皮肤工坊」设置分区

三个值得说的设计:

皮肤改的是设计令牌,不是类名。 DSH 前端所有颜色都读 --dsw-* CSS 变量,本工具覆盖其中全部 80 个。相比去命中 .pI_x6G_frame 这种构建期哈希类名,DSH 升级后不容易碎。

壁纸走 HTTP 路由,不塞进 JS。 用户上传的素材走 /api/skin-kit/wallpaper/<id>,文件在 ~/.dsh/skin-kit/wallpapers/;随包默认壁纸走 /api/skin-kit/asset/<skinId>,文件在插件的 skins/assets/。这样不会把图片或视频膨胀进 client.js

随包资产单文件上限 600KB。 npm test 会扫描 skins/assets/,任何文件超限都直接失败。原因不是浏览器加载不了,而是项目要保持 npx github: 首次拉取够快;十张图如果不设闸门,很容易把一个轻量插件拖成几十 MB。

CSS 在浏览器里现算。 皮肤编译器是纯函数,客户端自带一份,所以换皮肤和拖滑杆都不用等服务端往返。三个实时参数还进一步做成 CSS 变量(--dsk-alpha / --dsk-blur / --dsk-brightness),拖滑杆连样式表都不用重写,只改一个变量。

用户数据都在 ~/.dsh/skin-kit/ 下:config.json(当前皮肤和参数)、skins/*.json(自建皮肤)、wallpapers/(用户壁纸原文件)。十张默认壁纸随插件副本安装,不混进用户数据。

隐私与故障排查

所有图片、视频、取色和压缩都在本机完成,不会上传到 dsh-skin-kit 或哲风壁纸。遇到安装、profile、ffmpeg 或视频播放问题,请先看故障排查。安全漏洞请按 SECURITY.md 私密报告,不要直接贴到公开 Issue。

开发

npm test              # 58 条用例:编译器、profile 接线、HTTP 路由、客户端 DOM 行为
npm run build         # 重新生成 lib/client.js(改了 src/ 就要跑)

lib/client.js 是构建产物但要提交进仓库——用户是直接从仓库装的,不会自己构建。有一条用例专门比对它和源码是否同步。

版本记录见 CHANGELOG.md

许可

代码使用 MIT 许可。十张随包壁纸不自动继承 MIT,来源和允许范围见 ASSET_LICENSE.mdskins/assets/README.md