AI Agent Hub
Back to plugins
dsh-image-unlock preview

dsh-image-unlock

Workflow Updated 2026.08.20

Run the following command in DeepSeek Harness:

dsh plugin install FrostLeafKEE/dsh-image-unlock

Paste the following prompt into your AI chat to install this plugin:

Run dsh plugin install FrostLeafKEE/dsh-image-unlock to install this plugin; the source repository is https://github.com/FrostLeafKEE/dsh-image-unlock

About this plugin

In DeepSeek Harness, models on the opencode-go route that lack an explicit image-input declaration are rejected at both the API layer and the LLM layer the moment a user attaches an image in the Web GUI. Even if that gate were bypassed, the Console Go upstream protocol accepts only plain text, so an image_url part triggers a 400. The entire image pipeline is broken end to end.

dsh-image-unlock repairs the pipeline in two steps. First, a bundle patch adds defaultInput: [text, image] to the opencode-go provider so that models without an explicit input declaration inherit image-input capability and pass the API and LLM gates; models that already declare their own input are left untouched. Second, an idempotent code patch is applied to the locally installed dsh-llm-pi-ai package: on the opencode-go route, stream() serialises durable image blocks (including those nested inside tool-result payloads) into an [Image attachment: ...] text marker carrying the file path. The claude-vision-skill component (vision.js) then sniffs the MIME type by magic bytes (png, jpeg, webp, gif) and calls an external vision API to perform recognition, while the clipboard fallback path remains available.

Textification behaviour is bound directly to the presence of the claude-vision-skill directory: when it sits under .agents/skills, textification is on and images flow through the vision.js recognition pipeline; move the directory out (for example to .dshskin/) and textification switches off automatically, so the model receives real image parts. The plugin watches the skills directory continuously and responds to moves instantly, with no Harness restart required. This lets you flip between text-only models and native vision models on the fly within the same instance.

Ideal for developers running DeepSeek Harness on the opencode-go route who need image input on a text-only upstream, and for teams that mix vision models and pure-text models within a single Harness instance and want one unified workflow to cover both scenarios.

Screenshots

Use Cases

  • Upload and recognize images on text-only opencode-go models via the Web GUI and vision skill
  • Unify image-attachment handling across vision and text-only models in a single Harness instance
  • Bridge the full attachment pipeline—gate, serialization, recognition—for third-party models lacking explicit vision input

Best For

  • Developers running DeepSeek Harness on the opencode-go route
  • Workflow engineers who need image-attachment input on text-only models
  • Technical teams managing mixed deployments of vision and text-only models