dsh-plugin-ark-image-gen:给 DSH 接上火山方舟 Seedream 的文生图与图生图

前言

DSH 本身不提供生图能力。智能体要在对话或任务里产出一张图片,就得自己对接外部图像模型,写请求、处理重试、落盘、维护提示词规范,成本不低。这个插件做的事就是把火山方舟 / 豆包 Seedream 的文生图、图生图封装成 DSH 可直接调用的模型工具,并附带一个内置技能,让模型知道怎么用它。

下面介绍这个插件:它由 zmengle 维护,分类是模型推理,GitHub 仓库是 zmengle/dsh-plugin-ark-image-gen,许可为 MIT,版本 0.1.1。

插件定位

这是一个 DSH 插件,README 里的位置说明是:给 DeepSeek Harness 两个模型工具加一个内置技能。

  • ark_generate_image:文生图 / 图生图,支持单张或多张参考图、一次出多张、固定 seed 复现。
  • ark_image_gen_status:自检工具,报告密钥是否就绪、生效模型、网关、输出目录,不发请求、不计费。

出图会落盘到输出目录,并追加写 manifest.json,记录文件名、模型、尺寸、seed、prompt、时间。

安装与启用

安装命令来自 README,两种来源都可以。下面这步把插件装进 web profile:

# npm
dsh plugin --profile web add dsh-plugin-ark-image-gen

如果要直接装源码,用 GitHub 地址:

dsh plugin --profile web add https://github.com/zmengle/dsh-plugin-ark-image-gen

装好后重启 dsh web(或桌面端)。插件行是 ark-image-gen。注意本插件对 Node 的要求是 >=18,并且 peer 依赖 @deepseek-ai/cordis、@deepseek-ai/dsh-skill、@deepseek-ai/dsh-tools,实际安装前需要确认这些依赖版本与当前 DSH 环境匹配。

配置

密钥只从环境变量或插件配置读取,不写入任何文件。

# Windows:设置环境变量后重开终端
setx ARK_API_KEY "ark-xxxx"

也可以写进 profile 补丁。下面这个补丁用 !!js process.env.ARK_API_KEY 读环境变量,避免把密钥明文留在仓库里:

- id: ark-image-gen
  config:
    apiKey: !!js process.env.ARK_API_KEY
    outDir: D:/ark-output

配置项对照如下:

环境变量 插件配置键 默认值 说明
ARK_API_KEY apiKey —(必填) 火山方舟 API Key,形如 ark-...
ARK_MODEL model doubao-seedream-5-0-flash-260915 生图模型
ARK_BASE_URL baseUrl https://ark.cn-beijing.volces.com/api/v3 网关地址
ARK_OUT_DIR outDir <工作目录>/ark-output 出图目录

outDir 等配置可以在工具参数里临时覆盖,见下一节。

典型用法

模型侧直接调用 ark_generate_image。参数如下:

参数 类型 说明
prompt string(必填) 提示词。不要用 ASCII 双引号,用「」或转义
size string "2K"(默认,沿用参考图比例)/ "4K" / "1024x1024" 这类精确尺寸
seed integer 随机种子,固定它可复现
image string[] 参考图:本地绝对路径 / http URL / data URL。单张也用数组
count integer 出几张(1-4,默认 1);多张时 seed 依次 +1
file string 输出文件名(不带扩展名),默认 ark_<时间戳>
model string 覆盖默认模型(必须是 doubao-seedream-*)
outDir string 覆盖输出目录

调用成功后的返回形如:

{
  "ok": true,
  "model": "doubao-seedream-5-0-flash-260915",
  "size": "2K",
  "files": [{ "path": "D:/ark-output/ark_1750000000000.png", "bytes": 1843200, "seed": 42 }]
}

插件同时注册技能 ark-image-gen(skills/ark-image-gen/SKILL.md),里面说明用法和踩坑表。模型可以自己发现它,也可以直接说一句「用 ark 生成一张……」触发。

行为说明

请求形态是 POST <baseUrl>/images/generations,response_format: url,watermark: false。几点实现细节:

  • 429 与 5xx 自动重试 2 次,指数退避;单次请求超时 300 秒,工具级超时 600 秒。
  • 图片按文件头(magic number)识别 png / jpg / webp 再落盘,不信任响应里的扩展名。
  • 本地参考图会转成 base64 data URL 发送,大图会显著增加请求体体积。
  • 默认模型名可能随火山方舟下线调整,遇到 404 用 model 参数或 ARK_MODEL 指定当前可用模型。

安全与适用范围

安全方面,密钥只从 ARK_API_KEY 或 config.apiKey 读取,不写入任何文件、不进日志、不进 manifest.json;ark_image_gen_status 只报告「已配置(长度 N)」,不显示密钥片段的任何字符。密钥随 Authorization 头发送,因此 baseUrl 必须是 https,明文 http 只允许 localhost / 127.0.0.1 / [::1] 的本机调试,其他地址直接拒绝。报错只带 HTTP 状态码和响应体前 400 字符,不回显请求头。参考图会以 base64 data URL 随请求发送,图片越大请求体越大,注意不要顺手把含隐私的截图发出去。

适用场景是:已经在 DSH 里跑智能体或工作流,需要稳定调用火山方舟 Seedream 出图,尤其是要让模型自己决定何时出图、出什么图的场景。

要注意两点。第一,插件运行在当前 dsh 进程权限下,装之前应检查源码与许可证,确认它满足你环境的信任要求。第二,本插件就是按 DSH「一切皆插件」的方式接入的,其能力边界就是上面的工具和技能,不涉及 DSH 核心行为。

结尾

这个插件的价值在于把「接一个外部生图模型」这件事压缩成一次安装加一份配置,出图、重试、落盘、manifest 都由插件处理,模型侧只需要按参数调用。维护者是 zmengle,分类为模型推理,许可 MIT。

目录页:https://www.skillhub.cn/plugins/zmengle/dsh-plugin-ark-image-gen

GitHub:https://github.com/zmengle/dsh-plugin-ark-image-gen

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

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

小夜