中文EN

dsh-deepseek-style-theme

theme已测通过npmMIT

为 dsh web GUI 复刻 DeepSeek 官网风格的主题皮肤:流体粒子背景、玻璃拟态侧边栏与输入框、运行中子代理面板与 DSTT 高峰时段配色。

下载量 / Downloads
2,005
依赖体积 / node_modules
0.82 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-deepseek-style-theme

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

DeepSeek Style Theme

为 DeepSeek Harness 复刻 DeepSeek 官网视觉的主题皮肤插件 —— 桌面应用与 dsh web 通用(两端加载的是同一份 lib/client.js,差别只在宿主应用与 profile 的管理方式,见「安装」一节)。

鸣谢

本插件的两块核心视觉——流体背景与玻璃质感——都不是从零写出来的,它们分别来自下面两个上游项目。没有它们,这个主题不会有现在这个样子:

上游 · 作者 · 本插件用到了什么

dsh-theme-mineradio · @dhicoc · 流体背景的三段 GLSL 着色器(顶点 / 流场 / 显示)是上游的副本(唯一改动见 2.0.74:mediump→highp,为了让 Intel 核显不再把噪声画成方块);四分之一分辨率流场 + 双 framebuffer 乒乓的求解器结构、玻璃色散折射滤镜、光标视差、对话框悬停倾斜同样移植自上游

deepseek-harness-background · @HaoyueQin · 液态玻璃配方的技法来源(半透明填充 + 竖向光泽 + 背板滤镜链的设计思路),本插件按自己的选择器与 --dshome-glass-* 变量重新表达,未复制源码

两个项目均为 MIT 许可;完整许可原文见 [THIRD-PARTY-NOTICES.md](./THIRD-PARTY-NOTICES.md),随包发布,再分发时必须保留。详细的移植范围与改写点见下文「[第三方代码与署名](#第三方代码与署名)」。

特性

  • 流体流动背景(1.42.0+):全屏 WebGL2 双通道流体模拟——四分之一分辨率的流场(衰减 + 带速度的指针笔刷,两个 framebuffer 乒乓)被全分辨率的域扭曲噪声渲染器采样,带旋流迭代与三色柔性混合;按钮悬停会轻推流场、点击则荡开涟漪。配色跟随 DSTT 三色令牌(峰谷红 / 谷时蓝 / 常态绿)实时重新着色,无需重挂。无 WebGL2 时自动回落到原来的粒子背景(粒子实现完整保留)。流场自 2.0.81 起优先存储在 RGBA16F 里(探测 EXT_color_buffer_float + 4×4 探针确认 FBO complete,否则诚实退回 RGBA8)——8 位存储会把每帧衰减舍入到 1/255,弱值卡住、场里长出平台,域扭曲把平台画成"飘动的方块"(实测:同样 240 步,RGBA8 的场均值 0.0172 挤在 13 个台阶上,RGBA16F 正常衰减到 0.00002);页面可直接读 window.__dshomeFluidFormat 确认这台机器拿到的是哪种场
  • 液态玻璃(1.42.0+,1.43.0 起分两套配方):一套「湿玻璃」配方——半透明填充 + 顶部最亮、约 38% 处消失的竖向光泽渐变 + 统一的 blur() saturate() brightness() contrast() 背板链 + 内嵌顶部高光与发丝描边,悬停只提亮填充;所有旋钮都是 --dshome-glass-* 变量。1.43.0 新增 液态 / 白磨砂 二选一(见下文 DSTT 设置):液态 更通透、折射更强、边框带自走高光;白磨砂 就是上面这套。折射(SVG feDisplacementMap)只加在四个区域上(侧边栏 / 对话框 / 标题栏悬停态 / 用户气泡):它仅 Chromium 支持,且每个元素一次滤镜采样
  • 鼠标跟随的对话窗光斑(1.42.0+):光标在对话窗(消息区与输入框)上移动时,窗口上有一团跟随鼠标的柔光;它用 background-attachment: fixed 锚在视口上,所以滚动不会把光斑一起拖走,也不需要覆盖层元素。悬停玻璃面时另有一层随光标偏移的高光(--dshome-spec-x/y)
  • 玻璃拟态:侧边栏、会话卡片、输入框半透明填充 + 毛玻璃
  • 明暗双主题:深色通过 body[data-ds-dark-theme] 切换
  • 品牌细节:胶囊按钮、渐变主按钮、圆角卡片
  • 标题栏:默认透明,悬停变毛玻璃;栏内按钮统一为真圆角(覆盖产品全局 corner-shape:superellipse 造成的方角观感),会话标题小胶囊化
  • 悬停动画:中/E、「打开方式」、「对话 / 轨迹」标签悬停时上浮 + 品牌色辉光;中/E 短标签「中/E」平滑展开为「中文/EN」(max-width 过渡,非 display 硬切);「打开方式」展开菜单时箭头翻转,切换标签时选中项弹出
  • DeepSeek 品牌链接:点击侧边栏 DeepSeek 标识跳转 https://www.deepseek.com/
  • 轨迹视图:「对话 / 轨迹」标签在标题栏悬停(.dshome-swap)或轨迹视图存在时显示,不是常驻——会话视图下实测 [class*="wSkVaW_tabs"] 默认 display:none(2.0.84 按实机报告 B4 勘误)
  • 运行中子代理面板:有子代理启动时,右下角浮出玻璃面板,实时列出正在运行的子代理——名称、已运行时长、token 用量与流动进度条;点击条目直接跳转到该子代理会话,可折叠收起
  • 跨平台:交付文件菜单里的「打开所在文件夹 / 在文件管理器中显示」由官方通路执行(session.openWorkspacePath),各平台调用系统文件管理器;本插件不再自己开文件管理器
  • 模型目录同步:已交还官方(2.1.90 起)。官方自带模型目录(ui-model-selection + modelCatalog),"选择器里有哪些模型"以官方为准;本插件不再介入,也不再写 llm-deepseek.models。
  • 交付文件菜单(1.41.0+,1.41.2 起覆盖两处):回复末尾的「本轮文件改动」条目左键点击即弹出玻璃拟态操作菜单,交付文件卡片右键弹出同一菜单——用默认应用打开 / 打开所在文件夹 / 复制路径 / 打开预览(卡片上显示为「在侧边栏预览」);产品自己的下拉菜单里也补上它唯一缺的「复制路径」。产品原本的左键动作被保留成菜单项,不会被丢掉
  • 时段提示(DSTT):主题模式四选一——峰谷红蓝(高峰鲜红、谷时段蓝)/ 峰谷红绿(高峰鲜红、谷时段绿)/ 常态绿 / 常态蓝;高峰窗口北京时间 9:00–12:00、14:00–18:00(周六周日全天非高峰),高峰色为鲜红 #F5222D

DSTT(DeepSeekStyleTheme)设置

设置页新增 DSTT 选项卡,提供一行四选「主题模式」(deepseek-style-theme 段的 mode 字段,持久化到 settings.yaml):

  • 峰谷红蓝(默认):高峰 = 鲜红(提示),谷时段 = 蓝色;
  • 峰谷红绿:高峰 = 鲜红(提示),谷时段 = 绿色;
  • 常态绿:始终绿色,无高峰区分;
  • 常态蓝:始终蓝色,无高峰区分。

语义锚点版(2.1.0+,面向 dsh 0.2.x 官方桌面版)

产品每次构建都会重排 CSS Module 哈希(0.1.7 的 .wSkVaW_ → 0.2.0 的 .Dc7zOa_),

任何写死类名的补丁都会在更新后静默失效。2.1.0 起主线只依赖产品语义钩子,不再写死哈希:

保留(语义) · 依据

输入卡玻璃化 · [data-composer-stats] / [data-composer-card]

浮层菜单液态玻璃 · [data-menu-material]

交付文件卡片 / 文件改动行 · [data-presented-file] / [data-presented-files-row]

文件弹窗(打开文件/复制路径/打开文件夹) · button[data-ref-chip] / [data-presented-*]

用户气泡 · [data-chat-flow-kind="user"]

首屏标题 / 预览角标 · [class="_headline"] / [class="_previewBadge"]

同时把 installGuarded 从「挂载时查一次」升级为 MutationObserver:懒挂载的面板与

晚出现的行也能等到样式,不再有「刷新一下才生效」这一类问题。

这一版的取舍(明确不做)

下列面在 0.2.0 里没有语义钩子,只有每次构建都会变的类哈希,因此不再覆盖:

  • 侧栏外壳的玻璃与折射、应用外框、标题栏悬停胶囊与中/EN 切换定位、光标高光跟随、

会话行/项目行样式、settings 与子代理面板的内部样式。

代价是视觉上少两块(侧栏、外框),换来的是一条规则:产品更新不需要改主题。

2.0.90 那套写死哈希的实现留在 git 历史里,需要时用

git show 193d691:lib/client.js > lib/client.js 取回——不要把哈希版当回退方案:

它的锚点(.wSkVaW_、.hHd-Xa_、.YDXeBa_*…)在当前 0.2.0 产品里全部 0 命中,

拿回来同样是没有样式的(实测)。

另有几行开关与选项:

  • 背景方式(backgroundMode,默认 classic;2.0.73+):一行四选,切换即时生效、不用刷新页面。
  • ① 主色+纯白+近白(classic,默认;2.0.90 起):1.43.11 那套(软主色 + 纯白 + 近白),按钮与背景同一色系、没有第二种色相。2.0.83 曾把默认改成 bold,2.0.90 按用户要求改回——默认就是这套「主色 + 纯白 + 近白」;
  • ② 主色+纯白(white):同一软主色 + 纯白。着色器三个 uniform 里第三个复用白色(深色复用该族的近黑),所以只有两个颜色参与;
  • ③ 自选背景(custom;2.0.76 起的分工见「[插件商城适配](#插件商城适配与壁纸--侧栏插件共存)」):我们这层完全不画——流体/粒子画布整体卸载,主题自己的 per-colour 底色也按选择器让位(带 :not([data-dshome-bg=custom]),不是拿 !important 对打),深色蒙版只用在你自己填的图片上。背景到底是谁的:装了 dsh-plugin-wallpaper-engine 且它正在渲染时连纯白都不画,背景交给它;没有它时是纯白(浅色)/ 纯黑(深色)。颜色(蓝/绿/红)只驱动按钮与品牌 token,不参与背景。想放自己的图就填图片 URL / 任意 CSS 背景值,或点「桌面壁纸」(写入 desktop,由宿主端读本机壁纸,见隐私一节);不合法的值不会白屏;
  • 浓三色(bold):1.43.12 的三浓色,保留可选(用户要求先留着)。
  • 动态背景(流体)(ambientBackground,默认开;2.0.75+):关掉后不挂载 WebGL2 流体,也不回落到粒子——不是把它藏起来(藏起来的画布照样在算),而是根本不创建,GPU 占用归零,背景只剩静态配色。集成显卡把流体画成方块、或风扇被它拉满时,关这个。
  • 流体跟随笔刷(fluidBrush,默认关):开启后光标才把速度写进流场、拖出尾迹;改完刷新页面生效。
  • 玻璃风格(glassStyle,默认 液态):
  • 液态(1.43.0+):Apple Liquid Glass 方向——填充降到 rgb(255 255 255 / .14)、顶部光泽降到 .07,背板链改为靠 saturate(1.75) 让身后颜色发亮,共用的 feDisplacementMap 走更大的 scale(104,白磨砂仍是 60),边框上再跑一圈自走的 conic-gradient 高光(@property 注册的 <angle>,与鼠标无关)。上玻璃的有四处面板:侧边栏外壳 / 对话框 / 标题栏(悬停)/ 用户消息气泡;另有第五处浮层见下一条;
  • 浮层菜单也上玻璃(2.0.90+):产品把下拉菜单 portal 到所有玻璃面板之外,菜单自带的材质又铺了一层不透明的 rgba(248,249,250,.58),所以液态会话里菜单是唯一一片不透光的白(代理预设 / 模型 / 权限 / 会话行菜单都算)。这些菜单由 MENU_GLASS_CSS 单独接管,锚在产品自己的材质钩子 [data-menu-material] 上——只加玻璃身份,不重画材质:外圈是主题的 `

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:23,最后更新 2026-11-04

链接

GitHub · Homepage · npm

同类插件