# dsh-image-gen: the local ComfyUI path is the least capable row in the table

> This plugin adds image generation, editing, a canvas, a batch studio, side-by-side model comparison and a prompt library to the DeepSeek Harness chat host, across eleven provider rows. The interesting part is the support matrix it publishes: the three keyless subscription channels are marked fully capable everywhere, while the local ComfyUI row, the one people reach for to keep work on their own hardware, can generate and do single-image editing and nothing else.

**shanliuling/dsh-image-gen** — AI image studio for DeepSeek Harness — generate, edit & compare images in chat, with 500+ prompts, gallery, multi-model workflows and ComfyUI.

- Repository: https://github.com/shanliuling/dsh-image-gen
- Website: https://github.com/shanliuling/dsh-image-gen#readme
- Stars: 547 · Forks: 35
- Language: TypeScript
- License: Apache-2.0
- Published: 2026-09-15 · Updated: 2026-09-15 · Language: en
- Canonical page: https://hysenlabs.com/projects/shanliuling-dsh-image-gen

## Three readme files, seven badges, and the npm one twice

The header opens with a language switch that offers Chinese and English, and then ships three readme files in the repository: a default one, an English one and a Simplified Chinese one. Two of those three carry Chinese text, and the default file is one of them. The five surfaces the plugin adds are laid out in a small table further down: a chat entry for quick expression, a canvas for visual work, a studio for parameter control, an inspiration area for finding a direction, and a gallery for managing what you keep. The badge row under the title is seven links with no visible text, and the npm package badge appears twice in it, pointing at the same address. The rest are a continuous integration workflow, the project's own issue tracker count, the licence file, and two community sites rather than documentation hosts. The declared homepage in the package manifest points at the readme's own anchor on the repository, which is a self reference rather than a destination, so the only externally useful addresses a reader gets are the ones inside the badge row. It is a small amount of untidiness, and it is the kind of thing you notice immediately because the row is the first thing on the page.

## The install command runs the host tool through your package manager

There is one command in the quick start, and it is worth reading exactly:

```bash
pnpm dsh plugin --profile web add dsh-image-gen@latest
```

The prefix matters. This is not a package manager installing a library; it is the package manager invoking the host's own plugin command, so a reader without that package manager installed has to go and get one first, which the prerequisites list along with the host's stable version and a Node runtime requirement of 22.19 or newer, or 24 and up. Three alternatives are offered behind a disclosure: the bare host command if the host is installed globally, the same command pointed at the repository over its git URL, and the same command pointed at a local clone. All three work without a separate build step, and the package manifest explains why: its prepare script runs the build. The file also carries a note aimed at existing users saying this release changed substantially and asking them to update, which is worth heeding before debugging something that used to work. There is also a fourth route that is not a command at all: the file suggests sending a single sentence to the agent in the host chat asking it to install the image plugin by running that command in the terminal. That sentence is written in Chinese, so for a reader who only has the English readme to hand, the shortest documented install path is not usable as printed.

## The settings path moved between host versions

Configuration is described as a path inside the host's settings, and the file immediately qualifies it: on host version 0.1.5 and earlier the same setting lives one level deeper, under a plugin configuration submenu rather than directly under plugins, and the plugin is compatible with both entry points. That is a small thing to get right and a large thing to get wrong, because a user following a screenshot from the wrong host version looks in the wrong place and concludes the plugin did not install. A recent release title mentions compatibility with host version 0.1.7, so the host is still moving, and the repository has 547 stars, 35 forks and three open issues with no homepage beyond its own readme anchor. Once you are in the right screen the work is ordinary: pick a provider, paste a key, adjust the model, the endpoint or base URL, and the workspace save option, then use either of the two buttons the file describes, one that tests the connection and one that fetches the provider's full list of image models so nobody has to read a vendor's documentation. There is a workspace save option in the same panel, which turns out to matter more than it sounds, because the gallery keeps saved images isolated per workspace rather than in one global pile. For the local path there is one extra requirement: the service address has to be reachable from the host machine rather than from your laptop, and the workflow to import has to be in the API format rather than the UI format.

## The local ComfyUI row has two empty columns

The support table has eleven provider rows and four capability columns, and reading it as a whole is more useful than reading the feature list. Three of the rows are subscription logins that need no API key of your own, and all three carry a full set of ticks across chat generation, editing, the batch studio and model comparison. The local ComfyUI row carries generation, single image editing, and then nothing for the studio or for comparison. That inverts the usual assumption: the option people pick to keep generation on their own hardware is the least capable row in the table. A separate note confirms it, saying ComfyUI is not yet wired into the studio or the multi-model comparison, and a second note says the studio and comparison features support cloud providers only, subscription channels included. The inspiration area is the one surface with a cost story attached, and it is a good one: more than 500 example prompts that can be filtered, favourited, copied or pushed straight into the studio, with the images cached on the machine so browsing and copying consume neither tokens nor quota. The gallery is the other end of that, keeping everything saved from chat and from the studio in one place, isolated per workspace, searchable, and able to send an image back out for further editing or regeneration. The one other gap in the matrix is narrower: one model provider has no image-to-image at all because its upstream does not offer it, and one has editing marked as limited because it goes through an OpenAI-compatible multipart route that some gateways will need further work on. Read as a whole, the matrix is really two products: a chat window that works nearly everywhere, and a studio and comparison surface that works only against cloud providers, whether you pay by key or by subscription.

## The Gemini default endpoint ends in a word, not a model name

A disclosure block lists the default model and default endpoint for each provider, and all of them are described as changeable. OpenAI's is a current image model at its standard base path. The Chinese providers are pinned to dated or versioned model identifiers at their regional endpoints. The compatible row is entirely custom. The one to look at twice is Google, whose default model is a flash image variant and whose default base URL ends in an interactions path rather than a model-scoped one, which tells you the plugin is written against a different request shape from the one a model-scoped client would use. That is not a criticism so much as a maintenance note: the newest release title says the parameters were unified, which is what you would expect to read after a call shape changed underneath a provider integration. Subscription channels add a second route into the same capability set, and the file notes that their editing goes through each channel's own edit interface and accepts up to five reference images, with aspect ratio and clarity chosen in the studio. The Chinese providers are pinned to dated model identifiers, which is the other place a call shape can move under you without anything in the plugin changing. Every one of those rows is marked as changeable, so none of them is a promise about what a provider will do next quarter.

## Eight host modules are declared as injected

The package manifest carries a block describing how the plugin attaches to the host, and it is more specific than most plugin manifests get. The bundle side points at a patch file that ships in the tarball. The client side lists eight host packages to inject, covering the client connection, the API remotes, three separate user interface surfaces for the conversation, the settings and the plugin settings, a right hand sidebar, the tool surface, and the locale bundle. Every one of those is a host internal, so the plugin is coupled to host internals by name, which is the trade you accept for injecting into the settings screen rather than shipping a separate page. A platform field is set to web, and every install command in the file passes the web profile, so those two facts agree. The development scripts are conventional: a type check that emits nothing, a build that compiles then bundles, a prepare that builds on install, a test run, and a dry-run pack check that shows what would be published. Version 0.8.5 in the manifest matches the newest tag, and the release titles are prose rather than labels: the three most recent describe compatibility with a host release and canvas selection work, then an expansion of the prompt library and an image type fix, then parameter unification, display changes and subscription login work. Four days cover all three, which is a fast cadence for something that injects itself into a host's internals.

## The published tarball carries the documentation images

The published file list is short and deliberate: two compiled entry points, the declaration files, the skill markdown, the patch file, all three readmes, a folder of documentation images in a webp format, and the licence. Shipping the readme images inside the package is unusual, and the practical effect is that anyone who installs this plugin also downloads the screenshots used in its documentation, which for an image tool is not nothing. The skill markdown in the same list is the more consequential entry, since that is what tells a host how to describe the plugin to a user rather than what the plugin does when it runs. What the list does not include is the source, the tests, the type checking configuration or the bundler configuration, so the build setup stays out of the tarball even though the build runs on install. For a plugin that patches host internals and injects eight of them, the important line in that file list is the patch file itself, because without it the bundle side of the attachment does not happen.

## Conclusion

Judge it by what the matrix says rather than by the feature headings, because the two do not agree. If you work in the chat window, text to image, multi-image editing and version switching are covered almost everywhere, and the prompt library is the cheapest thing here since its images are cached locally and browsing them costs nothing. If you want batch generation or model comparison, you are in the cloud, including through a subscription login rather than your own key. If you want everything to stay on your own GPU, this is not the plugin yet, and the file says so in a footnote rather than in the table. Before you install, note that the primary install route runs the host command through your package manager, that this release changed enough that the file tells existing users to update, and that three different readme files cover two languages.

## FAQ

### What is shanliuling/dsh-image-gen?

It is an Apache-2.0 licensed TypeScript plugin for DeepSeek Harness that adds image generation, image editing, an infinite canvas, a batch studio, side-by-side model comparison, a library of more than 500 example prompts and a gallery. It requires a Node runtime of 22.19 or newer, or 24 and up, and its current version is 0.8.5.

### How do I install the dsh-image-gen plugin?

Run pnpm dsh plugin --profile web add dsh-image-gen@latest from the host project root, which uses your package manager to invoke the host's own plugin command. The file also offers the bare host command for a global install, a git URL pointing at the repository, and a local clone.

### Which image providers does dsh-image-gen support?

Eleven rows in its support table: Google Gemini, OpenAI images, an OpenAI-compatible relay, ByteDance Seedream, Aliyun DashScope, xAI Grok Imagine, Zhipu GLM-Image, local ComfyUI, and three subscription logins that need no API key of your own, for ChatGPT, Grok and Google.

### Can dsh-image-gen use a local ComfyUI installation?

For chat generation and single-image editing, yes, given a service address the host can reach and an imported workflow in the API format. The file states that ComfyUI is not yet connected to the batch studio or the multi-model comparison, and that both of those support cloud providers only.

### Does dsh-image-gen need an API key?

Not if you already have a ChatGPT, Grok or Google subscription: the file describes a login button on the subscription provider row that authorises in the browser and needs no key. Every other route asks for your own key, with model, endpoint and workspace options alongside it.

### Where does dsh-image-gen store its prompt library images?

Locally. The file states that browsing and copying from the library of more than 500 prompt examples consumes neither tokens nor generation quota, because the images are cached on the machine rather than fetched from a provider on each view.

## Sources

- [License: MIT](https://github.com/shanliuling/dsh-image-gen/blob/main/LICENSE)
- [Project website](https://github.com/shanliuling/dsh-image-gen#readme)
- [README](https://github.com/shanliuling/dsh-image-gen/blob/main/README.md)
- [Releases](https://github.com/shanliuling/dsh-image-gen/releases)
- [shanliuling/dsh-image-gen on GitHub](https://github.com/shanliuling/dsh-image-gen)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/shanliuling-dsh-image-gen
