Introduction

In DeepSeek Harness (DSH), some models cannot directly view images. When sending chat images to such models, a conversion step is required before the message is sent to the model: replace the image with a local file path. The model then calls the built-in analyze_image tool to obtain a textual description via the configured vision API.

dsh-image-pathify is a plugin for DSH Web. It does not modify thumbnails in the chat interface and does not alter the behavior of models that are already capable of seeing images.

What is this

dsh-image-pathify is maintained by dami9527 and is licensed under the MIT license. It is used to solve a specific problem: models like deepseek-v4, which cannot see images, still need to process images pasted into the chat.

The plugin’s approach is:

  • Images in the chat display normally in the interface.
  • Before sending a message to a model that cannot see images, the image is replaced by a line containing a local file path.
  • The model calls analyze_image to get a text description via the vision API.
  • For models that can see images, images are sent as-is, and analyze_image does not appear in their tool list or system prompt.

Core Capabilities

  1. Supports converting chat images to local file paths before sending them to models that cannot see images.

  2. Provides the analyze_image tool, which calls the configured OpenAI-compatible vision interface.

  3. Supports passing multiple images’ paths in a single vision request.

  4. Maintains original behavior for models that can see images and does not expose analyze_image.

  5. Rejects read_image on models that cannot see images and prompts them to use analyze_image.

Installation and Enablement

First, install the plugin:

dsh plugin --profile web add dsh-image-pathify

Then, start the Web interface:

dsh web

Go to Settings → Plugins → Vision, fill in the API key, vision model, vision API address, and uncheck “Disable Thinking” to save. Changes in the settings page take effect immediately upon saving; no restart is required.

Credential and configuration locations:

  • The API key is written to $DSH_HOME/.credentials.yaml, not into the settings file.
  • The vision fields are written to the image-pathify section in $DSH_HOME/settings.yaml.

Typical Usage

When sending an image to a non-vision model, the flow is:

  1. Thumbnails still display in the chat interface.
  2. The plugin replaces the image in the message sent to the model with a local file path.
  3. The model calls analyze_image, rather than read_image.
  4. The vision API returns a text description.

For multiple images, use images to pass all paths at once. When there are multiple image paths in the same turn, all paths should be put into a single analyze_image call, rather than looping through calls.

When sending images to a model that can see images, the images are sent as-is, and the model processes them directly; analyze_image does not appear in that model’s tool list or system prompt.

Configuration

The following fields can be configured in the settings page:

  • apiKeyEnv: Credential reference name for the API key. The key itself is stored in $DSH_HOME/.credentials.yaml.
  • visionModel: Vision model id. Default deepseek-v4-flash-vision-exp.
  • visionBaseUrl: Base URL of the OpenAI-compatible vision interface. Default https://api.deepseek.com.
  • disableThinking: Default true. Unchecking this enables thinking mode; the output limit should be increased when enabling thinking.
  • maxTokens: Output limit. Default 2048; 0 means not passing max_tokens.
  • models: Controls which non-vision models are allowed to send images. An empty value means all non-vision models can send images; when filled, only the models in the whitelist are allowed.
  • relaxAdmission: Allows sending images to non-vision models. When off, images are rejected based on the model’s capabilities.

These fields can also be configured in the image-pathify section of settings.yaml. Example:

image-pathify:
  visionModel: deepseek-v4-flash-vision-exp
  visionBaseUrl: https://api.deepseek.com
  apiKeyEnv: DEEPSEEK_API_KEY

Use Cases and Notes

Suitable for developers using DSH Web with non-vision models who still want the model to understand chat images. The plugin mainly handles the combination of “non-vision model + chat image + external vision API”.

Notes:

  • The plugin runs with the permissions of the current dsh process. You should check the source code, dependencies, and license before installing.
  • This plugin declares the MIT license. package.json engines.node requires >=22; verified information only shows partial peerDependencies, with full dependencies determined by the repository’s package.json.
  • visionModel, visionBaseUrl, and the key must correspond to the available vision API.
  • If “Disable Thinking” is unchecked, thinking content will consume output quota; increase maxTokens if necessary.

Conclusion

dsh-image-pathify solves the problem of “non-vision models understanding chat images via an external vision API”. Before configuration is complete, please check the source code, license, and vision API credentials.

GitHub Repository: https://github.com/dami9527/dsh-image-pathify