daboge-beach / dsh-skin-studio

Listed

🎨 DeepSeek Harness skin studio — built-in curated skins + a community skin gallery. 皮肤工作室:内置精选皮肤 · 用户上传皮肤中心,让每个 agent 都有专属面孔

mainTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:daboge-beach/dsh-skin-studio

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 026121bSynced Aug 17, 2026

🎨 DSH Skin Studio

简体中文 | English


🎨 DSH Skin Studio · 中文

DeepSeek Harness 皮肤工作室 —— 内置精选皮肤 · 用户上传皮肤中心 · 让每个 agent 都有专属面孔。

主题覆盖:英雄联盟(LOL / League of Legends)英雄皮肤 ×10 · 凡人修仙传(A Record of a Mortal's Journey to Immortality,国漫修仙) ×5 · DeepSeek 梗文化(梁神) ×1 · 极简基础 ×2 —— 支持随推理等级切换的修仙境界 / 皮肤等级分档形态(人物背景 · 吉祥物 · 光标 · 提示音)。

License: MIT Node.js >= 20 dsh-plugin DeepSeek Harness Skins: 18 Status: Preview PRs Welcome

⚠️ DSH 本身处于 v0.1 开发者预览阶段,插件 API 尚不稳定。本项目跟随上游版本演进,暂不保证跨版本兼容。

📖 这个项目是什么

DeepSeek Harness(DSH)把"万物皆插件"做到了极致——模型、工具、会话、连 UI 都是可替换的插件。皮肤(Skin)就是一种 UI 插件,通过 skin.json + lib/client.js 定义,由 ThemePresenter 接口实现"先试穿再应用、退出零残留"。

dsh-web-ui 已经给出了 8 款作者精选皮肤,证明这条路走得通。我们想再往前走一步:

让用户自己造皮肤、自己上传皮肤,做一个开放的皮肤中心(Skin Gallery)。

不是"作者精选 N 款",而是"任何人都能贡献、任何人都能装"的 marketplace 形态。

✨ 核心特性

特性说明
🎨 内置精选皮肤随包附带若干高质量开箱皮肤,装完即用
📥 用户上传皮肤拖拽 skin.json + 资源到皮肤中心即可加载,无需重新构建
🖼️ 可视化画廊全屏预览、亮/暗变体切换、试穿→确认两段式交互
🔌 官方格式兼容skin.json 字段与 dsh-web-ui 对齐,已有皮肤可直接迁移
🧩 插件联动皮肤可消费其他 DSH 插件的数据(行情、宠物、token 统计等)
🛠️ 皮肤开发工具提供 dsh-skin init 脚手架 + 类型定义 + 校验器,降低造皮肤门槛

🎨 内置皮肤一览(18 款)

英雄联盟系列 · 10 款(神话级质感)

皮肤主题
阿狸 · 九尾魅影粉紫幻境 · 魅惑灵动
伊泽瑞尔 · 符文远征金蓝符文 · 探险家气质
金克斯 · 弹幕狂潮疯狂霓虹 · 鲨鱼火箭
卡莎 · 虚空降临深紫虚空 · 活体装甲
拉克丝 · 光棱圣辉圣洁光晕 · 彩虹光谱
厄运小姐 · 赏金女王红金赏金 · 弹雨玫瑰
萨勒芬妮 · 星颂星空舞台 · 双色应援
娑娜 · 弦语仙音琴音流淌 · 静谧雅致
维恩 · 夜狩冷银夜色 · 银弩猎手
亚索 · 斩风疾影青风竹意 · 疾剑浪客

凡人修仙传系列 · 5 款

皮肤主题
韩立 · 青竹青衫修士 · 竹林问心
南宫婉 · 寒梅冰雪聪明 · 寒梅傲骨
银月 · 月华狼族圣女 · 月华如水
紫灵 · 紫霞紫气东来 · 仙子凌波
慕沛灵 · 桃夭桃之夭夭 · 灼灼其华

基础系列 · 2 款

皮肤主题
Aurora极简亮色 · 清晨极光
Midnight极简暗色 · 深夜静谧

梗文化系列 · 1 款

皮肤主题
梁神 · 深度求道凉子(冻得发抖)→ 梁子 → 梁圣 → 梁神(始皇帝形态),推理等级越高 boss 修为越高 · 卡通 caricature 非真人肖像

🚀 快速开始

前置要求
  • Node.js ≥ 20
  • DeepSeek Harness 已安装(npx @deepseek-ai/dsh web 可正常启动)
安装
# 装皮肤聚合包到 web profile
dsh plugin --profile web add @dsh-skin-studio/gallery

# 或装全家桶(皮肤 + 皮肤中心 + 开发工具)
dsh plugin --profile web add @dsh-skin-studio/studio
验证
dsh --profile web --dump-config   # 确认插件已挂载

打开 http://127.0.0.1:3080,侧栏会出现 Skin Studio 入口。

试穿皮肤
  1. 点击侧栏 Skin Studio
  2. 画廊里点击任意皮肤 → 全屏预览
  3. 试穿 → 即时生效,不满意随时退出
  4. 满意后点 应用 → 正式启用
上传自定义皮肤
  • 方式一(本地目录):把皮肤文件夹放到 ~/.dsh/skins/<your-skin>/,刷新画廊即可看到
  • 方式二(拖拽上传):在画廊界面拖入 .zip 皮肤包,自动解压校验
  • 方式三(npm 包)dsh plugin --profile web add <你的皮肤包名>

🧱 皮肤包格式

每个皮肤是一个目录,结构如下(兼容官方 dsh-web-ui 规范):

my-skin/
├── skin.json          # 皮肤清单(必填)
├── preview.png        # 画廊预览图(必填,建议 1280×800)
├── README.md          # 皮肤介绍(可选)
└── lib/
    └── client.js      # 客户端 bundle(必填,含 ThemePresenter 实现)
skin.json 字段规范
{
  "id": "my-skin",                    // 皮肤唯一 ID(kebab-case)
  "name": "我的皮肤",                  // 显示名
  "version": "1.0.0",                  // 语义化版本
  "author": "你的名字 <email@example.com>",
  "description": "一句话描述这个皮肤",
  "homepage": "https://github.com/...", // 可选
  "license": "MIT",

  // 视觉变体(至少一个,支持 light/dark)
  "variants": ["light", "dark"],

  // 客户端入口(相对于皮肤根目录)
  "client": "lib/client.js",

  // 皮肤能力声明(皮肤能做什么)
  "capabilities": {
    "customTitleBar": true,           // 自定义标题栏
    "customBackground": true,         // 自定义背景
    "customScrollbars": true,         // 自定义滚动条
    "consumePlugins": ["dsh-fun-ticker"]  // 消费其他插件的数据
  },

  // 调色板(可选,给皮肤中心做配色预览)
  "palette": {
    "primary": "#3b82f6",
    "background": "#0f172a",
    "surface": "#1e293b",
    "text": "#f1f5f9"
  }
}

完整字段定义和 ThemePresenter 接口签名见 docs/SKIN_SPEC.md

🛠️ 开发自己的皮肤

# 用脚手架创建皮肤模板
npx @dsh-skin-studio/create my-skin

cd my-skin
pnpm install
pnpm dev    # 启动开发服务器,热重载预览
pnpm build  # 构建 lib/client.js

开发文档见 docs/DEVELOPMENT.md

📦 项目结构

dsh-skin-studio/
├── packages/
│   ├── gallery/              # 皮肤中心 UI(画廊、试穿、上传)
│   ├── studio/               # 聚合包(gallery + 内置皮肤 + 工具)
│   ├── create/               # 皮肤脚手架 CLI
│   └── skins/                # 内置皮肤源码
│       ├── aurora/           # 极光(极简亮色)
│       ├── midnight/         # 午夜(极简暗色)
│       ├── ahri-ninefold/    # 英雄联盟系列 × 10
│       └── ...               # 凡人修仙传系列 × 5
├── docs/
│   ├── SKIN_SPEC.md          # 皮肤规范(权威)
│   ├── DEVELOPMENT.md        # 开发指南
│   ├── CONTRIBUTING.md       # 贡献指南
│   └── uploads/              # 用户上传皮肤的格式约定
├── examples/                 # 最小示例皮肤
├── scripts/                  # 构建与发布脚本
└── website/                  # 文档站

🤝 贡献皮肤

任何人都可以贡献皮肤到内置画廊。流程:

  1. Fork 本仓库
  2. npx @dsh-skin-studio/create 创建皮肤
  3. 把皮肤源码放到 packages/skins/<你的皮肤名>/
  4. 提交 PR,附上预览截图
  5. 通过评审后合入下一版发布

详见 docs/CONTRIBUTING.md

🗺️ 路线图

  • 仓库初始化、规范定稿
  • v0.1:皮肤中心 MVP(packages/gallery:画廊 / 试穿 / 应用 / 详情面板 / 吉祥物浮层 / 切换特效,内置 aurora + midnight + 凡人修仙传 5 款)
  • v0.2:拖拽上传、zip 解压、格式校验(浏览器内零依赖解压 + skin.json 校验)
  • v0.2.x:英雄联盟英雄皮肤系列 10 款(神话级质感)
  • v0.3.0:吉祥物生态(满屏漫步 · 庆祝动作)+ 任务完成提醒 + 境界档位系统(推理等级联动)+ 梗文化皮肤「梁神」(详见 CHANGELOG.md)
  • v0.4:皮肤脚手架 CLI、开发热重载
  • v0.5:插件联动(消费行情/token 统计等数据)
  • v1.0:跟随 DSH v1.0 稳定 API,正式发布

📄 License

MIT — 跟随 DeepSeek Harness 上游协议。

🙏 致谢

  • DeepSeek Harness — 感谢 DeepSeek 团队提供"万物皆插件"的运行时框架,本项目得以在其之上构建皮肤生态
  • dsh-web-ui — 皮肤格式和 ThemePresenter 抽象的开拓者,本项目借鉴了大量设计
  • 所有贡献皮肤的用户

🎨 凡人修仙传系列皮肤为 AI 生成的同人创作,基于《凡人修仙传》(作者:忘语)角色形象,仅供个人欣赏与学习交流。


🎨 DSH Skin Studio · English

The skin studio for DeepSeek Harness — curated built-in skins · a community skin gallery · give every agent its own face.

Themes: League of Legends (LOL) champion skins ×10 · A Record of a Mortal's Journey to Immortality (凡人修仙传, Chinese xiuxian novel / donghua) ×5 · DeepSeek meme (Liang Shen) ×1 · minimal essentials ×2 — with cultivation-stage / skin-tier forms that follow the reasoning-effort level (character backgrounds · mascot · cursors · chimes).

License: MIT Node.js >= 20 dsh-plugin DeepSeek Harness Skins: 18 Status: Preview PRs Welcome

⚠️ DSH itself is at the v0.1 developer-preview stage and its plugin API is still unstable. This project tracks upstream releases; cross-version compatibility is not guaranteed yet.

📖 What is this project

DeepSeek Harness (DSH) takes "everything is a plugin" to the extreme — models, tools, sessions, and even the UI are replaceable plugins. A Skin is a kind of UI plugin, defined by skin.json + lib/client.js, implementing try-before-apply with zero residue on exit via the ThemePresenter interface.

dsh-web-ui already ships 8 hand-picked skins by its author, proving the road works. We want to go one step further:

Let users build their own skins and upload them — an open Skin Gallery.

Not "N curated picks by the author", but a marketplace where anyone can contribute and anyone can install.

✨ Key Features

FeatureDescription
🎨 Curated built-in skinsShips with several high-quality skins, ready out of the box
📥 User-uploaded skinsDrag & drop skin.json + assets into the gallery — no rebuild required
🖼️ Visual galleryFull-screen preview, light/dark variant toggle, try → confirm two-step flow
🔌 Official format compatibleskin.json fields align with dsh-web-ui; existing skins migrate as-is
🧩 Plugin interopSkins can consume data from other DSH plugins (tickers, pets, token stats, …)
🛠️ Skin dev toolingdsh-skin init scaffolder + type definitions + validator to lower the barrier

🎨 Built-in skins (18)

League of Legends series · 10 skins (mythic-tier polish)

SkinTheme
Ahri · Nine-Tail CharmsPink-violet fantasy · enchanting agility
Ezreal · Rune ExpeditionGolden-blue runes · explorer spirit
Jinx · Bullet MayhemNeon chaos · shark rockets
Kai'Sa · Voidborn DescentDeep-void purple · living armor
Lux · Radiant PrismHoly radiance · rainbow spectrum
Miss Fortune · Bounty QueenRed-gold bounty · bullet-rose
Seraphine · Star AnthemStarry stage · duo-tone cheer
Sona · Etwahl MuseFlowing strings · serene elegance
Vayne · Night HunterCold-silver night · silverbolt huntress
Yasuo · Gale SlasherGreen wind & bamboo · wandering swordsman

A Record of a Mortal's Journey series · 5 skins

SkinTheme
Han Li · Green BambooAzure-robed cultivator · bamboo grove
Nangong Wan · Winter PlumIce-smart grace · plum in the snow
Yin Yue · MoonlightWolf-tribe maiden · moonlit waters
Ziling · Violet MistPurple aura · immortal fairy
Mu Peiling · Peach BlossomPeach blossoms in full bloom

Essentials · 2 skins

SkinTheme
AuroraMinimal light · dawn aurora
MidnightMinimal dark · deep-night calm

Meme series · 1 skin

SkinTheme
Liang Shen · Deep QuestChilly → Liang-zi → Saint → Emperor (Qin Shi Huang form); higher reasoning effort, higher boss cultivation · cartoon caricature, not a real person

🚀 Quick Start

Prerequisites
  • Node.js ≥ 20
  • DeepSeek Harness installed (npx @deepseek-ai/dsh web runs successfully)
Installation
# Add the skin gallery package to the web profile
dsh plugin --profile web add @dsh-skin-studio/gallery

# Or the full bundle (skins + gallery + dev tools)
dsh plugin --profile web add @dsh-skin-studio/studio
Verify
dsh --profile web --dump-config   # confirm the plugin is mounted

Open http://127.0.0.1:3080 — a Skin Studio entry appears in the sidebar.

Try a skin
  1. Click Skin Studio in the sidebar
  2. Click any skin in the gallery → full-screen preview
  3. Click Try on → applies instantly, revert anytime
  4. Happy with it? Click Apply to make it official
Upload a custom skin
  • Option 1 (local folder): put the skin folder under ~/.dsh/skins/<your-skin>/ and refresh the gallery
  • Option 2 (drag & drop): drop a .zip skin package onto the gallery; it is unzipped and validated automatically
  • Option 3 (npm package): dsh plugin --profile web add <your-skin-package>

🧱 Skin package format

Each skin is a directory structured as follows (compatible with the official dsh-web-ui spec):

my-skin/
├── skin.json          # skin manifest (required)
├── preview.png        # gallery preview (required, 1280×800 recommended)
├── README.md          # skin introduction (optional)
└── lib/
    └── client.js      # client bundle (required, contains the ThemePresenter)
skin.json field spec
{
  "id": "my-skin",                    // unique skin ID (kebab-case)
  "name": "My Skin",                  // display name
  "version": "1.0.0",                 // semver
  "author": "You <email@example.com>",
  "description": "One line about this skin",
  "homepage": "https://github.com/...", // optional
  "license": "MIT",

  // visual variants (at least one; supports light/dark)
  "variants": ["light", "dark"],

  // client entry (relative to the skin root)
  "client": "lib/client.js",

  // capability declarations (what the skin can do)
  "capabilities": {
    "customTitleBar": true,           // custom title bar
    "customBackground": true,         // custom background
    "customScrollbars": true,         // custom scrollbars
    "consumePlugins": ["dsh-fun-ticker"]  // consume data from other plugins
  },

  // palette (optional, used for gallery color previews)
  "palette": {
    "primary": "#3b82f6",
    "background": "#0f172a",
    "surface": "#1e293b",
    "text": "#f1f5f9"
  }
}

See docs/SKIN_SPEC.md for the full field definitions and the ThemePresenter interface signature.

🛠️ Develop your own skin

# Scaffold a skin template
npx @dsh-skin-studio/create my-skin

cd my-skin
pnpm install
pnpm dev    # dev server with hot-reload preview
pnpm build  # build lib/client.js

See docs/DEVELOPMENT.md for the development guide.

📦 Project layout

dsh-skin-studio/
├── packages/
│   ├── gallery/              # skin gallery UI (browse, try-on, upload)
│   ├── studio/               # aggregate package (gallery + built-ins + tools)
│   ├── create/               # skin scaffolder CLI
│   └── skins/                # built-in skin sources
│       ├── aurora/           # Aurora (minimal light)
│       ├── midnight/         # Midnight (minimal dark)
│       ├── ahri-ninefold/    # League of Legends series × 10
│       └── ...               # Mortal's Journey series × 5
├── docs/
│   ├── SKIN_SPEC.md          # skin spec (authoritative)
│   ├── DEVELOPMENT.md        # development guide
│   ├── CONTRIBUTING.md       # contribution guide
│   └── uploads/              # format conventions for user-uploaded skins
├── examples/                 # minimal example skin
├── scripts/                  # build & release scripts
└── website/                  # docs site

🤝 Contribute a skin

Anyone can contribute a skin to the built-in gallery. The flow:

  1. Fork this repository
  2. Create a skin with npx @dsh-skin-studio/create
  3. Put the skin source under packages/skins/<your-skin-name>/
  4. Open a PR with preview screenshots
  5. Once reviewed, it ships in the next release

See docs/CONTRIBUTING.md for details.

🗺️ Roadmap

  • Repository bootstrap, spec finalized
  • v0.1: gallery MVP (packages/gallery: browse / try-on / apply / detail panel / mascot overlay / transition effects; ships aurora + midnight + 5 A Record of a Mortal's Journey skins)
  • v0.2: drag & drop upload, zip extraction, format validation (dependency-free in-browser unzip + skin.json validation)
  • v0.2.x: League of Legends champion skin series × 10 (mythic-tier polish)
  • v0.3.0: mascot ecosystem (full-screen wandering, celebrations) + task-done alerts + power tier system (reasoning-effort linked) + the "Liang Shen" meme skin (see CHANGELOG.md)
  • v0.4: skin scaffolder CLI, hot-reload dev flow
  • v0.5: plugin interop (consume ticker / token stats, etc.)
  • v1.0: follow DSH v1.0 stable API, official release

📄 License

MIT — follows the DeepSeek Harness upstream license.

🙏 Acknowledgments

  • DeepSeek Harness — thanks to the DeepSeek team for the "everything is a plugin" runtime this skin ecosystem is built upon
  • dsh-web-ui — pioneer of the skin format and the ThemePresenter abstraction; this project borrows heavily from its design
  • Everyone who contributes skins

🎨 The A Record of a Mortal's Journey skins are AI-generated fan art based on characters from the novel by Wang Yu (忘语), for personal enjoyment and learning only.


Made with 🎨 for the DeepSeek Harness community

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
Contributing guideDetected
DocumentationDetected

Repository information

Language
TypeScript
License
MIT
Latest release
v0.3.0
Last updated
Aug 17, 2026, 7:12 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.