Introduction¶
In DeepSeek Harness (DSH), model capabilities are typically composed via routing through plugins. If the DeepSeek text-only model you are using cannot directly accept images, a common approach is to attach an additional vision model to convert the image into text first, and then pass it to the text model for inference.
dsh-llm-deepseek-vision encapsulates this process into a DSH plugin: it registers a DeepSeek (Vision) route, allowing the text-only model to continue inference based on the image description provided by the vision model, rather than processing image bytes directly.
Positioning¶
It is maintained by NagasakiSoyo-ui with an MIT license.
The plugin is installed via the npm package name @deepseek-ai/dsh-llm-deepseek-vision and declares a dsh.bundle manifest; it also supports integration into Harness for deployment after building from source.
How It Works¶
Below are its three core behaviors:
-
Registers an additional provider route:
deepseek-vision. -
Advertises
deepseek-v4-flashanddeepseek-v4-proexternally, and declares:
input: [text, image]
- Routes based on request content:
- Without images: Zero-overhead pass-through to the text inference route, defaulting to
opencode-go. - With images: The configured vision model describes each image into text, then hands it to the text-only model for inference based on the description.
By default, both text inference and image description run on OpenCode Zen Go (opencode-go).
Installation¶
First, install the plugin via npm package and mount it to the web profile:
dsh plugin --profile web add @deepseek-ai/dsh-llm-deepseek-vision
If you need to build from source, you can follow the steps below:
git clone https://github.com/NagasakiSoyo-ui/dsh-llm-deepseek-vision.git
cd dsh-llm-deepseek-vision
npm install
npm run build
After building, integrate the plugin artifact into your Harness deployment.
Mounting to Composite Configuration¶
Add the plugin entry in the profile’s cordis.patch.yml and configure the vision route, delegate route, and model directory:
- id: llm-deepseek-vision
name: '@deepseek-ai/dsh-llm-deepseek-vision'
config:
visionProvider: opencode-go
visionModel: <support [text, image] vision model id>
visionPrompt: <description instructions for the vision model>
visionMaxTokens: 1024
delegateProvider: opencode-go
models:
- id: deepseek-v4-flash
- id: deepseek-v4-pro
visionProvider points to the provider route that provides the vision model; delegateProvider points to the route that actually performs text inference. models determines the model directory exposed by this deepseek-vision route.
Prerequisites¶
Before enabling, confirm the following points:
- The vision provider route must exist, and its model must be declared to support image input:
input: [text, image]
-
The vision model must be resolvable by its provider route.
-
The vision model’s provider must be able to complete authentication and configure the corresponding
apiKeyEnvin the credential store. -
Harness must mount the persistent attachment service;
dsh-basealready includes this service. -
If a
pi-airoute entry is manually declared but without inference capability declared, it will be treated as “toggleable thinking,” i.e., sendingoff.
Usage¶
After the above configuration, select DeepSeek (Vision) in the model selector, then select deepseek-v4-flash or deepseek-v4-pro, and then attach an image in the message.
If you wish it to be the default model for the session, you can set:
agent-default-model:
provider: deepseek-vision
model: deepseek-v4-flash
Configuration Items¶
| Field | Description |
|---|---|
visionProvider |
Provides the provider route for the vision model |
visionModel |
Vision model id, must support [text, image] input |
visionPrompt |
Description instructions given to the vision model |
visionMaxTokens |
Output limit for a single visual description |
delegateProvider |
Route that receives text requests and performs inference |
models |
Model directory advertised by this route |
Applicable Scenarios and Notes¶
Suitable for scenarios where you already have a DSH text-only model but need the model to answer based on images. The plugin does not alter the inference model itself but converts images into text descriptions within the request chain, then passes them to the text model for inference.
Notes before use:
-
Visual descriptions are regenerated every round; if the session log contains images, descriptions are regenerated every round.
-
Replaying a vision round will re-run the vision model.
-
The plugin runs with the permissions of the current
dshprocess; check the source code and license before installing. -
The DSH plugin ecosystem emphasizes “everything is a plugin”; the plugin directory is an independent site with no official affiliation to DeepSeek / Huanfang and should not be understood as an official app store.
Conclusion¶
The value of dsh-llm-deepseek-vision lies in decoupling “seeing” and “reasoning”: the vision model is responsible for describing images into text, while the text-only model is responsible for completing inference based on these descriptions.
Directory page link (from plugin link, please confirm yourself before use):
https://www.skillhub.cn/plugins/NagasakiSoyo-ui/dsh-llm-deepseek-vision
GitHub repository:
https://github.com/NagasakiSoyo-ui/dsh-llm-deepseek-vision