DSH Web GUI 皮肤管理器:自动发现已安装皮肤,在独立设置页一键互斥切换,热载入无需重启。
Skin manager for the DSH web GUI: discovers installed skins and switches the active one from a dedicated Settings page, mutually exclusive, hot-reloaded without restart.
安装
dsh plugin --profile web add github:xiaoyangcheng84-svg/dsh-skin-managerGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
面向 DeepSeek Harness Web GUI 的轻量皮肤管理器:自动发现所有已安装的
皮肤(任何带 skin.json 且附带预构建 client bundle 的包),在独立的
设置 → 皮肤 页面列出全部皮肤,一键切换——互斥生效,热载入无需重启
dsh web。
特性
- 动态发现:扫描 web profile 的
node_modules,找出所有带skin.json和预构建lib/client.js的包;也能识别市场下载的无 skin.json 主题 (带 client bundle 且cordis.patch.yml插入 theme/skin 行,例如dsh-skin/ Codex 风格皮肤、dsh-kimino-theme)。新装的皮肤自动出现, 无需重新生成清单、无需改代码。 - 独立设置页:注册
settings.section(idskins,order 20),出现在 设置侧栏,与「通用」「模型」平级。 - 一键应用:选中皮肤点「应用」,profile patch 被重写,DSH 配置 watcher 秒级热载入;刷新页面即生效。
- 互斥切换:同一时刻只激活一个皮肤(激活者写
insert行,其余写disabled: true行)。 - 恢复默认:「官方默认」关闭全部皮肤,回到 DeepSeek Harness 原生外观。
安装
dsh plugin --profile web add github:xiaoyangcheng84-svg/dsh-skin-manager
然后重启 dsh web(或走插件市场热安装)。刷新页面后打开
设置 → 皮肤。
github:源安装需要本机有 git;也可以本地 checkout 后用dsh plugin --profile web add link:<路径>安装。
使用
- 打开 设置 → 皮肤
- 看到「官方默认」+ 所有已安装皮肤(如 深海女仆工坊 / maid-atelier)
- 点某皮肤的「应用」→ 提示成功后点「刷新」→ 皮肤切换
- 点「官方默认」的「应用」→ 恢复原生外观
皮肤包协议
任意包满足以下条件即被识别为皮肤并出现在列表:
- 位于 profile 的
node_modules(顶层或@scope/name) - 带
skin.json(id、name、package、accent、bodyAttr、tagline,可选wiring.id——与 dsh-deep-whale / dsh-web-ui 皮肤字段一致) - 带预构建 client bundle(
exports["./client"]或lib/client.js)
没有 skin.json 的市场主题也会被识别,条件如下:
- 有
dsh.client和dsh.bundle.patch cordis.patch.yml里是简单的insert行- 包名、loader 行 id,或(immediately 加载的 client bundle)描述/关键词 包含 theme/skin
- 带预构建 client bundle
与插件市场(dsh-market)的联动
安装 dsh-market 时,用本管理器应用皮肤会同时:
- 重写
cordis.patch.yml的 managed 段(重启后仍生效) - 更新 dsh-market 的
.dsh-market/state.json,防止它在下次启动时把刚 选中的皮肤再禁用 - 卸载 dsh-market 残留的 hot mount,避免多个皮肤叠在一起
- 在改写 patch 前先同步 dsh-market 的内存禁用状态,防止市场的自愈逻辑 把你刚应用的皮肤立刻又禁用掉——不需要再手动去市场里点“使用”
切换原理
切换 = 重写 profile 的 cordis.patch.yml 中由
# --- dsh-skin-manager managed --- 标记的 managed 段:
- 激活皮肤 →
- insert:行 - 其他皮肤 →
- id: <rowId>+disabled: true行
非皮肤的用户 patch 行(如 dsh-market)原样保留。
API
host 半区在 /api/skin-manager 下挂三个路由:
| 路由 | 方法 | 用途 |
|---|---|---|
/api/skin-manager/list |
GET | 列出已装皮肤 + 当前激活 id |
/api/skin-manager/apply |
POST | { id } 或 { id: "official" } 切换 |
/api/skin-manager/bundle |
GET | ?id=<skinId> 提供皮肤的 client bundle |
开发
client bundle 直接用 __ModuleLoader__ bundle 格式手写(与官方 ui-*
包 tsdown 产物的形状一致),无需构建步骤。lib/client.js 只能
require 模块表实体(平台种子词如 react、已注册的 client bundle)。
许可
MIT
原始 README: https://github.com/xiaoyangcheng84-svg/dsh-skin-manager/blob/main/README.zh.md ↗
同类插件
查看全部 →
awesome-dsh-plugins
前部索引仓库(Radar):自动扫描发现的所有 dsh 插件候选;经测试合格的将移入后序精选目录仓库

DSH-Plugins-Marketplace
DSH插件市场 / DSH Plugin Marketplace: 在 DeepSeek Harness Web GUI 中一键浏览、安装与更新 GitHub topic:dsh-plugin 的全部插件 | browse, install & update all GitHub dsh-plugin plugins in the DSH Web GUI

zat-dsh-engine
DeepSeek Harness视觉插件市场——浏览、搜索和安装社区插件

dsh-market
装在 DSH 里的插件市场:设置页内逛/搜全部社区插件,按分类筛选,确认后一键安装,已装插件一目了然。

dsh-plugin-marketplace
DeepSeek Harness认证插件市场及自主注册库

deepseek-plugin-store
DeepSeek Harness 独立社区插件商店:发现、安装并提交经过验证的插件、工具与扩展。 | Independent community plugin directory.