dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 网页端插件:注入 SVG(feTurbulence + feDisplacementMap)折射滤镜,并用 backdrop-filter 作用到面板、气泡与输入卡上;同时附带 orca-scene 皮肤(主题 token 与明暗两套背景)。
给 DeepSeek Harness(DSH)Web 用的「真·液态玻璃折射层」+ orca-scene 皮肤。
插件负责 SVG 折射(backdrop-filter: url(#filter)),皮肤负责底色 / token / 磨砂 / 边框 —— 两者配合才是完整的液态玻璃效果。
dsh-orca-glass/
├── package.json # DSH 客户端插件清单(dsh.client + dsh.bundle.patch)
├── cordis.patch.yml # profile bundle 插入行
├── lib/
│ ├── index.js # 宿主半(空实现)
│ └── client.js # 浏览器半:注入 SVG 滤镜 + CSS + 指针高光
└── skin/
└── orca-scene/ # 配套皮肤(拷进 $DSH_HOME/skins/ 即可)
├── skin.json
├── skin.css # 主题 token(明/暗两套)
├── patches.css # 表面:侧边栏 / 正文板 / 气泡 / 输入卡 / 弹窗 …
├── assets/ # 背景图 light.webp / dark.webp
└── preview/ # 皮肤中心预览图
真折射 = backdrop-filter: url(#svgFilter),被引用的 <filter> 节点必须存在于同一个文档里,这只能由 JS 注入。
皮肤中心(@linxin666/dsh-client-ui-skin-center)只给有 provenance 白名单的官方皮肤放行 hooks.mjs,
放在 $DSH_HOME/skins/ 下的自建皮肤拿不到任何 JS 口子 —— 所以折射只能由插件补,皮肤那边只做静态观感。
document.body 注入 0 尺寸 <svg id="orca-glass-defs">:
#orca-lg:feGaussianBlur(霜化)→ feTurbulence fractalNoise(大尺度波纹)→
三条 feDisplacementMap(scale = refract±chroma,R/G 通道)→ feColorMatrix 分离三通道 →
两次 feBlend mode="screen" —— 得到带色散边缘的折射#orca-lg-soft:频率更高、位移更小的轻量版<style id="orca-glass-style">,全部规则限定在 html[data-dsh-skin='orca-scene'] 之下
(换皮肤自动失效,不污染其它皮肤):
!important 覆盖皮肤中心的 neutralizer,并保留其
blur(var(--dsh-input-card-blur)) 串在滤镜列表里::after + 内联 SVG 噪声 + mix-blend-mode: overlay,不需要图片资源)@keyframes 流光漂移、滚动条细化、表格玻璃化、选区染色、prefers-reduced-motion 自动关动效max-width: 100%)——否则详情栏面板
会向左多出 22px、被 overflow: hidden 裁掉标题首字;
56px 图标轨道内主动不缩进,免得图标偏心被圆角切)pointermove,把 --orca-lx / --orca-ly 写到当前玻璃面上,做径向跟随高光。把 skin/orca-scene/ 整个目录复制到 $DSH_HOME/skins/orca-scene/(本机即 ~/.dsh/skins/orca-scene/),
然后在皮肤中心(skin center)里选中 orca-scene;或直接写:
// $DSH_HOME/skin-center-active.json
{ "active": "orca-scene", "initialized": true, "background": { "enabled": true, "inputCardBlur": 18, "bubbleOpacity": 55, "bubbleBlur": 14 } }
皮肤变化只需刷新页面,不必重启。
把本包放进 $DSH_HOME/profiles/<profile>/node_modules/dsh-orca-glass/(或放在任意 ASCII 路径再链接进去),
然后在 profile 的 package.json 里登记两处:
{
"dependencies": { "dsh-orca-glass": "file:../../plugins/dsh-orca-glass" },
"dsh": { "profile": { "bundles": [ /* … 其它 bundle … */ "dsh-orca-glass" ] } }
}
dependencies 决定能不能解析到包,dsh.profile.bundles 决定要不要加载这个 bundle 层 —— 两者缺一不可。
客户端插件只在 DSH 启动时装载,装完要重启一次 DSH。
已知坑:
dsh plugin add会把非 ASCII 路径参数 mojibake 后再交给 pnpm (C:\…\默认工作区\_build\…→榛樿宸ヤ綔鍖篭_build),导致UNKNOWN: unknown error … errno -4094; 另外本机沙箱里 junction / reparse point 不可穿透(untrusted mount point)。 所以插件源码要放在 纯 ASCII 路径下,用真实目录 +file:规格登记。
window.__orcaGlass.get() // 当前参数
window.__orcaGlass.tune({ refract: 32, chroma: 12 })
window.__orcaGlass.tune({ float: false, grain: 0 }) // 关浮空卡 / 关颗粒
window.__orcaGlass.reset() // 回默认
window.__orcaGlass.css() // 当前生成的 CSS 文本
| 参数 | 默认 | 含义 |
|---|---|---|
refract | 18 | 折射位移强度(feDisplacementMap scale,px) |
chroma | 7 | 三通道色散差(越大边缘彩边越明显) |
frost / frostSoft | 14 / 9 | 大面 / 小面霜化(feGaussianBlur stdDeviation) |
freqX / freqY / octaves / seed | 0.008 / 0.013 / 2 / 7 | 波纹形状 |
saturate | 1.7 | 背景饱和度增益 |
grain | 0.35 | 颗粒层不透明度(0..1) |
spot / spotSize | 0.15 / 560 | 指针高光强度 / 半径(px) |
float | true | 左右两栏浮空玻璃卡(左栏 + 右详情栏) |
改动存 localStorage["dsh-orca-glass"];window.__orcaGlass 就是插件的实时实例。
backdrop-filter: url(#svgFilter) 确实被执行:同场景 url vs blur 像素差 mean 12–37,对照区恒为 0url(...) blur(...) saturate(...) 组合滤镜列表被接受且 url() 部分有效(差值 ≈ 纯 url,
远大于「整条声明被丢弃」的情形)→ 输入卡规则成立System.Drawing 逐点采样dsh.profile.bundles 里删掉 dsh-orca-glass 后重启(皮肤照旧,只是没有折射);
或临时 window.__orcaGlass.tune({ refract: 0, grain: 0, float: false })html[data-dsh-skin='orca-scene'] 门控会自动失效MIT