Preface¶
When DeepSeek Harness (DSH) integrates with pure text models, a common limitation arises: text models like DeepSeek cannot directly process images. When users paste or upload images in the Web UI, they may encounter a “current model does not support images” prompt, or they may need to generate an image description externally and then manually paste the text back into the conversation.
dsh-vision-plugin is a plugin written for DSH that enables pure text models to gain image understanding capabilities through OpenRouter’s :free multimodal models. It converts images into text descriptions before sending them to the current model for processing. When using OpenRouter’s free vision models, no API call costs are incurred.
What This Is¶
- Plugin Name:
Agents365-ai/dsh-vision-plugin - Maintainer:
Agents365-ai - License: MIT
- GitHub:
https://github.com/Agents365-ai/dsh-vision-plugin - Purpose: Adds image understanding capabilities to DSH, allowing pure text models (such as DeepSeek) to answer based on image content.
Core Capabilities¶
- Provides a
describe_imagetool: Reads image files from disk and calls the OpenRouter vision model to return a text description. - Automatic Image Processing: Pasted or uploaded images are displayed as-is in the chat interface; when the current model doesn’t support images, the
llm/streamhook calls the OpenRouter vision model before sending, converting the image into a text description for the current model. - On first startup, automatically writes a default
deepseek-visionprovider configuration pointing to OpenRouter in$DSH_HOME/settings.yaml. This configuration can be modified or deleted at any time. - Uses OpenRouter’s
:freemultimodal models with zero API costs.
Pre-Installation Preparation¶
The plugin only reads the OpenRouter API Key from environment variables. If not set, the plugin will immediately report an error and prompt for configuration.
Set this before starting DSH:
export OPENROUTER_API_KEY=your_openrouter_api_key
Installation Methods¶
Bundle Installation¶
First add the plugin to the web profile, then start DSH:
dsh plugin --profile web add https://github.com/Agents365-ai/dsh-vision-plugin
dsh web
If you encounter this during installation:
ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED
This means you’ve pulled an older version (with a prepare build script). Update to the latest version.
–patch Installation¶
Install dependencies from the plugin directory and start with --patch:
cd dsh-vision-plugin
npm install
dsh web --patch ./cordis.yml
Note: The plugin path in cordis.yml is an absolute path; after cloning, you’ll need to change it to your local path.
Usage¶
After installation, select the DeepSeek model under the deepseek-vision provider in the Web UI’s model selector.
The plugin automatically writes the default provider configuration on first startup—no manual creation needed. To specify additional model paths, you can set:
export AUTO_VISION_FORCE_MODELS=provider/other-alias-model
Then restart DSH.
Configuration Notes¶
The official deepseek provider is pure text—don’t declare image input (modelOverrides) for it. Image understanding should be handled through providers like deepseek-vision that point to OpenRouter.
Uninstallation¶
For bundle installation, use:
dsh plugin --profile web remove dsh-vision-plugin
For --patch installation, no uninstall command is needed—just remove the startup parameter --patch ./cordis.yml.
To clean up automatically written configuration, delete the deepseek-vision provider configuration from $DSH_HOME/settings.yaml.
Known Limitations¶
- When a conversation already contains images, switching to a model that doesn’t support images will be rejected by the Harness with a
model-unavailableerror. Start a new conversation when switching. - When the current prompt contains images, tools are stripped away. “Viewing images + using tools simultaneously” requires two steps: first ask about the image, then have the model use tools.
- Free vision models occasionally return safety judgments or overly short descriptions; the plugin automatically retries with the next model.
Applicable Scenarios and Security Considerations¶
This plugin is suitable for scenarios where you want to use pure text models in DSH while still being able to read image content.
Before installation, it’s recommended to review the repository source code and MIT license. The plugin runs with the current dsh process permissions and can read image files and call external model APIs—ensure you trust the source code and only enable it in environments where you’re permitted to use the OpenRouter API Key on your machine.
Links¶
- GitHub:
https://github.com/Agents365-ai/dsh-vision-plugin - License: MIT