dsh-imagegen
dsh-imagegen 是 DeepSeek Harness(DSH)的原生 AI 图像工作台。配置任意 OpenAI 兼容生图接口后,Agent 对话生图、/edit_image 斜杠命令连续编辑、多模型并列对比、多来源案例模板库与画廊资产管理都在同一个窗口完成;电商模式能把一张商品图扩展成主图、卖点图、场景图等一整套商品视觉。生成任务由宿主进程排队执行,不卡界面、不打断对话,图片也不必在多个工具之间来回搬运。
快速开始
前置条件:已安装 DeepSeek Harness 和 Node.js 20+。
dsh plugin --profile web add @dickpy/dsh-imagegen
安装后重启 dsh web,侧边栏的“新会话”入口会变成“新会话 / 生图”双 Tab(Windows 如遇 PowerShell 脚本策略限制,请使用 dsh.cmd)。
首次使用:
- 打开「设置 → 生图配置」,添加一个提供方,填入 API 地址和密钥,点击“检测可用模型”,勾选生图模型后保存。
- 点击“生图”Tab,输入一句提示词,生成第一张图。
- 想让 Agent 也能画图?保持“允许 Agent 调用生图”开启即可(默认开启)。
其他安装方式与升级
让 Agent 帮你安装 —— 将下面内容直接发给 DSH、Codex 或其他 coding agent:
用 dsh plugin --profile web add @dickpy/dsh-imagegen 安装 AI 生图插件。完成后重启 dsh web,点击“新会话 / 生图”中的“生图” Tab,并在「设置 → 生图配置」中管理渠道。
从 Release 安装 —— 从 GitHub Releases 下载目标版本的 tgz 后执行:
dsh plugin --profile web add <下载路径>/dickpy-dsh-imagegen-<版本号>.tgz
升级与回滚 —— 重复执行 add 命令即可更新到最新版;面板打开时也会自动检测新版本,出现顶部横幅后可在线更新,完成后重启 dsh web 生效。渠道配置、历史记录和画廊数据由 DSH 宿主保存,正常升级不会清空。需要固定版本时,使用 @dickpy/dsh-imagegen@<版本号> 或指定 Release tgz。
无限画布
顶部导航切换到「无限画布」,在节点图上组织 AI 创作:图片节点、文本节点与生成配置节点自由摆放(新建画布自带一组文本 + 配置节点开箱即用),拖动节点左右两侧的圆点即可连线,拖动画布边缘或按住空格 / Ctrl 平移,滚轮缩放(5%–500%)。
- 连线即工作流:把图片节点连线到「生成配置」节点就是参考图(第一张为图生图底图),把文本节点连线过来就是提示词;配置节点上显示「已连接 N 个输入节点」。连线上有流向动画与箭头,一眼可见数据从哪来到哪去。
- 悬停快速添加:鼠标放到节点右侧的加号上,直接弹出「文本 / 图片 / 配置 / 文件」选择菜单,选中的新节点自动落到右侧并连线(自动避让已有节点并把画布带到新节点前);按住加号拖动仍是自由连线,配置节点后不再叠加配置节点。
- 生成配置节点:选中后在节点正下方浮出生成器,直接写提示词(或改写连线进来的文本),选模型、比例、清晰度与张数(1–4 张),点发送即提交;结果图片自动出现在配置节点右侧并保留连线关系,可以继续串到下一个配置节点迭代。
- 素材入库:历史记录与画廊的每张图一键「加入画布」,本地图片支持拖拽到画布或直接粘贴剪贴板截图;空图片节点可点击上传。
- 图片节点工具:图片节点悬停工具条提供四个能力 —— 标注(在图片上拖框,松开后从框上拉出一条引导线并挂上一张提示词卡片:卡片跟随图片移动、不需要连任何线;生成时自动读取框与提示词,把红框烧进参考图并附带坐标约束;结果图会与干净原图合成,红框标记不会出现在成品里,框外区域也保证与原图一致;重试同样会重建标记图)、移除背景(本地抠图,直接产出带透明通道的 PNG,不消耗额度)、图层拆分(调用视觉聊天模型把图拆成背景 / 元素 / 文字图层节点,文字层可改字号、加粗与颜色,人物与装饰元素各自独立可移动)、模型选择(为这个节点指定模型,重试与相连的生成配置节点默认沿用)。
- 文本节点排版:文本节点头部可调字号(A- / A+)、加粗与文字颜色,图层拆分产出的文字层同样可直接编辑。
- 画布操作:框选多选、Shift 加选、整体拖动、四角等比缩放、右键菜单、双击空白快速建节点、复制 / 粘贴 / 副本(Ctrl+C/V/D)、撤销重做(Ctrl+Z / Ctrl+Shift+Z);把图片节点放大后再标注会更顺手,缩放后标注框按比例跟随。左下角小地图可点击跳转,底部工具条悬浮居中(reactbits Dock 式弹簧放大与悬浮标签):文本、涂鸦、文件、配置、模板库、技能库,以及背景 / 小地图 / 适应内容等视图项;其中「文件」直接弹出上传并把文件落成文件节点。
- 背景与视图:13 种背景一键切换 —— 点阵 / 网格线 / 波浪线 / 滚动方格 / 点场 / 互动点阵 / 浮动线条 / 流体扰动 / 液态以太 / 故障终端 / 丝绸 / 星系 / 空白。其中一组移植自 React Bits 的动效背景并做了无依赖重写:「液态以太」是随鼠标搅动的 WebGL 流体速度场,「浮动线条」是指针会压弯的发光波形,「星系」是四层视差星野(鼠标推开星星),「丝绸」是缓慢流动的绸面光泽,「故障终端」是带扫描线与故障位移的 CRT 字符场;「波浪线 / 滚动方格 / 点场 / 互动点阵」为画布 2D 实现,支持鼠标扰动与点击冲击波。浅色 / 深色画布会自动切换明暗墨色,新建画布默认使用液态以太;「适应全部内容」一键回正视图。
- 数据与多窗口:画布按项目保存在宿主数据目录(
~/.dsh/dsh-imagegen/canvas),支持多项目管理与重命名;多窗口同时编辑时保存冲突自动按服务端进度重试合并;旧版本画布数据自动迁移到新结构。
文件节点
画布新增文件节点:在空白处右键「添加文件节点 / 上传文件」,或直接把文件拖进画布即可建节点;空节点点击也能上传。
- 任意文件:单文件上限 50MB,宿主按内容寻址落盘(sha256),文档、表格、PDF、压缩包、音视频都可以放上来。
- 安全边界:
.exe / .bat / .ps1 / .js / .html / .svg 等脚本与可执行扩展名会被浏览器与宿主两侧拒绝;除下面列出的可预览类型外,资源一律以 application/octet-stream + attachment 返回,HTML/SVG 一类的标记永远不会被内联渲染。
- 节点内预览:文件内容直接在节点里读,不用先下载,并尽量按原文件的样子还原 ——
- Markdown:渲染成富文本(标题、列表、表格、引用、代码块、链接),全屏可切「渲染 / 源码」;
- DOCX:还原文档结构 —— 标题层级、加粗 / 斜体、项目与编号列表、表格;
- PPTX:一页一张幻灯片卡片,显示页码、标题、正文要点与内嵌图片;
- 文本 / 代码 / JSON / YAML / XML:宿主解码后显示原文(上限 12 万字符,超出部分给出提示),带行数与滚动,首次渲染先用随资源下发的 8KB 摘要,随后补齐全文;
- CSV / TSV / XLSX:解析成表格渲染(首行作为表头,最多 300 行 × 40 列),支持带引号的多行单元格;
- ODT / ODP:从 ODF 容器中抽取正文文本;
- PDF:交给浏览器内置阅读器内联显示(宿主以
application/pdf + inline 返回);
- 音频 / 视频:
<audio> / <video> 直接播放,宿主支持 HTTP Range,进度条可拖动;
- ZIP:列出压缩包目录(名称 / 大小 / 文件夹,最多 400 项);
- 其他二进制(如
.doc、.tiff、7z/rar)给出本地化说明,仍可下载或用技能处理。
- 以上解析都在宿主侧限量执行(字数 / 行数 / 页数 / 图片字节预算),超大文件只截断不卡顿。
- 全屏阅读器:双击节点、点悬浮工具条的「放大预览」或右键菜单同名项,在浮层里查看全文 / 整表 / 整页 / 整副幻灯片,Markdown 可在「渲染 / 源码」间切换,可一键复制内容、在新标签页打开媒体、下载文件,Esc 或点遮罩关闭。
- 工具条:技能、下载、放大预览、复制、删除。
画布技能
任意图片 / 文本 / 文件节点(生成配置节点除外)的悬浮工具条与右键菜单都有**「技能」**入口,技能把节点内容交给模型或 Agent 继续加工,结果以新节点 + 连线回到画布(运行只产出草稿,仍由浏览器写入文档)。
内置动作:
| 技能 | 适用节点 | 说明 |
|---|
文本润色 polish.text | 文本 | 更正式 / 更口语 / 更短 / 扩写,或自定义指令 |
图片描述 describe.image | 图片 | 视觉模型读出内容,产出可继续当提示词用的文本节点 |
内容抽取 extract.content | 文件、图片 | 文本 / 代码直接解码,OOXML(pptx/docx/xlsx)、ODF、PDF 抽取正文(PDF 依赖 FlateDecode 文本流,扫描件请配合 OCR 技能) |
图片转可编辑 PPT ppt.fromImages | 图片 | 重任务:驱动本机 image-to-editable-ppt 技能,产出 .pptx 文件节点 |
- 两层执行:轻量技能直接调用「提示词增强」所配置的聊天模型(不额外占 Agent 会话);重任务技能会启动一个无头 DSH Agent,把技能正文注入 Agent 的独立系统提示区,并在磁盘上物化输入文件(
<工作目录>/<画布>/<任务>/input|output),让 Agent 用真实工具跑完整流水线。
- 运行卡片与连线:技能开始执行的瞬间,源节点会延生出一条流动虚线,连到一张运行卡片上 —— 卡片显示技能名、轻量/重任务角标、阶段步骤条(排队 → 准备输入 → 执行 → 收集产物)、已用时,并可直接取消;重任务执行中每产出文件都会实时提示(如「已产出 2 个文件」)。完成后卡片自动让位给真正的结果节点与连线;失败时卡片保留错误信息,可一键重试或关闭。刷新页面或切换画布后,未完成的运行会自动恢复卡片。
- 重任务先确认:长任务技能的菜单会标「重任务」角标,点击后弹出确认框,显示成本提示与前置条件;确认后才创建 Agent,并可在运行卡片上取消。
- 多节点批量:多选同类型节点后运行技能会串行覆盖这些节点;一次最多 12 个输入节点。
- 多选与来源:技能产出的节点带来源标记,指向它读了哪些节点。
- 随节点顺手润色:文本节点工具条的 ✨ 按钮直接弹出风格菜单,一键覆盖原文(Ctrl+Z 撤销);多选文本节点时同样按顺序批量处理。
需要自己装的技能
画布会自动列出本机 ~/.dsh/skills 下可被模型调用的所有技能(菜单里 id 形如 skill:<名称>),并按其自述与 frontmatter 判断轻量 / 重任务。image-to-editable-ppt 属于长任务技能,需要你自行安装;它的图片后端可以直接在下面的「技能配置」里填,插件会调用它自己的 editppt config 写进 ~/.editppt/config.yaml。
技能库(在线安装 / 上传安装)
底部 Dock 的**「技能库」**按钮打开管理面板,不用手敲文件系统:
- 在线安装:粘贴 GitHub 仓库 / 仓库子目录 / 单个
SKILL.md(blob 链接)/ 任意 git 地址 / zip 地址,一行一个。GitHub 走 codeload 归档下载,不依赖本机 git;其他 git 地址回退到 git clone --depth 1(非交互、180 秒超时)。
- 上传安装:点虚线框选择或直接把 zip 拖进虚线框(≤50MB;解压后总量同样有上限)。压缩包先解到临时目录,确认里面有
SKILL.md 且 frontmatter 的 name 合法后才落到 ~/.dsh/skills。在线安装区位于面板顶部,已安装列表移到下方,每条带大小与配置 / 卸载操作。
- 卸载:列表里逐条删除(目录、以及扁平的
<name>.md 都能识别)。
- 热加载:
~/.dsh/skills 由宿主的技能监听器看着,装完即出现在技能菜单里,不需要重启。
- 没装也能看懂:菜单里需要外部技能的行会标出「未安装」并给出「去安装」;运行失败若原因是技能缺失,提示条上直接带安装按钮并把上游地址填好。提示条现在固定在画布顶部,不会再被底部内容挡住。
技能配置(技能自己声明,面板统一渲染)
技能过去只能靠文档手敲命令行或改 dotfile 配自己的密钥 / 后端。现在技能可以在 SKILL.md 旁边放一份 skill.config.json 声明要什么、怎么生效,技能库面板会把它渲染成表单:
- 字段:
string / secret / boolean / number / select,可标 required、给默认值与说明;
- 生效步骤:
command(无 shell、按数组参数执行技能自带的 CLI,如 editppt config …)或 file(物化一份配置文件,~ 展开、拒绝 .. 逃逸与 DSH 主目录控制文件);
- 两个按钮:「保存」只存值;「保存并应用」存完按顺序执行声明的步骤,并逐步回显结果;
- 密钥:存进插件设置的
role('secret') 字典(脱敏存储),表单只显示「已设置 / 未设置」,命令回显里也会替换成 •••;密钥永不出现在运行目录、清单或提示词里;
- 节点菜单:声明了必填字段却还没配的技能会显示「需要配置:…」和「去配置」,点开直接定位到该技能的表单;
- 已知技能配方:
image-to-editable-ppt 插件内置了一份配方(图片 API 密钥 / 地址 / 模型 + 可选 PaddleOCR token,走 editppt config),所以上游还没带声明时也能开箱配置;技能自带声明永远优先。
格式、边界与安全规则见 docs/skill-config.md。没声明配置的技能行为不变:面板只给通用提示,仍按它自己的文档 / 让 Agent 配置。
相关设置
「设置 → 生图配置」新增无限画布技能分组:
- 画布技能:总开关,关闭后节点上不再出现技能菜单。
- 允许重任务技能:关闭后只保留轻量技能(不会启动无头 Agent)。
- 技能白名单:逗号或换行分隔的技能名;留空表示允许本机全部技能。
- 重任务工作目录:无头 Agent 的工作目录,留空使用数据目录下的
canvas/runs。
- 重任务超时(分钟):超时自动取消(填 0 不超时)。
- 重任务 Agent 预设:指定重任务使用的 Agent 预设名。
- 检测技能环境:一键查看可用技能数量与无头 Agent 是否可用。
电商模式
顶部导航切换到「电商模式」,把一张商品图扩展成一套可发布的商品视觉:配置区分为「主图参考图」(商品主体 / 包装 / 细节,最多 4 张)与「风格参考图」(可选 1 张)两组,填入商品名称与参数信息,勾选套图结构(主图、卖点图、场景图、细节图、规格图、使用图)与每种用途的数量即可提交。
- 锚定生成:确认后先生成主图,其余图片自动以主图为参考生成,并在提示词中附加商品一致性约束,保证整套是同一个商品。
- AI 帮写:「参数信息」卡片右上角点「AI 帮写」,按商品名称与类目自动整理生图用的参数描述(走提示词增强通道);原来的参考信息 / 必须保留的特征 / 风格补充已合并到这一个输入。
- 先预览后生成:点击「生成套图预览」只输出计划(各用途与数量),确认后才批量提交,不浪费额度。
- 商品一致性:主图之外的图片默认跟随主图锚定;可在「参考图设置」中为每种用途单独指定参考图。
- 文案语言:内置中文、英语、日语、韩语等 9 种常用语言预设,也支持自定义任意语言与地区写法(生成前自动校验),随套图草稿一并保存。
- 结果管理:结果区主图居左大图展示,其余用途居右纵排;支持单张重新生成、下载、加入画廊或对话;一键导出 JSON 清单,记录每张图的提示词与参数,方便复现。
- 历史与恢复:套图在历史记录中按项目折叠,跨会话点击即可恢复整组结果继续编辑。
电商模式说明
- 电商模式目前为预览功能,入口带有「预览」角标;生成仍走已配置的生图渠道与任务队列,额度消耗与普通生成一致。
- 套图数量与结构可自由组合,规格图、使用图等用途默认关闭,点击卡片即可启用。
- 未上传商品图时主图会按文字描述生成并作为锚定基准,建议先上传清晰的主图获得更高一致性。
文生图 / 图生图
点击“新会话 / 生图”中的“生图”Tab,工作区按“历史记录 | 生图区 | AI 对话”三栏排列:文生图一句提示词起步,图生图上传参考图精准改图;顶部导航可在普通生图、画廊、无限画布与电商模式之间切换。右侧对话面板默认收起,点击头部的「对话」按钮随时展开;参数栏宽度可拖拽调整并自动记忆。
生成参数与效率
- 生成参数:9 档比例(1:1 至 21:9)、4 档清晰度(自动/1K/2K/4K)、一次 1–4 张、细节等级透传。
- 任务队列:生成由宿主进程排队执行,画布上方的任务托盘可随时取消,失败后一键重试,长任务不会卡住面板。
- 全屏预览:滚轮或快捷键缩放(0.5–3x)、←/→ 前后翻页、复制提示词、下载、加入对话或画廊、一键作为下一次图生图的参考。
- 历史记录:保留提示词、模型与参数(最近 50 条),支持关键词、模型、比例筛选,点击即可恢复参数。
- 图生图参考图:支持本地上传或拖拽(≤10MB),也可从结果卡、全屏预览、历史和画廊一键转为参考图。
- 灵感案例:空画布自动刷出一批随机模板卡片,点击即把完整提示词填入左侧,不满意点「随机」换一批。
连续编辑:加入对话 → 继续编辑
开启“允许 Agent 调用生图”后,从生成到修改都在 DSH 内完成:
| 步骤 | 在哪操作 | 发生什么 |
|---|
| 生成 | 在对话里直接说,或在生图区输入提示词 | Agent 调用 generate_image,或工作台提交任务,由宿主排队执行 |
| 查看 | 工具结果旁 / 工作台画布 / 全屏预览 | 图片内联显示在对应位置,支持缩放、翻页、复制提示词 |
| 加入对话 | 结果卡或画廊点“加入对话” | 图片进入当前会话,自动适配附件限制,无需手动上传 |
| 继续编辑 | 对 Agent 说,或输入 /edit_image … | 以上一张成图为参考提交图生图,只需描述要改的地方 |
两种继续编辑的方式:
| 直接对 Agent 说 | /edit_image 斜杠命令 |
|---|
| 怎么用 | 在对话里描述修改要求,如“把背景改成夜景” | 输入 /edit_image 把背景改成夜景 |
| 背后发生什么 | Agent 携带该图片的引用调用 edit_image 工具提交图生图 | 命令直接调用插件配置的图片模型 |
| 是否经过对话模型 | 是,可结合上下文理解模糊意图 | 否,对话模型不支持图片输入时同样可用 |
| 适合 | 需求复杂、需要 Agent 记住整体目标 | 快速、明确的一次性修改 |
两种方式都不必重新上传图片,也不必重新描述全部需求——第二轮只需要说变化。
可直接使用的案例提示词
第一轮,让 Agent 生成一张项目海报:
帮我为 dsh-imagegen 设计一张 16:9 横版项目海报。深色未来感背景,青蓝和紫色霓虹光效;画面中心展示 AI 生图工作台,包含赛博城市、人物肖像、雪山和抽象流体四张示例图;下方展示 Agent 对话生图、多模型对比和画廊三个能力区。整体干净、专业、有产品发布感,不要杂乱的小字。
第二轮,基于刚才的成图继续修改:
保留当前海报的整体构图和深色科技风。把中心的赛博城市替换成更明亮的夜景,增强青蓝与紫色的边缘光;底部“Agent 对话生图”区域更突出,其他两项保持弱一级。不要重新生成一张完全不同的海报。
Agent 会把上一轮图片作为参考图提交图生图任务,因此第二轮只需要描述变化。
Agent 生图工具参考
| 工具 | 用途 |
|---|
generate_image | 提交文生图任务;完成后在工具结果旁显示图片,并返回可继续编辑的图片引用。传 wait_for_completion: false 可改为后台模式,稍后用 get_image_generation_task 查询。等待上限 300 秒,超时自动取消。 |
edit_image | 以已有图片为参考提交图生图任务;引用需原样传入之前工具返回的图片对象。 |
get_image_generation_task | 查询任务状态;完成时显示图片并返回下一步编辑所需的引用。 |
cancel_image_generation_task | 取消排队中或正在执行的任务。 |
配置了多个生图模型时,Agent 会先询问你想用哪个,而不是擅自选择;未配置 API 地址、密钥或模型时,会明确引导到「设置 → 生图配置」,不会静默失败。
多模型并列对比
同一个提示词在不同模型上往往呈现完全不同的构图、质感与文字处理。打开“多模型对比”,勾选多个已配置模型,插件会以相同参数提交任务,并在画布和全屏预览中并列展示,方便挑出真正适合当前任务的模型。
对比相关的细节
- 画布显示每个任务的进度与用时,可进入全屏并列对比。
- 对比生成的多条历史在历史记录中自动折叠为一组(显示模型列表与总图数),点“恢复”会连同对比模型选择一起回填,也可整组删除。
- 对比任务在宿主队列中并行执行,与普通任务共用同一条队列,取消、重试、历史语义一致。
提示词增强
只有一句“画只猫”也想出好图:点击增强按钮,插件会把简短想法发给一个对话模型扩写成结构完整的生图提示词,再提交生成;增强模型可复用生图 API 凭据。未配置增强模型时会弹窗引导,并自动打开设置页的对应卡片。
模板库
随插件内置两个来源共 980 余条 gpt-image-2 提示词案例(含参考图),没有灵感时可以先看看别人怎么写。
- 多来源标签页:「精选案例库」(vibeui.top 镜像)与「沧河案例库」(gpt-image2.canghe.ai)相互独立,后续会接入更多来源。
- 案例详情包含参考图、作者署名与原链,可复制或一键回填到生图输入框;收藏持久化在本机,「★ 收藏」筛选随时回看。
- 支持按来源“刷新本库”在线更新,宿主每 12 小时自动同步一次;“缓存全部图片”后离线也能浏览。
画廊
满意的图片可从结果卡、全屏预览或历史记录一键加入画廊;画廊中的图片也能直接加入当前对话,再用 /edit_image 修改。画廊为持续积累作品设计:左侧筛选,右侧瀑布流或整齐网格,点击任意图片即可打开大图预览。
- 关键词搜索;按生成模式、模型、比例和自建标签过滤,分类侧栏带数量统计。
- 瀑布流 / 整齐网格两种视图,支持最新、最早排序。
- 标签可新建、编辑、删除;多选图片后可批量打标签、批量下载,或导出 JSON 元数据作为备份。
- 收藏由 DSH 宿主持久化保存,跨同一宿主的浏览器/设备可见;同一图片内容按哈希去重,不会重复加入。
配置模型
打开「设置 → 生图配置」。每个提供方都有独立的 API 地址、密钥和模型目录,可同时配置多个服务;预置了 OpenAI、智谱、xAI、字节火山方舟(Seedream)、阿里云百炼(Qwen-Image)、MiniMax(image-01)等常用渠道,也可添加任意自定义 OpenAI 兼容渠道。
| 配置项 | 说明 |
|---|
| 提供方 | 预置提供方可直接选择,也可添加自定义渠道。 |
| API 地址 | OpenAI 兼容接口根地址,例如 https://api.openai.com/v1,插件会自动追加图像接口路径。 |
| API 密钥 | 每个提供方单独配置;密钥仅保存在 DSH 宿主侧,浏览器与 Agent 都拿不到明文。 |
| 模型目录 | 保存地址和密钥后点击“检测可用模型”,插件会过滤聊天、Embedding 等非图片模型;没有 /models 的网关可手动添加并设置别名。 |
| 提示词增强模型 | 可选。选择一个支持 /chat/completions 的模型,通常可复用生图 API 凭据;电商模式的「AI 帮写」也使用它。 |
| 本地图片存储目录 | 可在设置中指定历史记录、素材库和无限画布图片的本地根目录;留空使用 ~/.dsh/dsh-imagegen。修改后新图片写入新目录,已有数据不会被删除。 |
| 允许 Agent 调用生图 | 默认开启。关闭后 Agent 不能提交、查询和取消任务,侧边栏工作台不受影响。 |
关于“检测可用模型”
- 优先读取上游返回的能力字段,并结合命名启发式(image / flux / seedream / nanobanana / kolors…)过滤非图片模型,但仍建议只勾选你的上游实际支持生图的模型。
- 支持用尚未保存的地址和密钥先探测、确认可用后再保存。
- 未被识别的 OpenAI 兼容图片模型仍可手动加入清单,按通用协议尝试调用。
已适配的接口与模型家族
- OpenAI 兼容接口:支持
/images/generations、/images/edits 和 { data: [{ b64_json | url }] } 格式响应。
- 异步两步式接口(apimart.ai / apib.ai 等):OpenAI 兼容渠道的
/images/generations 若返回 { data: [{ status, task_id }] } 提交结果,插件会自动轮询 GET /v1/tasks/{task_id}(指数退避,最长 240 秒)直到完成,自动展开 url 数组并下载成图;兼容 submitted / pending / processing 与 completed / succeeded 等常见状态词,上游失败原因原样透传,取消任务会同步中断轮询。无需专用预设,任意 OpenAI 兼容渠道自动生效。
- Grok Imagine:原生支持
grok-imagine-image 与 grok-imagine-image-2.0(地址 https://api.x.ai/v1),图生图使用其 JSON image_url 协议,比例和清晰度映射为 aspect_ratio 与 resolution。
- Nano Banana(谷歌 Gemini 图像系列):内置
nanobanana2 / nanobanana2-lite / nanobanana-pro(也识别官方 gemini-3.x-image* ID),清晰度映射为 image_size(1K/2K/4K)。
- Seedream(字节跳动生图系列):内置
seedream-5.0-pro(也识别 seedream-4.x、doubao-seedream-…),文生图与图生图统一走 /images/generations,参考图以 JSON image 数组发送。
- Qwen-Image(通义千问):内置阿里云百炼渠道,使用
https://dashscope.aliyuncs.com/api/v1 的 DashScope 原生 multimodal-generation 接口(不是 OpenAI 兼容接口),支持 Qwen-Image 2.0 / 3.0 系列文生图与图像编辑,比例自动映射为 宽*高 尺寸。该渠道不能复用于提示词增强。
- 智谱 GLM-Image:内置
glm-image,文生图质量参数映射为 hd;当前不支持图生图,选择编辑模型时会被自动排除。
- MiniMax image-01:内置 MiniMax 官方渠道,使用
https://api.minimax.io/v1(国内站 https://api.minimaxi.com/v1)的原生 /image_generation 接口(不是 OpenAI 兼容接口)。支持 1:1 / 16:9 / 4:3 / 3:2 / 2:3 / 3:4 / 9:16 / 21:9 宽高比,一次最多 9 张,图生图以单张参考图作为 subject_reference(人物/主体参考)发送——它是主体一致性参考而非像素级编辑,适合“同一人物换场景”,不适合局部修图。MiniMax 的 /models 只列出聊天模型,请直接使用预填的模型目录。
- 后续模型:未被识别的 OpenAI 兼容图片模型可手动添加;厂商专属鉴权或请求协议需要单独适配。
数据与安全
- API 请求由 DSH 宿主进程代理,浏览器不直接连接上游:没有 CORS 问题,密钥不会出现在前端;宿主路由仅监听本机回环地址并校验同源请求。
- 密钥保存于本机 DSH 设置中,设置页面仅展示“已配置”状态。
- 历史、画廊和图片数据保存在宿主的
~/.dsh/dsh-imagegen/,由你控制;画廊图片按内容去重,模板展示图经宿主同源代理按需拉取与缓存,文件访问有严格白名单。
- 画布文件节点上传的文件(≤50MB)以内容寻址保存在同一数据目录,脚本与可执行扩展名被拒绝;预览只在宿主侧解码(文本 / 表格 / 文档正文 / 压缩包目录),只有图片、PDF、音频、视频会在显式
inline 请求下以内联响应返回,且响应带 X-Content-Type-Options: nosniff,其余资源一律以下载方式返回。
- 运行技能会把所选节点的内容(文本、图片或文件)发送到「提示词增强」所配置的聊天模型;重任务技能会启动一个拥有本机文件读写与命令执行能力的无头 Agent,并把你选择的技能正文注入它的上下文。请在运行前确认节点内容不敏感、且已了解该技能会做什么。
image-to-editable-ppt 之类的第三方技能由其自身文档决定外部依赖(OCR Token、图片后端等),这些凭据由该技能管理,本插件不读取也不上传它们。
- 图生图会把参考图发送到当前渠道的上游 API,请确认渠道服务商的数据处理政策,不要上传敏感图片。
- 生图会消耗上游 API 额度。图片内容由上游模型生成,可能出现不准确、不适宜或不符合预期的结果,请在使用前人工检查。
- API 密钥属于敏感信息,请不要提交到 GitHub Issue、日志、截图或 README;发现密钥泄露时应立即在上游服务商处轮换。
社区与支持
欢迎加入 QQ 群,一起交流 DSH、AI 生图和插件使用体验,也欢迎分享提示词、工作流与改进建议。
扫码加入 dsh-imagegen QQ 交流群
本地开发
pnpm run typecheck
pnpm run build
pnpm run watch
node scripts/smoke.mjs
改完源码后要装进本机 GUI 验收,打一个本地 tgz 再覆盖安装即可(面板不会热更新宿主半,装完重启 dsh web):
pnpm pack --pack-destination . # 生成 dickpy-dsh-imagegen-<版本>.tgz
dsh plugin --profile web add ./dickpy-dsh-imagegen-<版本>.tgz
许可证
Apache-2.0