🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

皮肤切换器 zhtx2024/dsh-skin-switcher

DeepSeek Harnessv0.4.0
zhtx202477 天前有提交已提供中文文档扫描:含敏感能力

在设置页一键切换已装皮肤并恢复默认外观

29.2/100
综合分
3
GitHub 星标
272
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-skin-switcher
npm 源 · dsh-skin-switcher 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 77 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-skin-switcher @ 0.4.0
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/23 01:16:07

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 44 处,展示前 17 条)
  • 读取本地文件
    lib/index.js:88
    const meta = JSON.parse(readFileSync(join(absDir, 'skin.json'), 'utf8'))
  • 读取本地文件
    lib/index.js:119
    const meta = JSON.parse(readFileSync(join(absDir, 'skin.json'), 'utf8'))
  • 读取本地文件
    lib/index.js:155
    entries = readdirSync(modulesDir)
  • 读取本地文件
    lib/index.js:161
    if (!statSync(pkgPath, { throwIfNoEntry: false })?.isDirectory()) return
  • 读取本地文件
    lib/index.js:165
    if (statSync(join(pkgPath, 'skin.json'), { throwIfNoEntry: false })) out.push(pkgPath)
  • 读取本地文件
    lib/index.js:171
    subs = readdirSync(carrierDir)
  • 写入本地文件
    lib/index.js:472
    mkdirSync(dirnameOf(filePath), { recursive: true })
  • 写入本地文件
    lib/index.js:474
    writeFileSync(tmp, next)
  • 写入本地文件
    lib/index.js:475
    renameSync(tmp, filePath)
  • 写入本地文件
    lib/index.js:619
    mkdirSync(dirnameOf(path), { recursive: true })
  • 写入本地文件
    lib/index.js:621
    writeFileSync(tmp, `${JSON.stringify({ active: id }, null, 2)}\n`)
  • 写入本地文件
    lib/index.js:622
    renameSync(tmp, path)
  • 删除本地文件
    lib/index.js:776
    if (process.platform === 'win32' && stat.isDirectory()) rmdirSync(target)
  • 删除本地文件
    lib/index.js:777
    else unlinkSync(target)
  • 发起网络请求
    lib/client.js:73
    fetch("/api/skin-switcher/state", { cache: "no-store" })
  • 发起网络请求
    lib/client.js:94
    return fetch("/api/skin-switcher/use", {
  • 发起网络请求
    lib/client.js:116
    fetch("/api/skin-switcher/state", { cache: "no-store" })
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 一键切换已装皮肤
  • 恢复默认外观

README

由 DeepSeek 最新模型翻译生成
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 行
展开完整文档(README 剩余 1 节)
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 皮肤中心(/dsh-skin-switcher

然后重启 dsh web(或依赖热重载),打开 设置 → 皮肤。

卸载 sh
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: + 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 存在旧版皮肤包时其 wiring 行恒保持禁用,两套机制不叠加
- 皮肤中心 → 旧版(= 0.2,资产引擎)不写禁用行
- 恢复默认 → 清空激活文件({"active": null})并禁用所有 composed legacy 行
- managed section 恒为合法 YAML 数组(无行时写 []),保证 patch 文件始终可被 DSH 解析

适配自己的皮肤

legacy 皮肤包(cordis 插件形态)

皮肤包需满足:

1. 包名以 dsh-client-ui-skin- 开头
2. 根目录含 skin.json(字段:id、package、wiring.id,可选 name/nameEn/author/tagline/description/wiring.bundleWired)
3. 通过 dsh plugin --profile web add 安装进 profile

v2 资产皮肤(皮肤中心引擎形态)

皮肤目录需满足:

1. 目录内 skin.json 声明 "skinManifestVersion": 2,id 与目录名一致(/^[a-z0-9-]+$/)
2. 放进用户目录 ~/.dsh/skins//(DSH_SKINS_HOME 可覆盖),或随皮肤中心包内置分发
3. 无需 cordis 行:切换器写激活文件,皮肤中心引擎应用

许可与致谢皮肤切换的 patch 管理逻辑移植自 zhu1090093659/dsh-web-ui 的 dsh-skin CLI / skin-center(BSD-3-Clause)。本插件同样以 BSD-3-Clause 发布,见 LICENSE。
预览分享卡片长什么样 ↓zhtx2024/dsh-skin-switcher
分享 · DeepSeek Harness Hub
zhtx2024/dsh-skin-switcher

在设置页一键切换已装皮肤并恢复默认外观

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部