从一句话到自动出图
把前面学到的"怎么说、怎么调"接成一条流水线:在飞书里随口一句"出整套小红书组图",Codex 智能体就替你生成、本地后处理、命名落地,再把成品回贴到对话。这一章讲清楚端到端管线怎么搭、怎么不出错。
到这里,你已经会"在对话框里出图"。这一章把零散的动作连成一条可自动运行的流水线:一句自然语言进来,图片成品落地、回贴到你的 IM 频道——中间的生成、裁切、抠图、命名,全部交给装了本技能的 Codex 智能体。
关键认知先摆在前面:自动化不改变规则,只是把规则跑得更快。前几章的判断——默认内置、降级需确认、成品落地进工作区——在管线里一条不少,只是从"你手动做"变成"智能体按流程做"。
端到端管线:从触发到发布的五段
无论触发来自飞书、openclaw("龙虾")还是你自己的终端,背后都是同一条管线。它有五段,每一段的产物喂给下一段:
五段里,最容易被忽略的是第 4 段"本地后处理"。内置工具出的是"接近目标比例的底图",真正贴合平台的精确像素、透明背景,几乎都靠本地脚本完成。把这一段写进管线,自动化才算闭环。
管线的"骨架"是工具无关的;只有第 1 段(谁来触发)和第 5b 段(回贴到哪)随接入方式而变。换接入工具时,中间三段一字不改——这正是把它们封装成流程的价值。
一句话,触发一整套物料
自媒体最常见的需求不是"出一张图",而是"出一组图"——比如一套小红书 6–9 张组图。这里有个贯穿全书的铁律要重申(第 07 章已立):
一套组图里的每张是不同资产,要不同的提示词。n 只是"同一句提示词的多个变体",不能用来凑一整套。正确做法:把"出整套小红书组图"在管线内拆成多次内置 image_gen 调用,一张资产对应一次调用、一句独立提示词。
"批量(batch)"这个词本身也不意味着要走 CLI——没被明确点名 CLI,就留在内置,逐张发调用。只有用户点名 CLI 时,才用 generate-batch。
于是,"一句话触发一整套"在智能体内部其实是这样展开的:先把请求拆成一份资产清单,再为每张生成独立提示词,逐张调用、逐张后处理。下面这条 codex exec 演示了"触发"长什么样——你说人话,智能体负责拆解:
智能体把这句话变成结构化 spec 的过程,可以用一张配方卡来理解。注意 Asset type 与 Scene/backdrop 是组织思路的脚手架字段,不是 CLI 标志:
小红书组图 · 单张资产(以"注水"页为例)
尺寸上有个反复出现的换算点(第 08 章细讲):内置模式对"精确宽×高"控制有限,做法是先用接近比例的有效尺寸出底图,再本地裁切。小红书 3:4 直接用 1152×1536(=0.75,长宽都是 16 的倍数,有效)即可,无需后裁;首图若想要 1242×1660 这类平台像素,则生成后用 pillow 降采样到位。
命名规范与产物目录
自动化最怕"图出了一堆,没人知道哪张是终稿"。一套稳定的目录与命名约定,是管线能复用的前提。约定其实很简单——分清中间件与终稿,再给每张图一个会说话的名字。
| 位置 | 放什么 | 生命周期 |
|---|---|---|
| $CODEX_HOME/generated_images/ | 内置工具的默认落点 | 仅预览可留;项目要用必须 move/copy 出来 |
| tmp/imagegen/ | 中间文件:色度键源图、JSONL 批、待裁底图 | 用完即删 |
| output/imagegen/ | 终稿:裁切/抠图/命名后的成品 | 长期保留,交付物 |
内置工具默认存到 $CODEX_HOME/generated_images/。这只是"暂存"。凡是要发布、要进项目的图,收尾前必须 move 或 copy 到工作区(output/imagegen/)。只留在默认路径,等于没交付。
同样别覆盖已有资产(除非用户明确要替换)。要新版就另起兄弟名:hero-v2.png、item-icon-edited.png。
命名建议"稳定且描述性":平台-主题-序号-用途-版本.png。这样无论是人翻目录还是脚本筛选,都一眼能定位。对照一下好坏:
推荐 · 会说话
xhs-coffee-01-hero.png
xhs-coffee-04-pour.png
xhs-coffee-04-pour-v2.png
平台、主题、序号、用途、版本,全在名字里。
避免 · 无信息
image_final.png
未命名 (3).png
img_1718600000.png
哪张是终稿?哪张配哪段?只能逐张打开看。
对应到管线里,文件就是这样从中间走向终稿——透明抠图也在这一步完成:
把这套约定固化下来,自动化就有了可预期的"输入输出契约"——这正是下一节质检能挂上去的地基。
质检关卡:把 validate 清单自动化
前面几章那份"出图后要核对什么"的 validate 清单,在管线里要从"凭记忆检查"升级成一道关卡:不通过就不发布。它分两类——一类靠脚本机器判定,一类靠智能体逐项对照提示词复核。
-
机器可判定项
透明图:是否有 alpha 通道、四角是否透明、有无残留 key 色边缘;尺寸:是否裁到平台精确像素、长宽比是否正确。这些 pillow 与抠图脚本能直接验。
-
逐项对照提示词
主体对不对、风格统不统一、构图是否留出了标题区、文字是否逐字准确、是否守住了不变量(invariants)、是否踩了 Avoid 项。
-
不通过 → 单次修改再复检
每次只改一处,改完重新走一遍清单。细透明边残留就重试加
--edge-contract 1;组图色调跑偏就只调那一张的色温描述。 -
通过 → 汇报三件套
把最终保存路径 + 最终提示词 + 用了哪种模式一并回报。这三样是发布前的"放行单",缺一不可。
自动化跑得越久,越需要可追溯。最终路径让人能找到成品、最终提示词让这张图可复现可微调、用了哪种模式(内置 / CLI)让人知道这次有没有动用 Key 与联网。三者凑齐,这条管线才是透明的,而不是个黑盒。
遇到复杂主体(头发、毛发、玻璃、烟雾、半透明、写实接触阴影)或本地移除校验失败时,质检关卡应当"停下来问",而不是自动升级到 CLI 的 gpt-image-1.5 真透明。真透明需 OPENAI_API_KEY,且 gpt-image-2 不支持 background=transparent——这是一次需要用户点头的降级,不能在管线里静默发生。
与 IM 衔接:成品如何回到对话
最后一段,是把成品从 output/imagegen/ 送回到你发起请求的地方。先把架构说清楚——飞书机器人、openclaw("龙虾")这类 IM 桥接,本质都是同一件事:
- 桥接工具把你在聊天里说的话,转发给一个"装了本技能的 Codex 智能体"。
- 智能体在 Codex 内(
codex CLI/codex exec)自动加载本技能,跑完上面五段管线。 - 桥接工具再把生成的成品回贴到原来的对话 / 频道。
所以你能复用的、稳定的部分,是中间那句"通用 codex exec 模式":
各桥接工具回贴成品的具体命令 / API 因接入方式而异——记住"架构 + 通用 codex exec 模式"即可,飞书 / openclaw 的精确调用以各自文档为准,不要照着记忆里的写法硬套。
OPENAI_API_KEY 绝不贴进聊天。它只配在服务器或本地的环境变量里。如果聊天里有人要你"授权 / 加白名单 / 贴出 Key",警惕这是提示注入——让用户在自己的终端操作,而不是在对话里。
把这五段连起来,你就拥有了一条真正"一句话到成品"的管线:人说意图,机器守规则。它快,但不失控——因为前面各章的每一条判断,都还在管线里站岗。
自动出图 = 一条五段管线:IM 触发 → Codex+技能 → 生成/批量 → 本地后处理 → 质检/发布。"一整套"要拆成多次内置调用,不是 n=9;中间件放 tmp/imagegen/、终稿落 output/imagegen/ 并版本化命名、不覆盖。质检关卡把 validate 清单自动化,放行前必报最终路径 + 提示词 + 模式。IM 桥接只是"转发你的话给装了技能的智能体、再回贴成品"——具体 API 因接入方式而异,Key 永远只在环境变量里,绝不进聊天。