dsh-imagegen-zhenzhen
DSH image-generation plugin with native support for zhenzhen-image style async task gateways (submit + poll), including multi-reference image-to-image. Fork of @dickpy/dsh-imagegen.
- Stars
- 0
- Language
- JavaScript
- Created
- Sep 11, 2026
- Updated
- Sep 11, 2026
Introduction
dsh-imagegen-zhenzhen
为 DeepSeek Harness(dsh)准备的 AI 生图插件,
原生适配 zhenzhen-image 这类「异步任务式」生图网关(apib 系聚合网关,如 api.seedance.nz)。
它是 @dickpy/dsh-imagegen 的 fork:
生图工作台、画廊、多模型对比、无限画布、提示词模板库全部保留,只把 host 端的协议层
换成了对这类网关的原生实现。
为什么需要 fork:上游把端点路径、task_id 位置、轮询地址、结果字段都硬编码成 OpenAI 的 标准形状(
/images/generations、data[0].task_id、/tasks/{id}、result.images), 而这类网关实际是POST /image/generations→ 顶层task_id→GET /image/generations/{id}→data.data.content.image_url。差异集中在一个文件里,本 fork 把它们改了过来。
特性
| 能力 | 说明 |
|---|---|
| 文生图 | POST {base}/image/generations 提交,轮询到 SUCCESS 取图 |
| 图生图 | 本地参考图先上传到网关自带的 POST {base}/files/upload 换取公网 URL,再作为 image 提交 |
| 多参考图 | 网关的 image 字段是单值,插件会把多张图本地拼成一张网格再上传(2 张横排 / 3–4 张两列) |
| 参数映射 | 面板比例直接作为 size 透传;清晰度档位映射为 resolution(1k/2k/4k) |
| 无需桥接 | 协议适配在插件内部完成,不需要常驻代理进程,也不需要外部图床 |
| 完整界面 | 生图工作台、画廊、多模型对比、无限画布、提示词模板库(继承自上游) |
安装
# 从 GitHub
dsh plugin --profile web add github:netori/dsh-imagegen-zhenzhen
# 或从本地目录
dsh plugin --profile web add /path/to/dsh-imagegen-zhenzhen
装完重启 DSH(host 端插件不会热重载)。
⚠️ 依赖提示:本插件多图拼接用到
jimp。PNPM 不会为link:/ 本地目录安装子依赖, 所以本地安装时要补一句:cd ~/.dsh/profiles/web && pnpm add jimp@1.6.1若多图拼接报
Cannot find package 'jimp',就是漏了这步。
配置
在「设置 → 插件 → AI 生图」里添加渠道,或直接写 ~/.dsh/settings.yaml:
dsh-imagegen:
enabled: true
allowAgentImageGeneration: true
defaultChannelId: my-gateway
channels:
- id: my-gateway
name: 我的网关
apiUrl: https://api.example.com/v1
models:
- { alias: zhenzhen-image-g-v2.5-flare, id: zhenzhen-image-g-v2.5-flare }
channelSecrets:
my-gateway: "<你的 API key>"
apiUrl填基地址(含/v1),插件会自动追加/image/generations与/files/upload。- 模型 id 需匹配
/^zhenzhen-image/i才会走本 fork 的原生协议分支; 其它模型仍按上游的各族协议(Seedream / Qwen / MiniMax / Grok / Nano Banana / 智谱)处理。
用法
- 对话:说「画一张…」,Agent 调用
generate_image - 改图:把图交给 Agent 说「改成…」,或输入
/edit_image 把背景换成夜景 - 面板:侧边栏「生图」Tab —— 文生图 / 图生图、多模型对比、画廊、模板库、无限画布
已知限制
- 多图是「拼接」而非原生多图。上游端点只接受单张参考图(实测
images/image_urls/reference_images等 8 个候选字段名在平台结构体里都不存在)。拼接适合「融合多个元素」, 但对需要逐张独立理解的精细任务(如严格人脸一致性)不如原生多图。拼图总边长上限 4096px。 - 图生图多一次上传,比文生图慢约 1–2 秒。
- 面板 9 档比例未逐一验证:
1:1、2:3已验证通过;若某档被上游拒绝, 在src/engine.ts的effectiveParams()zhenzhen 分支加一张比例映射表即可。 - API key 明文存放于本机
settings.yaml(上游插件的既有行为,未改动)。 - 不要与
dsh-image-gen同时启用:两者都注册generate_image/edit_image, DSH 的工具表对重名会直接抛错。
开发
host 端必须构建(源码用了 TS parameter property,Node 的 strip-only 模式不支持)。
# 一次性准备工具链
mkdir -p ../.build && cd ../.build
npm install tsdown lightningcss lucide-react
# 构建两端(或直接双击 rebuild.cmd,它会自动软链依赖并清理)
cd /path/to/dsh-imagegen-zhenzhen
../.build/node_modules/.bin/tsdown --config tsdown.config.ts # host + client
../.build/node_modules/.bin/tsdown --config tsdown.node.config.ts # 仅 host(改后端时更快)
产物:lib/index.js(host)与 lib/client.js(浏览器端,含 __ModuleLoader__ 注册)。
改完必须重启 DSH 才会加载新的 host 代码。
目录
src/
engine.ts 协议适配核心(提交 / 轮询 / 取图 / 上传 / 多图拼接)
model-catalog.ts 模型家族识别(含 zhenzhen)
index.ts 插件入口(name / inject / Config / apply)
routes.ts, task-queue.ts, agent-image-tools.ts, ... 上游原有实现
client/ 浏览器端源码(构建产物为 lib/client.js)
lib/ 构建产物(已提交,便于直接安装)
FORK-NOTES.md 维护者笔记:改了什么、为什么、如何验证
NOTICE Apache-2.0 要求的修改声明
License
Apache-2.0(继承自上游)。修改声明见 NOTICE。 本项目为 community fork,与 DeepSeek、From Software 及上游作者均无隶属关系。