DSH Hub
dsh-tool-imagegen cover

Github-CJX/dsh-tool-imagegen

dsh-tool-imagegen

UIWorkflow0 GitHub stars· updated 2026-08-21

dsh-tool-imagegen is a community DeepSeek Harness plugin. Read the repository README before installing.

Install

npx -y @deepseek-ai/dsh plugin --profile web add @local/dsh-tool-imagegen

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-tool-imagegen DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-tool-imagegen.svg)](https://dshhub.dev/plugins/dsh-tool-imagegen)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from Github-CJX/dsh-tool-imagegen, cleaned of badges and images.

dsh-tool-imagegen

DeepSeek Harness Desktop 对话内联生图插件 — 模型在对话中自动调用 generate_image 工具,图片直接内联显示在对话框里,无需外部面板、无需手动切换。

对接任意 OpenAI 兼容的 /images/generations 接口(默认 gpt-image-2),当前模型是纯文本输入也能正常使用(含上传参考图 + 图生图)。

图生图说明:带参考图的「图生图」请求走标准 OpenAI 兼容 /images/edits(multipart form-data),文生图走 /images/generations(JSON)。对接网关时需确认上游两个接口都支持——只实现 generations 的上游可以用文生图,但图生图会失败。

特性

  • 纯对话触发 — 模型听到「帮我画 / 生图 / 生成插画」等请求时自动调用 generate_image,参数(prompt / size / n)由模型自己组织
  • 对话内联显示 — 生成的图片以卡片形式直接出现在对话流中;悬停提供 全屏查看 / 修改 / 下载 / 本地打开 四个操作:
    • 全屏查看:应用内大图查看(Esc / 点击背景关闭)
    • 本地打开:走系统默认图片查看器,无需先下载再找文件
    • 修改:一键把这张图作为参考图,输入需求即可连续修改(图生图)
  • 网络自动重试 — 上游网络错误 / 超时 / 5xx 网关故障自动重试(指数退避,最多 3 次);4xx 与参数错误不重试(重试无意义),重试耗尽后错误信息注明已重试次数
  • 双模型兼容 — 通过自定义 generated-image / uploaded-image 内容块展示图片,模型侧永远看不到图片块contentHasImage 只匹配 image 块):
    • 纯文本输入模型:不会触发 UNSUPPORTED_CONTENT,生成后可以继续正常对话
    • 图像输入模型:同样正常工作,无需任何配置
  • 上传参考图(纯文本模型专用通道) — 对话框上传按钮(仅文本模型会话显示):选择文件后不立即提交,先出现「已选图片」标记,等你输入消息后图文一并发送;模型收到信封里的图片路径,可基于它图生图
  • 一键修改 / 连续修改 — 任何一张生成图都能点「修改」直接变成待发送参考图,输入需求发送后生成新图;对新图再点「修改」即可无限连续改。对两类模型同一机制
  • 模型直接图生图(无需手动上传) — 每次生成的图片会自动在工作目录保存一份,信封把「参考图路径」告知模型;用户说「把这张图改成…」时模型直接用该路径调用 generate_image(image=路径),无需点「修改」重新上传。路径仅用于工具参数,模型被明确禁止在回复中展示
  • 存储清理卡片 — 设置 → 插件 → 可配置 →「生图存储」:显示上传文件与附件对象占用,一键清理不被任何会话引用的孤儿文件(含已删除会话的历史图片)
  • 设置页可配置 — 设置 → 插件 → 可配置 中的「生图插件」卡片:接口地址、API 密钥、模型名、默认尺寸(官方尺寸下拉)、默认张数,以及 6 个可选参数(画质/格式/背景/风格/审核/水印),每项 = 勾选框 + 可输入下拉:勾选才使用,未勾选不发送上游、模型也不可见(默认全不勾)。参数优先级:模型显式传参 > 设置页默认 > 留空用上游默认
  • 零配置迁移 — 复用旧插件 @dickpy/dsh-imagegendsh-imagegen 设置命名空间,已存在的 apiUrl / apiKey 自动继承
  • 安全设计
    • API 密钥只在宿主侧保存(settings.yaml),绝不进入浏览器,设置页不回显
    • 设置桥、附件桥、本地打开桥、存储桥均为 loopback 围栏,仅本机浏览器可访问
    • 附件桥按「会话事件里是否存在引用该附件的 generated-image 块」授权,与平台自身的附件授权模型一致;本地打开桥复用同一套授权

快速开始

# 1. 把插件目录放到 DSH 插件目录
cp -r dsh-tool-imagegen C:/Users/CJX/.dsh/plugins/

# 2. 在 desktop profile 挂载(见 docs/installation.md 的完整步骤)
#    package.json 添加依赖 + bundles,然后:
cd C:/Users/CJX/.dsh/profiles/desktop
pnpm install

# 3. 重启 DSH,在对话里说「生成一个猫咪的图片」

完整安装步骤见 docs/installation.md,问题排查见 docs/troubleshooting.md

工作原理

用户: "帮我画一只戴帽子的橘猫"
  │
  ▼
模型 ──调用 generate_image──▶ 插件宿主侧 execute()
  │                              │  读取设置(apiUrl / apiKey / model)
  │                              ▼
  │                        OpenAI 兼容 /images/generations
  │                              │  返回 b64 图片
  │                              ▼
  │                    ctx.attachments.saveImage() 存入本机附件库
  │                              │
  │                              ▼
  │              render() 产出 { type: 'generated-image', attachment, prompt, ... }
  │                              │
  ▼                              ▼
模型只看到随附的文本信封         客户端 keyed toolview 卡片
("已生成 1 张图片…")            │
                                 ▼
                   <img src="/api/dsh-tool-imagegen/attachment?session=…&id=…">
                   附件桥做会话引用检查后返回图片字节 → 内联显示

图生图 / 修改链路(参考图来源有两种,处理完全一致):

来源 A:上传按钮选文件 → 暂存 → 输入消息一起发送
来源 B:生成图点「修改」→ 直接暂存为参考图 → 输入需求发送
  │
  ▼
宿主上传桥:字节存入附件库 + 上传工作目录,向会话投递一条用户消息
  [uploaded-image 块(模型不可见)+ 文字信封(含本机路径)]
  │
  ▼
模型读到信封 → 调用 generate_image 且 image=<路径>
  │
  ▼
引擎走 multipart POST /images/edits(model / prompt / image 文件)
  │
  ▼
新图以 generated-image 块内联显示 —— 对新图再点「修改」→ 无限连续改

三个关键设计:

Related plugins