设置面板皮肤管理器:自动扫描已安装的 Web UI 皮肤并一键切换,profile 补丁自动维护。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-skin-switcher
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:zhtx2024/dsh-skin-switcher
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
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。
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 31531
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 3949
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1130
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 499
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 477
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 441
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。