dsh-plugin
DayuanJiang/next-ai-draw-iodsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
在 DSH 内直接文生图/图生图:对接 OpenAI 兼容图像接口,提供 Agent 生图工具、多供应商自动降级,以及带生成历史的侧栏工作台。
🎨 文生图 / 图生图 / 生成历史 / 一体化设置 —— 与 dsh-image-vision 同系列的 DSH 图像插件
核心思想:在 DSH 里直接生图,不离开对话。插件通过宿主进程安全代理 OpenAI 兼容的图像生成接口(/images/generations 文生图、/images/edits 图生图),在侧边栏提供三栏生图工作台;同时把 generate_image 工具注册给 Agent——在对话框里让模型直接生图,结果自动进入面板历史。
🎯 与视觉插件互补
dsh-image-vision 负责「看懂图片」,本插件负责「画出图片」:生图面板的图生图参考图、历史记录里的图片,都能直接配合视觉插件精读。两者设置页 UI 完全一致,配置体验统一。
/images/edits)。generate_image 工具,对话框里模型可直接生图;生成成功后自动写入面板历史。edit),自动改用同供应商的生图模型,不再报 Missing required key: image。~/.dsh/plugin/dsh-image-create/images/,index.json 记录提示词与参数,最多保留 50 条;支持查看、恢复参数、删除、清空;面板历史区显示「图片保存于:实际路径」。方式一:一条命令安装最新 Release(推荐,无需源码/依赖,始终是最新版)
dsh plugin --profile web add https://github.com/xiaoyuink/dsh-image-create/releases/latest/download/xiaoyuink-dsh-image-create-latest.tgz
上面的 URL 永远指向最新版本(
/releases/latest/自动重定向到最新 Release 的资产),无需改版本号。若想安装指定版本,把latest换成版本号即可,例如:.../releases/download/v1.4.1/xiaoyuink-dsh-image-create-1.4.1.tgz升级更简单:打开 DSH 设置 → 生图插件,插件会自动检测 GitHub 新版本并一键更新,无需手动改 URL 重装。
方式二:GitHub 仓库开发模式(link:,代码改动重启即生效,适合二次开发)
# 建议在 ~/.dsh 下新建 plugin 目录,统一存放插件本体
mkdir -p ~/.dsh/plugin
cd ~/.dsh/plugin
# 克隆仓库
git clone https://github.com/xiaoyuink/dsh-image-create.git
cd dsh-image-create
pnpm install
pnpm run build
# 添加到 DSH 配置(link: 协议)
dsh plugin --profile web add "$(pwd)"
💡 关于插件存放位置:开发模式建议将插件本体放在
~/.dsh/plugin/目录下统一管理,也可以根据你的喜好放在任意位置,dsh plugin add时指向该路径即可。
安装完成后重启 dsh web,然后按以下步骤开始使用:
进入 DSH 设置 → 生图插件(或「设置 → 插件 → 可配置」卡片),点击 + 添加供应商:
env:VAR 或 cred:REF 引用,见下文「API Key 安全」);面板方式(推荐)
从 DSH 侧栏打开「生图插件」→ 输入提示词 → 选择尺寸/清晰度/数量 → 点击「开始生成」
Agent 方式
在对话框里对模型说:「帮我生成一张 xxx」
模型会自动调用 generate_image 工具生图,结果会同时显示在面板历史记录中。
~/.dsh/plugin/dsh-image-create/images/(历史区顶部会显示实际路径);generate_image| 参数 | 必填 | 说明 |
|---|---|---|
prompt | 是 | 详细的图片描述(风格、构图、色彩、光线、主体) |
size | 否 | auto / 1024x1024 / 1792x1024 / 1024x1792 / 1536x1024 / 1024x1536,默认 auto |
quality | 否 | auto / low / medium / high |
n | 否 | 生成数量(1–4),默认 1 |
detail | 否 | ''(自动)/ standard / high(部分网关支持) |
image | 否 | 参考图 data URL,提供后走图生图 |
渲染与视觉插件设置页一致(供应商卡片浅灰头部、状态点、就地编辑灰色卡片、框式当前使用条):
generate_image 工具、Agent 播报与生图工作台;关闭后主界面「生图插件」面板与侧栏入口消失,工具与播报注销,对话框如同没有这个插件(设置页保留,可随时重新开启)。GET /config 返回 ******** 占位);留空保存 = 保留原 Key。~/.dsh/.credentials.yaml),settings.yaml 只存 cred:IMAGEGEN_<供应商id> 引用;凭据服务不可用时拒绝保存,绝不落明文。env:VAR 环境变量引用。settings.yaml,重新保存一次该供应商即可自动迁移为 cred:REF。~/.dsh/plugin/dsh-image-create/images/~/.dsh/plugin/dsh-image-create/index.jsonadd 覆盖目录)前建议备份 images/ 与 index.json。image-create 段)image-create:
enabled: true # 总开关
announceToAgent: true # 是否向 Agent 播报插件能力
providers:
- id: p-1787158417469-sexa # 供应商唯一 id(自动生成)
name: SiliconFlow
apiBaseUrl: https://api.siliconflow.cn/v1
apiKey: cred:IMAGEGEN_p_xxx # 凭据引用(明文存于 ~/.dsh/.credentials.yaml)
models:
- id: Qwen/Qwen-Image
- id: Qwen/Qwen-Image-Edit
active: "p-1787158417469-sexa:Qwen/Qwen-Image" # 当前激活 "供应商id:模型id"
| 方法 | 路径 | 用途 |
|---|---|---|
| GET/POST | /api/dsh-image-create/config | 读/写配置(GET 返回脱敏 Key + saveDir 图片保存目录) |
| POST | /api/dsh-image-create/activate | 切换当前激活的供应商/模型 |
| POST | /api/dsh-image-create/models | 模型发现 |
| POST | /api/dsh-image-create/generate | 生成代理(文生图 / 图生图) |
| POST | /api/dsh-image-create/history/list | 历史列表 |
| POST | /api/dsh-image-create/history/append | 追加历史(Agent 工具亦调用) |
| POST | /api/dsh-image-create/history/remove | 删除一条历史 |
| POST | /api/dsh-image-create/history/clear | 清空历史 |
| GET | /api/dsh-image-create/history/image/<file> | 历史图片回读 |
| POST | /api/dsh-image-create/update/check | 检查 GitHub Release 更新 |
| POST | /api/dsh-image-create/update/apply | 应用更新(重启后生效) |
| 场景 | 请求 |
|---|---|
| 文生图 | POST {apiBaseUrl}/images/generations,JSON 请求体 |
| 图生图 | POST {apiBaseUrl}/images/edits,multipart/form-data(image、prompt、model、参数) |
| 响应 | 支持 OpenAI 兼容 `{ data: [{ b64_json |
| 多供应商 | 激活供应商失败自动降级到其他已配置供应商 |
detail 与自定义 ppi 为透传参数,部分网关支持;官方端点若不接受,引擎会自动去掉 ppi 重试。
dsh-image-create/
├── package.json # 声明 dsh.bundle.patch + dsh.client
├── cordis.patch.yml # insert 插件行(挂载 bundle)
├── src/
│ ├── index.ts # host 半:设置注册、generate_image 工具、路由挂载、播报
│ ├── routes.ts # /api/dsh-image-create/* 路由(配置/生成/历史/更新)
│ ├── engine.ts # 上游生成代理、多供应商降级、编辑模型回退
│ ├── history-store.ts # 历史与图片持久化(~/.dsh/plugin/dsh-image-create/)
│ ├── protocol.ts # 路由路径/类型/厂商模板
│ ├── updater.ts # GitHub Release 更新
│ └── client/ # 生图工作台、设置页(与视觉插件一致)、侧栏入口
├── docs/images/ # 截图
└── images/ # 运行时:生成图片保存目录(+ index.json 历史索引)
给维护者:发布 Release 时,除
xiaoyuink-dsh-image-create-<版本>.tgz外,请再上传一份固定名资产xiaoyuink-dsh-image-create-latest.tgz(内容相同),保证首页「一条命令安装最新 Release」的releases/latest/download/链接始终指向最新的包。
@deepseek-ai/dsh-*@0.2.0-rc.1(原 ^0.1.0-rc.6 被新版判定为不兼容)、@deepseek-ai/schemastery@3.18.4;dsh-code-runtime 已不在 0.2.0-rc.1 运行时中,从 devDependencies 移除(dsh-tools 的 peer dsh-ptc-runtime 由 pnpm auto-install-peers 自动装入);settings 注册由 installSection 改为「Loader 条目 Config schema + .volatile() 字段」,写入后 Loader 原地提交引用并派发 loader/volatile-update(不重挂插件),插件监听该事件重算工具/功能路由/系统提示,并通过 settings.configure({ auto: false }, ctx.fiber) 保留自带设置卡片页;设置命名空间由 image-create 改为条目 id dsh-image-create;客户端图标 IconChevronDownOutline14 → IconChevronDownOutlineRegular size={14}(0.2 图标集按笔画而非尺寸命名)。schemastery 依赖迁移为 @deepseek-ai/schemastery;settings 注册改用当前 SettingsProvider.installSection(installSettingsSection/settingsNamespace 已从 dsh-settings 移除);移除已不存在的 @deepseek-ai/dsh-client-runtime 客户端依赖(client bundle 改为外部依赖 react / dsh-client-ui-primitives,与视觉插件同款);客户端 Context 类型改用 @deepseek-ai/cordis 并补齐 renderer / session-controller / conversation 类型声明;ImageAttachmentRef 品牌类型适配(attachmentId/mediaType 按当前 dsh-attachment 品牌化)。cred:REF 未解析导致 401);候选模型按关键词标注「生图/非生图」,非生图模型禁选并支持人工纠错(⇄ 按钮翻转判定);候选列表新增搜索框(不区分大小写)与双级排序(按名称/按是否生图,各可升/降序);供应商卡片与卡片内模型支持拖拽排序(≡ 手柄,松手自动保存);预设厂商下拉对已添加厂商置灰标注「已添加」防重复;添加供应商不再自动预填预设模型(须点「获取模型列表」勾选或手动添加)。qwen-image-3.x 自动走官方 multimodal-generation 接口);修复凭据保存时 set 丢失 this 导致 API Key 无法保存的问题;修复设置页切换模型后生图面板模型下拉不同步的问题。cred:REF)、图片保存目录迁入插件安装目录并自动迁移旧数据、自定义尺寸/PPI/数量、编辑模型自动回退、Agent 生图写入面板历史、图生图拖拽不泄漏到对话框、历史区显示图片保存位置。