dsh-vision-provider: Selecting Vision Model Combinations in the DeepSeek Harness Web UI

Preface

In the plugin extension approach of DeepSeek Harness (DSH), model selection in the Web UI typically revolves around a single model. When building agent workflows, a common requirement is to have DeepSeek handle reasoning, tool calls, and final responses while using an external vision model to process image inputs. dsh-vision-provider is a community plugin for DeepSeek Harness, maintained by libinyam and licensed under MIT. It exposes configured vision models as selectable combinations under DeepSeek + Vision: the vision model handles image analysis, while DeepSeek continues to be responsible for the final response.

Below, we cover its positioning, core capabilities, installation methods, configuration options, typical usage, and things to keep in mind.

What This Is

dsh-vision-provider is a DeepSeek Harness adapter. It reads vision models declared with image input in Settings > Models and makes each vision model a separately selectable DeepSeek combination in the Web UI.

This is not native pixel input for DeepSeek; it is a two-model bridge. The quality of the final response depends on both the vision sidecar and DeepSeek. The vision model does not serve as the final response model; DeepSeek handles reasoning, tool calls, and final responses.

Core Features

  • Provides selectable vision model combinations under the DeepSeek + Vision provider.
  • Reads models declared with image input in Settings > Models and makes each vision model a separately selectable DeepSeek combination.
  • Plain text requests are sent directly to deepseek-official/deepseek-v4-flash.
  • Requests with images are analyzed by the vision model selected in the Web UI; the vision analysis result replaces the original image before being passed to DeepSeek.
  • DeepSeek handles reasoning, tool calls, and final responses.
  • Repeated tool steps within the current process reuse cached image analyses.
  • Supports adding third-party vision models via Settings > Models.
  • Supports direct fallback to OpenAI-compatible vision endpoints.
  • Supports configuring direct endpoints via the DSH_VISION_USE_LEGACY, DSH_VISION_BASE_URL, DSH_VISION_MODEL, DSH_VISION_MODEL_NAME, and DSH_VISION_API_KEY_ENV environment variables.

Installation and Enablement

First, ensure your environment meets the following requirements:

  • DeepSeek Harness 0.1.0-rc.5 or a compatible version.
  • Node.js >=22.19.0.
  • A configured DeepSeek API key.
  • At least one model declaring both text and image in Settings > Models, or an available direct OpenAI-compatible vision endpoint.
  • pnpm available for dsh plugin.

Always use the same DSH_HOME for both plugin management and startup.

If you have an installed dsh command, set DSH_HOME first, then add the plugin and start the Web UI:

$env:DSH_HOME = "D:\dsh-home"

dsh plugin --profile web add github:libinyam/dsh-vision-provider
dsh web

If you are running from the DeepSeek Harness source directory, set DSH_HOME first, then add the plugin via pnpm dsh:

Set-Location D:\deepseek-harness
$env:DSH_HOME = "D:\dsh-home"

pnpm dsh plugin --profile web add github:libinyam/dsh-vision-provider
pnpm dsh web

Configuring Keys

This combination ultimately uses two types of credentials:

  1. DeepSeek key: configure it in Settings > Models as you would for any Harness provider.
  2. Vision key: the direct sidecar fallback defaults to using VISION_OPENAI_API_KEY.

Set the vision key in the current PowerShell window before starting the Web UI:

$env:VISION_OPENAI_API_KEY = "your-vision-api-key"
pnpm dsh web

API keys are not written to this repository or recorded by the plugin. The plugin first queries the Harness credential service for configuration references and then falls back to the startup process environment. Do not write the key itself into settings.yaml.

Typical Usage

Sending a Question with an Image

After completing the installation and configuration above, use the following steps:

  1. Start or restart the Web profile.
  2. Create a new session.
  3. Select DeepSeek + Vision.
  4. Choose the vision model you want to use, e.g., GLM-4.6V-Flash.
  5. Paste or drag an image into the composer.
  6. Enter your question and send.

Plain text messages completely bypass the vision endpoint and go directly to DeepSeek.

Adding a Third-Party Vision Model

If you need to add a new vision model that can be selected, you can maintain the model configuration in the Web UI:

  1. Open Settings > Models.
  2. Add or edit a third-party provider.
  3. Fill in the provider ID, display name, protocol, endpoint, and credential reference.
  4. Add the exact vision model ID and display name.
  5. Save, then open DeepSeek + Vision.

The plugin only includes models that declare image input capability in the vision catalog. Custom models that keep the default input: [text] are deliberately excluded from the vision catalog.

Directly Connecting to an OpenAI-Compatible Vision Endpoint

Alternatively, you can configure a direct endpoint via environment variables without relying on provider registration in Settings > Models. Set the direct endpoint variables before starting Harness, then start the Web UI:

$env:DSH_VISION_USE_LEGACY = "your-value"
$env:DSH_VISION_BASE_URL = "your-base-url"
$env:DSH_VISION_MODEL = "your-model-id"
$env:DSH_VISION_MODEL_NAME = "your-display-name"
$env:DSH_VISION_API_KEY_ENV = "YOUR_API_KEY_ENV"
$env:YOUR_API_KEY_ENV = "your-api-key"
pnpm dsh web

This direct fallback uses fetch to connect directly, bypassing Harness provider retries and the llm/stream middleware.

Upgrading

To update the plugin, run:

pnpm dsh plugin --profile web update dsh-vision-provider

Suitable Scenarios and Notes

This is suitable for developers using the DSH Web profile who want DeepSeek to remain the final response model while processing image inputs through selectable vision models.

Things to keep in mind before use:

  • This is a community project, not an official DeepSeek or OpenAI package.
  • This is a two-model bridge, not native pixel input for DeepSeek.
  • The quality of the final response depends on both the vision sidecar and DeepSeek.
  • The vision model does not serve as the final response model; DeepSeek is responsible for the final response.
  • Plain text messages completely bypass the vision endpoint.
  • Do not delete providers whose vision models you still want to select.
  • Do not write the key itself into settings.yaml.
  • The plugin runs with the permissions of the current dsh process; check the source code and license before installation.
  • The DSH community directory is an independent site with no official affiliation to DeepSeek / High-Flyer.

Links

  • Directory page: https://www.skillhub.cn/plugins/libinyam/dsh-vision-provider
  • GitHub: https://github.com/libinyam/dsh-vision-provider
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye