dsh-image-gen 0.10.2 → 0.11.0

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.
Files changed (76) hide show
  1. package/README.en.md +148 -133
  2. package/README.md +148 -133
  3. package/docs/assets/readme/canvas-edit.webp +0 -0
  4. package/docs/assets/readme/canvas-sketch.webp +0 -0
  5. package/docs/assets/readme/chat-batch.webp +0 -0
  6. package/docs/assets/readme/config.webp +0 -0
  7. package/docs/assets/readme/hero-batch.webp +0 -0
  8. package/docs/assets/readme/hero-canvas.webp +0 -0
  9. package/docs/assets/readme/studio-ref.webp +0 -0
  10. package/docs/assets/readme/studio.webp +0 -0
  11. package/lib/client.js +10848 -6335
  12. package/lib/index.js +2625 -145
  13. package/lib/types/capabilities.d.ts +10 -6
  14. package/lib/types/client/browser-image-utils.d.ts +6 -0
  15. package/lib/types/client/conversation-image-revisions.d.ts +3 -0
  16. package/lib/types/client/conversation-regenerate.d.ts +9 -1
  17. package/lib/types/client/datalist-scroll-fix.d.ts +32 -0
  18. package/lib/types/client/gallery-batch-bar.d.ts +8 -0
  19. package/lib/types/client/gallery-card.d.ts +21 -0
  20. package/lib/types/client/gallery-format.d.ts +7 -0
  21. package/lib/types/client/gallery-i18n.d.ts +236 -0
  22. package/lib/types/client/gallery-media.d.ts +58 -0
  23. package/lib/types/client/gallery-merge.d.ts +15 -0
  24. package/lib/types/client/gallery-store.d.ts +23 -2
  25. package/lib/types/client/gallery-thumbs.d.ts +24 -0
  26. package/lib/types/client/gallery-view.d.ts +0 -207
  27. package/lib/types/client/gif-card.d.ts +67 -0
  28. package/lib/types/client/gif-comments.d.ts +95 -0
  29. package/lib/types/client/gif-controls.d.ts +22 -0
  30. package/lib/types/client/gif-edit.d.ts +87 -0
  31. package/lib/types/client/gif-filmstrip.d.ts +23 -0
  32. package/lib/types/client/gif-gallery.d.ts +39 -0
  33. package/lib/types/client/gif-i18n.d.ts +159 -0
  34. package/lib/types/client/gif-menus.d.ts +36 -0
  35. package/lib/types/client/gif-player.d.ts +131 -0
  36. package/lib/types/client/gif-sheet.d.ts +116 -0
  37. package/lib/types/client/gif-style.d.ts +2 -0
  38. package/lib/types/client/image-result-node.d.ts +19 -1
  39. package/lib/types/client/image-result-view.d.ts +26 -0
  40. package/lib/types/client/index.d.ts +1 -20
  41. package/lib/types/client/plugin-i18n.d.ts +375 -0
  42. package/lib/types/client/plugin-style.d.ts +1 -0
  43. package/lib/types/client/provider-pill.d.ts +9 -0
  44. package/lib/types/client/studio-helpers.d.ts +63 -0
  45. package/lib/types/client/studio-session.d.ts +54 -0
  46. package/lib/types/client/studio-style.d.ts +1 -1
  47. package/lib/types/client/studio-view.d.ts +6 -7
  48. package/lib/types/client/tl/gallery-image-transfer.d.ts +1 -1
  49. package/lib/types/config.d.ts +12 -0
  50. package/lib/types/gif-info.d.ts +32 -0
  51. package/lib/types/import-route.d.ts +11 -0
  52. package/lib/types/multipart.d.ts +29 -0
  53. package/lib/types/openai-compatible.d.ts +8 -0
  54. package/lib/types/openai-output.d.ts +20 -1
  55. package/lib/types/request-cache.d.ts +41 -0
  56. package/lib/types/shared.d.ts +57 -3
  57. package/lib/types/storage-stats.d.ts +34 -0
  58. package/lib/types/studio-route.d.ts +2 -0
  59. package/lib/types/studio.d.ts +9 -0
  60. package/lib/types/subscription/vendors/codex.d.ts +4 -3
  61. package/lib/types/thumb-route.d.ts +25 -0
  62. package/lib/types/vault-registry.d.ts +66 -0
  63. package/lib/types/vault-route.d.ts +8 -0
  64. package/lib/types/vault-store.d.ts +33 -0
  65. package/lib/types/zip-progress.d.ts +18 -0
  66. package/lib/types/zip-route.d.ts +25 -0
  67. package/lib/types/zip-stream.d.ts +43 -0
  68. package/package.json +2 -2
  69. package/lib/types/client/tl/tl-trace-bridge.d.ts +0 -55
  70. package/lib/types/client/tl/trace-playback.d.ts +0 -101
  71. package/lib/types/trace-drawing.d.ts +0 -102
  72. package/lib/types/trace-route.d.ts +0 -12
  73. package/lib/types/trace-sketch.d.ts +0 -26
  74. package/lib/types/trace-store.d.ts +0 -23
  75. package/lib/types/vendor/drawai/raster.d.ts +0 -43
  76. package/lib/types/vendor/drawai/trace-image.d.ts +0 -257
package/README.md CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  # 🎨 dsh-image-gen
10
10
 
11
- ### DeepSeek Harness 的原生 AI 图像创作套件
11
+ ### 在 DeepSeek Harness 里,用说话的方式画图
12
12
 
13
- <p><b>AI 创作画布 · 对话生图与编辑 · Studio 批量创作 · 多模型对比 · 500+ Prompt 灵感 · 图库管理 · 本地 ComfyUI · 订阅免 Key</b></p>
13
+ <p><b>对话批量生图 · GIF 动图 · 看得懂草图的 AI 画布 · Agent 自动套用 500+ Prompt 灵感 · 订阅账号免 Key</b></p>
14
14
 
15
15
  <p>
16
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>
@@ -27,6 +27,7 @@
27
27
  </p>
28
28
 
29
29
  <p>
30
+ <a href="#一句话就能做到">一句话就能做到</a> ·
30
31
  <a href="#快速开始">快速开始</a> ·
31
32
  <a href="#核心能力">核心能力</a> ·
32
33
  <a href="#provider-支持情况">Provider 支持</a> ·
@@ -35,25 +36,22 @@
35
36
 
36
37
  <br />
37
38
 
38
- <img src="docs/assets/readme/canvas-generate.webp" alt="在无限画布中绘制草稿,并通过对话生成成图" width="46%" />
39
- <img src="docs/assets/readme/canvas-edit.webp" alt="基于已有结果继续对话修改,在画布中持续迭代创作" width="46%" />
40
- <br />
41
- <sub>左:在画布中绘制草稿、摆放参考图,并通过对话生成成图。 · 右:基于已有结果继续对话修改,在画布中持续迭代创作。</sub>
42
-
43
- <br />
44
-
45
- <img src="docs/assets/readme/chat-generate.webp" alt="在对话中直接描述并生成图片" width="46%" />
46
- <img src="docs/assets/readme/other-features.webp" alt="工作台批量创作、灵感库与图库等更多功能" width="46%" />
47
- <br />
48
- <sub>左:在对话中直接描述并生成图片。 · 右:工作台批量创作、灵感库与图库等更多功能。</sub>
39
+ <table>
40
+ <tr>
41
+ <td width="50%" align="center"><b>🔁 一句话,一整组图</b><br /><sub>一条消息Agent 批量生成几十张图片</sub></td>
42
+ <td width="50%" align="center"><b>✏️ 画个草图、圈个地方,AI 就懂</b><br /><sub>圈出剑 → 换成斧头 · 火柴人 → 成图</sub></td>
43
+ </tr>
44
+ <tr>
45
+ <td><a href="#chat-batch"><img src="docs/assets/readme/hero-batch.webp" alt="一条消息写 5 个画面,Agent 逐张生成并收进图库" width="100%" /></a></td>
46
+ <td><a href="#ai-canvas"><img src="docs/assets/readme/hero-canvas.webp" alt="在画布上圈出剑换成战斧,再把火柴人草图变成二次元剑士" width="100%" /></a></td>
47
+ </tr>
48
+ </table>
49
49
 
50
50
  </div>
51
51
 
52
- **为 DeepSeek Harness 带来完整的 AI 图像创作工作流。**
53
-
54
- `dsh-image-gen` 不只是简单的对话生图,而是为 DSH 补齐从 **对话生成与连续修图**、**AI 创作画布**、**Studio 批量创作**、**多模型横向对比**,到 **Prompt 灵感库** 与 **本地 ComfyUI** 的完整图像创作能力。
52
+ <br />
55
53
 
56
- 支持主流云端图像模型与本地私有化工作流,既可使用 BYOK(自带 Key),也支持通过订阅账号直接使用,生成结果支持按工作区隔离存储。
54
+ `dsh-image-gen` 是 DeepSeek Harness 的原生图像创作插件。它不是在对话框里塞一个生图按钮,而是让 **Agent 本身学会画图**:它能一次规划并生成一整组图,能看懂你在画布上的涂鸦和圈选,能自己去灵感库里找合适的风格模板。需要精细控制时,还有 Studio 工作台、多模型对比和图库。
57
55
 
58
56
  > **已有 ChatGPT、Grok 或 Google 订阅?直接登录即可生图,无需额外购买 API Key。**
59
57
 
@@ -63,21 +61,25 @@
63
61
  pnpm dsh plugin --profile web add dsh-image-gen@latest
64
62
  ```
65
63
 
66
- > **版本更新提示:** 本次版本变化较大,老用户请更新至最新版本。
67
-
68
- <img src="docs/assets/readme/workflow-overview.webp" alt="dsh-image-gen 完整 AI 图像创作工作流" width="100%" />
64
+ > 每个版本的更新内容见 [Releases](https://github.com/shanliuling/dsh-image-gen/releases)。
69
65
 
70
66
  ---
71
67
 
72
- ## 一个插件,覆盖完整 AI 图像创作流程
68
+ ## 一句话就能做到
73
69
 
74
- | 入口 | 最适合 | 你可以做什么 |
75
- | :------------ | :--------------- | :--------------------------------------- |
76
- | 💬 **对话** | 快速表达想法 | 文生图、图生图、连续编辑、版本迭代 |
77
- | ✏️ **画布** | 表达视觉创意 | 草稿生成、参考图组合、空间创作、持续修改 |
78
- | 🎛️ **工作台** | 精细控制创作参数 | 批量生成、多图参考、高级参数调整 |
79
- | ✨ **灵感** | 寻找创作方向 | Prompt 案例、风格探索、一键复用 |
80
- | 🖼️ **图库** | 管理生成结果 | 搜索、收藏、下载、重新使用 |
70
+ 不用学参数,也不用切页面,直接在 DSH 对话里说:
71
+
72
+ | 你在对话里说 | 插件会做什么 |
73
+ | :------------------------------------------------------------ | :----------------------------------------------------------------------------- |
74
+ | 「给《咖啡店开业》这篇文章配 4 张插图,统一扁平插画风,16:9」 | 🔁 **对话批量生图**:Agent 把需求拆成 4 个 Prompt 逐张生成,一条消息收齐整组图 |
75
+ | 「用手绘风格 #123 画一张咖啡店菜单」 | ✨ **自动套用灵感**:Agent 先在 500+ 案例库里检索对应风格,再套用模板出图 |
76
+ | 「把我在画布上画的草图变成正式插画」 | ✏️ **看懂画布**:Agent 读取画布选区,把草稿变成成图 |
77
+ | 「把我圈出来的剑换成斧头,其他不变」 | 🎯 **圈哪改哪**:只改你标出的局部 |
78
+ | 「保持这个角色不变,换到雪地场景」 | 🎭 **角色一致性**:图生图时保持同一个人物或物体,不会换成长得相似的另一个 |
79
+ | 「同一个 Prompt,GPT 和 Gemini 各出一张对比」 | ⚖️ **多模型对比**:并发调用多个模型,放在同一张画布上比较 |
80
+ | 「把这个角色做成一段挥手的 GIF 动图」 | 🎞️ **GIF 动图**:直接生成循环动画,卡片里播放、调倍速,还能按帧写评论修改 |
81
+
82
+ <img src="docs/assets/readme/workflow-overview.webp" alt="dsh-image-gen 完整 AI 图像创作工作流" width="100%" />
81
83
 
82
84
  ---
83
85
 
@@ -119,18 +121,18 @@ pnpm dsh plugin --profile web add ./dsh-image-gen
119
121
 
120
122
  **插件面板 → 已安装 → dsh-image-gen**
121
123
 
122
- <div align="center">
123
- <img src="docs/assets/readme/plugins-entry.webp" alt="在左侧边栏点击「插件」,于「已安装」分区点击 dsh-image-gen 进入详情页" width="100%" />
124
- <br />
125
- <sub>点击左侧边栏「插件」图标,在「已安装」分区点击 dsh-image-gen 进入插件详情页。</sub>
126
- </div>
127
-
128
124
  > DSH 0.1.5 及更早版本没有插件面板,入口仍为「设置 → 插件 → 插件配置 → 图像生成」;插件已同时兼容两种入口。
129
125
 
130
- 选择 Provider,填写自己的 API Key,并按需调整模型、Endpoint / Base URL 与工作区保存选项。填好 Key 后可点击**「测试连接」**验证可用性,或点击**「拉取模型」**一键获取该厂商支持的全部生图模型,无需手动查文档。使用 ComfyUI 时,请填写 DSH Host 可访问的服务地址,并导入 **API Format Workflow JSON**。
126
+ 选择 Provider,填写自己的 API Key,并按需调整模型、Endpoint / Base URL 与工作区保存选项。填好 Key 后可点击**「测试连接」**验证可用性,或点击**「拉取模型」**一键获取该厂商支持的全部生图模型,无需手动查文档。使用 ComfyUI 时,请填写 DSH Host 可访问的服务地址,并导入 **API Format Workflow JSON**;导入多个工作流后,可在对话输入框旁的生图按钮里直接切换。
131
127
 
132
128
  已有 ChatGPT、Grok 或 Google 订阅?无需填写 API Key:展开对应的订阅 Provider 行,点击**「登录」**并在浏览器完成授权,即可直接开始文生图与图生图。
133
129
 
130
+ <div align="center">
131
+ <img src="docs/assets/readme/config.webp" alt="插件详情页选择默认 Provider、查看各渠道状态,并在对话输入框旁切换渠道" width="100%" />
132
+ <br />
133
+ <sub>选默认 Provider → 查看各渠道的 Key / 登录状态 → 在对话输入框旁随手切换。</sub>
134
+ </div>
135
+
134
136
  ### 3. 开始创作
135
137
 
136
138
  在聊天框中直接描述你想要的图片:
@@ -139,6 +141,12 @@ pnpm dsh plugin --profile web add ./dsh-image-gen
139
141
  画一张雨夜霓虹街头的赛博朋克猫咪,电影感光线,16:9。
140
142
  ```
141
143
 
144
+ 想要一整组图?直接说数量和统一风格:
145
+
146
+ ```text
147
+ 给我的小红书笔记《周末露营清单》配 5 张图:帐篷、炉具、睡袋、照明、零食,统一日系手绘风,3:4。
148
+ ```
149
+
142
150
  也可以直接上传参考图,让 Agent 进行风格重构或局部编辑:
143
151
 
144
152
  ```text
@@ -148,10 +156,9 @@ pnpm dsh plugin --profile web add ./dsh-image-gen
148
156
  <br />
149
157
 
150
158
  <div align="center">
151
- <img src="docs/assets/readme/plugin-detail.webp" alt="dsh-image-gen 插件详情页中的 Provider 配置表单" width="46%" />
152
- <img src="docs/assets/readme/chat-example.webp" alt="对话生图与风格重构效果" width="46%" />
159
+ <img src="docs/assets/readme/chat-example.webp" alt="对话生图与风格重构效果" width="60%" />
153
160
  <br />
154
- <sub>左:插件详情页中的 Provider 配置 · 右:在 DSH 对话中直接生图、图生图与连续编辑。</sub>
161
+ <sub>在对话中直接生图、图生图与连续编辑。</sub>
155
162
  </div>
156
163
 
157
164
  <br />
@@ -162,9 +169,54 @@ pnpm dsh plugin --profile web add ./dsh-image-gen
162
169
 
163
170
  ## 核心能力
164
171
 
172
+ <a id="chat-batch"></a>
173
+
174
+ ### 🔁 对话批量生图:一句话,一整组图
175
+
176
+ 配图、分镜、系列插画、同一主题的多个变体,不用一张一张地催。
177
+
178
+ - 用一句话描述数量和统一要求,Agent 会自己规划出一组 Prompt,**单次最多 10 张**,图片按顺序附在同一条回复里。
179
+ - 比例、清晰度、模型、Provider 可以对整组统一指定,保证风格一致。
180
+ - 逐张生成,**某一张失败不会影响其余图片**,最后会汇报「成功 X / 共 Y」并列出失败原因。
181
+ - 本地 ComfyUI 和订阅通道同样支持批量。
182
+
183
+ <div align="center">
184
+ <img src="docs/assets/readme/chat-batch.webp" alt="一条消息让 Agent 批量生成 5 张二次元插画,失败的那张自动重跑,最后整组进入图库" width="100%" />
185
+ <br />
186
+ <sub>一条消息写 5 个画面 → Agent 规划成两批生成 → 逐张出图,失败的那张自动单独重跑 → 整组进入图库。(等待部分已加速)</sub>
187
+ </div>
188
+
189
+ > **对话批量和 Studio 批量有什么区别?** 对话批量是 Agent 帮你规划**一组不同的画面**(例如 4 张不同场景的插图);Studio 批量是**同一个 Prompt 出多张候选**,由你挑选满意的保存。
190
+
191
+ <br />
192
+
193
+ <a id="ai-canvas"></a>
194
+
195
+ ### ✏️ 看得懂草图的 AI 画布
196
+
197
+ 在无限画布上画草图、摆参考图、圈出要改的地方,然后直接用对话告诉 AI 你想要什么。**Agent 能看到画布上的内容和你当前的选区**,不需要你截图、上传或者描述位置。
198
+
199
+ - **草图 → 成图**:随手画个轮廓,选中它说「画成卡通角色」。
200
+ - **圈哪改哪**:在已有图片上用画笔圈出局部,说「把这里换成斧头」,只改圈出的部分。
201
+ - **组合参考**:把「最近生成」或图库里的图拖进画布,或点击缩略图上的「发送到画布」,多张一起选中作为参考。同一张历史图片重复导入会自动去重。
202
+ - 每一步结果都留在画布上,随时可以从任意一版继续往下迭代。
203
+
204
+ <div align="center">
205
+ <img src="docs/assets/readme/canvas-edit.webp" alt="在画布上圈出剑,说一句话,Agent 只把剑换成战斧" width="100%" />
206
+ <br />
207
+ <sub><b>圈哪改哪</b>:圈出女剑士手里的剑,说「变成一把斧头」,Agent 先确认圈的是什么,再只改那一处。</sub>
208
+ <br /><br />
209
+ <img src="docs/assets/readme/canvas-sketch.webp" alt="在画布上画火柴人草图,Agent 按草图姿势生成二次元剑士" width="100%" />
210
+ <br />
211
+ <sub><b>草图 → 成图</b>:随手画个持剑的火柴人,框选后说「按照之前风格生成」,姿势和构图都照着草图来。(等待部分已加速)</sub>
212
+ </div>
213
+
214
+ <br />
215
+
165
216
  ### 💬 对话生图、编辑与版本切换
166
217
 
167
218
  - 用自然语言完成文生图、图生图、多图参考和风格迁移。
219
+ - **角色一致性**:要求「保持这个人物 / 角色 / 物体不变」时,插件会让模型沿用参考图里的同一主体,只改场景、服装、姿势或风格,而不是重新画一个相似的人。
168
220
  - 直接修改原图 Prompt 重新生成,并在同一卡片中切换历史版本。
169
221
 
170
222
  <br />
@@ -178,66 +230,67 @@ pnpm dsh plugin --profile web add ./dsh-image-gen
178
230
 
179
231
  <br />
180
232
 
181
- ### ✏️ 从草稿到成图:AI 创作画布
233
+ ### 🎞️ GIF 动图:生成、播放、按帧修改
182
234
 
183
- 在无限画布中表达你的创意,通过对话将草稿、构图和想法转化为真实图片。
235
+ 使用 GPT Image 2.6 等支持动图的模型时,直接在对话里说「做成 GIF / 动图」即可得到循环动画,也可以把参考图里的角色做成动图。帧数与帧时长可用 `frame_count`(2–16)、`frame_duration_ms`(20–2000 ms)指定。
184
236
 
185
- - 在画布中自由绘制草稿、添加参考素材并组织创意。
186
- - 将「最近生成」或图库中的图片拖入画布,或点击缩略图上的「发送到画布」。请先打开无限画布并等待图片加载完成;同一张历史图片重复导入会自动去重。
187
- - 通过自然语言与 AI 对话,让草稿快速变成完整作品。
188
- - 基于已有结果持续编辑、修改和生成新的方向,保留创作过程,让每一次探索都可以继续迭代。
237
+ - 生成结果是 GIF 时,对话卡片直接播放动画:左下角调倍速(0.2×–2×),工具栏的下载菜单可按当前倍速或原速下载 GIF、或下载当前帧(PNG);点开大图有播放键、逐帧缩略图时间轴(悬停预览、点击停在这一帧)和倍速。图库里的 GIF 带角标、悬停即播放,大图同样可播放与下载。GIF 文件可直接拖出,重新生成仍得到 GIF(剪贴板只支持静态图,复制得到的是单帧)。
238
+ - GIF 卡片右下角「编辑」(或大图播放条的「编辑帧」)可按帧写修改意见:在画面上点位置写评论,评论只显示在它所在的那一帧,也可切到「全部帧」一次看全;一次发送即按评论重绘整段,新结果作为新版本保留并会动(仅 OpenAI 与兼容渠道,且中转需支持图生图;不支持时可一键改为描述后重新生成)。
239
+ - 支持渠道:OpenAI 官方与 OpenAI 兼容中转(需模型与中转支持 GIF)。ChatGPT 订阅使用的 Codex 图片接口目前上游未开放 GIF,暂不支持。
189
240
 
190
241
  <br />
191
242
 
192
- <div align="center">
193
- <img src="docs/assets/readme/canvas-generate.webp" alt="在无限画布中绘制草稿,并通过对话生成成图" width="46%" />
194
- <img src="docs/assets/readme/canvas-edit.webp" alt="基于已有结果继续对话修改,在画布中持续迭代创作" width="46%" />
195
- <br />
196
- <sub>左:在画布中绘制草稿、摆放参考图,并通过对话生成成图。 · 右:基于已有结果继续对话修改,在画布中持续迭代创作。</sub>
197
- </div>
198
-
199
- <br />
243
+ ### ✨ 500+ Prompt 灵感:Agent 会自己去找
200
244
 
201
- ### 🎛️ Studio 批量创作
245
+ 内置手绘风格手册(风格 / 排版 / 单色主题色)和 awesome-gpt-image-2 案例集,共 500+ 个可直接复用的 Prompt。
202
246
 
203
- - 支持多张参考图,一次生成多张候选图。
204
- - 自由控制 Provider、模型、比例和清晰度,只保存满意的结果。
247
+ - **在对话里直接点名**:说「用风格 #123」「做成信息图排版」「莫兰迪色系」,Agent 会先在灵感库里检索,再把模板套到你的主题上出图。风格、排版、主题色还可以组合使用。
248
+ - **在界面里浏览**:筛选、收藏、复制,或一键带入工作台(见下方 Studio 演示)。
249
+ - 图片缓存在本地,浏览和学习不消耗 Token 或生成额度。
205
250
 
206
251
  <br />
207
252
 
208
253
  <div align="center">
209
- <img src="docs/assets/readme/studio-workbench.webp" alt="dsh-image-gen Studio 工作台" width="100%" />
254
+ <img src="docs/assets/readme/inspiration-library.webp" alt="Prompt 灵感素材库" width="100%" />
210
255
  <br />
211
- <sub>在同一个 Studio 中完成参考图导入、参数控制、批量生成、结果筛选与保存。</sub>
256
+ <sub>先找灵感,再把 Prompt 带入工作台;全本地缓存,浏览或复制不消耗生成额度。</sub>
212
257
  </div>
213
258
 
214
259
  <br />
215
260
 
216
- ### ⚖️ 多模型横向对比
261
+ ### 🎛️ Studio 工作台:不用对话,自己调参数
217
262
 
218
- 使用同一组 Prompt 和参考图并发调用多个模型,在一张画布中比较并保存结果。
263
+ 想精细控制时,打开会话顶部的 **画廊 → 工作台**,所有参数都摆在面前。
264
+
265
+ - **从灵感直接开工**:在灵感库里点「带入工作台」,Prompt 自动填好。
266
+ - **参数一目了然**:Provider、模型、比例、生成质量、水印都能单独选;一次出 1–4 张候选,满意的才保存。
267
+ - **拿历史结果继续改**:从「最近生成」拖一张图进来,点「继续编辑(垫图)」,它就自动成为图生图的参考图(最多 5 张)。
268
+ - 单模型 / 多模型对比一键切换。
219
269
 
220
270
  <br />
221
271
 
222
272
  <div align="center">
223
- <img src="docs/assets/readme/multi-model-compare.webp" alt="同一 Prompt 的多模型生成对比" width="100%" />
273
+ <img src="docs/assets/readme/studio.webp" alt="从灵感库挑选 Prompt 带入工作台,调整参数后生成海报" width="100%" />
224
274
  <br />
225
- <sub>在同一画布中比较不同模型结果,再批量保存满意的图片。</sub>
275
+ <sub>灵感库挑一个 Prompt → 带入工作台 → 选好参数开始生成 → 出图后再决定保存。(等待部分已加速)</sub>
276
+ <br /><br />
277
+ <img src="docs/assets/readme/studio-ref.webp" alt="从最近生成拖入一张图,点继续编辑后自动切到图生图并作为参考图" width="100%" />
278
+ <br />
279
+ <sub>从「最近生成」拖一张图进来 → 「继续编辑(垫图)」→ 自动切到图生图,写一句要改什么就行。</sub>
226
280
  </div>
227
281
 
228
282
  <br />
229
283
 
230
- ### ✨ 500+ Prompt 灵感案例
284
+ ### ⚖️ 多模型横向对比
231
285
 
232
- - 浏览和筛选 **500+ Prompt 案例**,支持收藏、复制及一键带入 Studio。
233
- - 图片缓存在本地,浏览和学习不消耗 Token 或生成额度。
286
+ 使用同一组 Prompt 和参考图并发调用多个模型,在一张画布中比较并保存结果。
234
287
 
235
288
  <br />
236
289
 
237
290
  <div align="center">
238
- <img src="docs/assets/readme/inspiration-library.webp" alt="Prompt 灵感素材库" width="100%" />
291
+ <img src="docs/assets/readme/multi-model-compare.webp" alt="同一 Prompt 的多模型生成对比" width="100%" />
239
292
  <br />
240
- <sub>先找灵感,再把 Prompt 带入工作台;全本地缓存,浏览或复制不消耗生成额度。</sub>
293
+ <sub>在同一画布中比较不同模型结果,再批量保存满意的图片。</sub>
241
294
  </div>
242
295
 
243
296
  <br />
@@ -262,7 +315,7 @@ pnpm dsh plugin --profile web add ./dsh-image-gen
262
315
  灵活调用本地 GPU 算力,让私有化绘图无缝融入 Agent 对话。
263
316
 
264
317
  - 导入并管理多个命名工作流,支持预设 Prompt 和常用占位符。
265
- - Agent 可按名称选择工作流,在对话中完成文生图和图生图。
318
+ - Agent 可按名称选择工作流,在对话中完成文生图、图生图和批量生图。
266
319
 
267
320
  > ComfyUI 暂未接入 Studio 和多模型对比。
268
321
 
@@ -280,70 +333,26 @@ pnpm dsh plugin --profile web add ./dsh-image-gen
280
333
 
281
334
  ## Provider 支持情况
282
335
 
283
- | Provider | 对话生图 | 对话编辑 | Studio | 多模型对比 |
284
- | :-------------------------------- | :------: | :------: | :----: | :--------: |
285
- | **Google Gemini** | ✅ | ✅ 多图 | ✅ | ✅ |
286
- | **OpenAI Images** | ✅ | ✅ 多图 | ✅ | ✅ |
287
- | **OpenAI Compatible(中转站)** | ✅ | ✅ 多图 | ✅ | ✅ |
288
- | **ByteDance Seedream / 火山方舟** | ✅ | ✅ 多图 | ✅ | ✅ |
289
- | **Aliyun DashScope / Qwen Image** | ✅ | ✅ 多图 | ✅ | ✅ |
290
- | **xAI Grok Imagine** | ✅ | ⚠️ 有限 | ✅ | ✅ |
291
- | **智谱 GLM-Image** | ✅ | — | ✅ | ✅ |
292
- | **Local ComfyUI** | ✅ | ✅ 单图 | — | — |
293
- | **ChatGPT 订阅(免 Key)** | ✅ | ✅ 多图 | ✅ | ✅ |
294
- | **Grok 订阅(免 Key)** | ✅ | ✅ 多图 | ✅ | ✅ |
295
- | **Google 订阅(免 Key)** | ✅ | ✅ 多图 | ✅ | ✅ |
336
+ | Provider | 对话生图 | 对话批量 | 对话编辑 | Studio | 多模型对比 | GIF |
337
+ | :-------------------------------- | :------: | :------: | :------: | :----: | :--------: | :-: |
338
+ | **Google Gemini** | ✅ | ✅ | ✅ 多图 | ✅ | ✅ | — |
339
+ | **OpenAI Images** | ✅ | ✅ | ✅ 多图 | ✅ | ✅ | ✅ |
340
+ | **OpenAI Compatible(中转站)** | ✅ | ✅ | ✅ 多图 | ✅ | ✅ | ✅ |
341
+ | **ByteDance Seedream / 火山方舟** | ✅ | ✅ | ✅ 多图 | ✅ | ✅ | — |
342
+ | **Aliyun DashScope / Qwen Image** | ✅ | ✅ | ✅ 多图 | ✅ | ✅ | — |
343
+ | **xAI Grok Imagine** | ✅ | ✅ | ⚠️ 有限 | ✅ | ✅ | — |
344
+ | **智谱 GLM-Image** | ✅ | ✅ | — | ✅ | ✅ | — |
345
+ | **Local ComfyUI** | ✅ | ✅ | ✅ 单图 | — | — | — |
346
+ | **ChatGPT 订阅(免 Key)** | ✅ | ✅ | ✅ 多图 | ✅ | ✅ | — |
347
+ | **Grok 订阅(免 Key)** | ✅ | ✅ | ✅ 多图 | ✅ | ✅ | — |
348
+ | **Google 订阅(免 Key)** | ✅ | ✅ | ✅ 多图 | ✅ | ✅ | — |
296
349
 
297
350
  > Studio 与多模型对比目前只支持云端 Provider(含订阅通道);多模型对比调用的是各 Provider 在设置中已配置的模型。
298
351
  > 智谱 GLM-Image 上游本身不支持图生图;xAI 图生图走 OpenAI 兼容协议(multipart),部分网关可能需等待后续适配。
299
- > 订阅通道通过账号登录使用(免 API Key),支持对话文生图 / 图生图、Studio 批量生成与多模型对比;图生图走各订阅渠道的编辑接口(最多 5 张参考图),比例与清晰度可在 Studio 中直接选择。
300
-
301
- <details>
302
- <summary><strong>当前默认模型与 Endpoint(均可修改)</strong></summary>
303
-
304
- | Provider | 默认模型 | 默认 Endpoint / Base URL |
305
- | :----------------- | :--------------------------- | :-------------------------------------------------------------- |
306
- | Google Gemini | `gemini-3.1-flash-image` | `https://generativelanguage.googleapis.com/v1beta/interactions` |
307
- | OpenAI Images | `gpt-image-2` | `https://api.openai.com/v1` |
308
- | OpenAI Compatible | 自定义 | 自定义 Base URL |
309
- | ByteDance Seedream | `doubao-seedream-5-0-260128` | `https://ark.cn-beijing.volces.com/api/v3` |
310
- | Aliyun DashScope | `qwen-image-3.0` | `https://dashscope.aliyuncs.com/api/v1` |
311
- | xAI Grok Imagine | `grok-imagine-image` | `https://api.x.ai/v1` |
312
- | 智谱 GLM-Image | `glm-image` | `https://open.bigmodel.cn/api/paas/v4` |
313
- | Local ComfyUI | 用户导入的 API Workflow | `http://127.0.0.1:8188` |
314
- | ChatGPT 订阅 | `gpt-image-2.5-flare`(通道固定) | 账号登录,无需配置 |
315
- | Grok 订阅 | `grok-imagine-image-2.0`(通道固定) | 账号登录,无需配置 |
316
- | Google 订阅 | `gemini-3.1-flash-image`(通道固定) | 账号登录,无需配置 |
317
-
318
- </details>
352
+ > 订阅通道通过账号登录使用(免 API Key),图生图走各订阅渠道的编辑接口(最多 5 张参考图),比例与清晰度可在 Studio 中直接选择。
353
+ > OpenAI 与兼容渠道的对话生图和图生图都可以直接要求输出 GIF 动图,例如把参考图里的角色做成动图(需模型与中转支持;图生图还要求中转支持改图接口),帧数、帧时长等参数见 [Provider 配置参考](docs/providers.md)。ChatGPT 订阅使用的接口暂不支持 GIF 输出。
319
354
 
320
- <details>
321
- <summary><strong>各 Provider 可选比例与清晰度</strong></summary>
322
-
323
- | Provider | 比例 | 清晰度 |
324
- | :----------------- | :---------------------------------------------------------------- | :-------------------------------------- |
325
- | Google Gemini | 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 4:5 · 5:4 · 16:9 · 9:16 · 21:9 | 1K / 2K / 4K |
326
- | OpenAI Images | gpt-image-2 系列支持 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 16:9 · 9:16 | 分辨率 1K / 2K(宽屏、竖屏另有 4K);生成质量独立选择 auto / low / medium / high |
327
- | OpenAI Compatible | 由 `openaiCompatSizes` 配置决定(默认 1:1 · 3:2 · 2:3) | 分辨率由尺寸表决定;生成质量独立配置,默认不发送 |
328
- | ByteDance Seedream | 自动 · 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 16:9 · 9:16 · 21:9 | 2K / 3K / 4K |
329
- | Aliyun DashScope | 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 16:9 · 9:16 | 标准 |
330
- | xAI Grok Imagine | 自动 · 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 16:9 · 9:16 · 21:9 | 1K / 2K |
331
- | 智谱 GLM-Image | 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 16:9 · 9:16 | 高清 |
332
- | ChatGPT 订阅 | 自动 · 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 16:9 · 9:16 | 自动 / low / medium / high / xhigh / max |
333
- | Grok 订阅 | 自动 · 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 16:9 · 9:16 · 21:9 | 1K / 2K |
334
- | Google 订阅 | 自动 · 1:1 · 3:2 · 2:3 · 4:3 · 3:4 · 4:5 · 5:4 · 16:9 · 9:16 · 21:9 | 标准 / 高清(4K) |
335
-
336
- > 「自动」比例表示由模型按 Prompt 自行决定构图;上游已移除的档位(如 Seedream 5.0 的 1K)插件不会暴露。
337
- > Google 订阅会使用有效的平台枚举发现账号项目,并提供普通 daily 入口作为兼容回退。项目发现未返回项目且提示 `UNSUPPORTED_CLIENT` 时,会再用 Antigravity 客户端身份重试;该过程不自动开户。仍未返回项目时保留旧兼容项目尝试,但不会把它缓存成账号真实项目;若生图仍失败,错误会保留项目发现、账号资格及各生图入口的脱敏响应,避免只显示最后一个 429。设置中的订阅「测试连接」只检查登录记录,实际生图成功才验证该账号的生图链路;`UNSUPPORTED_CLIENT` 的 Code Assist 提示也不单独判定生图不可用。
338
- > OpenAI 与兼容渠道的 Studio 控件分别显示「比例 / 分辨率 / 生成质量」,分辨率选项会显示实际像素。多模型对比及再次生成也保留这两类参数。
339
- > OpenAI 官方可通过设置中的 `openaiSizes` 自定义尺寸表,格式为「比例 → 档位 → 像素」,例如 `{ "16:9": { "2K": "2048x1152", "4K": "3840x2160" } }`。gpt-image-2 系列按官方限制校验:边长为 16 的倍数、最大 3840、比例在 1:3 到 3:1、总像素 655360–8294400;超过 3686400 像素的输出属于上游实验支持。[官方说明](https://developers.openai.com/api/reference/resources/images/methods/generate)。旧版 GPT Image 模型仍只使用三种标准尺寸。
340
- > OpenAI Compatible 的尺寸表为 `openaiCompatSizes`,格式相同;留空时保持原来的标准尺寸。`openaiCompatQuality` 设置默认生成质量(留空不发送),`openaiCompatQualityOptions` 设置 Studio 可选值。选择「渠道默认(不发送)」可在单次请求中省略 quality;对话工具也支持独立的 `size` 和 `quality` 参数。
341
- > 兼容渠道的「文生图额外字段」对应 `openaiCompatExtraBody`,例如 `{ "watermark": false }`。它仅用于文生图,在常规字段之后合并,可覆盖同名参数;`false` 和嵌套对象都会保留。图生图继续使用 `openaiCompatEditExtra`;JSON 图片 URL 数组格式的 `openaiCompatEditSizeMode` 默认 `auto`,改为 `selected` 才发送所选尺寸,EditExtra 仍可覆盖该尺寸。
342
- > 兼容渠道可设置独立的「图生图模型」`openaiCompatEditModel`,留空沿用文生图模型;对话中的显式 `model` 仍可覆盖单次编辑。硅基流动官方 `/v1` 地址自动使用 `siliconflowJson` 编辑格式,其他采用同一协议的中转可手动选择:通过 `/images/generations` 发送 `image` 字符串。`Qwen/Qwen-Image-Edit` 支持一张参考图,`Qwen/Qwen-Image-Edit-2509` 最多三张,依次使用 `image`、`image2`、`image3`。编辑不发送通用尺寸和质量字段;图生图额外字段中的 `size`、`image_size`、`quality` 会给出明确错误,图片字段由插件填入。协议以[硅基流动官方文档](https://docs.siliconflow.cn/docs/api/images-generations-post)为准。
343
- > 普通对话生图无需指定 provider 或 model,会使用已保存的默认渠道;模型可读取随配置更新的默认渠道及参数提示。无关可选字段应省略,空白尺寸会按未提供处理;两个有效的 `size` / `aspect_ratio` 仍互斥。ChatGPT 订阅不支持 `image_size`,请使用 `size` 或 `aspect_ratio`,不要填入 `1K` 等档位。
344
- > 工作台在比例、分辨率旁提供「可见水印:渠道默认 / 关闭 / 开启」,分别判断文生图和图生图支持情况。Seedream、通义原生 Qwen Image,以及已确认的商汤和通义官方兼容接口自动启用;官方兼容接口同时自动使用对应的 JSON 编辑格式。商汤匹配 `https://token.sensenova.cn/v1` 与 `sensenova-u1.5-lite`;通义匹配官方工作空间域名的 `/compatible-mode/v1` 与 Qwen Image 3.0/3.0 Pro、2.1 Pro/Turbo。其他兼容渠道可通过对应操作的额外字段绑定布尔值 `watermark`、`watermark_enabled` 或 `parameters.watermark`;图生图绑定仅用于 JSON 编辑格式。未知渠道和智谱显示禁用的「支持未确认」,无已确认开关的接口也显示说明。不会仅凭模型名识别未知中转。渠道默认保留原配置或省略参数,单次选择只覆盖水印字段;批量生成、支持该操作的对比模型及再次生成会保留选择。
345
-
346
- </details>
355
+ 📖 **默认模型与 Endpoint、各 Provider 的比例 / 清晰度、尺寸表、水印、中转站编辑格式等高级配置,见 [Provider 配置参考](docs/providers.md)。**
347
356
 
348
357
  ---
349
358
 
@@ -352,9 +361,12 @@ pnpm dsh plugin --profile web add ./dsh-image-gen
352
361
  - **BYOK**:API Key 通过 DSH Credentials 服务保存,设置页不会回显 Key 明文。
353
362
  - **订阅登录**:订阅账号令牌经你授权登录后保存于 DSH Credentials,与 API Key 完全隔离,浏览器侧不接触令牌。
354
363
  - **云端请求**:Prompt 与本次使用的参考图会发送给所选 Provider,请遵守对应服务条款。
364
+ - **上游图片下载**:沿用宿主已有的网络和代理配置,不额外拦截 Fake-IP、内网或回环地址。当前未提供完整的 SSRF 目标限制。
355
365
  - **本地 ComfyUI**:请求发送到用户配置的 ComfyUI 地址。
356
366
  - **工作区文件**:开启工作区保存后,对话结果会落盘;Studio 仅保存用户选中的候选图。
367
+ - **GIF 原图**:动图结果的原始文件另存于原图保险库(`vaultEnabled` 可关闭),供卡片播放与导出,随图库删除一并清理。
357
368
  - **图库与收藏**:图库元数据和收藏状态保存在当前浏览器本地存储中。
369
+ - **删除记录**:普通删除会保留轻量的图片 ID 标记,超过 30 天也不会因重新打开旧会话而自动恢复到图库。
358
370
  - **灵感缓存**:案例元数据随插件提供,图片按需加载并缓存在本机,可随时清理。
359
371
 
360
372
  ## 常见问题
@@ -374,6 +386,13 @@ dsh --profile web --dump-config
374
386
 
375
387
  </details>
376
388
 
389
+ <details>
390
+ <summary><strong>一次最多能批量生成多少张?</strong></summary>
391
+
392
+ 对话批量单次调用最多 10 张,超过时插件会提示 Agent 拆成多次调用。图片是逐张生成的,单张失败不会中断其余图片,失败的会在结果里单独列出原因。
393
+
394
+ </details>
395
+
377
396
  <details>
378
397
  <summary><strong>生成图片保存在哪里?</strong></summary>
379
398
 
@@ -393,7 +412,7 @@ dsh --profile web --dump-config
393
412
  <details>
394
413
  <summary><strong>为什么 ComfyUI 没有出现在 Studio 中?</strong></summary>
395
414
 
396
- 当前 Studio 与多模型对比仅支持云端 Provider,暂未接入 ComfyUI。ComfyUI 已支持在 Agent 对话中进行文生图、单图编辑以及多个命名工作流。
415
+ 当前 Studio 与多模型对比仅支持云端 Provider,暂未接入 ComfyUI。ComfyUI 已支持在 Agent 对话中进行文生图、单图编辑、批量生图以及多个命名工作流。
397
416
 
398
417
  </details>
399
418
 
@@ -431,11 +450,7 @@ pnpm run pack:check
431
450
  pnpm run test:package
432
451
  ```
433
452
 
434
- 新 DSH 的设置保存需要实际加载的 `@deepseek-ai/schemastery >=3.18.4 <4`。设置卡会区分加载中、宿主未提供设置、远程连接不可保存及依赖不兼容;旧 DSH 的设置接口仍保留。更新依赖时应检查插件所在 profile 的实际依赖,而不只检查源码目录。
435
-
436
- `test:package` 需要网络,会在临时目录安装当前构建的插件 tarball 和指定版本的 DSH 0.2 设置服务,通过真实 React 渲染验证卡片状态和保存处理、配置文件写入、重新打开表单和宿主重启后的读取,并验证旧 schemastery 的明确拒绝提示。图片 API、浏览器 DOM 和 RPC 传输不属于此测试;CI 同时在 Windows 和 Linux 执行。
437
-
438
- 欢迎通过 [Issues](https://github.com/shanliuling/dsh-image-gen/issues) 反馈问题,或阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 后提交 Pull Request。
453
+ 依赖要求与 `test:package` 的测试范围等维护者说明见 [CONTRIBUTING.md](CONTRIBUTING.md)。欢迎通过 [Issues](https://github.com/shanliuling/dsh-image-gen/issues) 反馈问题,或阅读贡献指南后提交 Pull Request。
439
454
 
440
455
  ## 鸣谢
441
456
 
Binary file
Binary file
Binary file