Pular para o conteúdo principal
Z

dsh-auto-image-optimizer

zyf2492313716-cloud/dsh-auto-image-optimizer

Client-side image downscaler for DeepSeek Harness: intercepts paste and drag-drop images over 1999px in memory via HTML Canvas and raises legacy attachment maxImageDimension up to 4096 when writable.

Instalar

dsh plugin --profile web add github:zyf2492313716-cloud/dsh-auto-image-optimizer

README

dsh-auto-image-optimizer

DeepSeek Harness (DSH) 客户端大图自动等比缩放与附件限制优化插件。

在浏览器端拦截超大截图(如 Mac Retina 2x/3x 全屏截图),在内存中等比下采样后再上传,避免触发 DSH 的图片准入拦截,同时显著减小上传体积。


背景

  1. Retina 截图很大:macOS 视网膜屏按 2x/3x 渲染,全屏或大窗口截图单边尺寸常在 2800px ~ 6000px 量级,文件也大。

  2. DSH 有两道准入闸(packages/attachment/attachment-local,两个都是可配置项):

    • 单边像素上限 maxImageDimension,默认 8192px
    • 解码后总像素上限 maxImagePixels,默认 64,000,000

    超限时前端会提示 图片宽高不能超过 {size}px,请缩小后重试({size} 填入当时的上限值)。

本插件在前端输入层做事件拦截,把超限图片等比下采样至 1999px 以内再交给上传流程,用户复制粘贴即发,不必手动裁切或压缩。

版本提示:早期 DSH 的单边上限是 2000px,本插件的 1999px 目标值就是从那时来的。 现在默认已放宽到 8192px,因此只有超大截图才会真正触发拦截——但下采样仍有两个实际 收益:明显更小的上传体积,以及不依赖服务端上限恰好被调高。

如果你的图片确实需要保留 8192px 以上的原图细节,正确做法是调整服务端配置项 (maxImageDimension / maxImagePixels),而不是在前端绕开——本插件只做缩小,不做放大。


工作机制

  • 全局事件捕获:在捕获阶段同步拦截 paste(剪贴板粘贴)与 drop(拖拽上传)事件;
  • 内存平滑下采样:检测到单边超过 1999px 的图片时,利用离屏 Canvas 保持高清晰度等比缩放;
  • 单次安全分发:生成合规的图片 Blob 后重新派发合成事件,杜绝重复上传。

系统要求

  • DeepSeek Harness (dsh) >=0.1.2;逐版本兼容记录与取证方式见下面「验收状态」
  • Node.js ^22.19 || >=24
  • macOS / Linux / Windows;Profile:web

权限与边界

权限用途范围
文件无只处理浏览器内存中的图片 Blob,不读写本地文件
网络无不发起网络请求
命令无不执行子进程或 Shell
凭据无不读取 API Key、Cookie 或任何凭据

插件以浏览器端下采样为主;服务端仅在附件服务暴露可写 imageLimits 时尝试把 maxImageDimension 放宽到 4096px(属性冻结时跳过),不修改 DSH 核心、官方包或任何配置文件。


安装

方式一:一键脚本(推荐)

git clone https://github.com/zyf2492313716-cloud/dsh-auto-image-optimizer.git
cd dsh-auto-image-optimizer
./install.sh

安装脚本会自动将产物同步至 $DSH_HOME/plugins/,并在 $DSH_HOME/cordis.patch.yml (home 级 patch 层,对所有 profile 生效)中注册挂载条目,原文件会先备份。

如果你之前用旧版脚本装过:旧脚本把条目写进了 $DSH_HOME/config.yaml,而 0.2 起 没有任何代码读那个文件——写进去不报错,但插件永远不会加载。重新执行一次 ./install.sh 即可补上正确的条目。脚本用绝对路径注册(不依赖 profile 的包解析), 因此在 web / desktop 任一 profile 下都能加载。

方式二:DSH 插件命令

dsh plugin --profile web add .

安装完成后,重启 dsh web 并刷新浏览器页面生效。


卸载

cd dsh-auto-image-optimizer
./uninstall.sh

验证状态

  • 已验证:manifest/Bundle Patch 解析、客户端粘贴缩放测试(4000×3000 → 1999×1499)、DSH 0.2.1-rc.5 一次性 Profile 安装与 bundle 加载。
  • 未验证:真实桌面浏览器中的手工粘贴、卸载/回滚。

dsh.compatibility.dshReleases 各行的证据

版本证据级别依据
0.2.1-rc.5运行验收一次性 Profile 安装 + bundle 加载通过;本机宿主即 0.2.1-rc.5
0.2.2-alpha.2契约核对见下
0.2.2-alpha.3契约核对见下
0.2.2-rc.1契约核对见下

契约核对的做法:取 @deepseek-ai/dsh@<版本> 在 npm 上的固定发布物闭包,逐个解包检查本插件用到的宿主接口是否仍存在——attachments、imageLimits、maxImageDimension(本插件只把 imageLimits.maxImageDimension 抬到 4096)与扩展点 settings.general.item、window.__ModuleLoader__。四个版本结果一致:maxImageDimension 恒在 @deepseek-ai/dsh-tool-fs 与 dsh-tool-cordis,attachments 的归属包在四个版本间完全相同,没有任何一个 token 消失或改名(只有新增引用方)。

这一级证据不等价于在新版本上做过的安装/启动/卸载验收。之所以没做:npm i @deepseek-ai/dsh@0.2.2-rc.1 在匿名 npm 下无法解析——依赖闭包里 @deepseek-ai/dsh-desktop-host@0.2.1-rc.5、@deepseek-ai/cordis、@deepseek-ai/cordis-plugin-*、@deepseek-ai/schemastery、@deepseek-ai/dsh-official-bundles、@deepseek-ai/dsh-personalized-recommendations 等发布物对公网返回 404,装不起来自然跑不了 CLI 的安装/卸载。有内部源权限的人可以补这一级证据。


License

MIT

Plugins relacionados