dsh-web-ui/packages/dsh-skins

5.1kStar310Fork49Issue5Watching

dsh 皮肤兼容载具:自动带入皮肤中心与 11 个历史皮肤空包,让老 profile junction 在过渡期不报错,下个发布周期将下线。

语言
TypeScript
License
Apache-2.0
分支
dev
deepseek-harnessdshdsh-pluginweb-ui

安装

$ dsh plugin --profile web add github:zhu1090093659/dsh-web-ui/packages/dsh-skins

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

@linxin666/dsh-skins 是一个已退役的兼容载具(保留一个发布周期)。它通过依赖关系把 @linxin666/dsh-client-ui-skin-center(皮肤中心)带给升级用户,并随包发布 11 个空壳的 v1 单皮肤叶包,让旧版 profile 里残留的皮肤 junction 在过渡期内仍可解析。

核心能力

  • 自动带入皮肤中心:把 @linxin666/dsh-client-ui-skin-centerworkspace:*)声明为唯一 dependency,升级/安装即获得完整的内置皮肤集合(xp / blue-fantasy / dragon-heir / minecraft / miku / trading / whale-song / harbor / whale-mom / matrix / maid-atelier / mint),皮肤以纯资产目录形态随皮肤中心包分发
  • 发布 11 个 v1 空叶包:build.mjs 为已退役的 v1 包名(blue-fantasy、dragon-heir、harbor、maid-atelier、matrix、miku、minecraft、trading、whale-mom、whale-song、xp)生成不携带任何资源的占位包;lib/index.js 是空 apply()lib/client.js 是浏览器半区 stub
  • 保留旧 junction 可解析:旧 profile 里的 v1 单皮肤入口在升级后仍可被 DSH loader 找到,不再因包缺失而报错
  • 继承 skin-center 的 patch:cordis.patch.yml 唯一 insert 行是 web-ui-skin-center,由 aggregate.ymlpatchFrom: ../skins/skin-center 自动生成
  • 不带 UI / 配置 / host 业务逻辑:本包没有 src/ 目录,没有 host 半区入口,没有设置项,没有皮肤资产;唯一的"代码"是 build.mjsbuild.test.mjs

技术实现

  • 语言: Node.js (ESM JavaScript;build.mjsbuild.test.mjs,无 TS 源码)
  • 关键依赖: @linxin666/dsh-client-ui-skin-centerworkspace:*,唯一的运行时依赖);构建期使用 node:fs / node:path / node:url / node:os / node:test
  • 架构模式: 兼容载具(compatibility carrier)。无 cordis 业务逻辑;通过 dsh.bundle.patch 指向 cordis.patch.yml,由 aggregate.yml 声明 patchFrom: ../skins/skin-centerdeps: ../skins/skin-center;叶包 package.json 声明 dsh.client.platform: web,是纯占位
  • 入口文件: build.mjs(构建期脚本,导出 LEGACY_SKIN_IDSbuildCompatibilityShims);cordis.patch.yml(bundle patch 声明);package.jsondsh.bundle.patch 指向 cordis.patch.yml

适用场景

还在用早期 dsh web profile、里面残留了 v1 单皮肤包 junction 的用户,升级到当前 dsh-web-ui 时如果不安装这个载具,DSH loader 会因找不到包而报错;安装本包能让旧 junction 在过渡期内继续被解析,直到旧版 bridge 完成一次性迁移。新用户应直接安装皮肤中心包或全家桶聚合包,不必再走本包。

前置依赖与兼容性

依赖最低版本说明
DSH未声明本包 package.json 未声明 dsh.engines;通过 @linxin666/dsh-client-ui-skin-center@deepseek-ai/* SDK peer 间接约束
Node^22.19 || >=24packages/AGENTS.md:9;本包 package.json 未声明 engines
平台跨平台仅做纯资产与 YAML 文本分发,无原生模块、无系统调用
原生模块仅使用 Node 内置模块(node:fsnode:pathnode:urlnode:osnode:test

安装方式

dsh plugin --profile web add github:zhu1090093659/dsh-web-ui/packages/dsh-skins

配置项

本包无需额外配置。叶包本身没有 settings / options / Schema,所有皮肤中心的能力(背景遮罩、模糊滑杆、Wallpaper Engine 桥接、用户皮肤目录等)由 @linxin666/dsh-client-ui-skin-center 在皮肤中心设置卡内提供。

常见问题

Q: 这个包装上后会自动给我装哪些皮肤?

A: 会自动带入皮肤中心包 @linxin666/dsh-client-ui-skin-center,里面随包分发 12 个内置皮肤(xp、blue-fantasy、dragon-heir、minecraft、miku、trading、whale-song、harbor、whale-mom、matrix、maid-atelier、mint),全部以纯资产目录形式分发(packages/dsh-skins/README.md:9)。

Q: 我是新用户,应该装这个包还是皮肤中心包?

A: 直接装皮肤中心包 @linxin666/dsh-client-ui-skin-center,或全家桶聚合包 @linxin666/dsh-web-ui-all。本包只保留一个发布周期作为过渡载体,计划在下个发布周期整体移除,新用户无需走它(packages/dsh-skins/AGENTS.md:7-8)。

Q: profile 里写了旧的 @linxin666/dsh-client-ui-skin-blue-fantasy 这类 v1 入口,装这个包后还会报"找不到包"吗?

A: 不会。build.mjs 会为 11 个已退役的 v1 包名生成同名空叶包并随 npm 发布;叶包的 apply() 是空函数、lib/client.js 是 stub,旧 profile 里的 junction 仍可被解析,不再触发包找不到的错误(packages/dsh-skins/build.mjs:11-50)。

Q: 这个包自身带皮肤资源(图片、CSS)吗?

A: 不带。AGENTS.md 明确本包不再携带皮肤资产;所有皮肤资产都在 packages/skins/skin-center/skins/<id>/ 下由皮肤中心包统一加载(packages/dsh-skins/AGENTS.md:2-4)。

Q: Maid Atelier 皮肤商用有限制吗?

A: 有。Maid Atelier 单独采用 CC BY-NC-SA 4.0,仅限非商业使用;完整许可与署名链随皮肤中心包的 skins/maid-atelier/ 目录分发(packages/dsh-skins/THIRD_PARTY_NOTICES.md:5-7)。

Q: profile overlay 本身是非法 YAML 时会怎么样?

A: DSH 会在本兼容包加载之前就报错,不会被本包修复;需要先修复 profile 的 overlay 再启动 DSH(packages/dsh-skins/README.md:36)。

Q: 安装后还需要手动启用才能让皮肤生效吗?

A: 本包本身没有启用开关,安装即生效。真正的皮肤切换在 GUI 一级菜单「皮肤中心」完成,或用 dsh-skin use <id> 命令;同一时刻只激活一个皮肤(packages/dsh-skins/README.zh.md:30)。

Q: 这个包会主动改写我的 profile 文件吗?

A: 不会。本包只做兼容占位,不触碰用户 profile;旧 v1 selection 数据的迁移由皮肤中心内的 legacy-bridge 在首次启动时一次性完成(packages/skins/skin-center/README.md:15)。

上手难度

入门 — 没有设置项、没有 UI、不需要任何额外操作;安装即生效,卸载即停止生效。

已知问题与限制

  • 本包计划在下个发布周期整体移除(packages/dsh-skins/AGENTS.md:7-8 / packages/dsh-skins/README.md:11);新用户不应再依赖此包
  • 11 个 v1 叶包均为空包:apply() 是空函数、客户端注入仅注册一个 no-op factory,激活后不会真正应用皮肤效果,仅做"可解析"占位(packages/dsh-skins/build.mjs:48-49
  • 若用户的 profile overlay 本身是无效的 YAML,DSH 会在本兼容包加载之前就报错(packages/dsh-skins/README.md:36
  • Maid Atelier 皮肤单独采用 CC BY-NC-SA 4.0,禁止商业用途(packages/dsh-skins/THIRD_PARTY_NOTICES.md:5-7
  • 本包仅随 npm 发布 11 个 v1 叶包名,叶包没有自己的 README / LICENSE / NOTICE,使用方需要从皮肤中心包获取这些信息