Back to home@NinjaSln-labs

dsh-imgdraw

DeepSeek Harness 文生图插件:draw_image 模型工具 + 输入框生图按钮(异步生成/4 格网格/下载保留删除)+ /imgdraw 路由 + 持久化历史。Text-to-image for DeepSeek Harness.

Stars
0
Language
TypeScript
Created
Sep 3, 2026
Updated
Sep 3, 2026
GitHub repo

Introduction

dsh-imgdraw

English | 简体中文(中文为准,英文翻译可能滞后)

npm version License GitHub stars

DeepSeek Harness 文生图插件:输入框「🎨 生图」按钮 + 弹窗(提示词 / 尺寸 / 数量 / 后端 / 配额 / 异步生成 / 4 格网格 / 下载 / 选定保留 / 删除 / 历史重新生成),并注册模型工具 draw_image/imgdraw/ 图片路由。正式 bundle:重启不丢,随 profile 自动加载。后端:DashScope wan2.7-image(免费默认)与 SiliconFlow Qwen-Image

特性

  • draw_image 模型工具 — 同步等待生成,返回 /imgdraw/<文件名> URL 列表。支持 prompt / count / size / backend / tag 参数,AI 可直接在对话中调用。180s 超时,适合大图生成。

  • 🎨 生图弹窗 — 输入框左侧按钮 → 弹窗交互:提示词输入(可一键填入 Sin v10 头像模板)、尺寸选择(1:1 / 16:9 / 9:16 / 4:3 / 3:4)、数量选择(1–4 张)、后端切换(dashscope / siliconflow)、实时配额显示(剩余次数/总额度)。提交后异步生成(2s 轮询),结果以 4 格网格展示,每张可下载 / 选定保留(永不清理) / 删除。

  • /imgdraw 图片路由 — 直链图片访问:http://127.0.0.1:3080/imgdraw/<文件名>。历史记录跨重启持久化(~/.dsh/imgdraw/index.json,原子写入)。

  • 历史持久化与清理 — 所有 job 记录在 index.json,跨重启保留。选定保留的图片永不清理;每轮自动清理保留最新 N 张(默认 24)。支持从历史记录重新生成。

  • 多后端支持 — 配置可切换后端与模型,无需改代码。默认 DashScope wan2.7-image(免费额度),可选 SiliconFlow Qwen-Image,用尽后切 qwen-image-2.0 / z-image-turbo

安装

# npm 发布后
dsh plugin add dsh-imgdraw

本地开发(本机 web profile,指向本单库目录):

cd ~/.dsh/profiles/web
npm add dsh-imgdraw@file:/path/to/dsh-imgdraw
# 并在 package.json 的 dsh.profile.bundles 列表加入 "dsh-imgdraw",然后重启 dsh web

配置(cordis.patch.yml / profile overlay,均可选)

字段默认说明
outDir~/.dsh/imgdraw图片输出目录
keysPath~/.dsh/image-api-keys.jsonAPI keys JSON(dashscope / siliconflow 字段)
routePrefix/imgdraw图片路由前缀(无尾斜杠)
rpcPath/imgdraw-rpc浏览器 JSON RPC 路由
keepLatest24每轮清理后保留的最新文件数(选定保留的文件永不清理)
maxCount4单次最大生成数量
defaultBackenddashscope默认后端:dashscope(百炼 wan2.7-image 免费)或 siliconflow(Qwen-Image)
dashscopeModelwan2.7-image百炼模型
siliconflowModelQwen/Qwen-ImageSiliconFlow 模型
historyCap50历史记录条数上限(index.json 最多保留的 job 数)

示例:

- id: imgdraw
  name: 'dsh-imgdraw'
  config:
    keepLatest: 40
    defaultBackend: 'dashscope'

使用

  • 模型工具draw_image(prompt / count / size / backend / tag)——同步等待生成,返回 /imgdraw/<文件名> 列表。
  • 浏览器:输入框左侧「🎨 生图」→ 弹窗填提示词(可一键填入 Sin v10 头像模板)→ 生成 → 4 格网格预览 → 下载 / 保留 / 删除;「最近生成」历史跨重启持久化(~/.dsh/imgdraw/index.json)。
  • 直链http://127.0.0.1:3080/imgdraw/<文件名>

后端说明

  • 百炼 wan2.7-image(默认):DashScope multimodal-generation/generation 同步端点(国内域名优先,intl 备用);免费额度有限,用尽后建议切 qwen-image 系列或 z-image-turbo。
  • SiliconFlow Qwen-Imageimages/generations 端点,依赖账户券/余额。
  • keys 文件:~/.dsh/image-api-keys.json{"dashscope": "sk-...", "siliconflow": "sk-...", ...})。

开发

npm install --legacy-peer-deps   # peer 由宿主 dsh 提供,devDeps 供构建/类型检查
npm run build                    # tsc → lib/ + esbuild → lib/client.js
npm run typecheck                # 严格类型检查

已知坑:客户端 RPC 无 harness.handle(bundle 半无此桥),Client→Host 走同源 /imgdraw-rpc HTTP;生成必须异步提交 + 轮询(浏览器 fetch 30s 上限);动态插件重启丢失是 DSH 机制,本包为正式 bundle 不受影响。

设计决策

决策原因
正式 bundle 而非动态插件动态插件重启丢失是 DSH 机制;正式 bundle 重启不丢、随 profile 自动加载、无需重新批准
Client→Host 走同源 /imgdraw-rpc HTTPbundle Client 无 harness.handle 桥,RPC 需自建同源路由(loopback,文件名 basename 防穿越)
生成异步提交 + 2s 轮询浏览器 fetch 30s 上限,长耗时生成必须异步;draw_image 工具路径可同步等待(180s 超时)
默认 DashScope 而非 GeminiGemini 有地区限制(AI Studio "Unable to check subscription");百炼 wan2.7-image 免费额度且国内直连
本地计数配额API 无账单查询接口,先本地计数 + 手动核对,不做假对接

⭐ 支持

如果这个插件对你有帮助,欢迎到 GitHub 仓库 点个 ⭐ Star——它是我持续维护的动力。也欢迎提 issue / PR 一起改进。

贡献与发版

贡献指南见 CONTRIBUTING.md,开发流程与部署纪律见 DEVELOPMENT.md,发布流程见 .github/workflows/publish.yml

License

MIT