Introduction¶
When chatting with a plain-text primary model (such as DeepSeek) in DeepSeek Harness (DSH), a common issue is that the primary model does not recognize images. You either have to switch to a multimodal model or manually type the content of a screenshot into the conversation. dsh-vision-opencode takes a different approach: when an image is sent in the chat, it is first passed to a configurable vision model to be converted into text, and the primary model responds normally without needing to switch models.
Below is an introduction to the positioning, capabilities, and installation/configuration of this plugin. The information is sourced from the SkillHub Directory Page and the GitHub Repository (maintainer poiuyjie, MIT license, current version 0.4.2).
What It Is¶
dsh-vision-opencode is a web-side plugin for DSH, classified under model inference. In one sentence: it automatically converts images into text via any vision model, making them usable by plain-text LLMs.
The plugin automatically identifies and takes over images for plain-text primary models. If the primary model itself supports multimodality, it retains DSH’s native pipeline and requires no changes to the model directory.
Core Features¶
Automatic Conversion of Images Sent in Chat¶
When an image is sent in a conversation, the plugin passes it to the selected vision model (e.g., MiMo-V2.5) to generate a text description, which is then sent to the primary model for further reasoning. A “Vision Model” dropdown is provided on the right side of the input box, automatically listing models from each provider that support images.
Vision Settings and Tools¶
Under Settings → Vision, you can independently manage vision models. The plugin also provides:
- The
vision_read_imagetool - The
vision-image-analysisskill
These can be used for scenarios such as OCR, chart interpretation, and screenshot understanding.
Fallback Handling for Exceptions¶
- 60-second timeout per request
- One retry on failure
- After retries are exhausted, it degrades to placeholder text, preventing the entire round from being disrupted.
Channel Status and Reasoning Strategies¶
In Settings → Vision, each channel (provider group) has a status indicator dot next to its name, following the same logic as the official “Models” page:
- Green dot: API key is configured (either the host-routed
apiKeyEnvor the plugin-written<PROVIDER>_API_KEYis available) - Red dot: Key is explicitly not configured
- No indicator: Status is unknown (e.g., credential service is unavailable)
Each vision model can have its own “Reasoning” strategy:
| Option | Meaning |
|---|---|
| Default | Follows the provider’s default tier |
| Off | No thinking; faster and more economical; only available when the provider explicitly declares it off |
| Force Off | Attempts to turn off thinking (e.g., via reasoning_effort:"none"), but success is not guaranteed |
Providers have inconsistent declarations for the “thinking off” field, so the plugin can only try to differentiate between “Off” and “Force Off” and attempt parameters, without guaranteeing that thinking can be turned off for every provider.
Installation and Enabling¶
It is recommended to install using DSH’s native command:
dsh plugin --profile web add -w github:poiuyjie/dsh-vision-opencode
You can also use a one-click script (install.sh for Ubuntu, install.ps1 for Windows):
curl -fsSL https://raw.githubusercontent.com/poiuyjie/dsh-vision-opencode/main/scripts/install.sh | bash
After installation, restart dsh and select a vision model from the dropdown on the right side of the input box to enable the plugin.
Uninstall command:
dsh plugin --profile web remove -w dsh-vision-opencode
Alternatively, use uninstall.sh from the repository. Before uninstalling, it is recommended to back up conversations containing images—after uninstallation, these old conversations may no longer be sendable to plain-text primary models.
Configuration¶
Edit ~/.dsh/settings.yaml or manage it graphically under Settings → Vision:
vision-opencode:
provider: '' # Vision model provider; empty = not selected
model: '' # Vision model ID; empty = not selected
autoConvert: true # Auto-convert switch for image sending; set to false if issues arise
If you only want to keep the tool and selector but disable auto-conversion, set autoConvert to false and restart.
Typical Usage¶
- Install the plugin and restart
dsh. - In Settings → Vision, select the provider and model ID for the vision model, or choose directly from the “Vision Model” dropdown on the right side of the input box.
- Confirm that the API key for the corresponding channel is configured (status dot is green).
- Send an image in the conversation. The plugin automatically calls the vision model to convert it to text, and the primary model continues its response based on the conversion result.
- To actively recognize an image, call the
vision_read_imagetool or use thevision-image-analysisskill.
Use Cases and Notes¶
Who is it suitable for:
- Users whose primary model is fixed to a plain-text model but occasionally need to send screenshots, charts, or document images in conversations.
- Users who want to configure vision models separately from the primary model, switching providers without changing the model directory.
- Users who need OCR or screenshot understanding within DSH and want to reuse the same vision capabilities via tools/skills.
Notes:
- The plugin runs with the current
dshprocess permissions. Before installation, review the source code and the MIT license. - Requires Node.js >= 20.3; depends on peer packages like
@deepseek-ai/dsh-llm,dsh-tools,dsh-settings(rc.6 and above). - If image conversion fails or the selector does not appear, it is likely due to the vision model not being selected or version discrepancies. Check the browser console for errors and open an issue on GitHub.
- Plain-text and multimodal primary models are automatically distinguished; switching providers generally requires no additional configuration changes.
Links¶
- Directory Page: https://www.skillhub.cn/plugins/poiuyjie/dsh-vision-opencode
- GitHub: https://github.com/poiuyjie/dsh-vision-opencode
SkillHub is a community directory for Skills aimed at Chinese users and has no official affiliation with DeepSeek or High-Flyer. The value of dsh-vision-opencode lies in adding configurable vision capabilities to plain-text LLMs without changing the primary model.