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¶
- When the main model itself receives an image, it passes the image to the model as-is without converting it to text.
- 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.
- Provides an entry point for disk screenshots:
see_image
- Allows image pasting on the Web, avoiding direct rejection when the current model does not support images.
- Supports configuring the vision sidecar via the following environment variables:
DSH_VISION_BASE_URL
DSH_VISION_API_KEY
DSH_VISION_MODEL
DSH_VISION_PROMPT
- Fallback when
DSH_VISION_*is not set:
OPENAI_BASE_URL
OPENAI_API_KEY
- Supports configuring
dsh-plugin-multimodalin the profile’scordis.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:
- The main model uses the official text-only model.
- Configure a vision-capable sidecar.
- In the Web interface, paste an error screenshot and ask “What does the red text say?”
- 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-flashor 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
dshprocess 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