dsh-image-tiler:大图分块后再交给模型,保留可读分辨率

前言

在 DeepSeek Harness(DSH)里给模型发截图、扫描件或长条漫画时,常见问题是:图很大,但模型读不到小字。单次请求里的图片最多约 1024 个 vision token;Harness 会在入模前把过大的图整体缩小。例如一张 8000×8000 的截图,模型侧往往只能看到宽约 1300px 的缩略图,文字已经糊掉。

社区插件 dsh-image-tiler(维护者 Ssrs-Pro-Max,npm 包名 dsh-image-tiler,当前版本 0.1.6,MIT 许可证)在附件入库(admission)阶段把「一张超大图」切成多块相邻区域,在同一条消息里以多张图片 part 提交。每块按各自分辨率传输,模型看到的是上传时的有效分辨率,而不是单张图能承载的上限。小图不会被改动:提供商本来就会原样传的图,行为与未装插件时一致。

下文介绍插件定位、能力、安装与配置,以及使用时的注意点。事实以 GitHub 仓库 README 与 package 声明为准;该插件不是 DeepSeek 官方产品。

这是什么

dsh-image-tiler 是 DSH 的 Cordis 插件,分类上属于模型推理相关能力:它替换附件存储的 admission 步骤,在 prompt 携带「经 Harness 自身缩放后会损失可读性」的大图时,用 sharp 在进程内裁剪分块,再按现有 attachment-local 存储与限额规则入库。

兼容范围(engines.dsh 与 peer 依赖一致):

  • DeepSeek Harness >=0.2.0-rc.1 <0.3.0(README 写明在 0.2.0-rc.2 上验证过)
  • Node.js 20 及以上

状态为 experimental:分块策略在 README 中有实测说明,但插件替换了核心 attachment 服务,Harness 大版本升级后建议重新验证。

核心功能

大图分块入模

当单张图大到无法在不严重缩放下通过 provider 的 vision 预算时,插件规划 tile 布局,用 sharp 裁剪源图,把各块作为独立 image part 返回。分块结果写入会话消息本身,因此 replay、resume、fork 会重建模型当时看到的同一组图。

README 在 DSH 0.2.0-rc.2、桌面宿主、8000×8000 含小字 PNG 上给出对比(默认设置):

作为单张图 分块(默认)
模型侧收到 2048×2048,重编码 20 块,每块最多 2000×1600
源图中字形高度 10 px,缩放后不可读 10 px,不变
模型能分辨的文本行数 0 8

小图路径不变:provider 本就会原样传输的图,只产生 1 个 tile,与未装插件时相同。

布局与回退

布局逻辑在 lib/geometry.js,依据 provider 的图像投影(patch/downsample 网格、1024 token 预算)选网格,使各区域尽量接近「若只发一张图」时 provider 会送出的 1:1 关系。若在 store 限额内放不下(块数、单块大小、总量),或会出现过窄条带,则 退回发送原图。

安全与依赖面

README 说明:无遥测、无网络、无凭据、无后台服务;无 prepare / install / postinstall 脚本;不 spawn 子进程;sharp 在进程内通过 native binding 解码/重编码;tile 由 Harness 自带 attachment store 写入,与原始图相同位置。插件只读 store 交给它的文件。sharp 为 bundled 依赖,由 pnpm 按平台安装对应二进制包。

安装与启用

从 npm 安装(推荐)

插件版本建议固定,Harness 版本不必为插件单独 pin:包接受任意 0.2.x(含 prerelease)。与当前 Harness 不兼容时,安装会在 pnpm 之前被拒绝,并提示 dsh: installation rejected: Plugin <name>@<version> is incompatible with dsh <version>;测试未发布 Harness 时可使用 dsh plugin allow-version 手动覆盖。

dsh plugin --profile web add dsh-image-tiler@0.1.6

桌面 profile 手动添加

在 ~/.dsh/profiles/desktop/package.json 中加入依赖与 bundle,安装后从托盘重启应用:

{
  "dependencies": { "dsh-image-tiler": "0.1.6" },
  "dsh": { "profile": { "bundles": ["...", "dsh-image-tiler"] } }
}

验证安装

发送任意大于约 1500×1500 的图片,查看宿主日志,应出现类似:

image-tiler: 8000x8000 shown as 20 tiles of up to 2000x1600 (20.4x detail, 54% covered)

变化点是:同一次上传在消息里对应的 image attachment 数量从 1 变为 N。

更新与卸载

dsh plugin --profile web add dsh-image-tiler@0.1.6
dsh plugin --profile web remove dsh-image-tiler

配置

插件 没有 独立 settings。它充当 attachment store,只读取官方 attachment-local 行已有的字段。典型 Cordis 片段(需禁用原 attachment-local 并由插件接管 attachments 服务):

- id: attachment-local
  disabled: true          # 由插件替代 attachments 服务

- insert:
    - id: image-tiler
      name: dsh-image-tiler

attachment-local 原有键仍全部适用,例如 dshHome、maxImageBytes、maxImagesPerMessage、maxMessageImageBytes、maxImagePixels、maxImageDimension、normalizedImageMaxPixels、normalizedImageMaxDimension、normalizedImageMaxBytes、imageCompressionConcurrency。

与分块行为直接相关的三项(默认值来自 README):

键 默认 对分块的影响
maxImagesPerMessage 20 单条消息的分块预算,在同条消息的多张图之间均分。单张 8000×8000 可占满 20 块;同条三条上传则各约 6 块。降低该值会使每块变大,若超过 normalizedImageMaxPixels 会在裁剪后再被缩小,可读性变差。
normalizedImageMaxPixels 4194304 单张发布图像素上限;规划器保证每块低于此值,避免「切完再缩」。
maxImageBytes 20971520 单张存储大小上限;任一块超限会导致整消息被拒,插件会测量各块,必要时改发整图。

若 profile 已为大图上传调高全局图片上限,需保持这些值可达;store 拒绝的源图不会进入 tiler。

典型用法

  1. 按上文命令安装并确保 profile 中 image-tiler bundle 与 attachment-local 禁用关系正确。
  2. 在对话中上传高清截图、拍照文档或长图(边长明显大于约 1500px 时效果最明显)。
  3. 观察日志中的 image-tiler: 行,确认分块数量与尺寸;在模型侧提问图中细小文字或表格内容,对比未装插件时是否可读。

无需额外 CLI 或 API:分块发生在用户消息 admission 之前,对上层 prompt 用法透明。

适用场景与注意

适合:需要在 DSH 会话里让视觉模型读大图中的小字、UI 细节、扫描件;愿意接受单条消息内 image part 数量增加(受 maxImagesPerMessage 约束)。

注意:

  • 插件以 当前 DSH 进程权限 运行,会解码、重编码用户上传的图片;安装前请自行审阅 源码 与 MIT 许可证。
  • 实验性质:替换了 attachment 核心路径,Harness 从 0.2.x 升到 0.3.0 前需确认 engines.dsh 与 peer 范围是否仍匹配。
  • 分块增加 token 与 attachment 数量,可能触及消息级图片总大小等限额;调参时同时看 maxMessageImageBytes 等字段。
  • 社区目录页 skillhub.cn 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-image-tiler 解决的是 DSH 默认 vision 预算下「大图被整体缩小、小字丢失」的问题:在 admission 前按几何规划分块,让小图走原路径、大图以多块可读分辨率入模。安装时固定插件版本 0.1.6,Harness 保持在 0.2.x 即可。

  • 目录页:https://www.skillhub.cn/plugins/Ssrs-Pro-Max/dsh-image-tiler
  • GitHub:https://github.com/Ssrs-Pro-Max/dsh-image-tiler
羽毛球分组比赛记分
小程序二维码

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

Xiaoye