dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
四套可切换的 DeepSeek Harness 界面皮肤(樱风 / 褐东风 / 潮汐 / 月壤),纯设计令牌覆盖,不改宿主源码 · Four switchable theme skins for the DeepSeek Harness web UI
给 DeepSeek Harness(DSH)桌面版 Web 界面用的换肤插件。四套预设皮肤,一个悬浮换肤面板,明暗自动跟随。
不修改宿主源码、不替换渲染逻辑:只叠一层设计令牌(--dsw-alias-* / --dsw-specific-*)+ 一层装饰 CSS。
| 皮肤 | 配色 | 气质 | 圆角 |
|---|---|---|---|
| 樱风(JK) | 藏青 / 制服红 / 奶油粉 | 制服、樱花、细格纹 | 偏软(16px) |
| 褐东风 | 青铜 / 焦褐 / 仪表金 | 云纹铜构、仪表盘 | 收紧(4px) |
| 潮汐 | 深青 / 靛蓝 / 浪白 | 青海、水平波纹 | 放大(20px) |
| 月壤 | 月岩灰 / 星蓝 / 银紫 | 陨野、星点、银晕 | 最大(30px) |
每套都写了 light / dark 两套色板,切换宿主明暗时自动换值。
| 樱风(浅色) | 褐东风(深色) |
|---|---|
![]() | ![]() |
| 潮汐(浅色) | 月壤(深色) |
|---|---|
![]() | ![]() |
截图来自
preview.html的宿主替身,不是 DSH 真实界面;装进 DSH 后布局由宿主决定,配色与底图一致。
dsh plugin --profile web add dsh-theme-quartet
装完完全退出并重启 DSH。右下角出现换肤圆钮,Alt + Shift + S 也能开关面板。
想锁死某个版本、或不想走 npm,可以直接装 GitHub Release 里的 tgz:
dsh plugin --profile web add "https://github.com/RZ-0410/dsh-theme-quartet/releases/download/v0.1.0/dsh-theme-quartet-0.1.0.tgz"
node tools\install.mjs
脚本做三件事,都是幂等的:
%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-theme-quartet;cordis.patch.yml 里补一条 insert: theme-quartet(已有就跳过);然后完全退出并重启 DeepSeek Harness(loader 组合变了,必须重启;之后改 bundle 只需刷新页面)。
dsh-theme-quartet 文件夹到
%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-theme-quartet%USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml 末尾追加:- insert:
- id: theme-quartet
name: dsh-theme-quartet
dsh 在 PATH 里)dsh plugin --profile desktop add "<本目录绝对路径>"
选择存在 localStorage(键 dsh-theme-quartet.skin),不进 DSH 的设置文档。
DSH 的主题偏好字段有白名单,只接受 light / dark / system,自定义主题 id 存不进去(写进去也会在下次读取时被回滚)。所以皮肤选择由插件自己持久化,面板标题仍是「主题皮肤」,入口在右下角而不是设置页。
如果以后宿主开放自定义主题注册,把 SKINS 注册成主题即可,令牌表可以直接复用。
同一套令牌层被多个插件覆盖时,后注册的那层逐令牌胜出。同时装 dsh-joi-channel-theme 之类的皮肤,会出现"一半这套、一半那套"的混色。建议一次只启用一个皮肤插件;关掉本插件的方式是从 cordis.patch.yml 移除那三行。
node build.mjs
src/skins.mjs(唯一数据源,预览页与插件共用)。src/client.template.js 里的 UI_CSS。assets/<slug>.webp,或用 tools/compress.py 从原始 PNG 重新裁切压缩(会自动切掉生成器水印条)。产物:
lib/client.js — 浏览器半边(自包含,无运行时依赖,底图以 data URI 内嵌)preview.html — 离线预览页,不装插件也能看四套皮肤dsh-theme-quartet/
├─ package.json # dsh.bundle.patch + dsh.client 声明
├─ cordis.patch.yml # 往 loader 组合里插一行
├─ lib/
│ ├─ index.js # 宿主半边:空 apply,只负责"让包出现在 entries 里"
│ └─ client.js # 浏览器半边:令牌覆盖 + 装饰 CSS + 换肤面板
├─ src/ # 源码(色板 / 客户端模板 / 预览模板)
├─ assets/ # 压缩后的底图(WebP,合计约 300 KB)
├─ tools/ # 压缩脚本、安装脚本、冒烟测试页
└─ preview.html # 离线预览
ctx.theme.overrideTokens("dsh-theme-quartet", tokens) 叠层,ctx.effect 负责在插件卸载时整层摘除;换肤时用同一个 source 再调一次即可替换(不闪原生色)。[data-conversation-scroll] 上,用 90° 渐变做「中间纸面、两侧透气」的纱幕;侧栏、输入框、代码块保持各自的不透明表面,长文阅读不受影响。--dsw-alias-*,所以面板自己也会跟着皮肤变。body 上的 !important 变量表,功能不缺,只是换肤动画会少一点。E:\aadsh),profile desktop,令牌体系 --dsw-*color-mix、backdrop-filter、Shadow DOM 均可用)tools/smoke.html(宿主替身,验证挂载、79 个令牌覆盖、四张卡片切换)src/skins.mjs 里 normalize() 的 veil 透明度,代价是文字对比度下降。--dsw-* 令牌名时,需要同步 src/skins.mjs 的映射表。MIT。底图由本插件自行生成(AI 绘制),随包分发。