DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Skin Manager — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-skin-manager

Skin Manager

dsh Web GUI 的动态皮肤管理器:发现所有已安装的皮肤(skin.json 包和 no-skin.json 市场主题),可从专用设置页面切换当前皮肤,彼此互斥,无需重启即可热加载

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-skin-manager@0.1.6
README兼容性版本

兼容性与来源证明

Skin Manager 以 dsh-skin-manager 发布,当前版本为 0.1.6。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.1.6stable
2026/8/19
0.1.5stable
2026/8/19
0.1.4stable
2026/8/18
查看其余 2 个版本收起版本
0.1.3stable
2026/8/18
0.1.2stable
2026/8/18
最新版
0.1.6
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
45.9 kB
文件数
7
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 7
周下载
138
安全扫描
✓ v0.1.6 扫描通过
最近提交
2026/8/19
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

README

dsh-skin-manager

English | 中文

A lightweight skin manager for the DeepSeek Harness web GUI. It discovers every installed skin (any package carrying a skin.json plus a prebuilt client bundle), lists them in a dedicated Settings → Skins page, and lets you switch the active skin with one click — mutually exclusive, hot-reloaded without restarting dsh web.

skins page

Features

  • Dynamic discovery — scans the web profile's node_modules for packages with skin.json + prebuilt lib/client.js, and also recognizes market themes without skin.json (a client bundle plus a cordis.patch.yml that inserts a theme/skin loader row, e.g. dsh-skin / Codex-style skin or dsh-kimino-theme). Newly installed skins appear automatically; no registry regeneration, no code changes.
  • Dedicated settings page — a settings.section entry (id skins, order 20) in the settings sidebar, next to General / Models.
  • One-click apply — pick a skin and click Apply; the profile patch is rewritten and DSH's config watcher hot-reloads it within seconds. Refresh the page to activate.
  • Mutually exclusive — exactly one skin is active at a time (the active one gets an insert row, every other skin a disabled: true row).
  • Restore default — the Default option disables every skin and returns to the stock DeepSeek Harness appearance.

Install

dsh plugin --profile web add github:xiaoyangcheng84-svg/dsh-skin-manager

Then restart dsh web (or rely on the market's hot install). Open Settings → Skins after a page refresh.

Requires git for the github: source install; alternatively install from a local checkout with dsh plugin --profile web add link:<path>.

Usage

  1. Open Settings → Skins.
  2. See Default plus every installed skin (e.g. 深海女仆工坊 / maid-atelier).
  3. Click Apply on a skin → click Refresh when prompted → the skin activates.
  4. Click Apply on Default to restore the stock look.

Skin package protocol

Any package is recognized as a skin when:

  • it lives under the profile's node_modules (top-level or @scope/name),
  • it ships a skin.json (id, name, package, accent, bodyAttr, tagline, optional wiring.id — the same fields used by dsh-deep-whale / dsh-web-ui skins), and
  • it ships a prebuilt client bundle (exports["./client"] or lib/client.js).

A market theme without skin.json is also recognized when:

  • it has dsh.client and dsh.bundle.patch,
  • its cordis.patch.yml contains a simple insert row,
  • the package name, row id, or (for immediately-loaded client bundles) description/keywords mention theme/skin, and
  • it ships a prebuilt client bundle.

dsh-market coordination

When dsh-market is installed, applying a skin from this manager also:

  • rewrites the same cordis.patch.yml managed section (boot persistence),
  • updates dsh-market's .dsh-market/state.json so it cannot re-disable the chosen skin at boot,
  • unmounts stale dsh-market hot mounts that would otherwise overlap the newly applied skin, and
  • syncs dsh-market's in-memory disabled state before rewriting the patch, so the market's self-healing guard cannot immediately re-disable the skin you just applied — no manual "use" click in the market is needed.

How switching works

Switching rewrites the managed section of the profile's cordis.patch.yml (between # --- dsh-skin-manager managed --- markers):

  • active skin → an - insert: row;
  • every other skin → - id: <rowId> + disabled: true.

Non-skin user patch rows (e.g. dsh-market) are preserved untouched.

API

The host half mounts three routes under /api/skin-manager:

RouteMethodPurpose
/api/skin-manager/listGETList installed skins + current active id
/api/skin-manager/applyPOST{ id } or { id: "official" } to switch
/api/skin-manager/bundleGET?id=<skinId> serve a skin's client bundle

Development

The client bundle is written directly in the __ModuleLoader__ bundle format (the same shape tsdown emits for the shipped ui-* packages), so no build step is required. lib/client.js may require only module-table entities (platform seed words like react and registered client bundles).

License

MIT