乐于分享
好东西不私藏

OpenAI imagegen Skill:不只会生图,还要知道什么时候别生

OpenAI imagegen Skill:不只会生图,还要知道什么时候别生

“帮我做张图”听着很简单。真放进一个项目里,问题很快就多了。

这是新生成,还是在原图上改?用户给的图片是编辑对象,还是只拿来参考风格?图要放进网站,最后保存到哪里?透明背景是真的需要 alpha,还是白底也行?一批图是同一个提示词的多个版本,还是十个不同资产?

OpenAI Codex 里的 imagegen Skill[1] 主要在管这些决定。

它不是一个独立的生图产品。实际生成由 Codex 内置 image_gen 能力完成;Skill 负责判断什么时候用、怎样提需求、怎么编辑和保存,必要时才退到 Python CLI。

1. 第一个判断:这件事该不该用生图

Skill 明确列了适用场景:

照片和插画
产品图和封面
网站主视觉
游戏素材
UI mockup
信息图
透明背景抠图
已有图片编辑

也列了不该用的场景。

如果项目已经有一套 SVG 图标,要补一个同风格图标,直接改矢量文件更稳。简单流程图、线框图和可编辑 UI,用 HTML、CSS、SVG 或 canvas 做,往往比生成一张位图更合适。

工具叫 imagegen,也不必把所有视觉任务都扔给生图模型。先把这条边界守住,后面少返工。

2. 第二个判断:生成还是编辑

用户给了一张图,也有两种完全不同的意思。

一种是:

把这张产品图的背景换成白色,产品本身不要变。

这是 edit。Skill 要求把不许变化的东西写成 invariants,例如产品形状、标签文字和构图都保持原样。

另一种是:

参考这张图的留白和配色,重新做一张文章封面。

这是 generate。原图只提供风格和构图参考,不是被修改的对象。

Skill 会让 Agent 给每张输入图标明角色:

edit target
style reference
supporting insert

这比笼统一句“参考一下这张图”清楚得多。

3. 默认走内置工具,CLI 只是 fallback

当前 Skill 有两条执行路径。

普通生成和编辑,默认调用 Codex 内置的 image_gen。项目需要图片时,生成完成后还要把文件移到工作区,并更新实际引用。不能让网页引用一个只存在于 Codex 临时生成目录里的文件。

另一条是 scripts/image_gen.py。它提供三个子命令:

generate
edit
generate-batch

CLI 需要 OPENAI_API_KEY,允许明确控制模型、尺寸、质量、输出格式和输入文件。Skill 规定,普通请求不能因为想控制文件名或尺寸就偷偷换到 CLI;只有用户明确要求 API、CLI 或特定模型路径时才走。

这个脚本不是图片算法本身。它用 OpenAI Python SDK 调用 Images API,再把返回结果写到本地。

4. 透明背景为什么绕了一步

内置工具没有直接暴露真正的透明背景参数。Skill 的默认做法是先生成纯色抠图背景,比如一整块 #00ff00,然后调用本地 remove_chroma_key.py 去色并生成 alpha。

流程是:

在纯色背景上生成主体
→ 检测边缘背景色
→ 生成透明通道
→ 去掉绿色溢色
→ 检查四角是否透明、主体是否完整

头发、烟雾、玻璃、液体和半透明材质很难靠色键抠干净。遇到这些情况,Skill 不允许静默换模型,而是要说明真正的原生透明需要 CLI 路径和相应模型,再由用户决定。

这段规则稍显繁琐,不过它把“看着像透明”和“文件确实有 alpha 通道”分开了。

5. Prompt 不是越长越好

Skill 提供了一套提示词骨架:

用途
资产类型
主要要求
场景
主体
风格
构图
光线
配色
准确文字
必须保留
必须避免

但它也要求按原需求的具体程度补充。

用户已经把构图、文字和限制说得很细,就只做整理,不擅自加品牌、人物或故事。用户只说“做个咖啡杯封面”,才适当补充画面比例、留白和光线。

批量生成也有一条细分:同一提示词的多个版本可以算 variants;十张用途不同的资产,要分别写十个 prompt,不能用一个 n=10 糊过去。

6. 怎么用

Image Gen 是 Codex 内置能力,不需要另外安装一个独立产品。它的官方 Skill 样例在:

https://github.com/openai/codex/tree/main/codex-rs/skills/src/assets/samples/imagegen

在项目里可以这样交代:

使用 imagegen 为这篇文章生成一张 2.35:1 封面。
参考我提供的图片,只参考白底、黑字和绿色强调线。

标题必须是“视频提示词先给素材安排工作”。
生成前先保存 prompt。
生成后把最终文件放进项目 imgs 目录,并检查中文文字。

编辑现有图片时,把不许改变的部分单独写出来,效果通常比反复强调“尽量保持”好。

7. 如果自己写一个图片 Skill

不要只放一页 prompt 技巧。至少补上四层:

  1. 1. 路由:什么任务该生图,什么任务该用 SVG、HTML 或现有设计系统。
  2. 2. 输入角色:每张图是编辑对象还是参考图。
  3. 3. 交付:尺寸、格式、保存路径、覆盖规则和项目引用。
  4. 4. 验收:文字、主体、构图、透明通道和禁止项怎么检查。

再把不同用途的 prompt 模板放到 references。主 Skill 只保留通用决定,避免每次生成一张封面都加载几十页例子。

8. 我的判断

我以前容易把生图 Skill 理解成“怎样把提示词写漂亮”。读完这份文件才发现,prompt 只占一部分。

项目里更麻烦的,是选错工具、把参考图当成编辑图、改掉不该动的主体、生成完找不到文件,或者透明背景只在白色预览里看着透明。

imagegen Skill 把这些杂事写成了规则。它没有让模型凭空多一双审美更好的眼睛,但能少掉不少交付时才发现的小毛病。对一个真正要进网站、文章或产品的图片来说,这比多加几个风格形容词实在。

     
       

引用与来源

       

[1] imagegen Skill
https://github.com/openai/codex/tree/main/codex-rs/skills/src/assets/samples/imagegen