Introduction

The official DeepSeek model declares inputModalities: ['text'] in its metadata, which causes the harness image gate (pre-send checks, model-switch checks, and the read_image tool) to reject image messages with the error MODEL_DOES_NOT_SUPPORT_IMAGES. Although once images actually enter the agent loop they can be transcribed by other plugins, the admission-stage interception blocks the flow.

What Is This?

This plugin is a patch plugin for DeepSeek Harness (DSH), maintained by Seryta. It takes over DeepSeek’s official provider routing and unlocks image admission by modifying the model metadata. Its core logic mirrors the official apply logic, only augmenting the inputModalities in the resolveModel return value from ['text'] to ['text', 'image']. It directly references the already built official artifacts in the DSH installation tree, with no local pnpm build or listModels modification required.

Core Features

  • Take over official routing: Disable the official @deepseek-ai/dsh-llm-deepseek entry and have this plugin take over the same deepseek-official route, transparent to users, with no need to switch model selectors.
  • Complete the modality declaration: Add the image input modality to the resolveModel return value.
  • Pass the admission preflight check: Allow image messages to pass the apiproxy admission preflight check.
  • Zero API transmission: The DeepSeek API never receives images; all image processing is completed within the local harness loop.

Install and Enable

Run the following command to install:

dsh plugin --profile web add github:Seryta/llm-deepseek-image-admit

After installation, restart dsh web for the changes to take effect. The plugin is installed by default in ~/.npm-global/lib/node_modules/@deepseek-ai/dsh. If DSH is installed elsewhere, set the DSH_NPM_ROOT environment variable (pointing to the DSH installation root, which should contain node_modules/@deepseek-ai/...).

Typical Usage

After installation and restart, the admission check for image messages is automatically allowed. The final handling of images (transcription into text) must be completed during the agent/pre-step stage in conjunction with plugins such as image-bridge. Users do not need to make any configuration changes; the existing model selection logic remains unchanged.

Applicable Scenarios and Notes

Applicable scenario: You need to use official DeepSeek models in DSH to handle multimodal input while keeping the model selector transparent.

Notes:
1. Admission only, no transcription: This plugin only allows images to pass the admission preflight check; it does not transcribe image content. If it is not paired with plugins such as image-bridge to convert images into text at the pre-step stage, images will reach the DeepSeek adapter with raw data blocks and be rejected by the API.
2. Depends on official artifact layout: The plugin depends on the official package’s artifact path layout (such as node_modules/@deepseek-ai/dsh-llm-deepseek). If DSH changes its installation layout, it must be accommodated through the DSH_NPM_ROOT environment variable.

Closing

This approach unlocks image admission for official DeepSeek models by modifying metadata, without introducing new model variants or changing user workflows. For more implementation details and drift detection scripts, refer to the source code.

Plugin Directory
GitHub Repository