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.

Vision Subagent — DSH Plugin for DeepSeek Harness
← Plugins

dsh-vision-subagent

Vision Subagent

Capability-aware vision for DeepSeek Harness: native image input for multimodal models, with an isolated one-shot vision-route fallback for text-only models.

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-vision-subagent@0.5.0
READMECompatibilityVersions

Compatibility and provenance

Vision Subagent is published as dsh-vision-subagent and currently resolves to version 0.5.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
npm
Registry updated
9/20/2026

Versions

0.5.0stable
9/10/2026
0.3.1stable
8/20/2026
0.3.0stable
8/17/2026
Show 1 more versionCollapse versions
0.1.0stable
8/17/2026
Latest
0.5.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
126.4 kB
Files
30
Surface
web
License
MIT
Source
npm
GitHub
★ 1
Weekly downloads
79
Last push
9/10/2026
View source ↗Project homepage ↗
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
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

README

dsh-vision-subagent

Capability-aware vision for DeepSeek Harness: multimodal current models receive pasted images through DSH's native path; text-only models delegate image reading to a one-shot subagent on a separately configured vision route (MiniMax / Kimi / any OpenAI-compatible provider). On the delegated path, image bytes and the vision model's intermediate context stay out of the main session — only the final text answer comes back.

Why a subagent

  • Context isolation: large screenshots and multi-image comparisons never occupy the main model's window
  • Multi-turn visual reasoning: the child can call read_image on more workspace files before answering
  • Cost & route separation: vision calls bill on the MiniMax/Kimi route; the main model only reasons

Quick start

sh dsh plugin --profile web add /path/to/dsh-vision-subagent

Then edit ~/.dsh/profiles/web/cordis.patch.yml:

`yaml

  • insert:
    • id: vision-subagent name: 'dsh-vision-subagent' config: provider: kimi-coding # or minimax-cn / a hand-declared route model: k3 # or MiniMax-M3 / MiniMax-VL-01 `

Restart dsh web, open a new session, and ask: "Look at ~/Desktop/error.png — what is the error?" The model calls vision_agent(images=[...], question=...) on its own.

Screenshots

Paste & askAnalyzingClean bubbleLightbox
composer with pasted image thumbnailanalysis progress capsulebubble: thumbnails plus your words onlylightbox with full analysis

Paste images into the composer (Codex-style)

The Web composer already supports native image blocks. The plugin defaults to capability-aware pasteMode: auto:

  • Current model accepts images → the plugin stays transparent and calls DSH's original sendSession(text, imageIds, mode, signal). The current model sees the original pixels with the full conversation context; no analysis capsule or pre-description is produced.
  • Current model is text-only → the plugin delegates to its configured vision route: validates and stores the image, performs one intent-aware analysis on an isolated context, then sends only the analysis text plus durable original-image links to the main model.

The screenshots above show the delegated fallback path. Its chat bubble contains only your own words plus thumbnails; the analysis lives in the thumbnail lightbox. Need the original bytes later (image editing, pixel-level inspection)? vision_image_fetch materializes the full-fidelity file into .dsh-vision/.

Set pasteMode: delegate to force the isolated route even for multimodal models, or pasteMode: native to bypass the plugin and leave all admission to DSH. On delegated-analysis failure the message is not sent and the composer draft is preserved.

MiniMax / Kimi vision models

ProviderbaseURLVision modelsKey env
Kimi (Moonshot)https://api.moonshot.cn/v1k3 / kimi-k3 / moonshot-v1-8k-vision-previewMOONSHOT_API_KEY
MiniMaxhttps://api.minimaxi.com/v1MiniMax-VL-01MINIMAX_API_KEY
MiniMax CN(built-in llm-pi-ai minimax-cn route)MiniMax-M3MINIMAX_CN_API_KEY

If a route already exists in Settings/Models (e.g. kimi-coding, minimax-cn), the plugin config only names provider + model — the key stays in the route's credential reference. The plugin itself never touches secrets.

Configuration

FieldDefaultMeaning
enabledtrueMaster switch
provider / model'' (dormant)Vision route; must be set together
subagentProviderspawnctx.subagents provider
maxDepth1Absolute delegation-depth cap for the spawned child; 1 lets the vision child run but forbids further delegation (0 would reject the child itself — a top-level agent's child is depth 1)
maxImages4Images per call
maxImageBytes10 MiBPer-image byte cap
maxPromptChars8000Question length cap
maxOutputChars32000Returned text truncation
maxTokens4096Output token cap for delegated vision calls; 0 leaves it to the route
pasteModeautoauto: native for image-capable current models, delegated fallback for text-only; delegate/native force one path
allowRemoteUrlsfalseReserved (v0.1 supports local paths only)
allowOutsideWorkspacefalseWorkspace containment bypass
extraAllowedRoots[]Extra allowed image roots
guidance''Extra instructions appended to the child prompt

Security model

  • Keys live only in the vision route's credential reference (env); the plugin accepts no plaintext secrets
  • Local images default to the session workspace; symlinks are rejected; reads are byte-capped
  • The child runs with maxDepth: 1 (runs, but cannot delegate further) and instructions forbid file modification and shell use
  • vision_image_fetch writes only under the session workspace's .dsh-vision/ with self-generated content-hashed filenames; no caller-controlled path segment reaches the disk

Architecture

Main model (text-only) └─ vision_agent(images, question) ──┐ │ 1. admission: ext / containment / symlink / byte cap │ 2. ctx.attachments.saveImage → durable content-addressed refs │ 3. ctx.subagents.start('spawn', { agentOptions: {provider, model} }) ▼ One-shot subagent (MiniMax/Kimi vision route, own context) └─ final text ──► main session (only this message enters main context)

The plugin consumes harness services structurally (duck-typed) and is rc-version tolerant. Runtime dependencies: @deepseek-ai/dsh-tools (defineTool) and @deepseek-ai/schemastery (config schema) only.

Roadmap

  • Web paste bridge: composer images auto-trigger vision analysis (v0.2)
  • Context-aware paste analysis: your draft message steers the vision focus; bubble stays clean (v0.3)
  • vision_image_fetch: materialize pasted originals into .dsh-vision/ for editing (v0.3)
  • Capability-aware paste routing: native ImageBlocks for multimodal models, delegated fallback for text-only (v0.4)
  • Settings panel for provider/model selection
  • Remote image URL support (bounded fetch)
  • Embedded SKILL.md steering when to delegate

Development

sh npm install && npm run typecheck && npm test && npm run build

Version 0.4.2 is developed and release-tested against DSH 0.1.1-rc.2. The delegated Web path uses rc.2's atomic batch image admission, forwards submit cancellation, returns the native SubmitOutcome, and releases draft images only after a successful Host admission. DSH runtime packages are optional exact peers rather than ordinary dependencies, preventing a profile install from adding a second Harness runtime copy.

License

MIT