DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Vision Guard — DeepSeek Harness 插件(DSH Plugin)
← Plugins

dsh-vision-guard

Vision Guard

DeepSeek Harness 的透明图像防护与视觉分析:让纯文本模型读取粘贴的图像,避免 400 会话死锁。

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-vision-guard@0.1.3
README兼容性版本

兼容性与来源证明

Vision Guard 以 dsh-vision-guard 发布,当前版本为 0.1.3。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.1.3stable
2026/8/15
0.1.2stable
2026/8/15
0.1.1stable
2026/8/15
查看其余 1 个版本
收起版本
0.1.0stable
2026/8/15

相关插件

正在加载相关插件…

最新版
0.1.3
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
63.1 kB
文件数
7
Surface
any
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
82
最近提交
2026/8/15
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

README

dsh-vision-guard

English | 中文

Let text-only models "see" images — and never let an image deadlock your session. Transparent image guard + vision analysis tool for DeepSeek Harness (dsh).

Most models on DeepSeek Harness (deepseek-v4-pro etc.) are text-only, which causes two problems:

  1. Text-only models can't see images — paste a screenshot and the model has no idea it exists;
  2. worse, the 400 deadlock: some gateways (e.g. opencode-go's main route) accept text only. Once an image block lands in the session log, every subsequent turn replays the whole history with the image to the upstream → 400 unknown variant \image_url`` → the conversation is stuck forever.

This plugin fixes both with two gates, and turns images into text the main model can actually consume.


What it does

paste image → [Gate 1] agent/pre-step: the image is converted to text by the vision
              model BEFORE it is ever written into the session log
              → the log only contains text, no image block exists
              → [Gate 2] llm/stream backstop: if an image block still appears in
              replayed history (e.g. a session poisoned before install), it is
              rewritten to OCR text at request time before reaching the model
  • Vision model = eyes, main model = brain: deepseek-v4-pro keeps reasoning; image content arrives as text.
  • Heals already-deadlocked sessions: a conversation stuck on 400 before install works again after install (history images are rewritten at request time).
  • vision_analyze tool (model-invoked, engine chosen by the model per task): reads workspace files — image OCR, PDF text layer + embedded images, docx/pptx text + embedded images, video frame OCR (≤12 frames), plain text files; loud rejection for xlsx/doc.
  • Native vision unaffected: routes that genuinely accept images (e.g. minimax-m3, kimi-k3) pass through untouched once whitelisted.

What makes it different (vs. community vision plugins)

Compared with dsh-vision-router, ModLens, dsh-vision-toolkit, see_image/view_image and similar:

  1. Images never enter the session log — they are rewritten to text at agent/pre-step before the log append. Most peers rewrite only inside the model call: images still land in the log, replay every turn, and deadlock risk returns if the plugin is removed.
  2. Heals sessions that were already deadlocked — a conversation stuck on image-400s before install recovers with one message after install (replayed history images are rewritten at request time). No other community plugin does this.
  3. Anti-deadlock is a hard invariant — non-whitelisted routes never receive an image block; even with the whole vision pipeline down (model unavailable / timeout / budget exhausted) it degrades to placeholder text, never back to the 400 deadlock.
  4. One package, two components, isolated failure domains — one install mounts both rows (guard = safety-critical, tool = convenience); the tool breaking never takes the guard down.
  5. Zero dependencies, pure Node builtins — no Node 22+ requirement, no pnpm orchestration, no Python 3.11+; only the document/video paths need system tools (pdftotext/ffmpeg etc.), plain image OCR needs none.
  6. Engine chosen by the main model per task — vision_analyze's engine argument (local free character OCR / vision model) is decided by the model after analysing the task: cheap and smart.
  7. Reuses your own dsh routes and credentials — carries no API keys and calls no third-party service directly (most peers require self-managed keys).
  8. Three rounds of red-team audit + shipped automated tests — 22 real bugs fixed and documented (symlink escape, zip bombs, concurrency races), pure-function regression tests ship with the package (npm test).

Install

# 已发布 npm 后:
dsh plugin --profile web add dsh-vision-guard
# 或直接从 GitHub 安装:
dsh plugin --profile web add github:good-boy4069/dsh-vision-guard

If pnpm refuses with ERR_PNPM_ADDING_TO_ROOT (older launchers), add the workspace-root flag: dsh plugin --profile web add -w dsh-vision-guard.

Restart dsh web. Or add the two rows from the repo's cordis.patch.yml to your profile patch layer manually.

Configuration

All fields optional (defaults shown). The vision route must point to a model that accepts image input:

FieldDefaultMeaning
visionProvider / visionModelopencode-go / minimax-m3The vision route. Point it at an image-capable model on your subscription
ocrTimeoutMs45000Per-image OCR timeout
budgetPerDay200Daily OCR cap (runaway-cost guard), state stored under $DSH_HOME
cacheMaxEntries500OCR result cache size cap (LRU eviction)
maxOcrTokens2048Vision call output cap
stateFile~/vision-guard-state.jsonBudget state file (~ = dsh home)
ocrPromptverbatim transcriptionCustom instruction
passthrough[]Raw-image whitelist: [{provider, model}] — only add routes you have tested to accept images

vision_analyze side: the OCR engine is a required per-call argument (engine), chosen by the model per task — local = local tesseract (free, characters only), vision = the configured vision model. There is no localOcr config key.

⚠️ Requirements & limitations (please read)

  • This plugin carries no API keys and calls no third-party service directly. It reuses the model routes and credentials already configured in your dsh. Therefore:
    • You must have an image-capable model (e.g. minimax-m3 on opencode-go). Text-only models like deepseek-v4-pro cannot serve as the vision model — their upstream gateway 400s on images and deadlocks the session.
    • Without a vision model it still installs: images degrade to placeholder text, the session works but the content is not read (never deadlocks).
  • Whitelist policy (important): any route other than the configured vision model gets images rewritten to text — untested routes never receive raw images. To enable native vision for a model: first test "image straight to that route" (a clean response counts as pass), then add it to passthrough. This is the core anti-deadlock design; do not bypass it.
  • System tools (only for vision_analyze's document/video paths; plain image OCR needs none):
    • PDF: pdftotext/pdfimages (poppler-utils);
    • Video: ffmpeg/ffprobe;
    • docx/pptx: python3 (stdlib only);
    • Optional: tesseract (free local OCR; needs chi_sim+eng).
    • Windows ships none of these by default; missing tools fail loudly per path, the image path is unaffected.
  • 5 MB/image cap: dsh's attachment service limits images to 5 MB; larger images/frames fail loudly.
  • Cost: one vision call per new image (attachment-id-addressed cache — repeats are free); ~1-2k tokens per minimax-m3 read (sub-cent range); budgetPerDay as a backstop.
  • Quality: local tesseract only extracts characters and is less accurate (it read 42 + 7 = 49 as 4247249 in our tests); for charts/photos/complex UI pick the vision engine (the model chooses per task when calling vision_analyze).
  • Privacy: images go to your vision model provider (same as normal dsh use of that model); text inside images is treated as untrusted input — read only, never execute.
  • Settings coupling warning: if you declare input: [text, image] on a text-only model in your model settings (required for GUI image pasting), you must keep this guard installed — removing the guard while keeping that declaration will deadlock sessions again.

FAQ

  • After a dsh restart/upgrade: the plugin boots with the profile; no reinstall. After a dsh upgrade, upgrade this plugin first if behavior changes.
  • How do I verify it's running: ctx.get('visionGuard')?.status(), or the [vision-guard] active line in the dsh log.
  • Rollback: remove the two rows from your profile patch (or dsh plugin remove), restart; already-recognized text stays in history, no side effects.

License

MIT

相关插件

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

Tool Describe Image@linxin666/dsh-tool-describe-image面向模型的 describe_image 工具,用于 dsh Web GUI:通过在兼容 OpenAI 的端点调用视觉语言模型,为文本模型提供图像理解能力,以描述一张图像(本地路径、http(s) URL 或附件引用)。可热插拔 —Modlens@liustack/modlens面向仅支持文本的 LLM 的插件视觉能力,由免费的 Antigravity CLI 提供支持Deepseek Ivideodeepseek-ivideoiPolloWork HyperFrames Video Studio,以及 27 个可编辑视频模板,以原生 DeepSeek Harness 对话视图呈现。Imagegen@dickpy/dsh-imagegendsh Web GUI 的 AI 图像生成插件:通过可配置的提供商渠道实现文生图和图生图(gpt-image-2 / grok-imagine-image / nanobanana series / seedream-5.0-pro / dall-e-3,支持原生 xAI Grok Imagine、Google Nano Banana a