DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
R

dsh-request-image-cap

Request Image Cap

Clamp the per-side pixel size of every image DSH projects into a model request (Anthropic refuses >2000 px per side once a request carries many images).

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:lucagiftzek/dsh-request-image-cap#1558d644fc50bb57ce9d1485a674bf9768cc1384
READMECompatibilityVersions

Compatibility and provenance

Request Image Cap is published as dsh-request-image-cap and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
11/1/2026

Versions

0.1.0stable
11/1/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
11/1/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in vision-media.

Experimental Voice Input Bundle@deepseek-ai/dsh-experimental-voice-input-bundleExperimental voice input with local SenseVoice; downloads its runtime on first useModlens@liustack/modlensPlug-in vision for text-only LLMs, powered by the free Antigravity CLIAb Ocrdsh-ab-ocr--- description: "The out-of-tree ocr tool: recognizes a scanned PDF or image page by page, merges the pages in order only after the last one, and saves one Markdown document with the heading levels the model decided." kind: "package-reference" ---Tool Describe Image@linxin666/dsh-tool-describe-imageModel-facing describe_image tool for the dsh web GUI: gives a text-only model image understanding by asking a vision-language model at an OpenAI-compatible endpoint to describe one image (local path, http(s) URL, or attachment reference). Hot-pluggable —

README

dsh-request-image-cap

Keep every image DSH transmits inside the provider's per-side pixel limit.

Why

The Anthropic Messages API accepts 8000 px per side for an ordinary request but only 2000 px per side once the request carries many images:

400 invalid_request_error
messages.10.content.5.image.source.base64.data: At least one of the image
dimensions exceed max allowed size for many-image requests: 2000 pixels

Both DSH image gates are area gates:

stageknobdefault
ingest (dsh-attachment-local)normalizedImageMaxPixels / normalizedImageMaxDimension4 194 304 px² / 8192 px
request projection (requestImageDimensions)llm-pi-ai.requestImagePixelBudget4 194 304 px²

A full-page screenshot therefore lands in the store as e.g. 828x5059 (inside the area budget, far outside the per-side rule) and is transmitted verbatim. The failure is latent: the same image is fine in a short request and only kills a long session later, then on every retry, because the bytes are already in the history.

What it does

Wraps ctx.attachments.readImageRequest(ref, policy, signal) (the single seam every LLM adapter uses to materialise request bytes) and converts a per-side cap into the area budget that produces it:

maxPixels' = floor(w * h * (cap / max(w, h))^2)

requestImageDimensions scales by sqrt(maxPixels/(w*h)) and floors, so the long edge lands at or under cap, aspect ratio preserved.

  • retroactive: acts at request time, so histories that already contain oversized images become sendable again;
  • non-destructive: stored bytes are untouched, only the model copy shrinks;
  • never widens a route policy that is already tighter;
  • fails safe: if a core upgrade renames the seam it logs a warning and stays inert rather than throwing at boot;
  • free: Anthropic resizes anything above ~1.15 MP server-side anyway.

Config

- id: request-image-cap
  config:
    enabled: true
    maxDimension: 2000   # 64..8192
    verbose: false       # log every clamp

Install

dsh plugin --profile web add github:lucagiftzek/dsh-request-image-cap

The package declares dsh.bundle, so it joins dsh.profile.bundles and its own patch inserts the entry. Override values with a - id: request-image-cap row (config: only, no second insert) in your profile's cordis.patch.yml. It mounts at boot: restart dsh web after installing; the log then shows request-image-cap: active, 2000px per side. A local checkout works too: dsh plugin --profile web add link:/absolute/path/to/dsh-request-image-cap. Requires Node 22.18 or newer; used on DSH 0.1.5 and 0.2.1 (the seam is ctx.attachments.readImageRequest).

Test

npm test    # node --test test/*.test.js

The tests call the real requestImageDimensions of your installed DSH. They find it under DSH_GLOBAL_PREFIX or the global prefix of the running node; set DSH_GLOBAL_PREFIX if DSH lives elsewhere.

Proof on the worst object found in a real attachment store: 828x5059 (388 KB) → 327x1998 (79 KB).

Upstream

The real fix belongs in requestImageDimensions: a route-owned maxDimension beside maxPixels. This plugin is the local stand-in.

When something goes wrong

  • Ask your agent to load the image-cap-doctor skill (copy skills/image-cap-doctor into ~/.dsh/skills/ once, how).
  • Symptom-first guide: docs/TROUBLESHOOTING.md.
  • Messages and log lines: docs/ERRORS.md.

Built by Luca Tzekos, who also makes Job Opportunities API: employer-direct job data with per-field provenance you can verify yourself, free to read and available as an API. If this plugin is useful to you, a star on this repo or a look at jobopportunitiesapi.org is the best thanks.