dsh-image-gen 0.10.3 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +470 -456
- package/README.md +470 -456
- package/lib/client.js +3914 -581
- package/lib/index.js +833 -119
- package/lib/types/capabilities.d.ts +10 -6
- package/lib/types/client/conversation-image-revisions.d.ts +3 -0
- package/lib/types/client/conversation-regenerate.d.ts +9 -1
- package/lib/types/client/gallery-media.d.ts +15 -3
- package/lib/types/client/gallery-store.d.ts +3 -1
- package/lib/types/client/gif-card.d.ts +67 -0
- package/lib/types/client/gif-comments.d.ts +95 -0
- package/lib/types/client/gif-controls.d.ts +22 -0
- package/lib/types/client/gif-edit.d.ts +87 -0
- package/lib/types/client/gif-filmstrip.d.ts +23 -0
- package/lib/types/client/gif-gallery.d.ts +39 -0
- package/lib/types/client/gif-i18n.d.ts +159 -0
- package/lib/types/client/gif-menus.d.ts +36 -0
- package/lib/types/client/gif-player.d.ts +131 -0
- package/lib/types/client/gif-sheet.d.ts +116 -0
- package/lib/types/client/gif-style.d.ts +2 -0
- package/lib/types/client/image-result-node.d.ts +19 -1
- package/lib/types/client/image-result-view.d.ts +2 -0
- package/lib/types/client/plugin-i18n.d.ts +6 -4
- package/lib/types/client/plugin-style.d.ts +1 -1
- package/lib/types/client/provider-pill.d.ts +22 -0
- package/lib/types/client/studio-session.d.ts +54 -0
- package/lib/types/client/studio-view.d.ts +6 -0
- package/lib/types/comfyui-workflow.d.ts +35 -7
- package/lib/types/comfyui.d.ts +9 -2
- package/lib/types/config.d.ts +1 -1
- package/lib/types/gif-info.d.ts +32 -0
- package/lib/types/openai-output.d.ts +20 -1
- package/lib/types/shared.d.ts +41 -4
- package/lib/types/studio-route.d.ts +2 -0
- package/lib/types/studio.d.ts +9 -0
- package/lib/types/subscription/vendors/antigravity.d.ts +17 -0
- package/lib/types/subscription/vendors/codex.d.ts +4 -3
- package/lib/types/vault-registry.d.ts +32 -2
- package/lib/types/vault-route.d.ts +1 -1
- package/lib/types/vault-store.d.ts +3 -1
- package/package.json +139 -139
- package/skills/install-dsh-image-gen/SKILL.md +22 -22
package/README.en.md
CHANGED
|
@@ -1,456 +1,470 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
<img src="docs/assets/readme/hero-en.webp" alt="dsh-image-gen feature overview" width="100%" />
|
|
4
|
-
|
|
5
|
-
<br />
|
|
6
|
-
|
|
7
|
-
<p><a href="README.md">简体中文</a> · <strong>English</strong></p>
|
|
8
|
-
|
|
9
|
-
# 🎨 dsh-image-gen
|
|
10
|
-
|
|
11
|
-
### Draw by talking, right inside DeepSeek Harness
|
|
12
|
-
|
|
13
|
-
<p><b>Batch generation from one message · A canvas the AI can actually read · Agent-picked prompts from 500+ examples · Subscription sign-in, no API key</b></p>
|
|
14
|
-
|
|
15
|
-
<p>
|
|
16
|
-
<a href="https://www.npmjs.com/package/dsh-image-gen"><img src="https://img.shields.io/npm/v/dsh-image-gen?style=flat-square&color=4f6ef7" alt="npm version" /></a>
|
|
17
|
-
<a href="https://www.npmjs.com/package/dsh-image-gen"><img src="https://img.shields.io/npm/dm/dsh-image-gen?style=flat-square&color=10b981" alt="npm downloads" /></a>
|
|
18
|
-
<a href="https://github.com/shanliuling/dsh-image-gen/actions/workflows/ci.yml"><img src="https://github.com/shanliuling/dsh-image-gen/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
19
|
-
<a href="https://dsh-insights.com/p/shanliuling/dsh-image-gen"><img src="https://dsh-insights.com/badge/shanliuling/dsh-image-gen.svg" alt="DSH Insights health" /></a>
|
|
20
|
-
<a href="https://github.com/shanliuling/dsh-image-gen/stargazers"><img src="https://img.shields.io/github/stars/shanliuling/dsh-image-gen?style=flat-square" alt="GitHub stars" /></a>
|
|
21
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-f5c542?style=flat-square" alt="License: Apache-2.0" /></a>
|
|
22
|
-
<a href="https://linux.do/"><img src="https://img.shields.io/badge/LINUX%20DO-Community-555?style=flat-square" alt="LINUX DO" /></a>
|
|
23
|
-
</p>
|
|
24
|
-
|
|
25
|
-
<p>
|
|
26
|
-
<a href="https://atomgit.com/shanliuling/dsh-image-gen"><img src="https://atomgit.com/shanliuling/dsh-image-gen/star/new_badge.svg" alt="AtomGit" height="55" /></a>
|
|
27
|
-
</p>
|
|
28
|
-
|
|
29
|
-
<p>
|
|
30
|
-
<a href="#just-say-it">Just say it</a> ·
|
|
31
|
-
<a href="#quick-start">Quick Start</a> ·
|
|
32
|
-
<a href="#core-capabilities">Core Capabilities</a> ·
|
|
33
|
-
<a href="#provider-support">Provider Support</a> ·
|
|
34
|
-
<a href="#faq">FAQ</a>
|
|
35
|
-
</p>
|
|
36
|
-
|
|
37
|
-
<br />
|
|
38
|
-
|
|
39
|
-
<table>
|
|
40
|
-
<tr>
|
|
41
|
-
<td width="50%" align="center"><b>🔁 One message, a whole set</b><br /><sub>5 scenes in one message, generated one by one</sub></td>
|
|
42
|
-
<td width="50%" align="center"><b>✏️ Sketch it, circle it, done</b><br /><sub>Circle the sword → an axe · stick figure → finished art</sub></td>
|
|
43
|
-
</tr>
|
|
44
|
-
<tr>
|
|
45
|
-
<td><a href="#chat-batch"><img src="docs/assets/readme/hero-batch.webp" alt="One message with 5 scenes; the Agent generates each and collects them in the Gallery" width="100%" /></a></td>
|
|
46
|
-
<td><a href="#ai-canvas"><img src="docs/assets/readme/hero-canvas.webp" alt="Circling a sword on the canvas to turn it into an axe, then turning a stick figure into an anime swordswoman" width="100%" /></a></td>
|
|
47
|
-
</tr>
|
|
48
|
-
</table>
|
|
49
|
-
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<br />
|
|
53
|
-
|
|
54
|
-
`dsh-image-gen` is a native image creation plugin for DeepSeek Harness. Instead of bolting an image button onto the chat, it **teaches the Agent itself to make images**: it can plan and generate a whole set in one go, read your sketches and selections on the canvas, and pull the right style template from the inspiration library on its own. When you want fine-grained control, Studio, multi-model comparison, and the Gallery are one click away.
|
|
55
|
-
|
|
56
|
-
> **Already paying for ChatGPT, Grok, or Google? Just sign in and start generating—no separate API key purchase needed.**
|
|
57
|
-
|
|
58
|
-
Supports: Gemini · OpenAI / Compatible · Seedream · DashScope · Grok Imagine · GLM-Image · Local ComfyUI
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
pnpm dsh plugin --profile web add dsh-image-gen@latest
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
> See [Releases](https://github.com/shanliuling/dsh-image-gen/releases) for what changed in each version.
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Just say it
|
|
69
|
-
|
|
70
|
-
No parameters to learn, no pages to switch. Just say it in a DSH chat:
|
|
71
|
-
|
|
72
|
-
| You say | What the plugin does |
|
|
73
|
-
| :-- | :-- |
|
|
74
|
-
| "Make 4 illustrations for my *Coffee Shop Grand Opening* post, consistent flat style, 16:9" | 🔁 **Batch generation in chat**: the Agent splits the request into 4 prompts and generates them one by one, all delivered in a single reply |
|
|
75
|
-
| "Draw a coffee shop menu in hand-drawn style #123" | ✨ **Inspiration on autopilot**: the Agent searches the 500+ example library for that style, then applies the template |
|
|
76
|
-
| "Turn the sketch I drew on the canvas into a finished illustration" | ✏️ **Reads the canvas**: the Agent looks at your canvas selection and turns the draft into an image |
|
|
77
|
-
| "Turn the sword I circled into an axe, keep everything else" | 🎯 **Edit what you circle**: only the marked area changes |
|
|
78
|
-
| "Keep this character exactly the same, but put them in a snowy scene" | 🎭 **Identity consistency**: edits keep the same person or object instead of a lookalike |
|
|
79
|
-
| "Same prompt, one from GPT and one from Gemini, side by side" | ⚖️ **Multi-model comparison**: runs several models concurrently and lays the results out on one canvas |
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
>
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
<
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
<
|
|
132
|
-
<
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
<
|
|
160
|
-
<
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
<
|
|
185
|
-
<
|
|
186
|
-
</
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
- **
|
|
200
|
-
- **
|
|
201
|
-
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
<
|
|
206
|
-
<
|
|
207
|
-
<
|
|
208
|
-
<
|
|
209
|
-
<
|
|
210
|
-
<
|
|
211
|
-
</
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
<img src="docs/assets/readme/
|
|
226
|
-
<
|
|
227
|
-
<
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
-
|
|
238
|
-
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
<br />
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
<
|
|
278
|
-
|
|
279
|
-
<
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
<br />
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
>
|
|
310
|
-
|
|
311
|
-
<br />
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
<
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
</details>
|
|
389
|
-
|
|
390
|
-
<details>
|
|
391
|
-
<summary><strong>How
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
</details>
|
|
412
|
-
|
|
413
|
-
<details>
|
|
414
|
-
<summary><strong>
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<img src="docs/assets/readme/hero-en.webp" alt="dsh-image-gen feature overview" width="100%" />
|
|
4
|
+
|
|
5
|
+
<br />
|
|
6
|
+
|
|
7
|
+
<p><a href="README.md">简体中文</a> · <strong>English</strong></p>
|
|
8
|
+
|
|
9
|
+
# 🎨 dsh-image-gen
|
|
10
|
+
|
|
11
|
+
### Draw by talking, right inside DeepSeek Harness
|
|
12
|
+
|
|
13
|
+
<p><b>Batch generation from one message · Animated GIFs · A canvas the AI can actually read · Agent-picked prompts from 500+ examples · Subscription sign-in, no API key</b></p>
|
|
14
|
+
|
|
15
|
+
<p>
|
|
16
|
+
<a href="https://www.npmjs.com/package/dsh-image-gen"><img src="https://img.shields.io/npm/v/dsh-image-gen?style=flat-square&color=4f6ef7" alt="npm version" /></a>
|
|
17
|
+
<a href="https://www.npmjs.com/package/dsh-image-gen"><img src="https://img.shields.io/npm/dm/dsh-image-gen?style=flat-square&color=10b981" alt="npm downloads" /></a>
|
|
18
|
+
<a href="https://github.com/shanliuling/dsh-image-gen/actions/workflows/ci.yml"><img src="https://github.com/shanliuling/dsh-image-gen/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
19
|
+
<a href="https://dsh-insights.com/p/shanliuling/dsh-image-gen"><img src="https://dsh-insights.com/badge/shanliuling/dsh-image-gen.svg" alt="DSH Insights health" /></a>
|
|
20
|
+
<a href="https://github.com/shanliuling/dsh-image-gen/stargazers"><img src="https://img.shields.io/github/stars/shanliuling/dsh-image-gen?style=flat-square" alt="GitHub stars" /></a>
|
|
21
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-f5c542?style=flat-square" alt="License: Apache-2.0" /></a>
|
|
22
|
+
<a href="https://linux.do/"><img src="https://img.shields.io/badge/LINUX%20DO-Community-555?style=flat-square" alt="LINUX DO" /></a>
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
<p>
|
|
26
|
+
<a href="https://atomgit.com/shanliuling/dsh-image-gen"><img src="https://atomgit.com/shanliuling/dsh-image-gen/star/new_badge.svg" alt="AtomGit" height="55" /></a>
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
<p>
|
|
30
|
+
<a href="#just-say-it">Just say it</a> ·
|
|
31
|
+
<a href="#quick-start">Quick Start</a> ·
|
|
32
|
+
<a href="#core-capabilities">Core Capabilities</a> ·
|
|
33
|
+
<a href="#provider-support">Provider Support</a> ·
|
|
34
|
+
<a href="#faq">FAQ</a>
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<br />
|
|
38
|
+
|
|
39
|
+
<table>
|
|
40
|
+
<tr>
|
|
41
|
+
<td width="50%" align="center"><b>🔁 One message, a whole set</b><br /><sub>5 scenes in one message, generated one by one</sub></td>
|
|
42
|
+
<td width="50%" align="center"><b>✏️ Sketch it, circle it, done</b><br /><sub>Circle the sword → an axe · stick figure → finished art</sub></td>
|
|
43
|
+
</tr>
|
|
44
|
+
<tr>
|
|
45
|
+
<td><a href="#chat-batch"><img src="docs/assets/readme/hero-batch.webp" alt="One message with 5 scenes; the Agent generates each and collects them in the Gallery" width="100%" /></a></td>
|
|
46
|
+
<td><a href="#ai-canvas"><img src="docs/assets/readme/hero-canvas.webp" alt="Circling a sword on the canvas to turn it into an axe, then turning a stick figure into an anime swordswoman" width="100%" /></a></td>
|
|
47
|
+
</tr>
|
|
48
|
+
</table>
|
|
49
|
+
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<br />
|
|
53
|
+
|
|
54
|
+
`dsh-image-gen` is a native image creation plugin for DeepSeek Harness. Instead of bolting an image button onto the chat, it **teaches the Agent itself to make images**: it can plan and generate a whole set in one go, read your sketches and selections on the canvas, and pull the right style template from the inspiration library on its own. When you want fine-grained control, Studio, multi-model comparison, and the Gallery are one click away.
|
|
55
|
+
|
|
56
|
+
> **Already paying for ChatGPT, Grok, or Google? Just sign in and start generating—no separate API key purchase needed.**
|
|
57
|
+
|
|
58
|
+
Supports: Gemini · OpenAI / Compatible · Seedream · DashScope · Grok Imagine · GLM-Image · Local ComfyUI
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pnpm dsh plugin --profile web add dsh-image-gen@latest
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
> See [Releases](https://github.com/shanliuling/dsh-image-gen/releases) for what changed in each version.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Just say it
|
|
69
|
+
|
|
70
|
+
No parameters to learn, no pages to switch. Just say it in a DSH chat:
|
|
71
|
+
|
|
72
|
+
| You say | What the plugin does |
|
|
73
|
+
| :-- | :-- |
|
|
74
|
+
| "Make 4 illustrations for my *Coffee Shop Grand Opening* post, consistent flat style, 16:9" | 🔁 **Batch generation in chat**: the Agent splits the request into 4 prompts and generates them one by one, all delivered in a single reply |
|
|
75
|
+
| "Draw a coffee shop menu in hand-drawn style #123" | ✨ **Inspiration on autopilot**: the Agent searches the 500+ example library for that style, then applies the template |
|
|
76
|
+
| "Turn the sketch I drew on the canvas into a finished illustration" | ✏️ **Reads the canvas**: the Agent looks at your canvas selection and turns the draft into an image |
|
|
77
|
+
| "Turn the sword I circled into an axe, keep everything else" | 🎯 **Edit what you circle**: only the marked area changes |
|
|
78
|
+
| "Keep this character exactly the same, but put them in a snowy scene" | 🎭 **Identity consistency**: edits keep the same person or object instead of a lookalike |
|
|
79
|
+
| "Same prompt, one from GPT and one from Gemini, side by side" | ⚖️ **Multi-model comparison**: runs several models concurrently and lays the results out on one canvas |
|
|
80
|
+
| "Turn this character into a looping GIF of them waving" | 🎞️ **Animated GIFs**: generates a looping animation that plays in the card, with speed control and per-frame edit notes |
|
|
81
|
+
|
|
82
|
+
<img src="docs/assets/readme/workflow-overview-en.webp" alt="dsh-image-gen complete AI image creation workflow" width="100%" />
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Quick Start
|
|
87
|
+
|
|
88
|
+
### 1. Install the plugin
|
|
89
|
+
|
|
90
|
+
Requirements: DeepSeek Harness stable version, Node.js `^22.19.0` or `>= 24.0.0`.
|
|
91
|
+
|
|
92
|
+
Run this command from your DeepSeek Harness project root:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
pnpm dsh plugin --profile web add dsh-image-gen@latest
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
> 💬 **Power-user tip:** You can also send this directly to the Agent in a DSH chat:<br />
|
|
99
|
+
> `Install the image generation plugin by running this command in the terminal: pnpm dsh plugin --profile web add dsh-image-gen@latest`
|
|
100
|
+
|
|
101
|
+
<details>
|
|
102
|
+
<summary><strong>Alternative installation methods (global / GitHub / local development)</strong></summary>
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# If dsh is installed globally:
|
|
106
|
+
dsh plugin --profile web add dsh-image-gen@latest
|
|
107
|
+
|
|
108
|
+
# Install the latest source directly from GitHub:
|
|
109
|
+
pnpm dsh plugin --profile web add git+https://github.com/shanliuling/dsh-image-gen.git
|
|
110
|
+
|
|
111
|
+
# Clone the repository and install it for local development:
|
|
112
|
+
git clone https://github.com/shanliuling/dsh-image-gen.git
|
|
113
|
+
pnpm dsh plugin --profile web add ./dsh-image-gen
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
</details>
|
|
117
|
+
|
|
118
|
+
### 2. Configure a Provider
|
|
119
|
+
|
|
120
|
+
After restarting DSH, click the **Plugins** icon in the left sidebar, then click **dsh-image-gen** under **Installed** — the Image Generation settings form lives on the plugin's detail page:
|
|
121
|
+
|
|
122
|
+
**Plugins panel → Installed → dsh-image-gen**
|
|
123
|
+
|
|
124
|
+
> DSH 0.1.5 and earlier have no Plugins panel; the entry there is **Settings → Plugins → Plugin Configuration → Image Generation**. The same plugin build supports both.
|
|
125
|
+
|
|
126
|
+
Choose a Provider, enter your API key, and adjust the model, Endpoint / Base URL, and workspace-save options as needed. Once the key is stored, click **Test connection** to verify it, or **Fetch models** to pull every image-capable model the provider offers—no manual lookups needed. For ComfyUI, enter an address reachable by the DSH Host and import an **API Format Workflow JSON** file. With several workflows imported, switch between them from the image button next to the chat input.
|
|
127
|
+
|
|
128
|
+
Already paying for ChatGPT, Grok, or Google? No API key needed: expand the matching subscription Provider row, click **Sign in** and complete the authorization in your browser, then start generating (and editing) right away.
|
|
129
|
+
|
|
130
|
+
<div align="center">
|
|
131
|
+
<img src="docs/assets/readme/config.webp" alt="Choosing the default Provider on the plugin detail page, checking channel status, and switching channels from the chat input" width="100%" />
|
|
132
|
+
<br />
|
|
133
|
+
<sub>Pick a default Provider → check each channel's key / sign-in status → switch channels right from the chat input.</sub>
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
### 3. Start creating
|
|
137
|
+
|
|
138
|
+
Describe the image you want directly in chat:
|
|
139
|
+
|
|
140
|
+
```text
|
|
141
|
+
Create a cinematic cyberpunk cat on a neon street at night, 16:9.
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Want a whole set? Just say how many and what should stay consistent:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
Make 5 images for my "Weekend Camping Checklist" post: tent, stove, sleeping bag, lights, snacks. Consistent Japanese hand-drawn style, 3:4.
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
You can also upload a reference image directly for style transfer or editing:
|
|
151
|
+
|
|
152
|
+
```text
|
|
153
|
+
Keep the character and composition unchanged, then add black sunglasses to the cat.
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
<br />
|
|
157
|
+
|
|
158
|
+
<div align="center">
|
|
159
|
+
<img src="docs/assets/readme/chat-example.webp" alt="Chat generation and editing example" width="60%" />
|
|
160
|
+
<br />
|
|
161
|
+
<sub>In-chat generation, editing, and continuous refinement.</sub>
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
<br />
|
|
165
|
+
|
|
166
|
+
For more precise parameter control, open **Gallery** from the conversation header, then switch between **Gallery / Studio / Inspiration / Favorites**.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Core Capabilities
|
|
171
|
+
|
|
172
|
+
<a id="chat-batch"></a>
|
|
173
|
+
|
|
174
|
+
### 🔁 Batch generation in chat: one message, a whole set
|
|
175
|
+
|
|
176
|
+
Post illustrations, storyboards, series art, or several variations on a theme—without asking for them one at a time.
|
|
177
|
+
|
|
178
|
+
- Describe how many images you want and what they share. The Agent plans the set of prompts itself, **up to 10 images per call**, attached in order to a single reply.
|
|
179
|
+
- Aspect ratio, resolution, model, and Provider can be set once for the whole set to keep it consistent.
|
|
180
|
+
- Images generate one after another, and **one failure never stops the rest**: the reply reports "X of Y generated" and lists what failed and why.
|
|
181
|
+
- Works with local ComfyUI and subscription channels too.
|
|
182
|
+
|
|
183
|
+
<div align="center">
|
|
184
|
+
<img src="docs/assets/readme/chat-batch.webp" alt="One message asks the Agent for 5 anime illustrations; a failed one is retried and the set lands in the Gallery" width="100%" />
|
|
185
|
+
<br />
|
|
186
|
+
<sub>One message with 5 scenes → the Agent plans two batches → images arrive one by one, the failed one is retried on its own → the whole set lands in the Gallery. (Waiting sped up.)</sub>
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
> **How is this different from Studio batches?** Chat batches are a **set of different images** the Agent plans for you (say, 4 illustrations of different scenes). Studio batches are **several candidates for the same prompt**, and you keep the ones you like.
|
|
190
|
+
|
|
191
|
+
<br />
|
|
192
|
+
|
|
193
|
+
<a id="ai-canvas"></a>
|
|
194
|
+
|
|
195
|
+
### ✏️ A canvas the AI can actually read
|
|
196
|
+
|
|
197
|
+
Sketch on an infinite canvas, lay out references, circle what should change, then just tell the AI what you want. **The Agent sees what is on the canvas and what you have selected**, so there is no need to screenshot, upload, or describe positions.
|
|
198
|
+
|
|
199
|
+
- **Sketch → image**: draw a rough outline, select it, and say "make this a cartoon character".
|
|
200
|
+
- **Edit what you circle**: mark an area on an existing image and say "turn this into an axe"; only the circled part changes.
|
|
201
|
+
- **Combine references**: drag images from Recent generations or the Gallery onto the canvas, or click Send to canvas on a thumbnail, then select several together as references. Repeated imports of the same history item are deduplicated.
|
|
202
|
+
- Every result stays on the canvas, so you can keep iterating from any version.
|
|
203
|
+
|
|
204
|
+
<div align="center">
|
|
205
|
+
<img src="docs/assets/readme/canvas-edit.webp" alt="Circle the sword on the canvas, say one sentence, and the Agent swaps only the sword for an axe" width="100%" />
|
|
206
|
+
<br />
|
|
207
|
+
<sub><b>Edit what you circle</b>: circle the swordswoman's blade, ask for an axe, and the Agent confirms what you marked, then changes only that.</sub>
|
|
208
|
+
<br /><br />
|
|
209
|
+
<img src="docs/assets/readme/canvas-sketch.webp" alt="Draw a stick-figure sketch on the canvas and the Agent turns it into an anime swordswoman with the same pose" width="100%" />
|
|
210
|
+
<br />
|
|
211
|
+
<sub><b>Sketch → image</b>: doodle a stick figure holding a sword, select it, ask for "the previous style", and the pose and framing follow your sketch. (Waiting sped up.)</sub>
|
|
212
|
+
</div>
|
|
213
|
+
|
|
214
|
+
<br />
|
|
215
|
+
|
|
216
|
+
### 💬 In-chat generation, editing, and revision switching
|
|
217
|
+
|
|
218
|
+
- Use natural language for text-to-image, image-to-image, multi-image reference, and style transfer.
|
|
219
|
+
- **Identity consistency**: when you ask to keep a person, character, or object the same, the plugin tells the model to reuse the subject from the references and change only the scene, clothing, pose, or style, rather than drawing a similar-looking replacement.
|
|
220
|
+
- Edit the original prompt to regenerate, then switch between revisions on the same image card.
|
|
221
|
+
|
|
222
|
+
<br />
|
|
223
|
+
|
|
224
|
+
<div align="center">
|
|
225
|
+
<img src="docs/assets/readme/regenerating.webp" alt="Image regeneration in progress" width="46%" />
|
|
226
|
+
<img src="docs/assets/readme/revision-switcher.webp" alt="Switching between generated revisions on the same image card" width="46%" />
|
|
227
|
+
<br />
|
|
228
|
+
<sub>Regenerate in place after editing the prompt, then switch between previous results on the same image card.</sub>
|
|
229
|
+
</div>
|
|
230
|
+
|
|
231
|
+
<br />
|
|
232
|
+
|
|
233
|
+
### 🎞️ Animated GIFs: generate, play, edit by frame
|
|
234
|
+
|
|
235
|
+
With a GIF-capable model such as GPT Image 2.6, just ask for a "GIF" or "animation" in chat to get a looping animation, including animating the character from a reference image. Frame count and timing can be set with `frame_count` (2–16) and `frame_duration_ms` (20–2000 ms).
|
|
236
|
+
|
|
237
|
+
- When a result is a GIF, the chat card plays it: set the speed (0.2×–2×) from its corner, and the toolbar's download menu saves the GIF at the current or the original speed, or the frame on screen as PNG. The enlarged view adds a play button and a frame timeline (hover to preview a frame, click to stop on it) next to the speed. In the Gallery, GIF tiles carry a badge and play on hover, and the enlarged view plays and downloads them the same way. The GIF file can be dragged straight out, and regenerating keeps it a GIF (the clipboard only takes still images, so copying gives a single frame).
|
|
238
|
+
- A GIF card's **Edit** chip (or **Edit frames** in the enlarged view) takes notes on frames: click a spot on the picture to leave a note, which shows only on its own frame, or switch to **All frames** to see them together; send once to redraw the whole animation from your notes, kept as a new version that plays (OpenAI and compatible channels only, and the relay must support image editing; otherwise one click turns the notes into a plain regeneration).
|
|
239
|
+
- Supported channels: official OpenAI and OpenAI-compatible relays (the model and relay must support GIF). The Codex images endpoint behind the ChatGPT subscription does not offer GIF output upstream yet.
|
|
240
|
+
|
|
241
|
+
<br />
|
|
242
|
+
|
|
243
|
+
### ✨ 500+ prompt inspirations, and the Agent finds them for you
|
|
244
|
+
|
|
245
|
+
Ships with a hand-drawn style cookbook (styles / layouts / theme colors) and the awesome-gpt-image-2 example set: 500+ ready-to-reuse prompts.
|
|
246
|
+
|
|
247
|
+
- **Name it in chat**: say "use style #123", "make it an infographic layout", or "Morandi palette", and the Agent searches the library first, then applies the template to your topic. Styles, layouts, and theme colors can be combined.
|
|
248
|
+
- **Browse in the UI**: filter, favorite, copy, or send a prompt straight to Studio (see the Studio demo below).
|
|
249
|
+
- Images are cached locally, so browsing and learning consume no tokens or generation quota.
|
|
250
|
+
|
|
251
|
+
<br />
|
|
252
|
+
|
|
253
|
+
<div align="center">
|
|
254
|
+
<img src="docs/assets/readme/inspiration-library.webp" alt="Prompt inspiration library" width="100%" />
|
|
255
|
+
<br />
|
|
256
|
+
<sub>Find inspiration first, then send a prompt to Studio. Browsing and copying from the local cache consume no generation quota.</sub>
|
|
257
|
+
</div>
|
|
258
|
+
|
|
259
|
+
<br />
|
|
260
|
+
|
|
261
|
+
### 🎛️ Studio: hands-on control, no chat needed
|
|
262
|
+
|
|
263
|
+
When you want precise control, open **Gallery → Studio** from the conversation header and every parameter is right there.
|
|
264
|
+
|
|
265
|
+
- **Start from inspiration**: click "Send to Studio" in the inspiration library and the prompt is filled in.
|
|
266
|
+
- **Every parameter in view**: pick the Provider, model, aspect ratio, quality, and watermark separately; generate 1–4 candidates and save only the ones you like.
|
|
267
|
+
- **Keep editing past results**: drag an image in from Recent generations and click "Continue editing" to make it the image-to-image reference (up to 5).
|
|
268
|
+
- Switch between single model and multi-model comparison in one click.
|
|
269
|
+
|
|
270
|
+
<br />
|
|
271
|
+
|
|
272
|
+
<div align="center">
|
|
273
|
+
<img src="docs/assets/readme/studio.webp" alt="Picking a prompt from the inspiration library, sending it to Studio, and generating a poster" width="100%" />
|
|
274
|
+
<br />
|
|
275
|
+
<sub>Pick a prompt from the library → send it to Studio → set parameters and generate → decide what to keep. (Waiting sped up.)</sub>
|
|
276
|
+
<br /><br />
|
|
277
|
+
<img src="docs/assets/readme/studio-ref.webp" alt="Dragging an image in from Recent generations and clicking Continue editing to use it as a reference" width="100%" />
|
|
278
|
+
<br />
|
|
279
|
+
<sub>Drag an image in from Recent generations → "Continue editing" → Studio switches to image-to-image with it as the reference.</sub>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
<br />
|
|
283
|
+
|
|
284
|
+
### ⚖️ Side-by-side multi-model comparison
|
|
285
|
+
|
|
286
|
+
Run the same prompt and reference images across multiple models concurrently, then compare and save the results on one canvas.
|
|
287
|
+
|
|
288
|
+
<br />
|
|
289
|
+
|
|
290
|
+
<div align="center">
|
|
291
|
+
<img src="docs/assets/readme/multi-model-compare.webp" alt="Comparing the same prompt across multiple image models" width="100%" />
|
|
292
|
+
<br />
|
|
293
|
+
<sub>Compare results from different models on one canvas, then save the images you prefer in a batch.</sub>
|
|
294
|
+
</div>
|
|
295
|
+
|
|
296
|
+
<br />
|
|
297
|
+
|
|
298
|
+
### 🖼️ Gallery, favorites, and batch management
|
|
299
|
+
|
|
300
|
+
- Manage images saved from chat and Studio in one place, isolated by workspace.
|
|
301
|
+
- Search, filter, favorite, download, continue editing, regenerate, and batch-manage results.
|
|
302
|
+
|
|
303
|
+
<br />
|
|
304
|
+
|
|
305
|
+
<div align="center">
|
|
306
|
+
<img src="docs/assets/readme/gallery-management.webp" alt="Gallery filtering, favorites, and batch management" width="100%" />
|
|
307
|
+
<br />
|
|
308
|
+
<sub>Filter, favorite, and batch-manage gallery items while keeping data isolated by workspace.</sub>
|
|
309
|
+
</div>
|
|
310
|
+
|
|
311
|
+
<br />
|
|
312
|
+
|
|
313
|
+
### 🧩 Multiple local ComfyUI workflows
|
|
314
|
+
|
|
315
|
+
Bring private image generation on your local GPU directly into Agent conversations.
|
|
316
|
+
|
|
317
|
+
- Import and manage multiple named workflows with prompt presets and common placeholders.
|
|
318
|
+
- Let the Agent select a workflow by name for text-to-image, image-to-image, or batch generation in chat.
|
|
319
|
+
- Placeholders: `{{prompt}}`, `{{seed}}`; with `{{width}}`/`{{height}}` the size or aspect ratio the Agent asks for takes effect (1024×1024 by default); for editing put `{{image}}` in a LoadImage input, one per reference image, filled in node order.
|
|
320
|
+
|
|
321
|
+
> ComfyUI is not yet integrated into Studio or multi-model comparison.
|
|
322
|
+
|
|
323
|
+
<br />
|
|
324
|
+
|
|
325
|
+
<div align="center">
|
|
326
|
+
<img src="docs/assets/readme/comfyui-workflows.webp" alt="Multiple named ComfyUI workflow settings" width="58%" />
|
|
327
|
+
<br />
|
|
328
|
+
<sub>Maintain independent workflows for different tasks and let the Agent select them precisely by name.</sub>
|
|
329
|
+
</div>
|
|
330
|
+
|
|
331
|
+
<br />
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## Provider Support
|
|
336
|
+
|
|
337
|
+
| Provider | Chat generation | Chat batch | Chat editing | Studio | Multi-model comparison | GIF |
|
|
338
|
+
| :--- | :---: | :---: | :---: | :---: | :---: | :---: |
|
|
339
|
+
| **Google Gemini** | ✅ | ✅ | ✅ Multiple | ✅ | ✅ | — |
|
|
340
|
+
| **OpenAI Images** | ✅ | ✅ | ✅ Multiple | ✅ | ✅ | ✅ |
|
|
341
|
+
| **OpenAI Compatible (relay)** | ✅ | ✅ | ✅ Multiple | ✅ | ✅ | ✅ |
|
|
342
|
+
| **ByteDance Seedream / Volcengine Ark** | ✅ | ✅ | ✅ Multiple | ✅ | ✅ | — |
|
|
343
|
+
| **Aliyun DashScope / Qwen Image** | ✅ | ✅ | ✅ Multiple | ✅ | ✅ | — |
|
|
344
|
+
| **xAI Grok Imagine** | ✅ | ✅ | ⚠️ Limited | ✅ | ✅ | — |
|
|
345
|
+
| **Zhipu GLM-Image** | ✅ | ✅ | — | ✅ | ✅ | — |
|
|
346
|
+
| **Local ComfyUI** | ✅ | ✅ | ✅ Multiple | — | — | — |
|
|
347
|
+
| **ChatGPT subscription (key-free)** | ✅ | ✅ | ✅ Multiple | ✅ | ✅ | — |
|
|
348
|
+
| **Grok subscription (key-free)** | ✅ | ✅ | ✅ Multiple | ✅ | ✅ | — |
|
|
349
|
+
| **Google subscription (key-free)** | ✅ | ✅ | ✅ Multiple | ✅ | ✅ | — |
|
|
350
|
+
|
|
351
|
+
> Studio and multi-model comparison currently support cloud Providers only (subscription channels included). Multi-model comparison uses the model configured for each Provider in Settings.
|
|
352
|
+
> Zhipu GLM-Image does not support image-to-image upstream. xAI image editing goes through the OpenAI-compatible protocol (multipart); some gateways may need further adaptation.
|
|
353
|
+
> Subscription channels work through account sign-in (no API key). Edits ride each channel's edit endpoint (up to 5 reference images), with aspect ratio and quality selectable directly in Studio.
|
|
354
|
+
> Chat generation and editing on OpenAI and compatible channels can produce an animated GIF directly, for example animating the character in a reference image (the model and relay must support it; editing also needs the relay to support image edits); frame count and timing options are in the [Provider configuration reference](docs/providers.en.md). The endpoint the ChatGPT subscription uses does not offer GIF output yet.
|
|
355
|
+
|
|
356
|
+
📖 **For default models and endpoints, per-Provider aspect ratios and quality tiers, size tables, watermarks, relay edit formats, and other advanced settings, see the [Provider configuration reference](docs/providers.en.md).**
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## Data and Privacy
|
|
361
|
+
|
|
362
|
+
- **BYOK:** API keys are stored through the DSH Credentials service and are never displayed in plaintext on the settings page.
|
|
363
|
+
- **Subscription sign-in:** Subscription tokens are saved in DSH Credentials after your authorized sign-in, fully isolated from API keys; the browser side never touches a token.
|
|
364
|
+
- **Cloud requests:** The prompt and reference images used for a request are sent to the selected Provider. Follow that Provider's terms of service.
|
|
365
|
+
- **Provider image downloads:** Downloads use the host's existing network and proxy configuration without additional Fake-IP, private-address or loopback blocking. Complete SSRF target restrictions are not currently provided.
|
|
366
|
+
- **Local ComfyUI:** Requests are sent to the configured ComfyUI address.
|
|
367
|
+
- **Workspace files:** When workspace saving is enabled, chat results are written to disk; Studio saves only the candidates you select.
|
|
368
|
+
- **GIF originals:** The original file of an animated result is also kept in the raw-image vault (`vaultEnabled` turns it off) so the card can play and export it; it is removed together with the gallery entry.
|
|
369
|
+
- **Gallery and favorites:** Gallery metadata and favorite state are stored in the current browser's local storage.
|
|
370
|
+
- **Deleted records:** Normal deletion retains a small image ID marker, including after 30 days, so reopening an old conversation does not silently restore the image to the gallery.
|
|
371
|
+
- **Inspiration cache:** Example metadata ships with the plugin. Images load on demand and are cached locally, and the cache can be cleared at any time.
|
|
372
|
+
|
|
373
|
+
## FAQ
|
|
374
|
+
|
|
375
|
+
<details>
|
|
376
|
+
<summary><strong>What should I do if “Image Generation” is missing after installation?</strong></summary>
|
|
377
|
+
|
|
378
|
+
The settings entry depends on the DSH version: 0.1.6 and newer place it on the plugin's detail page (click **Plugins** in the left sidebar, then dsh-image-gen under **Installed**), while 0.1.5 and earlier place it at **Settings → Plugins → Plugin Configuration → Image Generation**.
|
|
379
|
+
|
|
380
|
+
If it is missing in both places, fully restart the current DSH Profile, then inspect the plugin configuration:
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
dsh --profile web --dump-config
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
If `dsh-image-gen` is absent from the output, run the installation command again. When filing an issue, include the DSH version, plugin version, and relevant error logs, but never include your API key.
|
|
387
|
+
|
|
388
|
+
</details>
|
|
389
|
+
|
|
390
|
+
<details>
|
|
391
|
+
<summary><strong>How many images can one batch generate?</strong></summary>
|
|
392
|
+
|
|
393
|
+
Up to 10 per batch call; beyond that, the plugin tells the Agent to split the request into several calls. Images generate one at a time, a single failure does not stop the others, and any failures are listed with their reasons.
|
|
394
|
+
|
|
395
|
+
</details>
|
|
396
|
+
|
|
397
|
+
<details>
|
|
398
|
+
<summary><strong>Where are generated images saved?</strong></summary>
|
|
399
|
+
|
|
400
|
+
When “Save to workspace” is enabled, chat results are saved to the `dsh-image-gen/` subdirectory of the current workspace by default. You can change this directory in Settings. Studio candidates remain on the temporary canvas until you select which results should enter the gallery and be saved.
|
|
401
|
+
|
|
402
|
+
</details>
|
|
403
|
+
|
|
404
|
+
<details>
|
|
405
|
+
<summary><strong>How do I use a Gemini relay that only supports generateContent?</strong></summary>
|
|
406
|
+
|
|
407
|
+
In Google Gemini settings, select “Native generateContent” under “Request protocol”, enter the relay's API base URL (for example, `https://your-relay.example/v1beta`), and save. This applies to conversation generation, editing, and Studio. An existing full Interactions URL can also be kept; the plugin builds the native endpoint using the selected model.
|
|
408
|
+
|
|
409
|
+
The configuration field is `googleNative: true`. It defaults to `false`, keeping existing users on the Interactions protocol.
|
|
410
|
+
|
|
411
|
+
</details>
|
|
412
|
+
|
|
413
|
+
<details>
|
|
414
|
+
<summary><strong>Why is ComfyUI not available in Studio?</strong></summary>
|
|
415
|
+
|
|
416
|
+
Studio and multi-model comparison currently support cloud Providers only; ComfyUI is not yet integrated. ComfyUI supports text-to-image, image editing (with several reference images), batch generation, and multiple named workflows through Agent chat.
|
|
417
|
+
|
|
418
|
+
</details>
|
|
419
|
+
|
|
420
|
+
<details>
|
|
421
|
+
<summary><strong>Does deleting an item from the gallery remove its chat message?</strong></summary>
|
|
422
|
+
|
|
423
|
+
No. Deleting a gallery record does not modify the original chat message. You may separately choose to remove the corresponding local image file from the workspace. File deletion is normally irreversible, so confirm carefully.
|
|
424
|
+
|
|
425
|
+
</details>
|
|
426
|
+
|
|
427
|
+
<details>
|
|
428
|
+
<summary><strong>How do I upgrade?</strong></summary>
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
pnpm dsh plugin --profile web add dsh-image-gen@latest
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
Restart the corresponding DSH Profile after upgrading.
|
|
435
|
+
|
|
436
|
+
</details>
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## Local Development
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
git clone https://github.com/shanliuling/dsh-image-gen.git
|
|
444
|
+
cd dsh-image-gen
|
|
445
|
+
|
|
446
|
+
pnpm install
|
|
447
|
+
pnpm run typecheck
|
|
448
|
+
pnpm test
|
|
449
|
+
pnpm run build
|
|
450
|
+
pnpm run pack:check
|
|
451
|
+
pnpm run test:package
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
Maintainer notes on dependency requirements and the scope of `test:package` are in [CONTRIBUTING.md](CONTRIBUTING.md). Feedback is welcome through [Issues](https://github.com/shanliuling/dsh-image-gen/issues); read the contributing guide before opening a Pull Request.
|
|
455
|
+
|
|
456
|
+
## Acknowledgements
|
|
457
|
+
|
|
458
|
+
- [AtomGit](https://atomgit.com/shanliuling/dsh-image-gen): Hosts a copy of the project for users in China to browse and download the source code.
|
|
459
|
+
|
|
460
|
+
## License
|
|
461
|
+
|
|
462
|
+
This project is open source under the [Apache License 2.0](LICENSE).
|
|
463
|
+
|
|
464
|
+
<div align="center">
|
|
465
|
+
|
|
466
|
+
If `dsh-image-gen` improves your workflow, consider giving the project a ⭐ **Star** to support continued maintenance.
|
|
467
|
+
|
|
468
|
+
**[View Releases](https://github.com/shanliuling/dsh-image-gen/releases) · [Open an Issue](https://github.com/shanliuling/dsh-image-gen/issues) · [Contribute](CONTRIBUTING.md)**
|
|
469
|
+
|
|
470
|
+
</div>
|