首页 / 全部技能 / 内容创作 / baoyu-image-gen
内容创作 · JimLiu/baoyu-skills

baoyu-image-gen

AI image generation with OpenAI GPT Image 2.5, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs. Supports text-to-image, reference images, aspect ratios, and batch generation from saved prompt files. Sequential by default; use batch parallel generation when the user already has multiple prompts or wants stable multi-image throughput. Use when user asks to generate, create, or draw images.

L5 严管 · 隔离环境与严格审计V2 已复核逆向接口条款/合规执行命令联网读写文件Dual-pass Audit
Author JimLiuGitHub JimLiu/baoyu-skills ↗Stars 25926License MIT(仓库根 LICENSE,Copyright (c) 2026 Jim Liu;GitHub API spdx_id=MIT)Commit 1567581c26
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

实现方式是自建 provider 适配层:每个厂商一个模块,统一导出 generateImage(prompt, model, args),由主脚本按 provider 分派;请求体/尺寸/质量规则各自实现。

skills/baoyu-image-gen/scripts/main.ts
const imageData = await task.providerModule.generateImage(task.prompt, task.model, task.args);
这里在做什么:把 12 家图像 API 的差异(尺寸语法、参考图支持、编辑接口)收敛成一个内部接口,主脚本只负责选 provider、解析参数、重试与落盘。

provider 自动选择靠『哪些 key 存在』判定,codex-cli 被明确排除在自动选择之外。

skills/baoyu-image-gen/scripts/main.ts
const hasGoogle = !!(process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY);
SKILL.md 对应条款:`5. `codex-cli` is **never auto-selected** — set `default_provider: codex-cli` in EXTEND.md or pass `--provider codex-cli`.`——即切换到 Codex 订阅通道必须用户显式指定。

密钥与模型配置有明确优先级链:CLI > EXTEND.md > 环境变量 > <cwd>/.baoyu-skills/.env > ~/.baoyu-skills/.env,缺 key 时按 provider 报错并给获取地址。

skills/baoyu-image-gen/scripts/main.ts
Env file load order: CLI args > EXTEND.md > process.env > <cwd>/.baoyu-skills/.env > ~/.baoyu-skills/.env
代码里 `const homeEnv = await loadEnvFile(path.join(home, ".baoyu-skills", ".env"));` 与 `const cwdEnv = await loadEnvFile(path.join(cwd, ".baoyu-skills", ".env"));` 把这两个 .env 读进 process.env(不覆盖已有值),随后各 provider 直接取 process.env。

批量并行是真的 worker 池 + provider 级闸门(并发上限与启动间隔),每张图最多重试 3 次。

skills/baoyu-image-gen/scripts/main.ts
const enoughCapacity = current.active < limit.concurrency;
常量 `const MAX_ATTEMPTS = 3;` 与 `const DEFAULT_MAX_WORKERS = 10;`;每 provider 默认如 `replicate: { concurrency: 5, startIntervalMs: 700 },`,可用 `BAOYU_IMAGE_GEN_<PROVIDER>_CONCURRENCY` / `_START_INTERVAL_MS` 覆盖。批量模式在 --batchfile 含 2+ 任务时自动开启。

批量任务由 JSON 文件驱动,另带一个组装器把 outline.md + prompts/ 目录拼成 batch.json,服务于文章配图流水线。

skills/baoyu-image-gen/SKILL.md
# Build a batch file from outline.md + prompts/ (e.g. baoyu-article-illustrator output)
对应命令:`scripts/build-batch.ts --outline outline.md --prompts prompts --output batch.json --images-dir attachments`。

codex-cli provider 不用 API key,而是 spawn 本地 codex CLI(订阅登录态)并跑同目录的 codex-imagegen 包装脚本;包装层会校验本轮是否真的调用过 image_gen。

skills/baoyu-image-gen/scripts/providers/codex-cli.ts
const child = spawn(command, args, { stdio: ["ignore", "pipe", "pipe"] });
SKILL.md 说明 `The provider spawns the bundled `scripts/codex-imagegen/main.ts``;校验逻辑在 codex-imagegen/main.ts(`image_gen was not invoked (no image_gen event in stream; ${ver.reason})`),并读过 `$CODEX_HOME/generated_images/<threadId>` 目录确认本轮产物。

参考图身份保持不是玄学,SKILL.md 给出具体提示词纪律:短硬的身份保持句 + 明确允许改动的维度,避免把参考图换成一段泛化描述。

skills/baoyu-image-gen/SKILL.md
Do not redesign it or create a similar-looking new subject.
并给出反例说明:长串人脸描述会让模型合成新人物而非保持参考身份;另建议 2-4 张精选参考图、不要把新生成结果再当参考(漂移叠加)。

质量与尺寸有两套映射:预设 normal/2k(默认 2k)映射到各家参数;OpenAI 原生走 quality=medium/high 与 2048px 级合法尺寸,并约束 16 的倍数/最大边/长宽比。

skills/baoyu-image-gen/SKILL.md
width/height must be multiples of 16, max edge 3840px, ratio no wider than 3:1
Google/OpenRouter 另有 --imageSize 1K|2K|4K;flash-lite 只出 1K,传 2K/4K 会被 clamp 并告警。

2核心能力

01多 provider 文生图(Google/OpenAI/Azure/OpenRouter/DashScope/Z.AI/MiniMax/Jimeng/Seedream/Replicate/Agnes/codex-cli)
02参考图(--ref)驱动的编辑/身份保持,按 provider 能力校验(不支持的组合直接报错并给修正提示)
03批量并行生成(worker 池 + provider 级并发/启动间隔 + 每图 3 次重试 + 汇总成功/失败原因)
04batch.json 工作流与 build-batch.ts 组装器(outline + prompts → batch 文件)
05模型解析优先级与 per-provider 覆盖(CLI/EXTEND.md/env 三层 + <PROVIDER>_IMAGE_MODEL)
06EXTEND.md 偏好体系(默认 provider/质量/比例/尺寸/各 provider 默认模型/批量上限),另有旧路径 baoyu-imagine 的自动迁移
07OpenAI 兼容网关方言切换(openai-native / ratio-metadata)

3外部依赖

KindDependency / Endpoint
apiOpenAI Images API(gpt-image-2.5-flare 默认)
apiAzure OpenAI(deployment + api-version)
apiGoogle Gemini 图像生成(gemini-3-pro-image 默认)
apiOpenRouter(/chat/completions 流程)
api阿里云 DashScope(qwen-image-2.0-pro 默认)
apiZ.AI / 智谱(GLM-Image、cogview-4)
apiMiniMax image-01
api火山引擎即梦(Jimeng,V4 签名,AccessKey/SecretKey)
api火山引擎 ARK / Seedream(豆包)
apiReplicate(nano-banana / seedream / wan 等家族)
apiAgnes
clicodex CLI(本地订阅登录态;codex exec 通道)
clibun(运行 TS 脚本;缺 bun 时 npx -y bun)

4管控建议与判定依据

建议配套管控措施
面向 Agent
隔离环境,逐次授权
面向管理者
严格授权、全量审计、合规确认
判定依据(文件路径与关键语句摘要)
  • SKILL.md / 脚本: 调用未公开或逆向工程的私有 API / 伪造客户端标识
  • SKILL.md / 脚本参数: 包含绕过自动化检测、关闭宿主沙箱或跳过 SSL 证书校验
  • scripts/: 执行本地脚本或命令: bun {baseDir}/scripts/main.ts(单图或 --batchfile 批量)
  • 网络端点: 声明外部网络访问: api.openai.com / *.openai.azure.com(含自定义 AZURE_OPENAI_BASE_URL)
  • 本地工作目录: 文件读写与工件输出: 按 --image/--batchfile 指定的输出路径写图片文件;批量模式写多张并按任务汇总
审计说明: 。判红属『能力/策略级』且证据在本 skill 目录内:①【安全降级+任意代码执行面】codex-cli 通道的包装脚本 `skills/baoyu-image-gen/scripts/codex-imagegen/spawn.ts` 以 `"--sandbox", "danger-full-access"` 启动 `codex exec`(关闭 Codex 沙箱),而 `scripts/codex-imagegen/main.ts` 把 `PROMPT:\n${prompt}` 逐字拼进送给该 agent 的指令,并自述 'The output and ref paths are interpolated raw into the agent instruction / sent to `codex exec --sandbox danger-full-access`',仅对 --image/--ref 路径做 shell 元字符校验——即一个来自 prompt 文件的自由文本会在无沙箱 agent 里被执行面消费。②【读凭据】主线(非 codex 分支)为自身声明用途读取 11 家 provider 的 API key(含 <cwd>/.baoyu-skills/.env 与 ~/.baoyu-skills/.env)。触发条件:① 仅在用户显式 `--provider codex-cli` 或 EXTEND.md `default_provider: codex-cli` 时命中(SKILL.md:`codex-cli` is never auto-selected);默认 provider 路径无沙箱降级,仅属橙级(读凭据 + 内容出网),但因 ① 为能力级红线,本 skill 整体记红。无逆向 API、无客户端冒充、无 TLS 降级。

5第二遍独立确认

  • [ok] 12 家 provider 的端点与默认模型 — 逐个文件核对:openai.ts(api.openai.com/v1, gpt-image-2.5-flare)、azure.ts、google.ts(gemini-3-pro-image)、openrouter.ts、dashscope.ts(qwen-image-2.0-pro)、zai.ts、minimax.ts、jimeng.ts(jimeng_t2i_v40)、seedream.ts(doubao-seedream-5-0-260128)、replicate.ts(google/nano-banana-2)、agnes.ts(agnes-image-2.5-flash)、codex-cli.ts;与 SKILL.md 描述一致。
  • [ok] 密钥读取清单 — SKILL.md 的 Environment Variables 表逐项在代码中命中对应 process.env 读取;另有 <PROVIDER>_BASE_URL 覆盖(jest 风格测试里也验证了 base URL 拼接)。
  • [ok] codex-cli 存在 --sandbox danger-full-access(安全降级) — skills/baoyu-image-gen/scripts/codex-imagegen/spawn.ts 内 args 含 '"--sandbox"' 与 '"danger-full-access"';同目录 main.ts 注释与 assertSafePath 佐证该指令会被直接交给 codex。
  • [ok] prompt 被逐字插入无沙箱 agent 指令 — codex-imagegen/main.ts 的 buildInstruction 返回模板内含 'PROMPT:' 后接 ${prompt},逐字使用;main.ts:104-109 注释说明只对 output/ref 路径做元字符校验,未覆盖 prompt 内容。
  • [ok] codex-cli 不会被自动选中(红线触发条件) — SKILL.md Provider Selection 第 5 条与 main.ts 的 has* 判定均不含 codex-cli;需显式 --provider 或 EXTEND.md。
  • [ok] 批量并行与重试参数 — main.ts 常量 MAX_ATTEMPTS=3、DEFAULT_MAX_WORKERS=10、provider 级 concurrency/startIntervalMs 表(codex-cli 为 concurrency=1/2000ms),与 SKILL.md 文案一致。
  • [ok] 『Codex OAuth 不等于 API key』的说明与代码一致 — SKILL.md 明写不要把 Codex OAuth token 塞进 OPENAI_API_KEY;代码中 openai provider 只读 OPENAI_API_KEY,codex-cli 走独立 spawn 通道,未混用。
  • [discrepancy] 红线判级与上游口头结论的关系 — 批4 口径曾一度把 image-gen 判为 orange(理由假设『无绕过/降级』)。本目录 evidence 与该假设不符:目录内确含 `--sandbox danger-full-access` 与 raw prompt 插值(上方两条 ok)。故按『证据优先』记 red,并在 reason 写明触发条件(仅 codex-cli 通道);默认 provider 路径仍为橙级行为。

6结论

  • provider 覆盖广且各自贴合厂商规则(尺寸语法、参考图支持、鉴权与签名),换家只改参数不改流水线。
  • 批量出图是工程化的:worker 池 + provider 级并发与启动间隔 + 每图 3 次重试 + 逐图失败原因汇总。
  • 凭证/模型解析优先级明确,且专门文档纠正『Codex OAuth 当 API key 用』这一常见误用。
  • 参考图身份保持给了可操作的提示词纪律,而不是泛泛而谈。
  • codex-cli 通道让无 API key 的用户也能用订阅额度出图,并有产物校验(确认本轮真的调用过 image_gen)。
  • 适合: 适合需要多厂商比价/比质量的出图工作流,和已有成组 prompt 文件(文章配图、漫画分镜、封面批量)的用户;也适合只有 Codex 订阅、没有 OpenAI API key 但想批量出图的人(走 codex-cli,且理解其沙箱设置)。作为其他 skill 的图像后端时(如 baoyu-article-illustrator、baoyu-infographic)也能统一重试/缓存/限流。
    不适合: 不适合把不可信来源的 prompt 直接喂给 codex-cli 通道的场景(danger-full-access + 逐字插值);不适合要求零密钥落盘或企业内网禁止出网的环境;不适合需要严格成本上限与确定性计费的批量生产(无预算闸门、默认多次重试);也不需要它的用户可改用宿主原生图像工具。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload baoyu-image-gen.tar.gz
    sha256: 4faafab87aede136…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 1567581c26.