Introduction

In DeepSeek Harness (DSH), some host models do not possess vision capabilities by themselves, for example, deepseek-v4-pro. If users send images directly into the conversation, they might encounter an “Model does not support images” interception. For scenarios where the host model needs to read image content, image processing can be moved to the model request assembly phase: user messages still retain the image, and the host model ultimately only receives the text description converted by the vision model.

Below is an introduction to the DSH plugin dsh-vision-bridge. It solves the problem of allowing host models without vision capabilities to process images sent by users in DSH sessions, while retaining image thumbnails in the user message box, and providing a view_image tool for the model to proactively view images.

What is it

dsh-vision-bridge is a DSH vision bridge plugin. The repository title in the materials is dsh-vision-bridge, the npm package name is @liu__min/dsh-vision-bridge, the verified version is 0.1.1, and the license is MIT. The GitHub repository path is lium970320/dsh-vision-bridge, and the maintainer is lium970320.

It is not the vision model itself, nor an independent image viewing service. It integrates the vision interface at the DSH plugin level: when an image appears in the session, or when the model calls the view_image tool, the plugin hands the image over to the configured vision interface to convert it into a text description, and then lets the host model continue processing.

Core Features

Below are the verified plugin capabilities.

  1. Direct image reception in sessions: After users send an image, it is no longer intercepted by “Model does not support images”.
  2. Image thumbnails retained in user messages: Image conversion does not happen on the user message; the user message box still displays image thumbnails.
  3. Automatic text conversion during model request assembly: At the model request assembly layer, the image is handed to the vision model to convert into a text description, and the host model only receives the text.
  4. Provides view_image tool: The model can call it itself when it needs to view an image, supporting local paths, URLs, and data URLs.
  5. Provides install.ps1 one-click installation script: The script completes steps such as copying, registration, declaration, configuration, patching, and self-testing.
  6. Supports explicitly configured vision interfaces: Supports explicitly configured vision interfaces like the official OpenAI and xAI Grok, or the OpenAI-compatible Responses API.
  7. Clear runtime behavior: The plugin does not include any service providers internally; when a vision interface is not configured, the tool will report an error explicitly and will not fail silently; the plugin has no logs, no cache, and no runtime data written to disk.

Installation and Enablement

First, confirm prerequisites: DeepSeek Harness is installed, and dsh web has been started at least once, and the ~/.dsh/profiles/web/ directory exists.

Regardless of the installation method, restart dsh web after installation and complete the vision interface configuration.

Install from npm

The verified npm package installation command is as follows:

dsh plugin --profile web add @liu__min/dsh-vision-bridge

After execution, enter the DSH profile directory and apply the pi-ai adapter patch:

cd ~/.dsh/profiles/web/
node apply-vision-patch.js

Then write the vision interface configuration as per the next section, and restart dsh web.

One-click Install from GitHub Repository

First, clone the repository:

git clone https://github.com/lium970320/dsh-vision-bridge.git
cd dsh-vision-bridge

Using the official OpenAI interface as an example, run the installation script:

powershell -ExecutionPolicy Bypass -File install.ps1 -ApiBase https://api.openai.com/v1 -ApiKeyEnv OPENAI_API_KEY -VisionModel gpt-5.1

The installation script will complete the following steps sequentially: copying plugin files, registering the plugin line in the profile’s cordis.patch.yml, declaring image input for the host model in settings.yaml, writing the vision interface configuration, applying the pi-ai adapter patch, and self-testing.

After the above steps, restart dsh web and send an image in a session to verify.

Configure Vision Interface

The plugin requires an explicitly configured vision interface, which must provide both the interface URL and API key. You can write the configuration in ~/.dsh/profiles/web/vision-bridge-config.json:

{
  "apiBase": "https://api.openai.com/v1",
  "model": "gpt-5.1",
  "apiKeyEnv": "OPENAI_API_KEY",
  "apiKey": ""
}

Where:

  • apiBase: The vision interface address.
  • model: The vision model name.
  • apiKeyEnv: The environment variable name for the key, with higher priority.
  • apiKey: Directly write the key; choose one between this and apiKeyEnv.

It is only recommended to save keys in local configuration files or environment variables. Verified materials indicate that vision-bridge-config.json is excluded from .gitignore.

The configuration priority is as follows:

cordis.patch.yml plugin config > vision-bridge-config.json > Environment variables (keys)

Manual Installation

If you want to control the installation process step-by-step, you can first copy the plugin files to the DSH profile directory:

# Copy from the repository plugin/ directory:
#   dsh-view-image.js
#   apply-vision-patch.js
# Target directory:
#   ~/.dsh/profiles/web/

Append plugin registration in ~/.dsh/profiles/web/cordis.patch.yml:

- insert:
    - id: dsh-view-image
      name: './dsh-view-image.js'

Declare image input for the host model under llm-pi-ai.providers in ~/.dsh/settings.yaml. An example is shown below:

llm-pi-ai:
  providers:
    # Replace the provider name below with an existing provider name in settings.yaml
    provider-name:
      modelOverrides:
        deepseek-v4-pro:
          input:
            - text
            - image

The host model example here is deepseek-v4-pro, but in reality, it should follow the host model configuration in your local settings.yaml.

Then write the vision interface configuration:

# File: ~/.dsh/profiles/web/vision-bridge-config.json
# Fields: apiBase, model, apiKeyEnv, apiKey

Then run the patch and self-test:

cd ~/.dsh/profiles/web/
node apply-vision-patch.js
node dsh-view-image.js

Finally, restart dsh web.

Typical Usage

Below are two vision interface configuration examples that can be referenced directly.

Official OpenAI Interface

First, ensure the environment variable OPENAI_API_KEY is set to your local key. Then run:

powershell -ExecutionPolicy Bypass -File install.ps1 -ApiBase https://api.openai.com/v1 -ApiKeyEnv OPENAI_API_KEY -VisionModel gpt-5.1

After restarting dsh web, send an image in any session to confirm that the user message box retains the image thumbnail and the host model can continue processing based on the converted text description.

xAI Grok Interface

If explicitly configuring the xAI Grok vision interface, you can run:

powershell -ExecutionPolicy Bypass -File install.ps1 -ApiBase https://api.x.ai/v1 -ApiKeyEnv XAI_API_KEY -VisionModel grok-4-fast

Then restart dsh web as well and send an image in the session to verify.

Applicable Scenarios and Notes

Suitable for developers who already have a DSH web runtime environment and want to let host models without vision capabilities read image content. The plugin itself does not replace the host model, nor does it include a built-in vision service provider; the vision interface must be configured explicitly.

Note the following:

  1. The plugin runs with the current dsh process permissions. You should check the source code, installation script, and license before installing.
  2. The license is MIT. GitHub repository address:
https://github.com/lium970320/dsh-vision-bridge
  1. After every dsh upgrade or reinstall, the pi-ai adapter patch will be lost and needs to be run again:
cd ~/.dsh/profiles/web/
node apply-vision-patch.js
  1. The plugin will check if the patch is missing when starting. If missing, the log will alert:
[dsh-view-image] pi-ai vision patch is MISSING
  1. It is only recommended to save vision interface keys in the local vision-bridge-config.json or environment variables; do not commit them to the repository.
  2. When a vision interface is not configured, the tool will report an error explicitly and will not fail silently.

References

GitHub repository:

https://github.com/lium970320/dsh-vision-bridge

The verified materials do not provide a confirmable directory page URL, so this article does not list the directory page link.