dsh-imagegen:在 DSH 对话里用 generate_image 生图与改图

前言

在 DeepSeek Harness(DSH)里做智能体,常见需求是让模型「画出一张图」或「按参考图改一版」,而不是把用户赶到浏览器或单独脚本里。若用 MCP 再包一层生图服务,往往多一个进程、多一套运维。下面介绍社区插件 dsh-imagegen(维护者 Lujinan991,分类:模型推理):它是 DSH 原生 Cordis 插件,不依赖 MCP 包装,也不需要单独启动生图服务;智能体通过工具 generate_image 完成文生图、参考图改图和 PNG 蒙版局部编辑,结果写入 DSH 持久附件并在对话中预览。

这是什么

dsh-imagegen(npm 包名 @local/dsh-imagegen,当前资料版本 0.2.0,MIT 许可证)面向 OpenAI 兼容的 Images API:配置 baseUrl、apiKey(或环境变量)与模型等参数后,由 Host 侧调用远程 HTTPS 接口(本机 localhost/127.0.0.1 可用 HTTP)。插件在 package.json 中声明 DSH 兼容区间:

"engines": { "dsh": ">=0.2.0-rc.2 <0.3.0" }

DSH 仅按 engines.dsh 判定兼容性;出现 0.3.0 边界版本时需再核对插件是否仍适用。

目录页:SkillHub - dsh-imagegen
源码与说明:GitHub - Lujinan991/dsh-imagegen

核心功能

生图与编辑模式

  • 文生图:通过 prompt 等参数提交生成请求。
  • 改图(edit):传入 image_paths,用自然语言说明保留项与修改项;多张图可分工(例如产品图 + 色调参考)。
  • 局部编辑:在 edit 模式下额外提供 mask_path;PNG 蒙版须与首张输入图尺寸一致,透明区域表示要修改的区域。

同一提示词要多个版本时使用参数 n;不同素材应分次调用,避免在一次请求里混用无关图片。

配置与运行特性

在「插件」页面进入 @local/dsh-imagegen 详情,下半部分为「生图接口」表单;保存后写入当前 profile 的 cordis.patch.yml,下次调用 generate_image 即生效,无需重启。配置项包括 API 根地址(须含 /v1 等根路径)、密钥、默认模型(默认 gpt-image-2)、尺寸、质量、异步提交模式等;完整字段表见仓库 README。

  • size: adaptive:从提示词中的方向词推断竖版 / 横版 / 方图尺寸;无方向词时退回 auto。
  • submitMode: async:适用于返回 task_id 而非直接返回图片的服务商;插件带 ?async=true 提交并轮询任务接口。
  • fallbackEndpoints:仅在前端点确定未成交(如连接失败、429、502/503/504)时按顺序切换,避免对已可能计费的请求重试。

图片如何回到对话里

原始位图经 ctx.attachments.saveFile 保存;预览经 ctx.attachments.saveImages 成为 DSH 原生持久引用。工具结果含 image content,会话 log 可保留;对话中有加载状态、预览重试与「打开原图」。插件不直接向工作区写入二进制;需要项目资产时由智能体用授权文件工具从附件路径复制。

参考 Codex 的生图提示原则已通过独立 system prompt section 注册(不复制其内置工具或脚本)。

安装与启用

在 DSH 左侧「插件」页的安装入口填入仓库地址:

git+https://github.com/Lujinan991/dsh-imagegen.git

若会话启用了官方 plugin_manager 工具,也可请求安装:

{
  "action": "install_bundle",
  "target": "git+https://github.com/Lujinan991/dsh-imagegen.git"
}

本地开发时可改为插件目录绝对路径,或以 link: 依赖安装,源码改动在下次启动生效:

/absolute/path/to/dsh-imagegen

安装后确认插件行 dsh-imagegen 已启用。安装结果里 application 为 applied 表示已应用,restart-required 表示需重启。修改插件代码后须完全退出应用再打开(文档示例为 ⌘Q 后重启);仅在插件页切换开关不会重建浏览器侧模块表。

从 git 安装没有自动更新;升级可执行(资料原文):

dsh plugin --profile desktop add github:Lujinan991/dsh-imagegen

然后完全退出再打开;配置保存在 profile 的 cordis.patch.yml 中,按插件 id dsh-imagegen 存储,重装不丢配置。

典型用法

在对话中描述画面需求,智能体调用 generate_image。文生图示例:

{
  "prompt": "产品摄影:白色陶瓷杯放在灰色桌面,柔和侧光,保留自然材质细节,无文字、无标志。",
  "size": "1536x1024",
  "n": 1
}

参考图改图示例:

{
  "mode": "edit",
  "prompt": "仅将背景替换为海边日落;保持第一张图中的产品、外形、颜色、标志与边缘不变。第二张图仅作色调参考。",
  "image_paths": ["product.png", "style-reference.png"]
}

输入文件经 DSH ctx.fs 读取,不绕过文件权限。配置为空时插件仍可加载;仅在真正调用且缺少接口地址或密钥时返回可执行提示。

若部署上配置表单不可编辑(缺少设置 UI 或未挂载 dsh-settings),可按插件页给出的 YAML 片段写入 cordis.patch.yml 并重启;三种情况下 generate_image 仍可正常生图,缺的是界面编辑能力。

适用场景与注意

适合谁:已在 DSH 0.2.x(>=0.2.0-rc.2)上跑智能体、且具备 OpenAI 兼容生图 API(或自建网关)的开发者;希望生图与改图留在同一会话、同一套附件体系里,而不是外接 MCP 服务。

使用前请自行核对:

  • 插件以当前 DSH 进程权限运行;安装前阅读源码与 MIT 许可证,确认 API 密钥与 downloadHosts 等配置符合你的安全策略。
  • baseUrl 填错(例如缺少 /v1)可能拿到 HTML 而非 JSON,插件会指出这一点;密钥不应写进提示词、工具参数或仓库。
  • 默认模型 gpt-image-2 在资料中说明不支持与透明背景参数的原生组合时,插件会拒绝该组合,不会静默换模型。
  • 远程 API 需 HTTPS;URL 结果仅从 downloadHosts 允许的 HTTPS 主机下载,且不携带 API 密钥。

仓库 README 记载:在 DSH 0.2.0-rc.2 隔离运行时,37 项测试全部通过,且 image-api.test.js 使用本地 mock、不调用真实生图接口。

结尾

dsh-imagegen 把 OpenAI 兼容的生图与编辑收进 DSH 原生 Cordis 插件:一条 generate_image 工具链、持久附件与对话预览,并覆盖异步任务制服务商与备用端点等工程细节。社区插件与 DeepSeek / 幻方无官方从属关系;SkillHub 目录便于发现,事实与用法以 GitHub README 为准。

  • 目录页:https://www.skillhub.cn/plugins/Lujinan991/dsh-imagegen
  • GitHub:https://github.com/Lujinan991/dsh-imagegen
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜