- Accueil
- Plugins
- Outils et capacités
- dsh-skin-switcher
Z
dsh-skin-switcher
zhtx2024/dsh-skin-switcher
Un gestionnaire de skins dans le panneau des paramètres qui détecte automatiquement les skins Web UI installées, permet de basculer entre elles en un clic et maintient automatiquement le correctif de profil.
Installer
dsh plugin --profile web add github:zhtx2024/dsh-skin-switcherREADME
dsh-skin-switcher
DeepSeek Harness Web GUI 的皮肤切换插件:在设置界面新增「皮肤」页,列出所有已安装的皮肤并提供一键切换按钮,支持一键恢复官方默认外观。
特性
- 设置界面内切换:官方设置面板新增「皮肤」页(
settings.section),已安装皮肤自动列出,无需改代码 - 统一管理所有皮肤:自动发现 profile 中所有
dsh-client-ui-skin-*皮肤包(支持任意 npm scope,如@dsh-external/dsh-client-ui-skin-maid-atelier),以及 dsh-web-ui 的dsh-skins聚合载体 - 支持皮肤中心 v2 资产引擎(0.4.0+):皮肤中心(
@linxin666/dsh-client-ui-skin-center>= 0.2.x)内置的skins/与用户目录~/.dsh/skins(DSH_SKINS_HOME可覆盖)中的 v2 皮肤自动列出;切换写入~/.dsh/skin-center-active.json,中心在页面加载时应用,无需 cordis 行 - 热切换,无需重启:legacy 皮肤切换写入
~/.dsh/cordis.patch.yml的 managed section(原子重写),DSH 配置监视器数秒内热重载,页面自动刷新生效 - 一键恢复默认:「恢复默认」回到官方原版外观
- 升级不丢外观:启动时自动把旧版活跃皮肤迁移到 v2 激活文件(存在 v2 孪生时),并解除旧版写下的皮肤中心禁用行
- 单一管理权威(仅旧版中心):legacy 皮肤中心(< 0.2,写 patch 的竞争者,行 id 自动从 bundle patch 发现,兼容
ui-skin-center与web-ui-skin-center)自动禁用;v2 中心是资产引擎,不会被禁用
安装
从 npm 安装(推荐)
dsh plugin --profile web add dsh-skin-switcher
从 GitHub 仓库安装(改代码调试)
# 1. 克隆本仓库
git clone https://github.com/zhtx2024/dsh-skin-switcher.git
# 2. 安装进 web profile
dsh plugin --profile web add link:<克隆路径>/dsh-skin-switcher
然后重启 dsh web(或依赖热重载),打开 设置 → 皮肤。
卸载
dsh plugin --profile web remove dsh-skin-switcher
卸载后如仍残留 ~/.dsh/cordis.patch.yml 中的 managed section,可手动删除
# --- dsh-skin-switcher managed --- 与 # --- end dsh-skin-switcher managed --- 之间的内容。
工作原理
| 半 | 文件 | 职责 |
|---|---|---|
| Host | lib/index.js | 挂载 /api/skin-switcher/state 与 /api/skin-switcher/use 路由;扫描 profile node_modules 发现皮肤(legacy 包 + v2 资产);管理 boot patch 的 managed section 与 v2 激活文件 ~/.dsh/skin-center-active.json |
| Browser | lib/client.js | 注册设置面板 settings.section「皮肤」页;切换后轮询 state 直至配置监视器确认,再刷新页面加载新的客户端插件图 |
皮肤切换协议
- legacy 皮肤:非激活皮肤 → 仅对「已组合」的皮肤写入
- id: <wiringId>+disabled: true(DSH 官方 loader patch 语法):bundle-wired 的皮肤,或 bundle patch 已插入其行的皮肤;仅安装而未组合的皮肤不写行,避免 "entry not found" 警告 - 激活皮肤(bundle-wired,即其包名在
dsh.profile.bundles中)→ 不写行,解除禁用即恢复 - 激活皮肤(未 bundle-wired,如 dsh-skins 载体中的皮肤)→ 自动在 profile node_modules 建链接并写入
insert行 - v2 资产皮肤(中心引擎存在时):激活 → 写入
~/.dsh/skin-center-active.json的{"active": "<id>"},中心在每次页面加载时应用;同 id 存在旧版皮肤包时其 wiring 行恒保持禁用,两套机制不叠加 - 皮肤中心 → 旧版(< 0.2)从 profile bundle patch 中发现其实际行 id(如
ui-skin-center/web-ui-skin-center),恒定写入disabled: true;v2 中心(>= 0.2,资产引擎)不写禁用行 - 恢复默认 → 清空激活文件(
{"active": null})并禁用所有 composed legacy 行 - managed section 恒为合法 YAML 数组(无行时写
[]),保证 patch 文件始终可被 DSH 解析
适配自己的皮肤
legacy 皮肤包(cordis 插件形态)
皮肤包需满足:
- 包名以
dsh-client-ui-skin-开头 - 根目录含
skin.json(字段:id、package、wiring.id,可选name/nameEn/author/tagline/description/wiring.bundleWired) - 通过
dsh plugin --profile web add <pkg>安装进 profile
v2 资产皮肤(皮肤中心引擎形态)
皮肤目录需满足:
- 目录内
skin.json声明"skinManifestVersion": 2,id与目录名一致(/^[a-z0-9-]+$/) - 放进用户目录
~/.dsh/skins/<id>/(DSH_SKINS_HOME可覆盖),或随皮肤中心包内置分发 - 无需 cordis 行:切换器写激活文件,皮肤中心引擎应用
许可与致谢
皮肤切换的 patch 管理逻辑移植自
zhu1090093659/dsh-web-ui 的
dsh-skin CLI / skin-center(BSD-3-Clause)。本插件同样以 BSD-3-Clause 发布,见 LICENSE。
Plugins associés
T
archify (deepseek-harness)
tt-a1i/archify
76.2kil y a 8 heuresOutils et capacitésMIT
T
WeKnora (dsh-weknora)
tencent/weknora
31.5kil y a 3 joursOutils et capacités
T
weknora
tencent/weknora
20.2kle mois dernierOutils et capacités
T
BrowserSkill (dsh-plugin-browserskill)
tencent/browserskill
8.1kil y a 3 joursOutils et capacitésMIT