Back to home@Koreyer

easy-vision

A DeepSeek Harness tool plugin that lets text-only agents "see" local images — auto-detects the real format and returns a detailed text description via any OpenAI-compatible vision model.

Stars
1
Language
JavaScript
Created
Aug 14, 2026
Updated
Aug 15, 2026
GitHub repo

Introduction

easy-vision

English · 简体中文

A DeepSeek Harness tool plugin that gives a text-only agent the ability to "see" local images.

It registers a model-facing describe_image tool. When the model needs to look at, describe, analyze, or read an image (screenshot, photo, chart, UI mockup, etc.), it calls this tool with the image's local path. The plugin:

  1. Reads the file and auto-detects its real format from magic bytes (PNG / JPEG / GIF / WebP), tolerating wrong file extensions.
  2. Sends the image (base64 data URI) to a configured OpenAI-compatible vision model via chat completions.
  3. Returns a detailed text description, or optionally writes it to a Markdown file.

This lets a model on a text-only route (e.g. deepseek over a gateway that rejects image input) see pictures as prose.

Screenshots

Ask the agent to look at an image in plain language and the describe_image tool turns it into a usable text description — optionally written straight to a Markdown file for a UI spec, mockup notes, or any document.

Calling the tool to describe an image

The returned text description

Result preview / document output

Install

The package is a dependency-free plain ESM Cordis plugin that only injects tools. Install it into a DSH profile, then mount it in a patch layer.

1. Install the package into a DSH profile

Pick the source that matches your setup:

From npm (recommended after publishing):

dsh plugin --profile web add easy-vision

Or the equivalent direct pnpm command in the profile directory:

cd "$env:DSH_HOME\profiles\web"
pnpm add easy-vision

From a local tarball (before/without publishing):

cd "$env:DSH_HOME\profiles\web"
pnpm add "D:\path\to\easy-vision-0.1.0.tgz"

@deepseek-ai/cordis is declared as a peer dependency — DSH already provides it at runtime, so no extra install is needed.

2. Mount it in a patch layer

Add this to your DSH patch file — for example the home-level $DSH_HOME\cordis.patch.yml (applies to every profile) or a profile's cordis.patch.yml:

- insert:
    - id: easy-vision
      name: easy-vision
      config:
        baseUrl: https://example.com/v1
        model: your-vision-model
        apiKeyEnv: EASY_VISION_API_KEY
        timeoutMs: 120000

Save — DSH hot-reloads cordis.patch.yml edits. A new session will then expose the describe_image tool to the model.

3. Store the vision API key

The tool resolves the key from apiKeyEnv: it checks the environment variable first, then $DSH_HOME\.credentials.yaml. Add a key matching apiKeyEnv there if it is not already an env var:

# C:\Users\Z\.dsh\.credentials.yaml
EASY_VISION_API_KEY: sk-...

If the profile was booted before these steps, restart the profile (or open a new session) so the tool schema is available to the model.

Configuration

KeyDefaultDescription
baseUrlhttps://example.com/v1OpenAI-compatible chat completions base URL.
modelyour-vision-modelVision model id.
apiKeyEnvYOUR_API_KEYEnv var name for the API key; falls back to reading that key from $DSH_HOME/.credentials.yaml.
timeoutMs120000Request timeout.

Model Experience

The describe_image tool description tells the model to use it automatically whenever the user asks it to look at / view / describe / analyze / read an image, and to recognize natural-language intent (e.g. "描述一下 / 看一下 / 分析这张图") — the user does not need to name the tool.

Parameters:

  • path (required) — absolute local path to the image.
  • prompt (optional) — focus what to extract (e.g. extract UI layout/colors, describe people, OCR text).
  • outFile (optional) — absolute path to a .md file to write the description into; the parent directory is created if needed.

Known Limitations

  • Requires an OpenAI-compatible endpoint that accepts base64 image_url data URIs.
  • The API key is resolved from the environment or $DSH_HOME/.credentials.yaml; it is not shelled out to DSH's own provider routing.
  • Vision results are plain text — the description is not an actual image, so fine-grained spatial accuracy is limited to what the vision model reports.

Build & Pack

npm run prepack   # copies src -> lib
npm pack          # produces easy-vision-0.1.0.tgz

License

MIT