dsh-sidebar-image-zoom:DSH 右侧边栏图片的光标锚点缩放与拖拽平移

前言

在 DeepSeek Harness(DSH)里打开截图、架构图或日志里的位图时,右侧边栏会走内置图片面板:位图先被缩放到适应面板,之后交互空间有限。内置控件是一条 + / − / 适应窗口 浮条,鼠标不挪到底边往往看不到;缩放以面板中心为锚点,你正在看的区域不会跟着光标走,也没有拖拽平移。对需要读小字、对照局部细节的场景,这个体验容易成为日常摩擦。

下面介绍社区维护的客户端插件 dsh-sidebar-image-zoom(维护者 MYX-0211):它通过 DSH 的文档预览扩展机制,直接顶替内置位图渲染器,提供以光标为锚点的滚轮缩放和 pointer capture 拖拽平移。插件未发布到 npm,需按仓库说明手动 stage 到 profile;DSH 在 boot 时加载插件,装完后需重启一次。

这是什么

dsh-sidebar-image-zoom 是 DSH 的客户端插件(分类:客户端),当前版本 0.1.0,许可证 MIT。一句话定位:在 DSH 右侧边栏为图片提供 Pointer-anchored wheel zoom(滚轮以光标下像素为锚点缩放)和 drag-to-pan(拖拽平移),并替换内置图片视口(built-in image viewport)。

DeepSeek Harness 的生态理念是「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。本文安装与用法均以仓库 README 为准。

与内置查看器的差异

内置面板会把位图缩放到适应窗口后基本止步;本插件打开时同样可以从「适应窗口」状态开始,但之后的行为由下面手势与底部常驻控制条驱动。自己滚轮调出来的缩放比例不会因面板尺寸变化而被重置,只有点「适应窗口」或换一张图才会回到适应。

核心功能

手势与快捷键

手势 / 按键 效果
滚轮 缩放,锚定在光标下的像素
拖拽 平移(pointer capture,光标可移出面板)
双击 在「适应窗口」与 1:1 之间切换
F / Esc 适应窗口
1 100%
+ - = _ 以面板中心为锚点步进缩放

底部控制条常驻显示:适应窗口 · 1:1 · − · 百分比 · +。百分比读数随当前比例实时更新。

接管方式(无需额外配置)

插件通过 ctx.documentPreviews 认领与内置相同的图片后缀,并以 priority: "extension" 注册。DSH 的匹配排序里,非 builtin 的 priority 会排在内置位图查看器(priority: "builtin")前面,因此不用配置、也没有用户开关,扩展会直接接管右侧图片面板。正文注册在 keyed 子槽 sidebar.right.tab.document,key 与注册表 id 一致。

实现上:binaryExtensions 必须是 extensions 的子集;SVG 故意不放进 binaryExtensions,纯文本渲染器仍可用于读矢量源码。渲染器外层有 error boundary,避免单张图抛错导致整个侧栏空白。

降级与提示

字节不匹配已知签名、后缀与真实格式不符、或标签页尚未拿到内容时,会显示对应短提示,而不是留空面板。

安装与启用

插件没有发布到 npm,DSH 的「插件 → 添加插件」按 registry 解析包名的流程找不到它。官方做法是:克隆仓库,把包放到 profile 能解析的位置(一般为 <profile>/node_modules/dsh-sidebar-image-zoom/),并在 profile 的 package.json 里同时写入 dependencies 与 dsh.profile.bundles,然后重启 DSH。

git clone https://github.com/MYX-0211/dsh-sidebar-image-zoom.git

完成 clone 后,将包目录放到上述 node_modules 路径,并手动编辑 profile 的 package.json(dependencies + dsh.profile.bundles)。

在 Windows 上,仓库提供 install.ps1 / uninstall.ps1,针对标准 profile 路径自动 stage 并改写 manifest;底层使用 tools/manifest_edit.py 逐行编辑 manifest(非 JSON round-trip),写盘前会生成带时间戳的 package.json.bak-*。若执行策略拦截 .ps1,可按 README 用 UTF-8 读取后执行:

Invoke-Expression ([IO.File]::ReadAllText(".\install.ps1", [Text.Encoding]::UTF8))
Invoke-Expression ([IO.File]::ReadAllText(".\uninstall.ps1", [Text.Encoding]::UTF8))

卸载与重装脚本设计为幂等;README 说明卸载后再安装的往返可与原始 manifest 逐字节相同。

兼容性(仓库声明):针对 DSH 0.2.0-rc.2、desktop profile 构建并测试;package.json 中 dsh.compatibility.dsh 为 >=0.2.0-rc.2,profiles 含 web 与 desktop。插件依赖 DSH 内部槽位名与注册表语义,DSH 升级后若失效,表现可能是侧栏面板空白;处理方式为禁用该 bundle 后重新加载,通常不会拖垮其余 UI。

安装前请自行阅读源码与 MIT 许可证;插件在当前 DSH 进程权限下运行,与任何第三方扩展一样,信任边界取决于你安装的 bundle。

典型用法

  1. 按上一节完成安装并重启 DSH。
  2. 在 DSH 右侧边栏打开任意受支持的位图(插件认领的后缀与内置位图预览一致;矢量 SVG 仍可由文本类渲染器查看源码)。
  3. 需要看局部细节时:滚轮在目标区域上放大(锚点跟随光标);拖拽平移画面;双击在适应窗口与 1:1 间切换;或用底部条与 F / 1 / + - 等快捷键。
  4. 调整窗口或大小时,若未点「适应窗口」或未换图,当前缩放比例会保留。

仓库测试用例中,滚轮缩放断言「光标下图像点移动 0.00px」;拖拽平移断言位移与指针 delta 一致(例如 (-140, -90)),可作为行为预期的参考。

开发与自测(可选)

若你 fork 后改 lib/client.js,可在仓库根目录运行:

npm install
npm test

测试用 puppeteer-core 驱动本机 Edge/Chrome(不 bundled Chromium),浏览器路径可通过 PUPPETEER_EXECUTABLE_PATH 指定,例如:

PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium npm test

package.json 要求 Node >= 20。完整测试约 30 条断言,覆盖注册契约、控制条、双击切换、损坏文件提示等。

结尾

dsh-sidebar-image-zoom 解决的是 DSH 右侧边栏读图时的缩放锚点与平移缺口:用扩展优先级替换内置视口,把滚轮缩放绑在光标下、把拖拽平移做成默认可用,并保留适应窗口与 1:1 等快捷方式。适合经常在 Harness 里对照截图、界面稿或带小字图片的开发者;安装路径以手动 stage 为主,装完记得重启 DSH。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye