前言¶
DeepSeek Harness(DSH)的 Web 与 Desktop 壳在同一套 UI 上跑会话、设置和各类浮层。浏览器原生页面缩放或随手改 CSS,往往只放大文字和块级布局,position: fixed 的菜单、tooltip、弹窗容易相对触发元素错位。DSH 生态里插件可以改客户端行为;下面介绍维护者 Cieux 发布的客户端插件 dsh-zoom-scale,用 html { zoom } 做整体界面缩放,并用 shim 把几何与样式换算补全,让浮层在 75%–200% 任意档位下仍贴住触发点。
这是什么¶
dsh-zoom-scale 是 DSH 的界面缩放插件:缩放整个 Web / Desktop UI,并保证菜单、tooltip、hover card、对话框等 overlay 在任意缩放下仍锚定在各自触发元素上。
- 维护者:Cieux
- 分类:客户端
- 许可证:MIT(资料见 GitHub README)
- 当前版本:0.2.2(package.json)
- 目录页:https://www.skillhub.cn/plugins/Cieux/dsh-zoom-scale
- 源码:https://github.com/Cieux/dsh-zoom-scale
插件以当前 DSH 进程权限运行;安装前请自行查看源码与许可证。
核心功能¶
缩放区间与入口¶
- 区间:75% – 200%,步进 5%。
- 设置:Settings → General → Interface zoom(步进器 + 重置);中文界面下为「设置 → 通用设置 → 界面缩放」。
- 会话头:右侧
− 125% +控件;点击百分比重置为 100%。 - 快捷键:
Ctrl(macOS 为⌘)+ 滚轮;Ctrl/⌘+=、-、0。 - 持久化:同源 cookie(桌面壳重启端口会变,cookie 按 host 保留)并镜像到 localStorage。
架构:宿主、shim 与客户端¶
| 文件 | 运行位置 | 负责 |
|---|---|---|
index.js |
宿主(Node) | head 脚本:shim 源码、初始缩放、桌面窗口还原 |
lib/shim.cjs |
页面,早于任何客户端模块 | 几何换算;发布 window.__dshzs |
client.js |
页面,Loader 模块 | 控件、偏好、语言词条、兜底 shim |
index.js 注入 head 脚本,shim 在任何客户端模块之前安装,并在 shell 首次挂载前应用记住的缩放。client.js 在 window.__dshzs 存在时驱动它;不存在时才装兜底 shim,避免同一 rect 被除两次。
shim 覆盖的范围¶
Chromium 在 html { zoom } 下用视觉像素报告 rect、窗口尺寸和指针坐标,CSS 长度仍在布局像素,fixed 浮层会漂移。shim 将相关量换算回布局空间,大致包括:元素与 Range 的 rect、窗口与 VisualViewport、滚动 API、指针与滚轮、命中测试、SVG 屏幕矩阵、视口单位(vw/vh/vmin/vmax → calc(… / var(--dshzs-scale)))、媒体查询边界与 devicePixelRatio。各 API 单独兜底,缺失一项只退化对应行为。
样式表侧:换算跟随 --dshzs-scale,换档时主要重推媒体查询边界,不必整表重扫。新 CSS 由 MutationObserver、adoptedStyleSheets setter、insertRule / replaceSync 以及捕获阶段 load 监听收拢。
安装与启用¶
从本地目录或打包产物安装(命令来自 README,勿凭仓库名拼接 github: 形式):
# 本地目录
dsh plugin add /path/to/dsh-zoom-scale
# 或安装打包产物
dsh plugin add ./dsh-zoom-scale-0.2.2.tgz
安装后重载 DSH;使用 Desktop 应用时建议重启。成功后可在 设置 → 通用设置 看到「界面缩放」一行。
典型用法¶
- 打开 设置 → 通用设置 → 界面缩放,用步进器或重置调到合适比例。
- 在会话界面用头部
− …% +微调;需要回到 100% 时点击百分比数字。 - 在会话页按住
Ctrl(macOS 为⌘)并滚动滚轮,或用=、-、0调整;关闭 DSH 再开,比例应从 cookie / localStorage 恢复。
若其它代码需要读取当前缩放,使用 window.__dshzs?.get() 或 html[data-dshzs](100% 时无 data-dshzs,不代表插件未安装)。不要读 documentElement.style.zoom:shim 模式下 zoom 写在 <style> 里。
适用场景与共处注意¶
适合:长时间盯 DSH 界面、需要统一放大/缩小整页 UI 且希望下拉、tooltip、弹窗仍对齐触发点的用户;也适合在开发 DSH 客户端插件时理解页面 zoom 与几何 API 的差异。
与其它 CSS / 插件共处(README Compatibility 节):
- 不要给根元素再写
zoom;shim 独占html { zoom }。 - 不要用
transform: scale()做页面缩放;会与 shim 冲突且 fixed 浮层无法被 shim 修正。 - 不要写入
--dshzs-scale;只读。硬编码颜色应改用--dsw-*令牌以跟随暗色主题。 - 不要重复安装第二套 shim;通过已有
window.__dshzs.set()驱动缩放。 - 首帧就要准确的尺寸请写在样式表规则里;内联
style需被观察到后才换算。
结尾¶
dsh-zoom-scale 把 DSH 界面缩放做成可控的 75%–200% 档位,并用 head shim + 客户端控件解决 zoom 下的 rect 与样式换算问题。安装命令与行为以仓库 README 为准。
- 社区目录:https://www.skillhub.cn/plugins/Cieux/dsh-zoom-scale
- GitHub:https://github.com/Cieux/dsh-zoom-scale
社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系。