dsh-openai-image:为 DSH 接入 OpenAI 文字生图

前言

在 DeepSeek Harness(DSH)里做智能体时,聊天模型擅长推理与编排,却通常不具备可直接落盘的绘图能力。若再把图像服务单独接一套密钥与代理,配置和维护成本会明显上升。

下面介绍社区插件 dsh-openai-image(维护者 flytangyu)。它在 DSH 中注册 generate_image 与 list_image_models 工具,调用 OpenAI 图像 API,把生成结果写入本地文件,供网页展示或通过 QQ 发图。思路是「聊天用 DeepSeek,画图用 OpenAI」:绘图与聊天模型分离,并默认复用 DSH 已保存的 OPENAI_API_KEY。

这是什么

dsh-openai-image 是 DSH 的 OpenAI 图像生成插件,分类为模型推理。仓库见 GitHub,社区目录页见 SkillHub。当前实现以文字生图为主;参考图编辑、局部重绘、图片理解不在此插件范围内。图像额度与聊天模型额度分别计费。

插件为零运行时 npm 依赖的 ES Module,无需编译。版本以仓库 package.json 为准(资料抓取时为 1.1.0,许可证 MIT)。

核心功能

经过上面的定位,可以把已核实的能力归纳为以下几项。

  1. 文字生图:照片、插画、海报、封面等;提示词支持中文。
  2. 动态模型:list_image_models 用当前 Key 实时查询 OpenAI /v1/models,返回 gpt-image-* 与 chatgpt-image-latest;单次调用可通过 generate_image.model 指定模型,优先级为本次 model > 插件配置 model > 默认 gpt-image-2。
  3. 生成参数:默认 gpt-image-2、1024x1024、medium 质量、PNG、每次一张;支持横竖图、质量档位、透明背景、PNG/JPEG/WebP,以及一次 1–4 张。
  4. 与 DSH 集成:沿用 DSH 网络代理;经凭据服务读取 Key,支持密钥热更新;成功时返回图片 file_path,默认目录为 $DSH_HOME/generated-images(未设置 DSH_HOME 时为 ~/.dsh/generated-images)。
  5. QQ 发图:出图后配合 dsh-qqbot 与 qqbot_send_file 等工具发送;需在 cordis.patch.yml 中为 sendFile.extraRoots 配置图片目录的绝对路径。

安装与启用

需要:能运行 dsh web、Node.js 22.19 或以上,以及可调用图像模型的 OpenAI API Key。README 记载已在 macOS、Node.js 24.14.0、DSH 0.2.1-rc.5 下实测;其他 DSH 版本请先确认工具是否注册成功。

本仓库尚未发布 npm 包,请从源码安装(安装命令来自仓库 README,不是 dsh plugin add github:... 形式的臆测命令)。

1. 克隆并加入 web profile

git clone https://github.com/flytangyu/dsh-openai-image.git
cd dsh-openai-image
dsh plugin --profile web add "$PWD"

无需 npm install 或构建。请保留克隆目录,本地安装可能通过链接引用该路径。

2. 配置 OpenAI Key

在 DSH 网页的模型设置中保存 OPENAI_API_KEY。插件通过 ctx.credentials.resolve('OPENAI_API_KEY') 复用凭据;也可使用 DSH 支持的环境变量方式。配置中只写凭据名称,不要把真实 Key 提交到仓库或聊天。

3. 启动

dsh web

若安装后未见工具,重启 DSH。需要代理时,在启动前设置 HTTP_PROXY / HTTPS_PROXY 等,或写入 ~/.dsh/.env(详见仓库 README「网络与代理」一节)。

可选:在 ~/.dsh/profiles/web/cordis.patch.yml 中覆盖插件配置,例如默认模型、尺寸、超时:

- id: tool-openai-image
  name: dsh-openai-image
  config:
    model: gpt-image-2
    apiKeyRef: OPENAI_API_KEY
    quality: medium
    size: 1024x1024
    timeoutMs: 600000

典型用法

网页对话

直接在聊天中描述需求,例如:

帮我画一只在海边看日落的小鲸鱼,水彩风格,横图。

或显式提到工具:

用 generate_image 生成一张透明背景的可爱机器人贴纸,PNG 格式。

支持工具调用的 DeepSeek、OpenAI 等聊天模型均可调用 generate_image。

查询并指定模型(v1.1.0)

先让模型列出账号可见的绘图模型(调用 list_image_models,不生成图片、不缓存列表):

列出我现在可以使用的 OpenAI 绘图模型。

再指定模型出图,例如:

用 gpt-image-2.6-flare 画一只水彩鲸鱼,横图。

调用参数示例:

{
  "prompt": "一只在海边看日落的小鲸鱼,水彩插画",
  "model": "gpt-image-2.6-flare",
  "size": "1536x1024",
  "quality": "high"
}

常用字段包括:prompt(必填,1–32000 字符)、size、quality、n(1–4)、output_format、background(透明背景不能使用 JPEG)。成功时工具返回模型名与各文件的 file_path、mime_type、bytes。

QQ 侧发图

本插件只负责生成文件。QQ 场景需另行安装并配置 @tencent-connect/dsh-qqbot,并在 im-qqbot 的 sendFile.extraRoots 中加入图片输出目录的绝对路径。生成后由模型调用 qqbot_send_file 等工具发送;单独回复本机 Markdown 图片路径不会被 QQ 自动上传。

适用场景与注意

适合谁:已在 DSH 中使用 DeepSeek 等模型做对话编排,同时希望用同一套 OpenAI Key 做文生图,并在网页或 QQ 中交付图片文件的开发者。

使用注意:

  • 插件在当前 dsh 进程权限下运行;安装前应自行审阅源码与 MIT 许可证。
  • API 报错时插件不会自动换模型或自动重试收费请求;超时也不代表服务端未执行,重试可能再次计费。
  • 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本介绍以仓库 README 与 package.json 为准。

本地开发与验证可使用 npm test(不请求外网)、npm run smoke(查模型目录)、npm run smoke -- --generate(真实出图,消耗额度)。常见问题对照表见仓库 README。

结尾

dsh-openai-image 把 OpenAI 文生图收成 DSH 的两个工具,复用凭据与代理,输出可展示的本地文件,并可与 QQ 机器人串联。进一步了解请查阅 SkillHub 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

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

小夜