Skip to content
dsh.fish
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

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source