Skip to content

Releases: Leeminjing/dsh-eyes

v0.1.0 — on-demand vision for text-only DeepSeek

Choose a tag to compare

@Leeminjing Leeminjing released this 16 Aug 10:42

dsh-eyes v0.1.0

On-demand vision for text-only DeepSeek models — DeepSeek answers, Qwen sees.

What it does

  • Upload without rejection. Pasted/attached images no longer trip the DeepSeek adapter's UNSUPPORTED_CONTENT — the plugin admits inputModalities: [text, image] and strips image blocks right before dispatch.
  • On-demand, anytime. The model calls a view_image tool to look at any image whenever it needs to. Recognition is never forced into the first step, so it behaves as if DeepSeek were natively multimodal.
  • Multi-image. Each image gets an attachment_id, and view_image accepts a batch attachment_ids (string[]) in one call.
  • Session isolation. A session can only resolve its own attachment_ids — no cross-session leaks.
  • Persistent index at .dsh/attachments/v1/dsh-eyes-index.json, so image refs survive restarts and compaction.
  • Any OpenAI-compatible endpoint. DashScope Qwen by default; swap in any vision provider via env vars.

Install

dsh plugin --profile web add github:Leeminjing/dsh-eyes

Configuration (environment variables)

Var Required Default Notes
VISION_API_KEY yes DashScope / OpenAI-compatible API key
VISION_MODEL yes e.g. qwen-vl-max
VISION_ENDPOINT no https://dashscope.aliyuncs.com/compatible-mode/v1 any OpenAI-compatible base URL
targetProvider no deepseek-official provider whose model gets the vision admission bypass
maxImageBytes no 15 MB size cap for local image_path

Notes

  • Recognition runs on the configured vision endpoint; DeepSeek still writes the answer.
  • See the README for provider examples and known limitations.