DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Crop Zoom — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
C

dsh-crop-zoom

Crop Zoom

放大屏幕截图中的区域,使小文本变得清晰可读:提供一个 DeepSeek Harness (dsh) 工具,以及一个在模型读取前进行裁剪和放大的独立 CLI。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:07210905/crop-zoom#1f2829a13f5ae44f21f666c931952641079b39cb
README兼容性版本

兼容性与来源证明

Crop Zoom 以 dsh-crop-zoom 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/15

版本

0.1.0stable
2026/10/15

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/15
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 vision-media 分类下经过校验的插件。

Vision Routerdsh-vision-router为仅支持文本的 DeepSeek Harness agents 提供视觉能力:内置免费视觉链路和像素级工具。除非配置为严格仅限本地使用,否则远程视觉提供商(包括默认的免费回退服务)会接收图像内容。Imagegen@dickpy/dsh-imagegen适用于 dsh 网页 GUI 的 AI 图像生成插件:通过可配置的提供商渠道进行文生图和图生图(gpt-image-2 / grok-imagine-image / nanobanana series / seedream-5.0-pro / dall-e-3,原生支持 xAI Grok Imagine、Google Nano Banana aExperimental Voice Input Bundle@deepseek-ai/dsh-experimental-voice-input-bundle实验性语音输入,使用本地 SenseVoice;首次使用时下载其运行时Codexdsh-codexChatGPT OAuth、Codex 模型、搜索、read_image URL 支持,以及可配置的 GPT Image 生成功能,用于 DeepSeek Harness

README

dsh-crop-zoom

Magnify a region of an image so small text becomes readable.

A DeepSeek Harness (dsh) plugin that registers a crop_zoom tool, plus the same engine as a standalone CLI. 中文说明 →

  • Local image processing only — no network, no model call, no OCR engine.
  • One dependency: sharp (libvips), loaded lazily so a missing native build can never stop the harness from booting.
  • Node ≥ 22. MIT.

The problem this solves

A 1920×1080 screenshot does not reach a model at 1920×1080. It is downscaled on the way in, so a 10–11px item label arrives with its strokes already fused — and re-reading the same screenshot cannot bring those pixels back.

Four readings off one status screen, every one of them wrong in the same way:

PrintedCame back asWhy
03重型盔D3重型盔at 11px the 0 and the D share one left stem
BT6重型B16重型the T welds itself onto the B before it
1000戰地包100D戰地包four digits merge into three plus a letter
鎏影權鋒盜影權杖the 金 under 鎏 collapses into something 皿-shaped

Those characters are perfectly legible once the region is cropped out and upscaled. Doing that before the text is read is the only reliable order of operations, and it costs far less than pushing the whole screenshot through again.

Install as a dsh plugin

dsh plugin --profile <profile> add dsh-crop-zoom     # from a registry
dsh plugin --profile <profile> add ./dsh-crop-zoom   # from a local checkout

Then restart the app. The model gains a crop_zoom tool, re-sent with every request.

Install as a CLI

npm install -g dsh-crop-zoom
crop-zoom -i shot.png -r 1178,588,64,24 -s 16 -o label.png

Using the tool

// One region, auto-magnified until its long edge reaches 1600px
{ "path": "C:\\shots\\raid.png", "regions": [{ "x": 1178, "y": 588, "width": 64, "height": 24 }] }

// Two regions, stacked into a single labelled sheet so one follow-up read covers both
{ "path": "C:\\shots\\raid.png",
  "regions": [{ "x": 80, "y": 430, "width": 540, "height": 300, "label": "rank board" },
              { "x": 875, "y": 155, "width": 450, "height": 660, "label": "gear" }],
  "target": 2400 }

// Still ambiguous? nearest replicates pixels, which separates equal-width glyphs
{ "path": "C:\\shots\\raid.png", "regions": [{ "x": 1444, "y": 373, "width": 96, "height": 42 }],
  "scale": 16, "mode": "nearest" }

The tool writes PNG file(s) and returns their paths; read the result with read_image. The text it returns is geometry only — deliberately, so it cannot be mistaken for the answer:

1 file written from C:\shots\raid.png (1920x1080), kernel bicubic.

#1  source 1178,588 64x24  x12  -> 768x288
#2  source 1444,373 96x42  x12  -> 1152x504

Sheet (regions stacked top to bottom, in the order above): C:\...\raid-20261014181815.png

Now read that file with read_image. Do not answer from this geometry summary alone.

Parameters

NameTypeDefaultMeaning
pathstring—Absolute path to the source image. Required.
regionsarray—1–8 regions, in sheet order. Required. Each is {x, y, width, height, label?} in source pixels.
scaleinteger—Integer magnification, 1–16. Omit to derive it from target.
targetinteger1600With no scale, magnify until the region's longer edge reaches this many pixels, capped at 16×.
modeenumbicubicbicubic | nearest | lanczos | mitchell.
sheetbooleantrueStack every region into one labelled PNG. false writes one file per region.
outPathstringtemp dirWhere to write; must end in .png.
previewWidthinteger—Set this when the coordinates were measured on a downscaled preview: pass that preview's pixel width and every coordinate is rescaled to the source automatically.

bicubic preserves glyph outlines and is the right default. nearest replicates whole pixels, which is what separates a 0 from a D — the two are complements, so when a character still will not resolve, look at it both ways.

CLI

crop-zoom -i <image> -r <x,y,w,h> [-r <x,y,w,h> ...] [options]

  -i, --image <path>        Source image (PNG, JPEG, WebP, AVIF, TIFF or GIF)
  -r, --region <x,y,w,h>    Region to magnify; repeat up to 8 times
  -s, --scale <n>           Integer magnification, 1..16
  -t, --target <px>         Auto-magnification target (default 1600)
  -m, --mode <kernel>       bicubic (default) | nearest | lanczos | mitchell
  -o, --out <file.png>      Output path, or path stem when writing one per region
      --preview-width <px>  Coordinates came from a preview of this pixel width
      --no-sheet            One file per region instead of one stacked sheet
      --json                Also print the raw result object
  -h, --help                Show this message

How it works

  1. Decode the source once into memory. Regions are bounded against the display size (after EXIF rotation), so an upright photo is cropped where it looks upright.
  2. extract each region, then resize by an integer factor with the selected kernel — integer scaling avoids resampling artefacts on exactly the strokes you are trying to read.
  3. Optionally composite the pieces into one sheet, captioned with the geometry of each region, so a multi-region check costs one follow-up read rather than several.

Limits

  • Local files only. Remote URLs are not fetched; that keeps the tool from becoming an outbound request channel on the model's behalf.
  • Output is always PNG.
  • 8 regions and 16× per call.
  • Sheet captions are ASCII; non-Latin caption text depends on the fonts fontconfig exposes to librsvg, so put non-ASCII descriptions in the region label rather than expecting them on the image.

Development

npm install
npm test        # core geometry suite + plugin contract suite

test/run.mjs builds its own synthetic image and asserts exact output geometry. test/plugin.mjs exercises apply() against a stub ctx and checks that a throwing registry cannot escape.

License

MIT