用 Codex 的 imagegen Skill 在編碼流程裏生成位圖素材

前言

寫前端、做小遊戲、搭落地頁時,經常會卡在「缺一張圖」:Hero 背景、產品 Mockup、精靈圖、透明摳圖。以前常見做法是切到獨立繪圖工具生成,再下載、重命名、拷進倉庫;或者先用 SVG/HTML 佔位,後期再換真圖。流程一長,文案、佈局和素材就容易脫節。

OpenAI 把圖像生成能力封裝成了 Agent Skill:imagegen。它掛在 Codex 的 .system 技能目錄下,最新版 Codex 會自動安裝。核心思路很直接——在對話裏說明要什麼位圖,由內置 image_gen 工具(或顯式啓用的 CLI)產出 PNG 等光柵資源,再按規則落到項目目錄。本文依據官方倉庫中的 SKILL.md 與 CLI 參考整理其能力、啓用方式與典型用法。

這是什麼

imagegen 是面向 Codex 的系統級 Skill,官方路徑爲:

https://github.com/openai/skills/tree/main/skills/.system/imagegen

定位可以概括爲一句:在任務需要 AI 生成的位圖(照片、插畫、紋理、精靈圖、Mockup、透明摳圖等)時,用結構化流程生成或編輯圖像;若更適合改倉庫裏已有的 SVG/矢量/HTML/CSS,則不要走這條路徑。

倉庫 README 寫明:skills/.system/ 下的技能會隨最新版 Codex 自動安裝,一般不需要再用 $skill-installer 單獨裝。Skill 本體是標準的 SKILL.md + scripts/ + references/ 目錄結構,符合 Agent Skills 開放格式;但內置 image_gen 工具與 $CODEX_HOME 保存約定是 Codex 側能力,使用時以 Codex 環境爲準。

兩種工作模式

官方文檔寫得很清楚,Skill 只有兩層頂層模式:

  1. 默認:內置 image_gen 工具(推薦)
    用於日常生成與編輯,不需要設置 OPENAI_API_KEY

  2. 回退:scripts/image_gen.py CLI(僅顯式使用)
    只有用戶明確要求走 CLI 時才用。需要 OPENAI_API_KEY 與網絡訪問。提供三個子命令:generateeditgenerate-batch

規則要點:

  • 正常請求一律走內置工具,不要自動切到 CLI。
  • 內置失敗或不可用時,應告知用戶存在 CLI 回退且依賴 API Key;只有用戶明確同意後再走 CLI。
  • 走 CLI 時使用技能自帶的 scripts/image_gen.py,不要臨時寫一套 SDK 腳本;也不要擅自修改該腳本。

核心能力與邊界

適合做什麼

官方列出的典型場景包括:

  • 從零生成:概念圖、產品圖、封面、網站 Hero 等
  • 帶參考圖生成:用一張或多張圖約束風格、構圖或氛圍
  • 編輯已有圖:局部重繪、光照/天氣變換、換背景、去物體、合成、透明背景
  • 同一任務產出多張素材或變體

生成側還按用途做了分類 slug(如 product-mockupui-mockupphotorealistic-naturalillustration-story 等);編輯側則有 precise-object-editbackground-extractionstyle-transfercompositing 等。寫提示詞時保持 slug 一致,便於 Agent 按同一套模板擴寫。

不適合做什麼

官方同樣劃了邊界,避免「什麼圖都生」:

  • 擴展或對齊倉庫裏已有的 SVG/矢量圖標、Logo 體系、插畫庫
  • 用 SVG、HTML/CSS、canvas 就能更好完成的簡單圖形、示意圖、線框、圖標
  • 源文件本身已是可編輯的原生格式,只需小改
  • 用戶明確要確定性的代碼側輸出,而不是生成位圖

簡單說:位圖資產用 imagegen;矢量與代碼原生視覺繼續改倉庫裏的文件。

安裝與啓用

在最新版 Codex 中,.system 下的 imagegen 會自動安裝。確認技能是否可用,可在 Codex 中查看已加載 Skills,或檢查本機技能目錄(默認 CODEX_HOME~/.codex):

export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
ls "$CODEX_HOME/skills/.system/imagegen"

目錄中通常包含 SKILL.mdscripts/image_gen.pyreferences/ 等。安裝或更新技能後,按 Codex 文檔要求重啓會話,以便重新加載。

若內置工具不可用、且你明確要走 CLI 回退,先準備依賴與密鑰:

# 官方推薦在 uv 管理的環境中安裝
uv pip install openai
# 僅在需要縮小輸出圖時可選
uv pip install pillow

# 在本機環境變量中配置,不要把完整 Key 貼進對話
export OPENAI_API_KEY="你的密鑰"

CLI 入口可固定爲:

export IMAGE_GEN="$CODEX_HOME/skills/.system/imagegen/scripts/image_gen.py"

密鑰可在 OpenAI 平臺創建:https://platform.openai.com/api-keys

說明:openai/skills 倉庫 README 目前標註該倉已 deprecated,新示例轉向 OpenAI Plugins 倉庫;但 .system/imagegenSKILL.md 仍是當前公開一手說明,且 Codex 側仍按系統技能自動安裝。寫作與實踐以該目錄內容爲準。

內置模式:保存路徑約定

內置模式下,Codex 默認把生成結果寫到 $CODEX_HOME/*(常見爲 $CODEX_HOME/generated_images/...),不要把系統臨時目錄當成默認落點,也不要依賴內置工具的「目標路徑參數」。需要固定位置時,流程是:先生成,再把選定文件移動/複製到目標路徑

優先級官方約定如下:

  1. 用戶指定了目標路徑 → 移到該路徑
  2. 圖要進當前項目 → 結束前拷進工作區,並更新引用
  3. 僅預覽/頭腦風暴 → 可內聯展示,文件留在 $CODEX_HOME/*

注意:

  • 項目真正引用的資源,不能只留在 $CODEX_HOME 默認目錄。
  • 除非用戶明確要求覆蓋,否則不要覆蓋已有資產;可用 hero-v2.pngitem-icon-edited.png 這類兄弟文件名。

編輯語義上,內置編輯面向「對話上下文裏已經可見」的圖(附件或本輪早先生成的圖)。若要改本地文件,需先用內置 view_image 載入上下文,再編輯;不要承諾內置工具能直接按任意文件系統路徑做帶 mask 等精細控制——那種能力屬於顯式 CLI 回退。

提示詞怎麼寫

官方建議把用戶意圖整理成結構化規格,而不是盲目加戲。共享模板大致如下:

Use case: <taxonomy slug>
Asset type: <where the asset will be used>
Primary request: <user's main prompt>
Input images: <Image 1: role; Image 2: role> (optional)
Scene/backdrop: <environment>
Subject: <main subject>
Style/medium: <photo/illustration/3D/etc>
Composition/framing: <wide/close/top-down; placement>
Lighting/mood: <lighting + mood>
Color palette: <palette notes>
Materials/textures: <surface details>
Text (verbatim): "<exact text>"
Constraints: <must keep/must avoid>
Avoid: <negative constraints>

擴充原則:

  • 用戶已經寫得很細 → 只做規範化,不擅自加創意需求
  • 用戶寫得很泛 → 可以補充構圖、用途、光影等「能實質提升結果」的信息
  • 不要擅自加未暗示的人物/物體、品牌 slogan、無關敘事
  • 編輯時反覆寫清不變量,例如「只改背景,主體與邊緣不變」

生成示例(Hero / 產品圖):

Use case: product-mockup
Asset type: landing page hero
Primary request: a minimal hero image of a ceramic coffee mug
Style/medium: clean product photography
Composition/framing: wide composition with usable negative space for page copy if needed
Lighting/mood: soft studio lighting
Constraints: no logos, no text, no watermark

編輯示例(只換背景):

Use case: precise-object-edit
Asset type: product photo background replacement
Primary request: replace only the background with a warm sunset gradient
Constraints: change only the background; keep the product and its edges unchanged; no text; no watermark

在 Codex 對話裏,也可以直接用自然語言描述需求,例如:「給落地頁生成一張陶瓷馬克杯的極簡產品 Hero,留出文案負空間,不要 Logo 和文字」,Agent 應按 Skill 規則走內置 image_gen,並把最終可用文件放進項目。

CLI 回退示例(顯式啓用時)

以下命令來自官方 references/cli.md,僅在用戶明確要求 CLI 時使用。

幹跑(不調 API、不需 openai 包):

python "$IMAGE_GEN" generate \
  --prompt "Test" \
  --out output/imagegen/test.png \
  --dry-run

生成:

python "$IMAGE_GEN" generate \
  --prompt "A cozy alpine cabin at dawn" \
  --size 1024x1024 \
  --out output/imagegen/alpine-cabin.png

編輯:

python "$IMAGE_GEN" edit \
  --image input.png \
  --prompt "Replace only the background with a warm sunset" \
  --out output/imagegen/sunset-edit.png

帶質量與輸入保真度的編輯(CLI 專有參數,不是內置工具參數):

python "$IMAGE_GEN" edit \
  --image input.png \
  --prompt "Change only the background" \
  --quality high \
  --input-fidelity high \
  --out output/imagegen/background-edit.png

官方 CLI 默認值包括:模型 gpt-image-1.5(GPT Image 系列)、尺寸 1024x1024、質量 auto、輸出格式 png。支持尺寸爲 1024x10241536x10241024x1536auto。透明背景需要輸出格式爲 pngwebp。中間文件建議放 tmp/imagegen/,成品放 output/imagegen/;目標文件已存在時需加 --force 纔會覆蓋。

批量多提示詞可用 generate-batch(必須指定 --out-dir):

mkdir -p tmp/imagegen output/imagegen/batch
cat > tmp/imagegen/prompts.jsonl << 'EOF'
{"prompt":"Cavernous hangar interior with a compact shuttle parked near the center","use_case":"stylized-concept","size":"1536x1024"}
{"prompt":"Gray wolf in profile in a snowy forest","use_case":"photorealistic-natural","size":"1024x1024"}
EOF

python "$IMAGE_GEN" generate-batch \
  --input tmp/imagegen/prompts.jsonl \
  --out-dir output/imagegen/batch \
  --concurrency 5

適用場景與注意事項

比較適合:

  • 在 Codex 編碼會話中同步產出網站/遊戲/UI 位圖素材
  • 需要參考圖約束風格,或對現有位圖做局部編輯
  • 預覽階段快速出圖,再把選定結果落入倉庫

需要注意:

  • 默認路徑是內置工具;CLI 是顯式回退,不要混用參數語義(例如 CLI 的 --quality--mask--input-fidelity 不是內置工具參數)。
  • 本地文件編輯:內置路徑先 view_image;要路徑級控制、mask 等再考慮 CLI。
  • 項目引用的最終文件必須進工作區,並回報最終路徑、最終提示詞以及用的是內置還是 CLI。
  • 迭代時一次只改一個點,並重復不變量,減少漂移。
  • 若目標是對齊現有 SVG/圖標體系,應直接改矢量或代碼,而不是強行生成位圖。

小結

imagegen 把「在編碼對話裏要一張位圖」收成可重複的 Skill:默認用內置 image_gen(無需 API Key),必要時再顯式走 scripts/image_gen.py;配合結構化提示詞與明確的保存規則,減少佔位圖與素材來回搬運。它解決的是光柵資產生產,而不是替代倉庫裏的矢量與代碼原生視覺。

官方地址:

https://github.com/openai/skills/tree/main/skills/.system/imagegen

更完整的提示詞原則與示例見同目錄下的 references/prompting.mdreferences/sample-prompts.md;CLI 細節見 references/cli.md

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜