🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

图生图工作室 Dogwind221/img2img-studio

DeepSeek Harnessv0.1.1
Dogwind2213 天前有提交已提供中文文档扫描:含敏感能力

img2img-studio · 图生图工作室

35.5/100
综合分
8
GitHub 星标
607
npm 周下载
—/5
用户评分

数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-img2img-config
npm 源 · dsh-img2img-config 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · vision
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/24) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过

安装清单取自 plugins/dsh-img2img-config/package.json

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-img2img-config @ 0.1.1
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 16:37:03

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 76 处,展示前 53 条)
  • 读取本地文件
    lib/index.js:45
    if (existsSync(target) || !existsSync(LEGACY_STORE_DIR))
  • 读取本地文件
    lib/index.js:73
    if (existsSync(providersFile())) {
  • 读取本地文件
    lib/index.js:74
    const arr = JSON.parse(readFileSync(providersFile(), 'utf8'));
  • 写入本地文件
    lib/index.js:83
    mkdirSync(join(homedir(), '.dsh', 'dsh-img2img-config'), { recursive: true });
  • 写入本地文件
    lib/index.js:84
    writeFileSync(providersFile(), JSON.stringify(list, null, 2), 'utf8');
  • 读取本地文件
    lib/index.js:187
    if (process.env.BUN_BINARY && existsSync(process.env.BUN_BINARY))
  • 读取本地文件
    lib/index.js:198
    return candidates.find((candidate) => existsSync(candidate)) ?? null;
  • 读取本地文件
    lib/index.js:276
    detail: existsSync(qoderBundleFile())
  • 发起网络请求
    lib/index.js:310
    const res = await fetch(url, {
  • 写入本地文件
    lib/index.js:377
    mkdirSync(outDir, { recursive: true });
  • 写入本地文件
    lib/index.js:534
    mkdirSync(storeDir(), { recursive: true });
  • 写入本地文件
    lib/index.js:535
    writeFileSync(accountsFile(), JSON.stringify(store, null, 2), 'utf8');
  • 执行外部命令固定命令
    lib/index.js:701
    const out = execFileSync('reg', ['query', key], { encoding: 'utf8', timeout: 5000 });
  • 发起网络请求
    lib/client.js:3626
    setScan(await (await fetch("/dsh-img2img-config/scan")).json());
  • 发起网络请求
    lib/client.js:3796
    setResult(await (await fetch("/dsh-img2img-config/try", {
  • 发起网络请求
    lib/client.js:3890
    const data = await (await fetch("/dsh-img2img-config/providers")).json();
  • 发起网络请求
    lib/client.js:3991
    const data = await (await fetch("/dsh-img2img-config/providers", {
  • 发起网络请求
    lib/client.js:4017
    const data = await (await fetch("/dsh-img2img-config/probe", {
  • 写入剪贴板
    lib/client.js:4078
    clipboard.writeText(command).then(() => setMsg(tr("已复制命令:{p1}", { p1: command }))).catch(() => setMsg(command));
  • 发起网络请求
    lib/client.js:4275
    return await (await fetch("/dsh-img2img-config/chatgpt-usage", {
  • 读取本地文件
    lib/env.js:39
    if (!existsSync(file))
  • 读取本地文件
    lib/env.js:41
    return parseEnv(readFileSync(file, 'utf8'));
  • 读取本地文件
    lib/env.js:52
    if (existsSync(file)) {
  • 读取本地文件
    lib/env.js:53
    const text = readFileSync(file, 'utf8');
  • 读取本地文件
    lib/env.js:103
    if (existsSync(file) && readFileSync(file, 'utf8') === nextText)
  • 读取本地文件
    lib/env.js:103
    if (existsSync(file) && readFileSync(file, 'utf8') === nextText)
  • 写入本地文件
    lib/env.js:105
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    lib/env.js:108
    writeFileSync(temporary, nextText, 'utf8');
  • 写入本地文件
    lib/env.js:110
    renameSync(temporary, file);
  • 删除本地文件
    lib/env.js:113
    rmSync(temporary, { force: true });
  • 读取本地文件
    src/env.ts:42
    if (!existsSync(file)) return {}
  • 读取本地文件
    src/env.ts:43
    return parseEnv(readFileSync(file, 'utf8'))
  • 读取本地文件
    src/env.ts:55
    if (existsSync(file)) {
  • 读取本地文件
    src/env.ts:56
    const text = readFileSync(file, 'utf8')
  • 读取本地文件
    src/env.ts:94
    if (existsSync(file) && readFileSync(file, 'utf8') === nextText) return current
  • 读取本地文件
    src/env.ts:94
    if (existsSync(file) && readFileSync(file, 'utf8') === nextText) return current
  • 写入本地文件
    src/env.ts:96
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    src/env.ts:99
    writeFileSync(temporary, nextText, 'utf8')
  • 写入本地文件
    src/env.ts:101
    renameSync(temporary, file)
  • 删除本地文件
    src/env.ts:103
    rmSync(temporary, { force: true })
  • 读取本地文件
    src/index.ts:67
    if (existsSync(target) || !existsSync(LEGACY_STORE_DIR)) return
  • 读取本地文件
    src/index.ts:107
    if (existsSync(providersFile())) {
  • 读取本地文件
    src/index.ts:108
    const arr = JSON.parse(readFileSync(providersFile(), 'utf8')) as ProviderItem[]
  • 写入本地文件
    src/index.ts:116
    mkdirSync(join(homedir(), '.dsh', 'dsh-img2img-config'), { recursive: true })
  • 写入本地文件
    src/index.ts:117
    writeFileSync(providersFile(), JSON.stringify(list, null, 2), 'utf8')
  • 读取本地文件
    src/index.ts:229
    if (process.env.BUN_BINARY && existsSync(process.env.BUN_BINARY)) return process.env.BUN_BINARY
  • 读取本地文件
    src/index.ts:239
    return candidates.find((candidate) => existsSync(candidate)) ?? null
  • 读取本地文件
    src/index.ts:332
    detail: existsSync(qoderBundleFile())
  • 发起网络请求
    src/index.ts:364
    const res = await fetch(url, {
  • 写入本地文件
    src/index.ts:440
    mkdirSync(outDir, { recursive: true })
  • 写入本地文件
    src/index.ts:671
    mkdirSync(storeDir(), { recursive: true })
  • 写入本地文件
    src/index.ts:672
    writeFileSync(accountsFile(), JSON.stringify(store, null, 2), 'utf8')
  • 执行外部命令固定命令
    src/index.ts:859
    const out = execFileSync('reg', ['query', key], { encoding: 'utf8', timeout: 5000 })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

图生图工作台:视觉门控路由 + 多服务商生成(DashScope / ChatGPT-web / OpenAI / Z.AI / 豆包 / MiniMax),自动故障转移。电商套图与照片艺术风格。

plugin-v0.1.02026-10-23
dsh-img2img-config DSH 插件的预构建压缩包,无需构建步骤。 · 宿主端:lib/index.js(注册前缀路由) · 客户端:lib/client.js(输入框图片编辑停靠栏 + 设置 -> 识图与生图面板) · 打包补丁:cordis.patch.yml
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
img2img-studio · 图生图工作室 把一张图(或几张图)变成你想要的各种新图:识图 → 按风格/场景 → 按生成通道 → 出图。 面向 DeepSeek Harness / Claude Code / Codex 等智能体环境的可移植智能体技能。 界面 图片编辑器在输入框上方就地打开;下方是设置页里的「识图与生图」服务商面板(优先级、模型降级链、账号库)。 图片编辑器:编号标记、涂抹擦除、移除背景、比例与尺寸 识图与生图服务商面板:三级优先级、模型链、ChatGPT 网页账号库 架构 输入图片 ↓ 第一层:识图(多模态模型 → read_image 直接看;纯文本模型 → dsh-vision-skill 的 vision.js)结构化描述(主体/构图/色彩/材质/情绪/卖点) ↓ Step 0 路由门(出图前必问) ① 选生成通道 → ② 选风格/场景 → ③ 细化需求(尺寸/文字/参考图/数量) ↓ 第二层:生成模式文档构建 Prompt → generate_image.mjs(多服务商自动降级)→ QA → 交付 功能
展开完整文档(README 剩余 1 节)
img2img-studio · 图生图工作室

把一张图(或几张图)变成你想要的各种新图:识图 → 按风格/场景 → 按生成通道 → 出图。

面向 DeepSeek Harness / Claude Code / Codex 等智能体环境的可移植智能体技能。

界面

图片编辑器在输入框上方就地打开;下方是设置页里的「识图与生图」服务商面板(优先级、模型降级链、账号库)。

图片编辑器:编号标记、涂抹擦除、移除背景、比例与尺寸

识图与生图服务商面板:三级优先级、模型链、ChatGPT 网页账号库

架构

输入图片 ↓ 第一层:识图(多模态模型 → read_image 直接看;纯文本模型 → dsh-vision-skill 的 vision.js)结构化描述(主体/构图/色彩/材质/情绪/卖点) ↓ Step 0 路由门(出图前必问) ① 选生成通道 → ② 选风格/场景 → ③ 细化需求(尺寸/文字/参考图/数量) ↓ 第二层:生成模式文档构建 Prompt → generate_image.mjs(多服务商自动降级)→ QA → 交付

功能

- 电商模式:商品图 → 白底主图、卖点图、场景图、细节图、对比图、详情页 PDP、Amazon/淘宝等平台套图(转化驱动力诊断 + Campaign Style Lock + 平台尺寸规范 + GPT-Image Prompt 铁律)
- 照片艺术模式:editorial(编辑杂志)/ revival(白纸手绘诗意)/ fusion(融合)/ zine 三风格(zine-gathered 实景拼贴 / zine-distill 影像蒸馏 / zine-minimal 极简海报)
- ChatGPT 网页出图:没有 API key 也能用 ChatGPT 账号额度出图(浏览器自动化,references/chatgpt-web-mode.md)
- 多服务商自动降级:DashScope 通义千问(默认,性能+最新模型优先)、OpenAI 兼容 API、Z.AI GLM-Image、Seedream 豆包、MiniMax、本地 chatgpt-web 类服务、Codex CLI
- 批量并发出图、质量预设(1k/2k)、i2i 参考图、同服务商重试、身份保持参考图准则

安装

复制到 Agent 的 skills 目录(Windows 示例) Copy-Item -Recurse -Force "img2img-studio" "$env:USERPROFILE\.agents\skills\"

依赖:Node.js 18+(generate_image.mjs 本身零第三方依赖)。

可选:装自带插件(设置面板 + 图片编辑器)

技能本体(SKILL.md + references/ + scripts/)纯命令行就能用,不装插件照样出图。
想让 DSH 里出现 设置 → 识图与生图 服务商面板、以及输入框上方的 图片编辑器,再装仓库自带的 plugins/dsh-img2img-config:

$plugin = "$env:USERPROFILE\.agents\skills\img2img-studio\plugins\dsh-img2img-config"

1) 构建(宿主 tsc + 客户端 tsdown;Node 版脚本,沙箱里无需 bash)
node "$plugin\scripts\build.mjs"

2) 装配(免重启热装配;重启后由 profile 的 bundles 列表接管,双路径一致)有 dsh-super-injector 时用 dev_install_package;否则把包名加进 profile 的 dsh.profile.bundles 数组并在 node_modules 下建同名 junction dev_install_package "$plugin"

一个包装两个面,都是一次安装就有:

| 面 | 位置 | 作用 |
| 服务商面板 | 设置 → 识图与生图 | 配识图 + 生图的 API Key / 模型 / 端点 / 三级优先级 / 余额探测 / ChatGPT 网页账号额度 |
| 图片编辑器 | 输入框上方的「图片编辑」条 | 对输入框里的图片做标记 / 抠图 / 涂抹擦除 / 改尺寸,结果回填输入框 |

面板保存即写回 img2img-studio/scripts/.env(GEN_PROVIDER_ORDER、各 _API_KEY、 IMG_CHATGPT_WEB_ACCOUNTS)与 dsh-vision-skill/scripts/.env(VISION_PROVIDERS 等)——两个技能只装一个也能用(写盘前会先把目标目录建出来)。细节见 plugins/dsh-img2img-config/README.md。

dsh-vision-skill 是条件依赖,不是硬前置——按你的情况看要不要装:

| 你的情况 | 要不要 dsh-vision-skill | 原因 |
| 会话模型是多模态(read_image 可用,如 DeepSeek-V4.1-Flash) | ❌ 不用 | L1 识图直接 read_image 原生看图,不跑 vision.js、不耗外部额度 |
| 会话模型是纯文本(如 GLM-5.3) | ✅ 要 | 只有这种情况才需要 vision.js 走识图链 |
| 想把 Web 拖入的图片当参考图(i2i) | 🔸 多数情况不用 | DSH 0.1.5+ 的消息里已带 Normalized copy (read-only…) 路径,可直接当 --image;只有拿不到路径(只剩 attachmentId)时才需要 resolve_attachment.mjs,或自己拼 <DSH_HOME>\attachments\v1\objects\<hex前2位>\<hex>。注意归一化副本可能被重编码/缩放——要画质就用本地原图路径 |
| 想零配置出图(复用识图 key) | ✅ 装了更省事 | generate_image.mjs 会自动回退读 ..\dsh-vision-skill\scripts\.env |
| 已自己配好 DASHSCOPE_API_KEY / IMG_,且只做文生图 | ❌ 不用 | 生图链不依赖它 |

需要时把它放在与 img2img-studio 同一个 skills 目录下即可(或用 DSH_SKILLS_DIR 指定)。

快速开始

1. 查看已配置的生图供应商(不泄露密钥)
node "$env:USERPROFILE\.agents\skills\img2img-studio\scripts\generate_image.mjs" --list-providers

2. 文生图(默认 DashScope qwen-image-3.0-pro;零配置即用——自动复用 dsh-vision-skill 的 key,自己设 DASHSCOPE_API_KEY 也一样)
node "$env:USERPROFILE\.agents\skills\img2img-studio\scripts\generate_image.mjs" --prompt "红色苹果白底产品图" --size 1:1 --output-dir out

3. 图生图(带参考图)
node "$env:USERPROFILE\.agents\skills\img2img-studio\scripts\generate_image.mjs" --prompt-file prompt.txt --image ref.png --size 3:4 --output-dir out

4. 批量(电商套图)
node "$env:USERPROFILE\.agents\skills\img2img-studio\scripts\generate_image.mjs" --batchfile batch.json --jobs 4 --output-dir out

5. 看各 ChatGPT 账号的档位/额度(读「识图与生图」面板库,不泄露凭据)
node "$env:USERPROFILE\.agents\skills\img2img-studio\scripts\generate_image.mjs" --accounts

智能体完整工作流(识图 → 路由门 → 生成 → QA)见 SKILL.md。

开发与测试

编排脚本自测:链序 / 额度判定 / 代理 / CLI 契约(纯离线,不花钱、不联网)
node scripts\selftest.mjs --verbose

降级链 mock:本地 mock 服务让首选 429、备选 200,验证 429→备选成功 + fallbackDepth/attempts
node scripts\verify-fallback.mjs

manifest 契约:schema 合法 + 消费端拒绝未知 version / 越界坐标 / 缺 files.edited
node scripts\verify-manifest.mjs

直连引擎单测(TypeScript,bun 运行)
bun test engines\direct-api\scripts

推送与 PR 会自动跑同一套(见 .github/workflows/selftest.yml)。

生成通道

| 通道 | 说明 | 前置条件 |
| chatgpt-web@<账号> ⭐一级优先 | ChatGPT 网页出图(image 2.5);免费账号先上,用尽切自有账号 | 面板添加账号后自动同步 |
| codex-cli ⭐一级(自有账号) | 自有订阅出图(Codex 客户端 / Plus),免费额度用尽后的优先选择 | codex CLI 已登录 + imagegen 权限 |
| dashscope(API 默认) | 通义千问 qwen-image-3.0-pro,国内直连,t2i+i2i | 零配置(可复用识图 key) |
| openai | OpenAI 兼容 API(默认 gpt-image-2) | IMG_BASE_URL+IMG_MODEL+IMG_API_KEY |
| zai | Z.AI GLM-Image(中文文字渲染强,不支持参考图) | ZAI_API_KEY |
| seedream | 豆包(4.0+ 支持参考图) | ARK_API_KEY |
| minimax | 海螺 image-01(人物一致性) | MINIMAX_API_KEY |
| local | 本地 chatgpt-web 类服务 | IMG_HTTP_URL |

配置方式见 scripts/.env.example(也可直接用环境变量)。

风格清单

photo-art:editorial(编辑杂志)/ revival(白纸手绘诗意)/ fusion(默认,融合)/ zine-gathered(拾景实景拼贴)/ zine-distill(影像蒸馏)/ zine-minimal(极简海报)

ecommerce:白底主图 / 卖点图 / 场景图 / 细节图 / 对比图 / 平铺图 / 模特图 / 详情页 PDP / 社媒图 / 直播图 / 包装图 / 海报横幅

目录结构

img2img-studio/
├── SKILL.md # 主入口:L1 识图 + Step 0 路由门 + L2 生成 + 模型策略 + QA ├── references/ │ ├── routing-gate.md # 出图前询问:通道 + 风格 + 细化需求 │ ├── photo-art-mode.md # 照片艺术模式(editorial/revival/fusion/zine 三风格) │ ├── ecommerce-mode.md # 电商模式(10 步管线:转化诊断/Style Lock/铁律/详情页) │ ├── chatgpt-web-mode.md # ChatGPT 网页出图工作流 │ ├── image-editor.md # GUI 编辑器回填的编辑请求怎么落地(标记/掩码/擦除) │ └── direct-api-guide.md # 直连引擎(12 家官方 API)的 DSH 适配 ├── engines/ │ └── direct-api/ # 自有直连生图引擎(bun 运行 TS) ├── plugins/ │ └── dsh-img2img-config/ # DSH 插件:设置面板 + 图片编辑器(可选装,见「安装」) └── scripts/ ├── generate_image.mjs # 多供应商生图脚本(零依赖 Node) ├── edit_image.mjs # 图像编辑:manifest/resize/bg-remove/erase/local-edit └── .env.example # 供应商配置示例

模型策略

一级优先:ChatGPT 网页通道(image 2.5)——订阅额度出图,文字渲染与真实感最稳,且不花 API 钱。

1. 免费网页账号先上:chatgpt-web@<免费账号>(免费档不设本地上限,一路用到服务端拒绝为止)
2. 免费额度用尽 → 自有账号优先:chatgpt-web@<自有账号> → codex-cli(自有 Plus 订阅,实时读 ~/.codex/auth.json,不用 API key)
3. 订阅通道都不可用/失败 → API 通道(下面这套 DashScope 链)

实际顺序由面板「识图与生图」排的 GEN_PROVIDER_ORDER 决定(当前:免费账号 1 → 免费账号 2 → codex-cli → qoder);额度类错误不重试、立即切下一通道(isQuotaError);加 --skip-exhausted 还能按面板探测结果跳过已用尽的付费账号。

API 通道内部(性能优先 + 发布时间最近优先):

- 生图 t2i:qwen-image-3.0-pro → qwen-image-3.0 → wan2.7-image-pro → wanx2.1-t2i-plus → wanx2.1-t2i-turbo
- 生图 i2i:qwen-image-3.0-pro → wan2.7-image-pro
- OpenAI 兼容通道默认模型:gpt-image-2
- 识图(dsh-vision-skill):qwen3.8-max → qwen3.7-plus → qwen3.7-flash → qwen-vl-max → qwen-vl-plus

License

MIT

致谢与风格来源

- 风格融合自多个开源 Skill:photo-abstract-editorial、photo-revival、ecommerce-image-suite、ecom-details-image、1click-ecom-detailpage、gpt-image2-ecommerce、designkit-skills(美图)、gathered-scenes-zine(Zeejay0,个人非商业许可,商用需其授权)、gc-minimal-zine-poster
- engines/direct-api/ 为 MIT 授权的第三方代码(见该目录 LICENSE),已重命名为本技能自有通道并完成 DSH 本地化改造
预览分享卡片长什么样 ↓Dogwind221/img2img-studio
分享 · DeepSeek Harness Hub
Dogwind221/img2img-studio

img2img-studio · 图生图工作室

这是你的仓库?认领条目

回到顶部