Introduction

The official route for DeepSeek Harness (DSH) is plain text. When pasting images in the Web interface, you might encounter:

当前模型不支持图片

For agent developers, this error blocks inputs like screenshots, error logs, and UI screenshots directly. dsh-plugin-multimodal handles this entry point issue: it first ensures image attachments are not rejected, then converts the image content to text to hand over to the main model.

What is this

dsh-plugin-multimodal is maintained by shinjiyu and is licensed under MIT. Node engine requirements are as follows:

>=18

Its positioning is:

Vision sidecar for DeepSeek Harness: accept image attachments on text-only models, describe them, then send text to the main model.

In other words, when the main model is itself a text-only model, the plugin first receives the image on the GUI side, calls a vision-capable sidecar to generate a text description, and finally sends the text to the main model.

Core Features

  1. When the main model itself receives an image, it passes the image to the model as-is without converting it to text.
  2. When the main model is text-only, the GUI first receives the image, the sidecar converts it to text, and then sends it to the main model.
  3. Provides an entry point for disk screenshots:
   see_image
  1. Allows image pasting on the Web, avoiding direct rejection when the current model does not support images.
  2. Supports configuring the vision sidecar via the following environment variables:
   DSH_VISION_BASE_URL
   DSH_VISION_API_KEY
   DSH_VISION_MODEL
   DSH_VISION_PROMPT
  1. Fallback when DSH_VISION_* is not set:
   OPENAI_BASE_URL
   OPENAI_API_KEY
  1. Supports configuring dsh-plugin-multimodal in the profile’s cordis.patch.yml.

Installation and Enablement

First, install it to the specified profile:

dsh plugin --profile web add github:shinjiyu/dsh-plugin-multimodal

If using a local directory:

dsh plugin --profile web add D:\tempWorkspace\dsh-plugin-multimodal

After installation, restart the DSH Web process:

dsh web

The tool table in old sessions will not update; you need to verify in a new session.

Configuration

Environment variable method:

DSH_VISION_BASE_URL=https://api.example/v1
DSH_VISION_API_KEY=...
DSH_VISION_MODEL=glm-4.5v
DSH_VISION_PROMPT=...
  • DSH_VISION_BASE_URL: Vision API endpoint/interface.
  • DSH_VISION_API_KEY: Key for this interface.
  • DSH_VISION_MODEL: Must be a model that can actually see images.
  • DSH_VISION_PROMPT: Optional.

When DSH_VISION_* is not set, fall back to OPENAI_BASE_URL / OPENAI_API_KEY.

You can also write in the profile’s cordis.patch.yml:

- id: dsh-plugin-multimodal
  name: dsh-plugin-multimodal
  inject: [llm, tools, attachments, systemPrompt]
  config:
    model: glm-4.5v
    apiKeyEnv: DSH_VISION_API_KEY

apiKeyEnv refers to the environment variable name; do not write the key itself into the repository.

Typical Usage

First, perform an acceptance test:

  1. The main model uses the official text-only model.
  2. Configure a vision-capable sidecar.
  3. In the Web interface, paste an error screenshot and ask “What does the red text say?”
  4. Pass criteria: “The current model does not support images” no longer appears, and the main model can reference the text in the image.

Disk file scenario:

If the screenshot is already a file on the disk, you can have it call:

see_image

Suitable Scenarios and Notes

Suitable for:

  • The main model uses the official DSH text-only route.
  • Need to paste screenshots in the Web and let the main model continue processing based on text.
  • Need to handle screenshot files on the disk.
  • Want to keep the main model’s input as plain text while adding an image entry point.

Note:

  • Do not point the sidecar to text models like GLM-5.2-FP8.
  • Do not point the sidecar to deepseek-v4-flash or other text-only models.
  • Do not write the key into the repository.
  • Do not modify runtime/ or the official DeepSeek adapter.
  • Do not market it as a vision toolkit; its positioning is image pasting access, not a vision toolkit.
  • The plugin runs with the current dsh process permissions; check the source code and license before installation.
  • The WeChat group is not an official group. The WeChat group code mentioned in the README is valid until 2026-08-23; as of 2026-09-01 it may have expired, please refer to the latest instructions in the repository for availability.

Conclusion

dsh-plugin-multimodal fills the image pasting entry point in DSH text-only sessions: it does not change the main model’s text route, but uses a sidecar to convert the image to text first.

The community directory of the DSH plugin ecosystem is an independent site with no official affiliation with DeepSeek / Fenxiang; please refer to the instructions given in the repository README for the directory entry.

GitHub:

https://github.com/shinjiyu/dsh-plugin-multimodal