DeepSeek Harness 插件

dsh-vision-bridge-goodandr

Self-owned vision bridge for DeepSeek Harness: pick the vision model yourself from the available ones. Image content blocks are rewritten into text markers at the agent boundary so text-only models(英文原文)

跳到安装方式

来源信息

GitHub 仓库
GooDAnDReaDY/dsh-vision-bridge
最近更新
2026年8月19日
分类
自动化与任务
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/GooDAnDReaDY/dsh-vision-bridge
插件名:dsh-vision-bridge-goodandr
作者:GooDAnDReaDY

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-vision-bridge

Vision bridge for DeepSeek Harness (dsh) — a self-contained replacement for dsh-vision-router.

When the chat model has no vision (e.g. deepseek-v4-flash) and a message contains an image, the image never reaches the text-only model. Instead, the plugin substitutes an automatic text description from the vision model you choose (Hermes-style). The text model just reads text and keeps the conversation going; the image stays in the session log and in the UI.

  • describe_image — a tool for when you need more precise details on an image (ask a model).
  • Description cache by contentHash of the bytes — an image is described once, then the previous description is reused on later turns.
  • You pick the vision model in Settings → Vision (a top-level settings section alongside General / Models / Plugins).

Install

# From npm after publishing:
dsh plugin --profile web add @goodandready/dsh-vision-bridge

# From GitHub:
dsh plugin --profile web add github:GooDAnDReaDY/dsh-vision-bridge
# Locally from a checkout:
dsh plugin --profile web add /path/to/dsh-vision-bridge

Restart the Web UI, open Settings → Vision, pick a provider and model (or leave empty — auto-picks the first vision-capable model).

Replacing dsh-vision-router

This does the same job but under your control and with your own vision model. If dsh-vision-router is installed, remove it:

dsh plugin --profile web remove dsh-vision-router

How it works (Hermes-style)

1. An image (from you or from a tool like generate_image) enters the chat and is shown by the UI. 2. On every LLM request, at two points: - agent/pre-step, which sees the messages claimed from the inbox — that is, the images you attach. Rewriting them here puts the description into the session history, so the model still remembers the image on later turns. - llm/stream, which sees the whole outgoing request. This is the net under everything else: a tool result is appended straight to the session and never passes through pre-step, so an image a tool produced (generate_image, for one) would otherwise reach the adapter untouched and fail the turn with does not support image input. 3. At either point the rule is the same: - if the chat model is vision-capable (inputModalities includes image) — images go through as-is; - if the model is text-only — for each image block: - already cached description (by attachmentId or content hash) → reuse it; - otherwise automatically call the vision model via ctx.llm.stream, get a description, cache it, and inject it as [The user attached an image. Here is what it contains: ...]. 3. The text model reads text, not pixels. Turns never fail with UNSUPPORTED_CONTENT. 4. describe_image stays available for when you need more precise details on an image (ask a model directly).

Settings

Settings → Vision (top-level section):

  • Provider — the vision model's provider (from the LLM catalog).
  • Model — the model (only vision-capable ones are shown).
  • Empty → auto-pick the first vision model.

In settings.yaml:

dsh-vision-bridge:
  visionProvider: ""   # empty = auto-pick
  visionModel: ""      # empty = auto-pick
  sanitizeImages: true
  maxImageBytes: 20971520
  timeoutMs: 120000

Structure

dsh-vision-bridge/
├── package.json            # dsh bundle/plugin metadata + peerDependencies
├── cordis.patch.yml        # bundle layer: inserts the plugin row
├── lib/index.js            # host: agent/pre-step sanitizer + describe_image + cache + model list
├── lib/client.js           # browser: top-level Settings → Vision section
├── README.md
└── LICENSE                 # MIT

License

MIT