前言¶
寫前端、做小遊戲、搭落地頁時,經常會卡在「缺一張圖」: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 只有兩層頂層模式:
-
默認:內置
image_gen工具(推薦)
用於日常生成與編輯,不需要設置OPENAI_API_KEY。 -
回退:
scripts/image_gen.pyCLI(僅顯式使用)
只有用戶明確要求走 CLI 時才用。需要OPENAI_API_KEY與網絡訪問。提供三個子命令:generate、edit、generate-batch。
規則要點:
- 正常請求一律走內置工具,不要自動切到 CLI。
- 內置失敗或不可用時,應告知用戶存在 CLI 回退且依賴 API Key;只有用戶明確同意後再走 CLI。
- 走 CLI 時使用技能自帶的
scripts/image_gen.py,不要臨時寫一套 SDK 腳本;也不要擅自修改該腳本。
核心能力與邊界¶
適合做什麼¶
官方列出的典型場景包括:
- 從零生成:概念圖、產品圖、封面、網站 Hero 等
- 帶參考圖生成:用一張或多張圖約束風格、構圖或氛圍
- 編輯已有圖:局部重繪、光照/天氣變換、換背景、去物體、合成、透明背景
- 同一任務產出多張素材或變體
生成側還按用途做了分類 slug(如 product-mockup、ui-mockup、photorealistic-natural、illustration-story 等);編輯側則有 precise-object-edit、background-extraction、style-transfer、compositing 等。寫提示詞時保持 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.md、scripts/image_gen.py、references/ 等。安裝或更新技能後,按 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/imagegen 的 SKILL.md 仍是當前公開一手說明,且 Codex 側仍按系統技能自動安裝。寫作與實踐以該目錄內容爲準。
內置模式:保存路徑約定¶
內置模式下,Codex 默認把生成結果寫到 $CODEX_HOME/*(常見爲 $CODEX_HOME/generated_images/...),不要把系統臨時目錄當成默認落點,也不要依賴內置工具的「目標路徑參數」。需要固定位置時,流程是:先生成,再把選定文件移動/複製到目標路徑。
優先級官方約定如下:
- 用戶指定了目標路徑 → 移到該路徑
- 圖要進當前項目 → 結束前拷進工作區,並更新引用
- 僅預覽/頭腦風暴 → 可內聯展示,文件留在
$CODEX_HOME/*
注意:
- 項目真正引用的資源,不能只留在
$CODEX_HOME默認目錄。 - 除非用戶明確要求覆蓋,否則不要覆蓋已有資產;可用
hero-v2.png、item-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。支持尺寸爲 1024x1024、1536x1024、1024x1536 或 auto。透明背景需要輸出格式爲 png 或 webp。中間文件建議放 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.md、references/sample-prompts.md;CLI 細節見 references/cli.md。