Bundle
@blue/dsh-image-model-router
DeepSeek Harness plugin: route an agent request to a vision model (deepseek-v4-flash-vision-exp) when the user message contains an image, and keep the original model otherwise.
- Source
- Blue-2571
- License
- MIT
- Updated
- Updated 6 days ago
Readme
# @blue/dsh-image-model-router
[English](README.md) · [简体中文](README.zh-CN.md)
A [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh) plugin that routes an agent request to a **vision model** only when the user message contains an image, and keeps the **original model** otherwise.
- Text-only turns keep your normal model (e.g. `deepseek-v4-pro`).
- Turns that carry an image (a screenshot, a photo, a diagram) are routed to a multimodal model — by default `deepseek-v4-flash-vision-exp`.
- Per-agent, per-step: the flag is keyed by the agent object in a `WeakMap`, so it can never leak across agents or turns.
## Install
```bash
dsh plugin --profile web add @blue/dsh-image-model-router
```
The row is **disabled by default** so installing never silently changes routing. Enable it from the profile's own `cordis.patch.yml`:
```yaml
- id: dsh-image-model-router
disabled: false
config:
provider: deepseek-official
model: deepseek-v4-flash-vision-exp
```
Then restart the profile (`dsh web`) and hard-refresh the browser.
### Install from a Git checkout (development)
```bash
git clone https://github.com/Blue-2571/dsh-image-model-router.git
cd dsh-image-model-router
dsh plugin --profile web add .
```
## Configuration
| Key | Default | Description |
| :--- | :--- | :--- |
| `provider` | `deepseek-official` | Provider id the vision request is routed to. |
| `model` | `deepseek-v4-flash-vision-exp` | Vision model id. Any image-capable route your provider advertises works here. |
## How it works
```
user message with image
│
▼
agent/pre-step (waterfall) ── detect image block ──► flag agent
│
▼
agent/request (waterfall) ── flagged? ──► swap provider/model, clear flag
│
▼
vision model answers
```
Image detection walks nested `tool-result` content the same way the harness's own image policy does, so an image produced by a tool result is treated as image input too.
## License
MIT
Install
dsh plugin --profile web add github:Blue-2571/dsh-image-model-router
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install blue-dsh-image-model-router from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.