Introduction¶
When integrating custom models into DSH, you might encounter a situation where the endpoint itself supports multimodal capabilities, but sending images directly in the dialog box results in an error saying “Image input not supported.” The reason is that DSH’s host side reads the input: ["text","image"] declaration on the model entry to decide whether to pass the original image directly to the model; however, the interface at “Settings → Models → Model Directory” has never exposed an entry point for this declaration.
dsh-vision-plugin aims to solve this step: adding a “Image Input” checkbox to the model page in the Model Directory. Check it, and the declaration is written into DSH settings, allowing the custom model to receive images directly in the dialog box.
What is it¶
dsh-vision-plugin is maintained by nexsjournal, current version 1.1.1, MIT license. One-sentence positioning: It adds the “Image Input” declaration checkbox to DSH’s Model Directory — check it, and the custom model can receive images directly in the dialog box.
It is a pure host plugin. Its card will not appear in “Settings → Plugins → Plugin Configuration” — this is normal and not an installation failure.
Core Features¶
- Idempotently installs the “Image Input” checkbox on the model page in “Settings → Models → Model Directory” every time DSH starts;
- Checking the box = writes
input: ["text","image"]for that model and saves it into DSH settings via the model page’s own save process; unchecking = clears that field; - Data flows entirely through DSH’s native mechanisms; disabling or uninstalling the plugin does not affect the already saved declarations from continuing to work;
- Comes with a BYO (Bring Your Own Endpoint) vision relay: registers a
visionprovider and four tools:vision_analyze,vision_status,vision_test, andvision_configure; - Configures the Base URL, Model, and API Key via
vision_configureor environment variablesDSH_VISION_*without hardcoding any endpoints or keys.
The patching mechanism is defensive: if already patched, it skips; if anchors don’t match, it skips and logs a warning, ensuring it won’t corrupt files.
Installation¶
Prerequisites: DSH is deployed (web profile), pnpm is available (dsh plugin will proxy pnpm). The package requires node >= 22.19.
npx @deepseek-ai/dsh plugin --profile web add github:nexsjournal/dsh-vision-plugin
After installation, completely exit and restart DSH. After restarting, confirm three things:
- “Settings → Plugins → Plugin List” shows a line for
vision-plugin(enabled); - In “Settings → Models → Model Directory”, expand any model, and the “Image Input” checkbox appears below “Max Output Token”;
- “Settings → Plugins → Plugin Configuration” has no card for this plugin — it’s a pure host plugin, which is normal.
Dependency notes: This package declares @deepseek-ai/* as optional peerDependencies, which are not pulled in during installation but are resolved by the profile’s dependency tree at runtime, present in standard deployments. Desktop and web versions share the web profile; installing for web works on both ends.
How to Check¶
Taking declaring image input for a model under a custom route as an example:
- “Settings → Models”, select your custom route;
- Go into “Model Directory”, click the
>arrow on the right of the model row to expand it; - Check “Image Input” below “Context Window / Max Output Token”;
- Go back to the dialog box, select the model in the model selector, and send an image directly (original image passed through).
Note: Checking is just a declaration. The prerequisite for it to take effect is that the endpoint for that route can actually process images; DSH will not identify images on behalf of the endpoint.
Enabling and Disabling¶
“Plugin List” is read-only; enabling/disabling is controlled via the profile patch file ~/.dsh/profiles/<profile>/cordis.patch.yml.
Disable: Add an entry to the top-level array, then restart DSH:
- id: dsh-vision-plugin
disabled: true
Enable: Delete the entry, or change disabled to false, then restart DSH.
After disabling, the model page checkbox patch is no longer maintained, but the already checked boxes and saved input declarations remain valid — data flows through DSH’s native mechanisms and does not depend on the plugin’s existence.
Included Vision Relay¶
Besides the checkbox, the plugin also includes a BYO (Bring Your Own Endpoint) vision relay: the host side registers a vision provider and four tools — vision_analyze (recognize image file), vision_status (self-check status), vision_test (endpoint connectivity test), and vision_configure (hot configuration in dialog).
The relay does not hardcode any endpoints or keys; you need to configure the Base URL, Model, and API Key via vision_configure or environment variables DSH_VISION_*.
Frequently Asked Questions and Limitations¶
When the model page is expanded and the “Image Input” checkbox is missing:
- Run
vision_statusand checkmodelsImageInputCheckbox:skipped > 0indicates that DSH’s upgrade changed the model page structure and the anchor does not match (the plugin won’t corrupt files), waiting for a new version of the plugin to adapt; - Perform a hard refresh on the page (Cmd/Ctrl+Shift+R) and confirm again.
A known version boundary: The patch targets the compiled artifact of dsh-client-ui-settings-models 0.1.0-rc.6. After DSH upgrades to a new major version and changes the model page, the checkbox will disappear (the plugin logs a warning and does not corrupt files), requiring a new version of the plugin to be released for adaptation.
Pre-installation Check¶
Like all DSH plugins, this plugin runs with the permissions of the current dsh process. Before installing third-party plugins, it is recommended to read the source code on the GitHub repository and confirm the license (this project is MIT) before deciding whether to install.
Conclusion¶
The value of dsh-vision-plugin lies in restoring a native capability that already exists but was not exposed in the UI: no need to manually edit configuration, just check a box to complete the input: ["text","image"] declaration, and data flows through DSH’s native mechanisms, so disabling or uninstalling the plugin does not affect the saved results.
- GitHub: https://github.com/nexsjournal/dsh-vision-plugin
- Community Directory Page: https://www.skillhub.cn/plugins/nexsjournal/dsh-vision-plugin (The address comes from a clue; it could not be verified against the collected data; please refer to the actual listing on the site)
DSH’s philosophy is “Everything is a plugin”; the Community Directory is an independent site with no official affiliation with DeepSeek or Hyperbolic.