Preface¶
DeepSeek Harness (DSH) supports expanding capabilities through plugins. For agent developers, a common issue is that DeepSeek itself is a pure text model—directly pasting images into the conversation doesn’t allow the model to treat them as input. If you integrate a vision API separately, you need to apply for a key, bear the cost, or face network environment restrictions.
dsh-vision is a DSH plugin maintained by 54xkeee, designed to add image understanding capabilities to the pure text DeepSeek. By default, it uses the Doubao Web channel, requiring only a one-time browser login without needing an API key. It also supports Antigravity IDE quotas, Gemini API fallback channels, Cockpit reverse proxy, aicode direct connection channels, and any IDE CLI via ideCli configuration. The relevant directory is a community-independent site, not an official app store.
Plugin Positioning¶
- Repository/README name:
dsh-vision - npm package name:
dsh-vision-web - Maintainer: 54xkeee
- License: MIT
- Runtime requirements: Node
>=20, dsh>=0.1.0 - Basic function: Wraps an adapter for the pure text DeepSeek, declares image input, and automatically converts images to text placeholders. Recognition results are backfilled as textual evidence for DeepSeek to continue answering.
Core Capabilities¶
Below are several verified capabilities.
-
Default Doubao Web Channel
Uses Doubao Web by default, requiring only a one-time browser login, zero cost, and no API key. -
Antigravity IDE Quota
Supports using Antigravity IDE quotas, selectingflash/protiers based on the model name. -
Gemini API Fallback Channel
Supports Gemini API as a fallback channel. -
Cockpit Reverse Proxy & aicode Direct Connection
Supports Cockpit reverse proxy channels and aicode direct connection channels. -
Any IDE CLI Integration
Supports Claude Code, Gemini CLI, Qwen Code, MiMo, and other IDE CLIs viaideCliconfiguration. -
Image Input Wrapping
Wraps an adapter for the pure text DeepSeek, declares image input, and automatically converts images to text placeholders. -
Visual Evidence Memory
Persists recognition results to the conversation timeline, supports cross-turn reuse, and recovers after compaction. -
Content Hash Caching
Recognizes the same image with the same question at most once within the process. -
Tier Auto-Upgrade
Performs standard checks first and automatically escalates to in-depth checks for complex images. -
Four Task Modes
Providesglance,ocr,region, andcomparetask modes. -
Structured Evidence Output
Outputs structured JSON evidence objects containing fields likecomplexity,base_evidence, andquery_answer. -
Two Usage Entry Points
Provides panel and conversation flow entry points. -
WSL/Blocked Environment Fallback
Supports winCurl fallback in WSL/blocked environments.
Installation and Enabling¶
First, execute the official installation command:
dsh plugin --profile web add dsh-vision-web
Note: The installation command uses the npm package name dsh-vision-web, while the repository and README use dsh-vision. The names are not entirely consistent.
The plugin runs with the permissions of the current dsh process. Before installation, you should check the source code, dependencies, and license; in this introduction, the license has been verified as MIT.
Typical Usage¶
Default Doubao Web Channel¶
First, install the plugin, then set up the bridge and log in:
- Install the plugin:
dsh plugin --profile web add dsh-vision-web
- Run the bridge on the Windows side:
node bridge.mjs
-
Log in to
doubao.comin the corresponding Chrome browser. -
Restart
dsh web, then paste and send images in the conversation.
After these steps, the default channel is ready to use. This channel sends images to your logged-in Doubao session; it depends on Windows-side Chrome, bridge.mjs queue polling, and requires logging into Doubao.
Antigravity Channel¶
If using Antigravity IDE, you can configure the following:
config:
antigravityWorkspace: /path/to/workspace
antigravityProjectId: your-project-id
antigravityLsExe: /path/to/language_server.exe
antigravityWindowsHome: /mnt/c/Users/you
antigravityBrainDir: /mnt/c/Users/you/.gemini/antigravity/brain
After configuration, the plugin automatically prioritizes using Antigravity quotas and selects the flash / pro tier based on the model name.
Note: This channel requires the Antigravity IDE to be running and logged in, and the language_server.exe path must be provided.
Gemini API Channel¶
Enable the Gemini API channel after configuring genlangKey:
config:
genlangKey: your-api-key
This channel requires users to provide an API key. The key is stored only in the local configuration, and error messages are automatically masked.
Any IDE CLI Channel¶
If you have a local IDE CLI, such as Claude Code, Gemini CLI, Qwen Code, or MiMo, you can integrate via ideCli configuration:
config:
ideCli:
enabled: true
exe: claude
argsTemplate: "-p {prompt}"
imageRefTemplate: "{path}"
timeoutMs: 120000
Where:
execorresponds to the actual CLI executable fileargsTemplateis used to construct CLI argumentsimageRefTemplateis used to specify the image reference formattimeoutMsis used to set the timeout duration
Specific values need to be adjusted based on the capabilities of the CLI being used.
Panel Entry Point¶
Click “Image Recognition” in the conversation header, then operate in sequence:
- Add or paste an image
- Enter a prompt
- Select the mode, tier, and channel
- Click “Recognize”
Conversation Flow Entry Point¶
Select the deepseek-vision route in the model selector, then paste and send an image.
Local Development¶
If you need to build and test locally:
git clone https://github.com/54xkeee/dsh-vision
cd dsh-vision
npm install
npm run build
npm test
Use Cases and Precautions¶
dsh-vision is suitable for the following scenarios:
- Adding image understanding capabilities to pure text DeepSeek in DSH
- Using the Doubao Web channel by default to avoid additional API keys
- Having Antigravity IDE quotas, Gemini API, Cockpit reverse proxy, aicode credentials, or local IDE CLIs
- Needing a winCurl fallback path in WSL/blocked environments
Before use, note the following:
- The plugin runs with the permissions of the current dsh process. Check the source code and license before installation.
- The Doubao Web channel sends images to the user’s logged-in Doubao session.
- The Doubao Web channel depends on Windows-side Chrome,
bridge.mjsqueue polling, and requires logging into Doubao. - The Antigravity channel requires the Antigravity IDE to be running and logged in, and the
language_server.exepath must be provided. - The Gemini API channel requires users to provide an API key; the key is stored only in the local configuration, and error messages are automatically masked.
- OAuth credentials are not built-in; the aicode channel requires users to bring their own credentials stored in local configuration.
- When WSL cannot connect to the API, you can configure
curlPathto use Windows curl as a fallback. - When
allowedImageDirsis non-empty,image_pathis only allowed to read from specified directories. - Caching is an in-process LRU, not a cross-process persistent cache.
Conclusion¶
The value of dsh-vision lies in making image understanding a DSH plugin capability, using Doubao Web by default to lower the entry barrier, while retaining channels like Antigravity, Gemini API, Cockpit, aicode, and IDE CLI, allowing selection based on existing accounts, quotas, or local tools. For developers needing to add image viewing capabilities to pure text DeepSeek, it provides a practical plugin-based solution.
Relevant links:
- GitHub: https://github.com/54xkeee/dsh-vision
- Directory Page Clue: https://www.skillhub.cn/plugins/54xkeee/dsh-vision
The directory page link comes from plugin clues and is not listed in the fetched README/package.json. It is recommended to open and verify it before use.