全部技能 / 内容创作 / 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.

风险提醒:红色 · 谨慎使用AI 侦查报告
作者 JimLiuGitHub JimLiu/baoyu-skills ↗Stars 25926许可 MIT(仓库根 LICENSE,Copyright (c) 2026 Jim Liu;GitHub API spdx_id=MIT)commit 1567581c26
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 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外部依赖

类型依赖
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风险提醒 风险提醒:红色 · 谨慎使用

风险提醒:红色 · 谨慎使用
  • codex-cli 通道的安全降级与 prompt 注入面(判红主因) — `codex exec --sandbox danger-full-access` 关闭沙箱,且用户 prompt 被逐字拼进该 agent 的指令;若 prompt 来自不可信来源(网页、第三方 outline、他人提供的 prompts/ 目录),等同让无沙箱 agent 执行其内容。建议仅在 prompt 来源可控时使用该通道,或改走 API provider。
  • 多密钥长期驻留在 dotenv 文件里 — 同时支持 <cwd>/.baoyu-skills/.env 与 ~/.baoyu-skills/.env,11 家厂商密钥可能长期落盘;任一被注入到 cwd 的项目目录读取,都会把该目录下真实密钥喂给脚本。
  • 端点可被环境变量整体改写到自建网关 — <PROVIDER>_BASE_URL / OPENAI_BASE_URL / AZURE_OPENAI_BASE_URL 可由 env 或 EXTEND.md 指定,意味着密钥可能被送到非官方域名;使用前应确认这些变量未被他人预置。
  • 成本与配额不可控地放大 — 批量默认 10 workers、每图最多 3 次重试,异常时可能对同一 prompt 反复计费;高分辨率/4K 与 12 家 provider 混用时成本差异很大,无内置预算上限。
风险提醒:红色,谨慎使用。判红属『能力/策略级』且证据在本 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 + 逐字插值);不适合要求零密钥落盘或企业内网禁止出网的环境;不适合需要严格成本上限与确定性计费的批量生产(无预算闸门、默认多次重试);也不需要它的用户可改用宿主原生图像工具。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-15
    方式 A · 人下载镜像包下载 baoyu-image-gen.tar.gz
    sha256: 4faafab87aede136…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit 1567581c26;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库JimLiu / JimLiu/baoyu-skills
    Stars25926
    最近推送2026-09-10
    本 skill commit1567581c26
    许可MIT(仓库根 LICENSE,Copyright (c) 2026 Jim Liu;GitHub API spdx_id=MIT)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近