RevolutionLA/dsh-dream-skin

RevolutionLA/dsh-dream-skin

一键换肤插件:8 套原创主题、背景壁纸(透明度/模糊)、强调色、主题包导入/导出+分享链接、收藏与随机,纯原生 token 系统接入。

主题与外观deepseek-harnessdshdsh-plugin-theme

中文 · 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 + 专属弥散光背景生成——所见即所得,点开可放大查看精致材质。

abyss · 🕶️ 沉静蓝深海蓝黑底,唯一一束靛蓝高光;弥散光取深水反弹 aurora · 🌌 极光青冷青主调,强调色转出成功绿带,信号色永不撞车 nebula · 🪐 星云紫星云尘埃紫,弹层与气泡同源渐变,朦胧而有序 ember · 🔥 余烬橙唯一暖色暗皮肤:焦琥珀 + 深可可底,暖而不脏 midnight · 🌚 午夜黑刻意消色差的 OLED 纯黑,最克制的沉浸 ivory · 📐 iOS 扁平暖纸感画布 + iOS 蓝,白阶梯精排不刺眼 mist · 🧊 干净明亮唯一真半透明液态玻璃:六层 alpha 表面,模糊 8px rose · 🌸 Material 粉玫瑰纸感 + 品牌洋红,红色信号仍归红色

浅色 / 深色兼顾:mist、ivory、rose 为浅色系,其余为深色系。
每套皮肤自带专属默认参数(弥散光浓度 / 模糊 / 侧栏与输入框透明度 / 弹窗透明度 / 玻璃材质)——
切到哪套,哪套就是它的最佳状态;你自己调过的参数不会被覆盖。8 套皮肤全部通过 229 项可测质量门(217 项调色门 + 12 项工艺门)
(OKLCH 感知明度阶梯、三级文字对比度 WCAG 2.1 + APCA 双达标、信号色相分离、跨皮肤可区分度)。
不喜欢预设?往下看玩法二。

🧱 强大 DIY 空间(玩法二)

预设皮肤之外,dsh-dream-skin 还给你一套完整的自定义体系——想捏出独一无二的工作区,从这里开始。

能力 · 玩法二 · 你能做什么 🖼️ 自定义壁纸 2.0 · 本地图 / 图片 URL / 渐变预设;附带透明度 / 模糊 / 填充方式(裁剪填满 · 完整显示 · 模糊填充),每套皮肤还自动建议一张渐变,可自动弱化(聚焦任务时降低干扰) 🌈 每用户强调色 Accent · 为当前皮肤叠加自定义品牌强调色(overrideTokens 层,不动皮肤本身),12 个典型色块一键选色 + 选色盘 + 随机 + 恢复主题色 📦 主题包导入 / 导出 / 分享 · 一个 *.dsh-theme.json = manifest + 全套 tokens,可导入文件、一键应用、复制分享链接(编码进 URL hash) 🪟 弹窗不透明度 · 滑块控制下拉菜单 / 浮层 / 弹窗的底填充透明度,跟随持久化保存;凡用「弹层底色」令牌铺底的面(设置面板、插件管理、轨迹图 tooltip、卡片浮层等)共享一层 92% 可读性下限,滑杆拉到底也不读穿;下拉菜单与遮罩两条腿仍是全量程 🧩 本地主题包库 · 导入的主题包集中展示,应用 / 收藏 / 移除 一键完成 🎲 换一个试试(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(壁纸引擎 + 液态玻璃 UI) 8 套原创设计(非现成色板移植,原创 token + 弥散光) · ✅ · ❌ (4 套 Catppuccin 官方色板) · ❌ (1 套香槟金美学) · ❌ 毛玻璃 / 液态玻璃双材质一键切换 · ✅ · 部分(固定玻璃质感) · ❌ · ❌ 输入框 / 弹窗独立透明度滑杆 · ✅ · ❌ · ❌ · 部分(设置窗口 / 浮层 / 左侧栏 / 标题栏各有独立透明度与模糊;输入卡片与气泡可独立配颜色与保真度,透明度走全局) 开箱即用的出厂配置(装完重启就是调好的样子) · ✅ · ❌ · ✅(本身即成品) · 部分(出厂玻璃默认 + 7 份玻璃预设;无出厂壁纸 / 皮肤) 自定义壁纸 + 透明度/模糊 · ✅ · ❌ · ❌ · ✅(核心能力) 壁纸 2.0(URL / 渐变预设 / 每皮肤建议 / 自动弱化 / 必应每日 + 定时更新) · ✅ · ❌ · ❌ · 部分(本地图片 / 视频上传 + 自动轮播定时切换 + 适配模式;无 URL / 渐变预设 / 必应每日) 每用户强调色 Accent(叠加层,不动皮肤本身) · ✅ · ❌ · ❌ · 部分(6 预设 + 自定义主题色,驱动按钮 / 开关 / 链接 / 导航选中 / 滑块 / 玻璃高光;无「皮肤叠加层」概念) 主题包导入/导出 + 分享链接(JSON,无代码分发) · ✅ · ❌ · ❌ · 部分(字体集与玻璃预设可导出 / 导入 JSON;无分享链接) 本地主题包库 + 收藏 + 随机换 · ✅ · ❌ · ❌ · ❌ 两代宿主兼容 + 运行时能力探测(宿主换代自动降级不报错) · ✅ · 未知 · 未知 · 部分(单一开放 peer 区间覆盖 0.1.5-rc.1+ 与 0.2.x 两条宿主线;有宿主形态 / 能力探测与局部降级;内核下限 0.1.5-rc.1 为硬要求) 校验 + 回滚(不做破坏性更改) · ✅ · 部分 · — · 部分

一句话:想要 Catppuccin 的品牌色、mineradio 的氛围感?本插件的主题包系统都能做出来或叠出来——
反过来不成立。

✨ 功能一览

能力 · 说明 🎨 8 套主题预设(Mirage 幻梦) · 在 设置 → 外观(Theme) 一键切换,浅色 / 深色兼顾 🖼️ 自定义壁纸 · 上传本地图(自动压缩 ≤2MB),调节透明度 / 模糊 / 填充方式(裁剪填满 / 完整显示 / 模糊填充) 🧊 玻璃材质(毛玻璃 / 液态玻璃) · 一键切换玻璃质感,透明度滑杆越右越透;模糊一个旋钮同时驱动壁纸与玻璃表面 🪫 低功耗模式 · 设置 → 玻璃效果里一个勾选:关闭全部玻璃模糊与壁纸模糊,把大块半透明面变成平涂。给「两块窗口同开就掉帧 / GPU 占用高」的机器一个开关(issue #110);三态:没动过勾选 = 自动跟随系统的「减少透明度」(macOS 辅助功能 → 显示 → 减少透明度),勾过 = 固定住你的选择,行上可「交还给自动」。#110 的 M4 实测:空闲 GPU 23% → 11%,快速滚动 75-80% → 60-65% 🖼️ 开箱即用的出厂配置 · 首次安装即带完整美化配置:星云皮肤 + 内置壁纸 + 调好的玻璃数值,装完重启就能用 🌤️ 必应每日壁纸(预置) · 高级壁纸预填必应每日一图接口,点「应用链接」即可(重复点会强制重新拉图,不会被浏览器缓存挡回旧图);也支持任意图片 URL + 定时自动更新 🔁 壁纸轮换 · 高级壁纸选「图片链接」后,可贴入最多 20 条 http/https 图片链接(每行一条),按 5 分钟到 7 天的间隔顺序或随机切换,也可点「立即换下一张」。坏链接只丢它自己、不阻断其他条目;窗口隐藏时不切换,回到前台补上;默认关闭(issue #61) 🔤 内层不透明 · 卡片、输入框、消息气泡不被壁纸盖住,可读性优先 ↩️ 默认还原 · 一键回到 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
  • 官方桌面版(DSH Desktop)不能用命令行装:宿主 CLI 里写死了 profile === "desktop" 直接报错

(error: profile "desktop" is managed exclusively by the Electron application,本机在 dsh/lib/bin.js 读到该分支)。 两条走得通的路:① 在应用内的插件管理界面装;② 在该 profile 目录里手工 pnpm add dsh-dream-skin@(实测 2.3 秒通过,pnpm 会自行把该版本追加进 minimumReleaseAgeExclude)。 版本号必须写死:老 profile 的 ^9.x 按 semver 覆盖不到 10.x,而发布 24 小时内不带版本号的命令会被 pnpm 冷静期退回旧版。

  • 调用的是官方扩展点: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 即可。
两种情况下请把版本号写死(npm view dsh-dream-skin version 当场查号):刚发版的 24 小时内(pnpm 冷静期会静默装上旧版),
以及从 9.x 升上来的老 profile(^9.29.0 覆盖不到 10.x)——见下文「安装」与「更新」。

📦 安装

四种方式任选其一,装完重启 DSH Web 即生效(当前会话会中断,但 DSH 会话有磁盘持久化,重启后可以恢复)。

方式一:npm 正式包(推荐,最简单)

dsh plugin --profile web add dsh-dream-skin
刚发版的那 24 小时内,请把版本号写死:dsh plugin --profile web add dsh-dream-skin@(版本号当场查:npm view dsh-dream-skin version)。
原因是 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 下看目录名);桌面 profile 由 Electron 应用独占管理,CLI 会硬拒,
走 docs/desktop-support.md 里那条走得通的路。

方式二:从 GitHub 安装(固定到已验证的提交)

dsh plugin --profile web add 'github:RevolutionLA/dsh-dream-skin#<40位commit>'
固定到 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 .