Preface

If you already have a working DeepSeek Harness (DSH) text model route, the next common question is: pure text models cannot directly process images. The common approach is to deploy a vision-language model (VLM) locally, or replace the existing inference model; this introduces GPU, model download, and inference routing changes.

dsh-vision-sidecar offers another path: send images to an OpenAI-compatible vision endpoint, and hand the resulting description back to the configured inference model as plain text.

What This Is

dsh-vision-sidecar is a DSH plugin, maintained by 121103qwq, MIT licensed, currently at package version 0.1.4.

Its primary purpose is: to provide managed visual perception for DSH’s pure text models while preserving the configured inference model. It uses the LLM7.io anonymous default vision route by default, requiring no local VLM, GPU, account, or vision API key.

The vision route must support OpenAI Chat Completions; Responses and Anthropic protocols cannot directly serve as the plugin’s vision endpoint.

Core Features

Here are the verified capabilities:

  • Provides managed visual perception for DeepSeek Harness’s pure text models without replacing the inference model.
  • Uses the LLM7.io anonymous default vision route by default, requiring no local VLM, GPU, account, or vision API key.
  • Submits vision model output as persistent DSH session messages and reuses them as plain text in subsequent turns.
  • Contacts the vision provider only when there are undescribed images.
  • Allows configuring the inference target as targetProvider and targetModel.
  • Maintains typed errors for missing credentials, timeouts, rate limits, and provider failures, without silently forwarding images to the pure text model.
  • Supports adding custom OpenAI-compatible vision providers and models via the DSH Models page.
  • Explicitly marks text detected in images as untrusted data before feeding it to the inference model.
  • The repository provides native ESM JavaScript; Git installation does not require pnpm to run prepare scripts.

Installation and Enablement

First, confirm the environment requirements:

  • DSH 0.1.0-rc.6 or higher, and within the 0.1.x line.
  • Node.js 22.19+ or 24+.

Assume you already have a DSH Web profile that can call text models. Install and start the plugin:

dsh plugin --profile web add github:121103qwq/dsh-vision-sidecar#v0.1.4
dsh --profile web

No vision key export is required in POSIX shells. The plugin will add and select deepseek-vision/deepseek-with-vision.

Typical Usage

Using the Default Anonymous Vision

The installation commands above enable the default LLM7.io vision route.

The documented anonymous limits are:

500,000 tokens/day
60 requests/hour
10 requests/minute
1 request/second

These limits and model availability may change. If you already have an LLM7 token, you can enable authenticated access via environment variables:

- id: vision-sidecar
  config:
    visionBaseURL: https://api.llm7.io/v1
    visionModel: default
    visionApiKeyEnv: LLM7_API_KEY

The package intentionally does not include shared or embedded API keys; optional authentication keys belong to the user and are not stored within this package.

Using OVHcloud as an Alternative Vision Endpoint

If you prefer to use OVHcloud’s vision endpoint, you can change it to:

- id: vision-sidecar
  config:
    visionBaseURL: https://oai.endpoints.kepler.ai.cloud.ovh.net/v1
    visionModel: Qwen2.5-VL-72B-Instruct
    visionApiKeyEnv: OVH_AI_ENDPOINTS_ACCESS_TOKEN

Adding a Custom OpenAI-Compatible Provider

DSH Desktop already includes the Model Settings page; the plugin reuses this entry point instead of introducing a separate set of credential forms.

Open DSH Settings → Models, and select Add custom provider under llm-pi-ai:

  1. Fill in the Provider ID.

  2. Fill in the Base URL.

  3. Select openai-completions and add at least one vision model ID.

  4. Enter your own API key, then apply.

After saving, point to that provider in the vision-sidecar configuration:

- id: vision-sidecar
  config:
    visionProvider: my-vision
    visionModel: default

visionModel: default selects the first model in that route; you can also fill in a specific model ID directly.

Using OpenRouter

If you switch to OpenRouter, you need to add the vision-sidecar line to your profile’s cordis.patch.yml and provide OPENROUTER_API_KEY.

This route still needs to satisfy the OpenAI Chat Completions requirement.

Applicable Scenarios and Cautionary Notes

Suitable for developers who can already call text models with DSH and want to add image understanding to conversations without replacing the inference model.

It is well-suited for use cases such as:

  • Using the default LLM7.io anonymous vision route.
  • Using a custom OpenAI-compatible vision provider.
  • Preserving the existing targetProvider and targetModel inference routes.
  • Letting vision descriptions enter the DSH session instead of just temporary rewriting.

Points to consider before use:

  • The remote vision provider receives full images. Do not send personal, confidential, or regulated images unless the provider’s terms are acceptable.
  • The default LLM7.io limits are documented values; limits and model availability may change.
  • Free options in the documentation were checked on 2026-08-14; verify current limits and privacy terms before use.
  • Marking text detected in images as untrusted data is prompt injection hardening and does not guarantee that model-level prompt injection can be eliminated.
  • The plugin runs with the current dsh process. Review the source code and MIT license before installation.
  • The DSH community directory is an independent site, not an official app store, and has no official affiliation with DeepSeek / 幻方.

Directory and Source Code

  • Directory page: https://www.skillhub.cn/plugins/121103qwq/dsh-vision-sidecar
  • GitHub: https://github.com/121103qwq/dsh-vision-sidecar