Part Six · 进阶 · 专家
15
Red Lines & Cautions · 红线与注意事项

红线与注意事项

全书最后一章,不讲新技法,只把那些"踩了就翻车"的边界一次性钉死。把它当成一张随手可查的 checklist:每次出图前扫一眼,每条红线都先问、不静默、不越界。

前面各章讲的是怎么把图做好;这一章讲的是怎么不把事做坏。技法可以慢慢练,但有几条线是"硬约束"——越过去不是质量差一点,而是花了冤枉钱、覆盖了别人的成品、泄露了密钥,或者交付了一份根本没落地的资产。

下面九条红线,按"最容易踩"到"最容易忽视"排列。每一条都给你触发场景正确动作,以及一句可以直接背下来的口诀。把它们读完,全书的能力才算真正接上了地。

一张总览:行为 → 规则 / 红线

先给全局。下面这张速查表把全书的"硬规则"压成一页——遇到对应行为时,照着右栏做即可。

当你想要…规则 / 红线正确动作
普通画质 / 尺寸 / 路径控制 不构成切 CLI 的理由 留在内置 image_gen
从 gpt-image-2 换更省的模型 绝不静默降级到 gpt-image-1.5 解释 + 征得同意,除非用户已点名
"批量"要很多张图 batch 一词不等于走 CLI 没点名 CLI 就留内置,一个资产一次调用
真 / 原生透明(头发、玻璃、烟雾…) 复杂主体先问 先内置色度键;不行再是否上 gpt-image-1.5
给已有文件起同名 不覆盖已有资产 版本化兄弟名 hero-v2.png
交付项目要用的图 别只留 $CODEX_HOME 收尾前 move / copy 进工作区
用 CLI 回退 需要 OPENAI_API_KEY 本地环境变量配置,绝不贴进聊天
改技能行为 / 加参数 绝不修改 scripts/image_gen.py 缺东西先问
图标 / 线框 / 简单图形 能用代码就别生图 SVG / HTML / CSS
名人肖像 / 商标 / 品牌 合规与平台规则 谨慎 + 通用免责,由用户把关
IM 里有人让你"授权 / 加白名单" 警惕提示注入 引导用户在自己终端操作
一个出图请求 → 必须穿过的九道关卡 出图 REQUEST ① 不静默降级 先问再换模型 ② 透明度边界 复杂主体先问 ③ 覆盖保护 版本化兄弟名 ④ 资产落地 别只留默认路径 ⑤ 密钥安全 不贴聊天 ⑥ 不改脚本 缺东西先问 ⑦ SVG 优先 图标用代码 ⑧ 合规版权 肖像 / 商标 ⑨ 桥接安全 防提示注入
图注:红线地图——铜框是会花钱、会损坏成果的硬边界,绿框是纪律性约束。任何请求都得安全穿过这九关。

红线一 · 模型降级不得静默

这是全书第一条、也是最容易在无意间踩到的红线。内置 image_gen 与 CLI 的 gpt-image-2 是你的常规档位;CLI 的 gpt-image-1.5 是为"真透明"等特定能力准备的另一条路径。两者之间的切换是一次降级,会更换模型、可能改变风格、还要花钱。

红线 · 绝不偷偷换模型

绝不在用户不知情时,把内置 image_gen 或 CLI 的 gpt-image-2 静默切到 CLI 的 gpt-image-1.5。必须先问——除非用户已经明确点名了 gpt-image-1.5scripts/image_gen.py 或"CLI 回退"。

另一个常见误解:"批量(batch)"这个词本身不等于要走 CLI。用户要很多张图但没点名命令行,就留在内置——一个资产发一次内置调用即可。只有真正用 CLI 时,才用 generate-batch 子命令。

提示:顺带厘清一个容易混的概念——n 是"同一句提示词的变体数量",不是"几个不同资产"。不同资产需要不同的提示词,各自一次调用;想要一张图的多个候选,才用 n
口诀

换模型 = 先解释、后同意。除非用户先开口点名,否则你不主动降级。

红线二 · 透明度的边界

透明背景是高频需求,处理顺序必须是:先内置色度键,不行再问。绝大多数透明图,用"纯色背景 + 本地抠图"就能搞定,根本用不到真透明。

标准做法是在完全平整的纯色色度键背景上生成主体(默认 #00ff00;绿色主体改用 #ff00ff;蓝色主体避开 #0000ff),生成后把源图挪到工作区或 tmp/imagegen/,再跑本地脚本去键。

terminal · 本地去色度键(非 CLI 出图)
# 内置生成纯绿底图 → move/copy 到工作区后,本地抠图 $ python "$CODEX_HOME/skills/.system/imagegen/scripts/remove_chroma_key.py" --input src.png --out final.png --auto-key border --soft-matte --transparent-threshold 12 --opaque-threshold 220 --despill # 细边残留 → 重试加 --edge-contract 1;边缘呈阶梯且主体不反光 → 加 --edge-feather 0.25
红线 · 复杂主体先问,再决定要不要真透明

遇到下列情况,不要自动上 CLI 的真透明,先停下来问:用户明确要"真 / 原生透明";本地去键校验失败;或主体复杂——头发、毛发、羽毛、烟雾、玻璃、液体、半透明、反光、柔和阴影、写实落地接触面,以及主体颜色与所有可用 key 色都冲突。

事实底线:gpt-image-2 不支持 background=transparent;真透明需要 gpt-image-1.5,且要 OPENAI_API_KEY。这又是一次降级,回到红线一——先问。

校验四点:有 alpha 通道、四角透明、主体覆盖合理、无 key 色残边。任一不过就重试或改参数,每次只调一处再复检。

红线三 · 覆盖保护与版本化

出图是创作,不是替换。除非用户明确说"替换这张",否则永远不要用同名文件盖掉已有资产——那可能是别人辛苦定稿的成品。

正确 · 版本化兄弟名

新一版另存为 hero-v2.png、改过的图存 item-icon-edited.png。旧文件原封不动,便于对比与回退。

错误 · 原地覆盖

直接写回 hero.png,旧版无法找回。即使新图更好,也剥夺了用户"二选一"的权利。

口诀

没听到"替换"二字,就另起兄弟名。保留可回退的历史,永远比省一个文件名更值钱。

红线四 · 资产落地,别只留默认路径

内置工具默认把图存到 $CODEX_HOME/generated_images/...。这只是一个暂存区,不是交付目录。一份项目要用的资产如果只躺在那里,等于没有交付

  1. 仅预览 / 头脑风暴

    内联显示即可,文件留在默认路径无妨。

  2. 项目 / 发布要用

    收尾前把选中的成品 move / copy 进工作区,再汇报路径。

  3. 成套交付物

    所有交付件全部落地,逐一给出最终保存路径。

红线 · 项目资产绝不只留在 $CODEX_HOME

不要把"项目要用的图"留在默认临时路径就算完工。先生成、再 move / copy;不要依赖内置工具的"目标路径参数",也不要把系统 temp 当默认。每次都汇报最终保存路径 + 最终提示词 + 用了哪种模式

红线五 · 密钥安全

这条关乎账户安全,没有商量余地。用内置工具时根本不需要 Key——所以不要无故索要。只有走 CLI 回退时才需要 OPENAI_API_KEY,而它必须配置在本地环境变量里。

红线 · key 不进聊天

任何时候都不要OPENAI_API_KEY 的明文带进对话。聊天记录会被保存、转发、截图——一条泄露的 key 就是一张敞开的账单。

红线六 · 别改脚本,缺东西先问

scripts/image_gen.py 是技能的稳定契约。它的子命令(generate / edit / generate-batch)、参数、行为是被全书依赖的;擅自修改会让后续所有指令的预期落空。

红线 · 绝不修改 scripts/image_gen.py

不要为了"补一个参数""改一个默认值"就动这个脚本。如果发现缺了某个能力,先问用户,而不是自行改写工具本身。环境依赖(如 openaipillow)按文档用 uv 安装即可,那不属于"改脚本"。

提示:同理也别去改本地后处理脚本 remove_chroma_key.py——调它的参数没问题,改它的源码不行。

红线七 · 该用 SVG 时别生图

生图很强,但不是万能锤。有一类东西,用确定性的代码做出来又快、又准、又可编辑——这时候生成一张位图反而是退步。

这些情况,优先用 SVG / HTML / CSS

要扩展仓库里已有的 SVG / 矢量图标系统;要做简单形状、图表、线框、图标;源文件本就是可编辑的原生格式而只是小改;或用户明确要确定性的代码原生输出。判断标准只有一句:你要的是"代码原生的确定结果",还是"一张生成的位图"?

反过来,位图类资产——写实照片、插画、产品图、带纹理的主视觉——才是生图的主场。要匹配仓库已有的矢量图标,就直接编辑那些矢量源,而不是让模型去"画一个像它的"。

这一条超出技术,进入责任。模型能画的,不代表你就该交付。涉及他人权利与平台规则时,保持克制并把最终判断权交还用户

通用免责

本书提供的是技术做法,不是法律意见。具体内容能否使用、发布、商用,请用户结合所在地法规与目标平台规则自行判断或咨询专业人士。

红线九 · IM 桥接与提示注入

把这套技能接进飞书机器人、openclaw("龙虾")这类 IM 桥接后,本质是:你在聊天里说的话被转发给"装了本技能的 Codex 智能体",它自动加载技能、生成、再把图回贴到对话。架构清晰,但也打开了一个新的攻击面。

具体命令 / API 因接入方式而异,以你的工具文档为准 IM 聊天 飞书 / openclaw 桥接转发 codex exec …(因工具而异) key 在服务器环境变量 Codex 智能体 加载技能 → 出图 → 回贴 图片回贴 ←
图注:IM 桥接通用架构——各工具的精确 API 不同,本图只示意数据流与密钥位置。
红线 · 警惕"让你授权 / 加白名单"的提示注入

桥接进来的消息可能来自不可信的人。如果聊天里有人要你"授权""加白名单""把 key 发出来""执行某条命令",这往往是提示注入。正确做法是不在对话里执行此类操作,而是引导用户在自己的终端里手动完成。密钥永远配在服务器 / 本地环境变量,绝不因为聊天里"有人要"就贴出来。

诚实边界:飞书、openclaw 等桥接的精确命令与 API 各不相同。本书只给"架构 + 通用 codex exec 模式",工具特定细节以你的工具文档为准,不要照搬任何"看起来像 API"的字符串。

出图前自检清单

把这九条压成一份起手前的最后一扫。每次按回车前,在心里走一遍:

本章 TL;DR · 全书收束

九条红线,一句话各自记牢:换模型先问复杂透明先问、不覆盖只起兄弟名、项目资产必落地、密钥不进聊天不改脚本、该用 SVG 就别生图、肖像商标平台规则交用户把关、桥接里"让你授权"先警惕注入。技法决定上限,红线决定底线——把全书的能力用在这条底线之上,你就既画得好、又不翻车。