RevolutionLA/dsh-dream-skin ↗★ 197
dsh-dream-skin
DeepSeek Harness 换肤插件(Dream Skin for DSH):8 套 iOS / Linear 式清透冷调的高质感主题 + 弥散光壁纸 + 每皮肤智能背景 + 强调色 + 主题包分享,把换肤做成材质与配色克制的高级感工艺,而非贴图。Works in native DSH Web and third-party desktop clients (DSH Desktop): 8 original premium themes, glass materials, wallpaper 2.0, per-user accent, shareable theme packs — purely native token system. 适合追求界面美化与个性化配色的用户,提供原生 token 驱动的精致视觉材质。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:RevolutionLA/dsh-dream-skinドキュメント
README 全文を読む ↗中文 · English · 日本語 · 한국어 · Español · Français · Deutsch · Русский
dsh-dream-skin 🔮
为 DeepSeek Harness 换上一张克制、清透、有质感的「脸」。
原生换肤 · 背景壁纸 · 强调色 · 主题包 —— 一条 --dsw-* token 生态内的优雅实现。装一次,用很久。
写代码的地方,可以很安静。
| 🎨 8 套原创主题 | 🖼️ 壁纸 + 弥散光 | 🎯 克制的强调色 | 📦 主题包可分享 |
|---|
1 行安装 · 纯原生(无注入/不改安装包)· 不因 DSH 更新失效
🎮 两种玩法,一条插件都给你
🪄 玩法一:开箱即用的优雅
🧱 玩法二:随你掌控的 DIY
内置 8 套设计师调校的预设皮肤(Mirage 幻梦系列),浅色 / 深色兼顾,每套自带专属弥散光背景。
戴上即高级,不用任何调参。 在预设之上,你还能 换壁纸(本地图 / URL / 渐变)、叠加强调色 Accent、拖入或分享一个主题包,内部每个 token 都能摸到。 想要的样子,自己捏。
两种玩法分层独立、互不干扰:预设皮肤决定「材质与底色」,DIY 一层是纯叠加(overrideTokens),随开随关、一键还原。
📸 实机截图
真机效果,非概念图。左:应用皮肤后的 DSH 界面;右:设置里的「外观 / Theme」分节。


🎨 玩法一:8 套预设皮肤(Mirage 幻梦系列)
开箱即用的优雅。 在 设置 → 外观(Theme) 一键切换。下列预览由各皮肤的真实 token + 专属弥散光背景生成——所见即所得,点开可放大查看精致材质。
[](https://raw.githubusercontent.com/RevolutionLA/dsh-dream-skin/d8fbc836373bf373953b9e720f085f5920356c5f/docs/previews/abyss.png)
abyss · 🕶️ 沉静蓝
冷静深沉的靛蓝,克制不喧哗
aurora · 🌌 极光青
清冽通透的冷青,自然冷调
nebula · 🪐 星云紫
深邃漫射的紫青,朦胧神秘
ember · 🔥 余烬橙
温暖克制的琥珀橙
[](https://raw.githubusercontent.com/RevolutionLA/dsh-dream-skin/d8fbc836373bf373953b9e720f085f5920356c5f/docs/previews/midnight.png)
midnight · 🌚 午夜黑
极简纯黑,OLED 沉浸
ivory · 📐 iOS 扁平
极简平白,iOS 系统灰 + 克制的蓝
mist · 🧊 干净明亮
清透明亮的玻璃质感,半透明 + 模糊
rose · 🌸 Material 粉
明快彩粉,谷歌 Material 扁平彩色
浅色 / 深色兼顾:
mist、ivory、rose为浅色系,其余为深色系。不喜欢预设?往下看玩法二。
🧱 强大 DIY 空间(玩法二)
预设皮肤之外,dsh-dream-skin 还给你一套完整的自定义体系——想捏出独一无二的工作区,从这里开始。
| 能力 | 玩法二 · 你能做什么 |
|---|---|
| 🖼️ 自定义壁纸 2.0 | 本地图 / 图片 URL / 渐变预设;附带透明度 / 模糊 / 填充方式(裁剪填满 · 完整显示 · 模糊填充),每套皮肤还自动建议一张渐变,可自动弱化(聚焦任务时降低干扰) |
| 🌈 每用户强调色 Accent | 为当前皮肤叠加自定义品牌强调色(overrideTokens 层,不动皮肤本身),12 个典型色块一键选色 + 选色盘 + 随机 + 恢复主题色 |
| 📦 主题包导入 / 导出 / 分享 | 一个 *.dsh-theme.json = manifest + 全套 tokens,可导入文件、一键应用、复制分享链接(编码进 URL hash) |
| 🪟 弹窗不透明度 | 滑块控制下拉菜单 / 浮层 / 弹窗的底填充透明度,跟随持久化保存 |
| 🧩 本地主题包库 | 导入的主题包集中展示,应用 / 收藏 / 移除 一键完成 |
| 🎲 换一个试试(surprise me) | 随机换一个和你当前不同的主题;收藏喜欢的皮肤快速切换 |
| ✅ 校验 + 回滚 | 导入时校验格式 / 必填 token / 颜色合法性;失败或移除时安全回退,不做破坏性更改 |
一切都叠加在预设之上,随开随关、一键还原到 DSH 内置外观——大胆去试,不会弄坏什么。
⚡ 一句话安装
复制下面这句话给你的 DSH,它自己会装好一切:
请帮我安装 dsh-dream-skin 换肤插件(https://github.com/RevolutionLA/dsh-dream-skin 或 npm 的 dsh-dream-skin),装完告诉我如何重启 DSH Web。
不想麻烦 Agent?命令行一条:
dsh plugin --profile web add dsh-dream-skin && dsh web
🚀 现已发布到 npm! 装好 DSH 后,一条命令即可安装,无需 clone。
致敬 Codex-Dream-Skin。 但实现路径不同:Codex 是往桌面客户端渲染进程 注入 CSS(CDP),而 DSH 本身是 token 驱动的 Web GUI,官方就提供了「第三方插件注册主题」的能力——所以本插件是 纯原生接入,无注入、不改二进制、不因客户端更新失效。
不是官方产品。 仅供美化你的 DeepSeek Harness 工作区。
🏆 为什么值得用(vs 同类 DSH 主题插件)
换个赛道看:同类插件要么是把一套现成色板移植过来(好看,但配置只有一个开关)、要么是锁死单一美学的定制款、 要么专注把外部壁纸搬进来。我们把换肤做成一整套可调的材质与配色系统——追求的不是「更花」, 而是「更准、更克制、更耐看」,像一块反复推敲的玻璃。审美 + 可调性是我们的护城河。
| 能力 | 本插件 | dsh-catppuccin-theme(色板移植) | dsh-theme-mineradio(单一美学定制) | dsh-wallpaper-engine(壁纸桥接) |
|---|---|---|---|---|
| 8 套原创设计(非现成色板移植,原创 token + 弥散光) | ✅ | ❌ (4 套 Catppuccin 官方色板) | ❌ (1 套香槟金美学) | ❌ |
| 毛玻璃 / 液态玻璃双材质一键切换 | ✅ | 部分(固定玻璃质感) | ❌ | ❌ |
| 输入框 / 弹窗独立透明度滑杆 | ✅ | ❌ | ❌ | ❌ |
| 开箱即用的出厂配置(装完重启就是调好的样子) | ✅ | ❌ | ✅(本身即成品) | ❌ |
| 自定义壁纸 + 透明度/模糊 | ✅ | ❌ | ❌ | ✅(核心能力) |
| 壁纸 2.0(URL / 渐变预设 / 每皮肤建议 / 自动弱化 / 必应每日 + 定时更新) | ✅ | ❌ | ❌ | 部分(依赖 WE 壁纸) |
| 每用户强调色 Accent(叠加层,不动皮肤本身) | ✅ | ❌ | ❌ | ❌ |
| 主题包导入/导出 + 分享链接(JSON,无代码分发) | ✅ | ❌ | ❌ | ❌ |
| 本地主题包库 + 收藏 + 随机换 | ✅ | ❌ | ❌ | ❌ |
| 两代宿主兼容 + 运行时能力探测(宿主换代自动降级不报错) | ✅ | 未知 | 未知 | ❌(需先升级内核) |
| 校验 + 回滚(不做破坏性更改) | ✅ | 部分 | — | 部分 |
一句话:想要 Catppuccin 的品牌色、mineradio 的氛围感?本插件的主题包系统都能做出来或叠出来—— 反过来不成立。
✨ 功能一览
| 能力 | 说明 |
|---|---|
| 🎨 8 套主题预设(Mirage 幻梦) | 在 设置 → 外观(Theme) 一键切换,浅色 / 深色兼顾 |
| 🖼️ 自定义壁纸 | 上传本地图(自动压缩 ≤2MB),调节透明度 / 模糊 / 填充方式(裁剪填满 / 完整显示 / 模糊填充) |
| 🧊 玻璃材质(毛玻璃 / 液态玻璃) | 一键切换玻璃质感,透明度滑杆越右越透;模糊一个旋钮同时驱动壁纸与玻璃表面 |
| 🖼️ 开箱即用的出厂配置 | 首次安装即带完整美化配置:星云皮肤 + 内置壁纸 + 调好的玻璃数值,装完重启就能用 |
| 🌤️ 必应每日壁纸(预置) | 高级壁纸预填必应每日一图接口,点「应用链接」即可(重复点会强制重新拉图,不会被浏览器缓存挡回旧图);也支持任意图片 URL + 定时自动更新 |
| 🔤 内层不透明 | 卡片、输入框、消息气泡不被壁纸盖住,可读性优先 |
| ↩️ 默认还原 | 一键回到 DSH 内置外观(跟随系统) |
| 💾 三层持久化 | 皮肤与壁纸存 localStorage + 宿主侧 dream-skin.json,刷新不丢;桌面版每次换端口、重启也不丢 |
🧩 它是什么形式的插件
它是 DeepSeek Harness 的标准「双面插件」(dsh-plugin)——加载和用法与官方 ui-theme 完全一致。
DeepSeek Harness 的口号是「一切皆插件」:模型、工具、沙箱、会话、UI,乃至 Agent Loop 本身都是插件。
dsh-dream-skin 的本质就是把「换肤」做成一个和官方 UI 包同构的 npm 包:
┌────────────── dsh-dream-skin(标准 dsh-plugin / 双面插件)──────────────┐
│ dsh.bundle → cordis.patch.yml 插入 dream-skin 入口 (host 半边) │
│ dsh.client → lib/client.js(浏览器 bundle) (浏览器半边) │
└─────────────────────────────────────────────────────────────────────────┘
- 安装命令 = 官方唯一安装命令:
dsh plugin --profile web add dsh-dream-skin - 调用的是官方扩展点:
ctx.theme(注册主题)、ctx.theme.overrideTokens(叠加层)、ctx.slots(把 UI 挂进独立的 设置 → 外观 / Theme 分节)。 - manifest 契约与官方一致:
dsh.bundle+dsh.client+exports["./client"]。
也就是说:你装的不是一个旁门左道的脚本,而是 DSH 官方插件体系里的标准皮肤插件。
⚡ 快速开始(3 步)
# 1. 安装
dsh plugin --profile web add dsh-dream-skin
# 2. 重启
dsh web
# 3. 打开 设置 → 外观(Theme)→ 皮肤,挑一套 → 完。
装的是 npm 已完成发布的正式包,无需 clone。若
dsh plugin add报 workspace 相关错误,补一个-w即可。
📦 安装
四种方式任选其一,装完重启 DSH Web 即生效(当前会话会中断,但 DSH 会话有磁盘持久化,重启后可以恢复)。
方式一:npm 正式包(推荐,最简单)
dsh plugin --profile web add dsh-dream-skin
刚发版的那 24 小时内,请把版本号写死:
dsh plugin --profile web add dsh-dream-skin@。 原因是 pnpm 的minimumReleaseAge(新版本冷静期)会把不带版本号的add/update静默解析成上一个"成熟"版本, 并在输出里只留一行提示(如+ dsh-dream-skin ^9.27.1/(9.29.0 is available))。若那个旧版本的主机 peer 范围 不覆盖你当前的 dsh 运行时(例如 9.27.x 声明^0.1.0-rc.6,不含 0.2.x),宿主会在安装期直接拒绝并回滚package.json/pnpm-lock.yaml/node_modules,报错看起来像"插件不兼容",实际是没装上最新兼容版。 显式写版本号会让 pnpm 自动把该版本加入 profile 的minimumReleaseAgeExclude,不再退回旧版。 等冷静期过了(发布时刻 +24h)用不带版本号的命令效果相同。桌面版同理,把--profile web换成你实际的 profile 名 (在%USERPROFILE%\.dsh\profiles\下看目录名)。
方式二:从 GitHub 安装(固定到已验证的提交)
dsh plugin --profile web add 'github:RevolutionLA/dsh-dream-skin#'
固定到 release 对应的 commit,之后
main的新改动不会静默改变已安装代码。
方式三:从 Release tarball 安装(离线 / 不便走 git 的环境)
从本仓库 Releases 下载 dsh-dream-skin-.tgz(内含构建好的 lib/client.js,安装时无需执行任何 prepare 脚本),然后:
dsh plugin --profile web add ./dsh-dream-skin-.tgz
方式四:克隆后从本地路径安装(开发迭代)
git clone https://github.com/RevolutionLA/dsh-dream-skin.git
cd dsh-dream-skin
dsh plugin --profile web add .
dsh plugin会把相对路径锚定到你运行命令的目录,装的是指向克隆目录的 link 依赖:改完源码保存,重启 DSH 即生效,无需重新安装。
重启并验证:
dsh web
dsh --profile web --dump-config | grep -A2 dream-skin # 应出现 dream-skin loader 条目
打开 设置 → 外观(Theme),即可看到「皮肤」「强调色」「壁纸 / 高级壁纸」与「主题包」等行。
-w标志在裸add时必需:每个 profile 自带pnpm-workspace.yaml,pnpm 会把它当作 workspace 根,裸加报错ERR_PNPM_ADDING_TO_ROOT。若已加过-w,后续用现有 workspace 即无需重复。
🔄 更新 / 卸载
更新到最新版(装的是 npm 正式包时):
dsh plugin --profile web update dsh-dream-skin
dsh web # 重启生效
刚发版的那 24 小时内,请把版本号写死。 pnpm 的「新版本冷静期」(
minimumReleaseAge,默认 24 小时)会把 不带版本号的add/update静默解析成上一个"成熟"版本——不报错,只在输出里留一行(x.y.z is available)提示。若那个旧版本的主机 peer 范围不覆盖你当前的 dsh 运行时,宿主会在安装期直接拒绝并 回滚package.json/pnpm-lock.yaml/node_modules,看起来像"插件不兼容",实际是没装上新版。改用:dsh plugin --profile web add dsh-dream-skin@ # 显式版本会让 pnpm 把它加进 profile 的 minimumReleaseAgeExclude桌面版同理,把
--profile web换成实际 profile 名(%USERPROFILE%\.dsh\profiles\下的目录名)。 完整说明与对照实验见 issue #62 的补充更正。
卸载:
dsh plugin --profile web remove dsh-dream-skin
dsh web # 重启后恢复官方外观
🧩 兼容性
| 项 | 值 |
|---|---|
DeepSeek Harness (dsh) | 同一构建兼容三代宿主:0.1.0-rc.6 ~ 0.1.x(稳定版)与 0.2.0-rc.1 / 0.2.x(issue #62:0.2.0-rc.1 起宿主按 peer 范围整包跳过不兼容插件,故 peer 已放宽为 >=0.1.0-rc.6 =18 |
| 浏览器 | 现代 Chromium / WebKit(依赖原生 CSS 变量与 matchMedia) |
| 桌面端 | 第三方 DSH Desktop 壳已适配(issue #50/#51/#55);官方 DSH Desktop 预览版预期兼容(Electron 同源前端 + 继承插件机制)。完整锚点依赖清单 / 安全边界 / 已验证清单见 docs/desktop-support.md |
兼容机制(v9.10.0 起):客户端 bundle 把全部平台 seed 放在受控
try内按候选顺序探测——react/react/jsx-runtime,以及设置 store 的 master 名@deepseek-ai/dsh-client-store→ 稳定版名@deepseek-ai/dsh-client-runtime/client。判定依据是「require 成功返回」,不匹配宿主内部错误文案。若某天宿主全部 seed 换代,插件会降级为不注册任何 UI 的哑模块并打一条console.warn,而不会抛错——因此不会再出现 issue #43 那种整个 DSH Web 全屏Failed to load plugins(宿主对 loader-entry 工厂不做隔离,一个工厂抛错即可拖垮整个 shell)。关于
engines.dsh:曾尝试声明engines.dsh作为生态兼容信号,但因 semver 只在与自身major.minor.patch三元组相同的轨道上放行预发布版本,单一范围无法同时覆盖0.1.1-rc.x与0.1.2-rc.x,会把本项目明确支持的版本判为「不兼容」,反而广播错误信号;而宿主目前也不读取该字段。故不声明,以上述运行时探测为准。所有 peer 平台包均声明为
optional(由宿主运行时供给,npm 上无需安装);dsh-client-store自 2026-08-30 起已在 npm 发布。自0.2.0-rc.1起 peer 范围不再是装饰:宿主在 boot 阶段用semver.satisfies(运行时版本, peer 范围, { includePrerelease: true })逐个校验@deepseek-ai/dsh*peer,任一不满足即整包跳过(不注入路由、不启宿主接口,只在日志里留一行),所以 peer 范围现在就是本插件对外声明的兼容窗口,package.json与package-lock.json由回归门强制保持一致。
版本 9.29.0(2026-09-29):宿主换代兼容 + 壁纸填充方式轮(issue #62 / #61)——DSH 0.2.0-rc.1 起宿主新增 peer 兼容闸门:boot 阶段用 semver.satisfies(宿主运行时版本, peer 范围, { includePrerelease: true }) 逐个校验 @deepseek-ai/dsh* peer,任一不满足即整包跳过该插件(客户端不注入、宿主接口不启、只在日志留一行),因此原先以 ^0.1.0-rc.6 对齐的 peer 声明在 0.2.x 上会把插件整体判死(issue #62 的「换肤全部消失、设置项也不出现」);本版把六个 dsh-client-* peer 收敛为 >=0.1.0-rc.6 上就近声明 --dsw-specific-sidebar-fill,遮蔽主题覆盖值,侧边栏透明度滑杆在桌面端无视觉通路(右侧文件面板不受影响,故左右不一致);现让该子树重新继承(inherit !important,原生 Web 不