DeepSeek Harness plugin

dsh-vision-harryli7

DSH vision plugin: image recognition (Codex + Zhipu fallback) and generation (GPT Image + CogView fallback), text-only-model safe

Jump to install

Source facts

Repository
HarryLi-7/dsh-vision
Latest update
Aug 16, 2026
Category
Models & Providers
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/HarryLi-7/dsh-vision
Plugin: dsh-vision-harryli7
Author: HarryLi-7

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-vision

DSH (DeepSeek Harness) vision plugin: image recognition and generation for text-only models, with a multi-engine failover chain and full UI integration.

Built for personal use — engines ride what you already have (your logged-in Codex / ChatGPT account), with free Zhipu and optional Gemini fallbacks. Every engine parameter is editable in the harness Settings page, and all temporary data is delete-after-use (用完即焚).

Tools

ToolWhat it doesEngine chain
describe_imageRead a local image, return a description. Default mode is structured (JSON evidence: description + OCR lines with pixel boxes + layout regions + entities); the agent integrates it into a natural-language answer. mode: text for plain description onlyCodex → Gemini → Zhipu GLM
generate_imageGenerate an image from a prompt; shown inline in the conversation (produced-file card + lightbox + download + reveal in Finder). quality: auto (Nano Banana 2 Lite, cheapest) / hd (Nano Banana Pro 1K/2K) / 4k (Nano Banana Pro 4K)Codex (GPT Image) → Gemini Nano Banana (paid key) → Zhipu CogView

Image input (paste / drag → path)

The GUI blocks image paste for text-only models. This plugin intercepts paste and drag at the window level, uploads the image to ~/.dsh/generated-images/uploads/ (content-addressed: identical images are stored once), and inserts the file path as text into the composer — the model only ever sees text. A thumbnail rail above the input shows the images (preview, horizontal scroll, per-image delete that also removes the path from the draft). After sending, the images are injected back into the conversation beside your user message.

Storage discipline (用完即焚)

  • Every Codex call runs --ephemeral (no session files in ~/.codex/sessions)

with --sandbox workspace-write.

  • Generated images: gen-<hash>-<内容>-<引擎>.<ext> + a .meta.json

sidecar (engine label for the caption). The old plain-hash path is kept as a symlink so historical images keep working.

  • Uploads: deduplicated by content hash; auto-cleaned after

uploadRetentionDays (default 7, 0 = never); orphan .meta.json sidecars are cleaned automatically.

  • Existing ~/.codex data is never touched.

Settings (Settings page → dsh-vision)

KeyDefaultMeaning
codexPathautoCodex CLI path (blank = auto-detect)
uploadRetentionDays7Upload retention (0 = keep forever)
describeEngines["codex","gemini","zhipu"]Recognition chain order
generateEngines["codex","gemini","zhipu"]Generation chain order
engines.codex.*gpt-5.6-luna / max / priorityCodex model, effort, speed tier, timeout
engines.gemini.*aliases + Nano Banana modelsGemini describe chain + generation models
engines.zhipu.*glm-4.6v-flash / cogview-3-flashZhipu models, size, timeout

Credentials (~/.dsh/.credentials.yaml)

  • DEEPSEEK_API_KEY — DeepSeek (harness)
  • GEMINI_API_KEY — Gemini recognition (free tier; Pro degrades to Flash)
  • GEMINI_IMAGE_API_KEYgeneration only, paid, separate project
  • ZHIPU_API_KEY — Zhipu fallback (free)

Engine registry (adding/removing models)

Engines live in the ENGINES registry in lib/index.js:

const ENGINES = {
  codex: { id, label, describe(bytes, cfg, prompt, signal, runtime), generate(prompt, cfg, signal, runtime) },
  gemini: { ... },
  zhipu: { ... },
  // future: openai: { ... }, ollama: { ... }
};

Add = one registry entry + one settings config object + a default. Remove = delete those. Chain order and per-engine params are editable in Settings.

Install

dsh plugin --profile web add /path/to/dsh-vision

Then restart dsh web. Add keys to ~/.dsh/.credentials.yaml for the fallback engines.

Requirements

  • Node.js with the DSH harness (dsh web)
  • Codex CLI (npm: @openai/codex) logged in with a ChatGPT account
  • Optional: Zhipu / Gemini keys for fallback engines

License

MIT