dsh-glass-ranswork
Glassmorphism theme for the DSH web UI: frosted translucent surfaces with adjustable opacity, blur radius and saturation, ambient lighting and accent palettes, plus a custom background image with cover, contain, stretch, tile or center fit and crop, all persisted from a settings page.
Install
dsh plugin --profile web add dsh-glass-ranswork
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-glass-ranswork · 自定义主题
给 DeepSeek Harness Web 界面加上「半透明 + 背景模糊」的毛玻璃外观,并在
设置 → 自定义主题 里提供一个完整的调参页(启用 / 不透明度 / 面板不透明度 /
模糊 / 饱和度 / 氛围光 / 配色 / 自定义背景图片)。
出厂默认即用户要的 80% 半透明(opacity: 20,即表面 20% 不透明);
信息面板单独一档 panelOpacity: 85,保证弹层和文件预览里的字看得清。
快速开始
升级之前先看「升级」一节。 把 .../main.tar.gz 当安装地址时,pnpm 会把
那个 tarball 的 integrity 和 version 一起写进 lockfile —— main 会动,
你的依赖不会跟着动。重装多少次都还是当初装下的那个版本。
1. 打开 DSH → 设置 → 插件 → 安装插件;
2. 粘贴地址(推荐第一种):
npm(推荐)
dsh-glass-ranswork
codeload 固定版本(不想用 npm 时)
https://codeload.github.com/rans725/dsh-glass-ranswork/tar.gz/refs/tags/v1.1.1
本地目录:把仓库 zip(Code → Download ZIP)或 Release 的 .tgz 解压,
填含 package.json 的那层目录,例如 D:\Plugins\dsh-glass-ranswork。
3. 装完按提示重启 DSH,打开 设置 → 自定义主题 即可调外观。
4. 设置页顶部会显示当前加载的版本号(如 v1.1.1);有新版时多一行提示。
安装
本包是一个 DSH bundle(package.json 的 dsh.bundle.patch 指向
cordis.patch.yml,dsh.client 声明浏览器半侧),不需要构建、没有依赖。
方式一:npm(推荐)
在 profile 目录里直接装:
pnpm add dsh-glass-ranswork
为什么推荐 npm:装 npm 的包,插件市场能感知到新版本并推送更新提醒。
下面那些 URL 安装方式虽然能装,但永远收不到更新推送 —— 市场对 URL 安装
没有 registry 身份可比,宁可如实报「无更新」也不猜(dshmarket #768)。
从旧版 URL 方式升上来的用户:lockfile 里记的还是 URL,改 npm 后仍然收不到推送。
需要重装一次:pnpm remove dsh-glass-ranswork && pnpm add dsh-glass-ranswork
好处是版本可以写范围(^1.1.1),升级由 pnpm 和市场的更新提醒共同覆盖。
方式二:codeload 固定发行版(不想用 npm 时)
pnpm add https://codeload.github.com/rans725/dsh-glass-ranswork/tar.gz/refs/tags/v1.1.1
好处是版本可以写死在 tag 里,升级时换 tag 号即可;坏处是不能写成 ^1.1.1
这种范围(pnpm 无从解析),所以「有新版本」的提示靠设置页顶部那一行。
方式三:codeload 直链(固定版本,不需要 Git)
https://codeload.github.com/rans725/dsh-glass-ranswork/tar.gz/refs/tags/v1.1.1
为什么不写 https://github.com/.../archive/...:
github.com只负责 302 跳到codeload.github.com;主站被墙 / 不稳时,
pnpm 的 HEAD 请求会 ETIMEDOUT,而真正下发 tar 的 codeload 往往是通的;
- codeload 直链少一次跳转,受限网络下成功率明显更高,代码不用改一行。
版本号必须写进 URL。 refs/heads/main 看着“永远最新”,但 lockfile 一旦
记录了这个 spec 的 integrity,pnpm 不会为了同一个 spec 重新解析远端。
升级 = 换成新 tag 的 URL 再装一次(见「升级」)。
为什么不推荐github:前缀:pnpm 解析github:依赖会调用系统git;
Windows 上没装 Git 就会报 git ls-remote failed。上面的地址由 pnpm 直接
下载解包,不需要 Git。
方式四:Release 安装包(固定版本)
到 Releases 下载
dsh-glass-ranswork-1.1.1.tgz,安装时填它的本地路径,或直接填资源地址:
https://github.com/rans725/dsh-glass-ranswork/releases/download/v1.1.1/dsh-glass-ranswork-1.1.1.tgz
资产地址同样先经过 github.com。主站不通时,改用上面的 codeload 直链。
方式五:本地目录 / zip
两种来源都可以:
- 仓库页 Code → Download ZIP(解压后是
dsh-glass-ranswork-main/); - 或 Release 里的
dsh-glass-ranswork-1.1.1.tgz(解压后是package/)。
把含 package.json 的那一层目录放到任意位置,在安装入口填它的绝对路径,例如:
D:\Plugins\dsh-glass-ranswork
安装器会把依赖写进当前 profile 的 package.json 并激活 bundle,
不需要手动改配置文件。
兼容性
- 在 DSH 0.2.1-rc.3(Windows 桌面版)上开发与验证(v1.1.1 起);
- 插件只用到公开客户端服务(
slots/locale/theme)和宿主webServer,
没有私有 API、没有原生依赖;DSH 大版本升级后如果主题 token 改名,
退化结果是「某块颜色/模糊不生效」,不会崩。
- 每次宿主升级都会重编译客户端,CSS Modules 哈希会全变。插件只在
纯装饰性的卡片前缀上依赖哈希;凡是「排除某个结构容器」的规则一律用
稳定 data 属性或结构判据(详细的坑见 v1.1.1 更新日志)。
卸载
设置 → 插件 → 卸载。插件不会改 DSH 本体;设置文件在
$DSH_HOME/glass-theme.json,壁纸在 $DSH_HOME/glass-theme-bg.<ext>,
删掉即可彻底复位。
升级
先确认当前版本:设置 → 自定义主题 顶部有 v1.1.1(旧版宿主没有这行,
可以在 profile 的 node_modules/dsh-glass-ranswork/package.json 里看)。
怎么知道有新版本
设置页顶部那行:v1.1.1 后面如果出现「有新版本 v1.2.0」的链接,点它去 Release。
宿主半侧每 6 小时静默问一次 api.github.com 的最新 Release(失败 10 分钟后重试,
全程不打扰;断网时只显示版本号)。
tarball / Release 装的
三步:
1. 把 profile package.json 里的旧 spec 换成新 tag 的 URL;
2. 删掉 pnpm-lock.yaml 里对应的 dsh-glass-ranswork@... 条目(或整份 lockfile);
3. pnpm install,重启 DSH。
或者一步到位:
pnpm add https://codeload.github.com/rans725/dsh-glass-ranswork/tar.gz/refs/tags/v1.1.1
为什么“重装一次”不升级
pnpm 对 tarball 依赖记录的是 spec + integrity + version。spec 没变(还是
.../heads/main.tar.gz)时,它认为这份依赖已经解析过,直接用 lockfile 里的
旧包,不会去远端重新 HEAD。main 更新了、tag 打了,都和你的 lockfile 无关。
只有下面两种情况会真正换包:
- spec 变了(新 tag 的 URL / 新版本号);
- 你显式让 pnpm 重新解析(删 lockfile 或
pnpm install --force)。
卡住时的自查
现象 · 原因 · 处理
重装后版本不变 · lockfile 钉住了旧 spec · 换成新 tag 的 URL
HEAD https://github.com/.../main.tar.gz ... ETIMEDOUT · github.com 不通 · 改用 codeload 直链
安装返回 changed:false,日志只有 fetch failed · 旧依赖也在拉 github.com,一个失败整次回滚 · 先从 package.json 删掉旧条目再装
设置页没有版本行 · 宿主半侧还是旧版 · 重启 DSH(浏览器半侧热更新,宿主不会)
安装器目前只会把 fetch failed 透出来,不会告诉你是哪个 URL 失败。
遇到时先看 profile 的package.json里还有没有github.com/.../archive/...
的旧条目 —— 通常就是它。
设置
字段 · 默认 · 区间 · 说明
enabled · true · — · 关闭后完全恢复原生外观
opacity · 20 · 0–100 · 表面不透明度 %;20 = 80% 半透明,100 = 不透明
panelOpacity · 85 · 0–100 · 信息面板不透明度 %:弹层、文件预览、统计/费用面板、Modal 内容
blur · 32 · 0–80 · 三列骨架背后那层的模糊半径(px)
overlayBlur · 32 · 0–80 · 浮层模糊半径(px):弹层、已归档面板、费用面板、Modal。运行时夹到 56px
composerBlur · 24 · 0–80 · 发送框 / 任务卡片模糊半径(px)。运行时夹到 40px;设为 0 关闭这两处
previewOpacity · 85 · 0–100 · 文件预览 / 改动卡片不透明度 %:文件 diff、已编辑文件卡、文档预览
saturate · 180 · 100–200 · 背景饱和度 %
ambient · true · — · 是否绘制氛围光背景
accent · aurora · aurora / ocean / sunset / mono · 氛围光配色
bgImage · '' · — · 背景图 token(空串 = 没设图)。只是缓存键,不是文件名
bgFit · cover · cover / contain / stretch / tile / center · 显示方式:填充 / 适应 / 拉伸 / 平铺 / 居中
bgCrop · {x:0,y:0,w:1,h:1} · 每项 0–1 · 自定义裁剪区域(占原图比例,整图 = 0,0,1,1)
bgDim · 30 · 0–100 · 背景蒙层不透明度 %(浅色盖白、深色盖黑)
bgGuard · true · — · 文字保护:有壁纸时给文字加光晕 + 加深次要文字(不加任何底色)
bgAutoTone · true · — · 跟随图片明暗:暗图切深色主题、亮图切浅色,让文字颜色和图片对得上
bgBaseTheme · '' · light / dark / system · 内部状态:自动切换前用户的明暗偏好(空 = 没切过),删图/关开关时还原
bgLumaGrid · '' · — · 内部状态:上传时算好的 32×32 亮度图(base64),自动明暗按裁剪区域查表用
设置页常规是 7 个滑块:表面不透明度 / 面板不透明度 / 背景模糊 / 浮层模糊 /
发送框·任务模糊 / 文件预览·改动卡片 / 背景饱和度。**设了背景图之后多一个
「背景蒙层」滑块、两个开关(文字保护 /
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::3,最后更新 2026-10-24