从反复抽卡到工作流:我如何重构 AI 商品图 Agent
复盘我如何把 AI 商品图从逐张临场决策、反复重抽和自动审核,重构为先规划整套视觉、再由生成阶段纯执行的 Agent 工作流。
项目地址:apexcheng/ecommerce-product-image-agent
我一开始只是想解决一个很直接的问题:让 AI 帮我做商品主图和详情图。
最早的思路也很自然。提供商品资料,分析竞品,生成图片计划,然后一张一张出图。某张图不好看,就改 Prompt;产品变形,就加真实产品图;构图重复,就让 Agent 看看前面已经生成了什么;出图后再做一轮事实审核和美学审核。
每一步单独看都合理,但组合起来以后,流程越来越重,结果却没有稳定变好。
真正的转折,是我不再把问题理解成“怎么写一个更强的 Prompt”,而是开始重新设计整套工作流。
这次重构改了什么
每生成一张图,都重新决定角度、构图、参考图和 Prompt。
整套视觉决策在用户确认前一次完成。
读取已确认任务,原样调用生成工具,不重新设计。
看到什么问题就定向修什么,不自动重跑整套分析。
这次重构最重要的变化,不是新增了多少规则,而是把不同类型的决策分开了。
以前,策略、视觉设计、Prompt、生成和审核经常混在同一个循环里。现在则要求每一层只负责自己的事情。
一、我最初的问题不是不会生图,而是工作流没有边界
最初版本其实已经有完整流程:商品资料、竞品分析、卖点提炼、计划文档、用户确认、单图任务、视觉导演、生成和审核。
问题是,很多关键决策发生得太晚。
例如一张图真正准备生成时,Agent 还要临场判断:
- 这张图应该是什么信息密度;
- 第一、第二、第三视觉分别是什么;
- 产品要放多大、从什么角度出现;
- 前景、中景、背景怎么组织;
- 和前几张图会不会太像;
- 当前应该带哪些参考图;
- 最终 Prompt 到底怎么写。
这会带来几个很典型的问题。
1. 单张图能看,整套图却像同一个模板
逐张生成时,Agent 很容易反复使用熟悉的视觉解法:同样的产品角度、同样的居中构图、同样的卡片排列、同样的浅色背景。
每张单独看都可能“没什么问题”,但十张放在一起,变化只剩下文案。
2. 为了保真把产品锁得太死,最后只能复刻业余实拍
另一个极端是,看到产品变形以后,不断加强“必须和参考图一模一样”。
这样确实更保守,但也会把原始拍摄机位一起锁死。用户不是专业摄影师,实拍图可能只是为了说明产品结构,并不适合直接成为最终电商构图。
3. 自动审核越来越复杂,流程却越来越慢
每生成一张图,再让 Agent 做事实审核、美学审核、同组差异检查,看起来很自动化。
但这意味着它要重新读取上下文、回看历史图片、重新判断差异、重新分析问题。很多本来应该在规划阶段解决的事情,被拖到了生成后重复处理。
4. 规则越写越多,反而出现规则漂移
同一套流程一度同时写在总规则、Skill、SOP、视觉指南和运营说明里。
修改一处以后,其他地方没同步,就会出现真实冲突:一个文件说“用户确认后再做视觉设计”,另一个文件已经改成“确认前做完”;一个地方还要求自动审核,另一个地方已经决定删除自动审核。
这让我意识到:问题已经不是 Prompt,而是系统设计。
以前:逐张临场决策
计划只确定大方向,真正的视觉设计留到每张图生成前再做。
- 每张图重新判断构图和空间
- 每张图重新比较历史图片
- 每张图临时组织参考图和 Prompt
- 生成后再自动审核和重做
现在:先设计,再执行
用户确认前,把整套策略和视觉执行方案一次做完。
- 先完成整套 Art Direction
- 先完成同组差异化矩阵
- 先写好每张图最终 Prompt
- 生成阶段不再重新思考
二、真正的转折:把 WHAT、WHY、HOW 和 EXECUTION 拆开
重构以后,我把整套项目拆成几类不同职责。
商品图总入口
决定每张图讲什么,以及为什么这样排序。
- 检查商品事实是否足够
- 提炼一级、二级、三级卖点
- 规划主图任务和详情页说服顺序
竞品分析
负责看市场怎么表达,不替代自己的商品事实。
- 分析首图钩子和主图分工
- 分析详情页结构和视觉表达
- 输出可借鉴点和机会点
评价分析
有真实反馈时使用,把用户问题转成图片动作建议。
- 高频疑问是否需要说明图
- 尺寸或套装误解是否需要澄清
- 认可点是否值得升级为核心卖点
视觉导演
在图片任务确定后,负责整套到底怎么画。
- Art Direction 与视觉语言
- 角度、镜头、构图、空间和丰富度
- 输入图片角色和最终 Prompt
职责拆开以后,最关键的边界变成:
商品图总入口 = 决定讲什么、为什么这样排
视觉导演 = 决定整套怎么画
生成工具 = 按确认结果执行
人工 = 确认方向、审查结果、提出定向修改
这个边界解决了很多以前反复出现的问题。
竞品分析不能因为“别人都在讲某个卖点”,就把它自动写成自己的商品事实;评价分析也不能因为几条好评,就直接升级成核心卖点;视觉导演更不能为了画面丰富,修改上游已经确认的商品结构和功能。
每一层都可以很聪明,但不能越权。
三、当前真正执行的流程
从真实资料到最终图片
区分已经确认的商品事实、影响准确性的缺失事实,以及可以后补的信息。
默认分析竞品;有评价资料时再分析用户疑问、误解和认可点。
完成卖点分级,明确每张主图的任务和详情页的说服顺序。
完成 Art Direction、差异化矩阵、逐图画面设计、输入组织和最终 Prompt。
用户确认最终计划,再拆成单图任务;生成阶段只调用工具,出图后由人工审查。
这条流程里最重要的中间产物,不是某个 Prompt,而是一份完整计划。
我会把整套策略和执行要求写进同一份计划文档。它至少要能回答:
- 商品事实是什么,哪些不能猜;
- 竞品和用户反馈提供了什么信号;
- 一级、二级、三级卖点分别是什么;
- 每张主图和详情图为什么存在;
- 整套视觉语言是什么;
- 同组图片如何避免重复;
- 每张图用什么产品依据;
- 每张图的最终 Prompt 是什么。
计划文档不能只写“简约高级”“突出卖点”“有空间感”这种方向词。
用户确认以后,生成阶段必须可以直接执行,不再补做关键设计决策。
四、我在这次重构里真正学到的八件事
1. 真实产品图锁定的是商品事实,不是拍摄机位
这是整个项目里最重要的一次认识变化。
真实产品图应该严格锁定:
- 产品结构;
- 颜色;
- Logo;
- 按键、接口和局部结构;
- 功能、参数和配件。
但它不应该默认锁死:
- 产品旋转角度;
- 相机视角;
- 俯视或平视程度;
- 产品朝向;
- 画面中的位置和尺度;
- 不改变结构前提下的透视关系。
必须锁定
这些信息决定用户最终买到什么,不能为了视觉效果修改。
- 结构、颜色、Logo
- 按键、接口、配件
- 功能、参数、材质和套装
可以设计
只要真实结构有可靠依据,最终画面可以按电商表达重新设计。
- 产品角度和相机视角
- 场景、空间和环境道具
- 信息模块、光线、阴影和视觉节奏
我现在更认同一句规则:
产品依据真实,视觉表达大胆。
如果完全自由,产品会变形;如果完全锁死,AI 只能复刻原始实拍。真正需要控制的是事实边界,而不是把所有视觉自由都删除。
2. 丰富度不是多放几个元素
我曾经遇到一个很明显的问题:图片不一定难看,但总觉得“空”。
一开始很容易把丰富度理解成多加设备、多加图标、多加参数、多加装饰。结果通常只是从空变成乱。
后来我把一张商品图可能包含的内容拆成六类:
核心信息
+ 产品主体
+ 卖点证明
+ 使用场景
+ 辅助信息
+ 环境氛围
这些模块不是越多越好,而是要服务当前图片任务。
首图可以只有产品、一句核心信息和少量辅助元素;参数图可以是高信息密度,但必须有清楚的主次;复杂卖点图可以同时有主题、证明、场景和产品英雄位,但不能让所有元素抢第一视觉。
3. “高级感”和“空间感”必须被翻译成执行语言
“高级、简约、有空间感”这些词对人有感觉,对执行却不够具体。
真正可执行的描述应该回答:
- 第一眼看什么,第二眼看什么,第三眼看什么;
- 产品占画面多大;
- 背景、中景、前景分别是什么;
- 哪些元素有大小差、前后错位和遮挡;
- 光源从哪里来;
- 阴影如何让物体真正落在空间里;
- 信息卡片是证明层,还是辅助层。
这也是我后来不再直接从抽象审美词写 Prompt 的原因。
4. 同组差异化必须一次规划,而不是生成后比较
现在我会分别为主图组和详情图组建立差异化矩阵。
每张图横向比较:
- 产品角度;
- 镜头视角;
- 构图骨架;
- 产品位置和尺度;
- 场景;
- 前中后空间关系;
- 信息模块分布。
目标不是让每张图完全不同,而是避免同一组图片反复使用同一种视觉解法。
一旦矩阵确认,生成下一张图时就不需要重新回看所有历史图片,再临场判断“会不会太像”。
5. Prompt 应该是设计结果,而不是设计过程
我现在写 Prompt 的顺序已经完全反过来了。
先确定图片任务
↓
选择构图骨架
↓
设计视觉层级
↓
设计空间和丰富度
↓
确定产品角度与输入图片
↓
最后写最终 Prompt
也就是说,Prompt 不是起点,而是视觉设计的序列化结果。
如果画面本身还没想清楚,继续给 Prompt 加形容词通常不会解决问题。
6. 生成阶段应该越来越“笨”
现在的生成阶段只做这些事情:
读取已确认的单图任务
→ 定位指定输入素材
→ 原样使用最终 Prompt
→ 调用统一生成工具
→ 分类保存结果
它不再重新做 Art Direction,不重新判断信息密度,不重新比较同组差异,也不擅自改写 Prompt。
这是我这次重构里最明显的工程化变化:复杂度前移到规划阶段,执行器越简单越稳定。
7. 自动审核不是越多越好
我最后把自动图片内容审核从主流程里删掉了。
不是因为事实和美学不重要,而是因为很多问题本来就应该在生成前被约束:商品事实写进边界,视觉语义写进任务,差异化提前规划,输入图片角色提前确定。
出图以后,用户本来就会看最终图片。
现在的处理方式更直接:
产品或事实错误
→ 修产品依据或生成约束
画面太空、太乱、层次不足
→ 只调整这张图的视觉设计和 Prompt
局部问题
→ 优先定向编辑当前结果
整套方向错误
→ 只有明确确认后才回到整套规划
Agent 步骤更多,不等于系统更可靠。
8. 修改必须区分“小修”和“正式设计改变”
现在判断一条反馈要不要回写计划,我只问一个问题:
如果从零重新生成这张图,这个修改还必须保留吗?
如果答案是否定的,它只是当前成品的小修,直接定向修改即可。
如果答案是肯定的,它就是正式设计改变,需要同步更新这张图的任务、输入和最终 Prompt。
两种情况都只处理受影响的图片,不因为一张图有问题,就重新规划整套商品图。
五、单一事实来源,比继续加规则更重要
这次项目审查还解决了一个很典型的问题:同一套规则被复制到太多文件里。
最后我把规则收敛成:
完整端到端流程
→ 只维护一份 SOP
详细视觉方法
→ 只维护一份 Art Direction 指南
总规则和入口 Skill
→ 只保留路由、职责、硬边界和引用
运营指南
→ 只解释怎么使用,不复制完整 Agent 内部规则
这和代码里的 Single Source of Truth 是同一个问题。
一套 Agent 工作流如果长期迭代,最大的维护风险往往不是缺规则,而是同一条规则在五个地方都有一份“差不多的版本”。
六、技术层最后只保留一个统一生成入口
图片生成和图片内容编辑统一走同一个 CLI。它支持文本 Prompt、Prompt 文件、单张或多张参考图、可选 Mask、尺寸、质量和输出格式。
公开层面只需要类似这样的调用:
python generate.py \
--prompt-file prompt.txt \
--image product-front.jpg \
--output output.png \
--size portrait \
--quality high
密钥放在本地私有配置中,由 Git 忽略;仓库只保留 example 配置。
本地工具不再负责修改商品图像素内容,只做文件读取、尺寸检查、复制、重命名和整理。这样可以避免生成模型和本地图片处理脚本同时修改成品,导致工作流越来越难追踪。
七、这套方法适合什么,不适合什么
| 场景 | 是否适合完整工作流 | 原因 |
|---|---|---|
| 新品整套主图和详情图 | 适合 | 需要卖点、顺序、视觉和执行统一规划 |
| 老品整套重做 | 适合 | 可以结合竞品和用户反馈重新设计说服路径 |
| 只改一个字 | 不适合 | 直接编辑更快 |
| 只做简单抠图或尺寸调整 | 不适合 | 没必要启动完整分析流程 |
| 已经明确目标的单张图 | 可简化 | 直接做一次性视觉规划后执行 |
| 没有真实产品图 | 不适合最终出图 | 可以做方案和 Prompt,但不能生成正式商品图 |
这套流程的价值不在于把所有图片任务都做复杂,而是让复杂项目在真正需要的地方变得可控。
最后:我现在更关心 Workflow,而不是一次生成结果
回头看,这个项目最初的问题并不是 AI 不够强。
真正的问题是:我把太多责任交给了最后一次生成调用。
希望模型同时理解商品事实、市场竞争、用户痛点、整套图片顺序、审美方向、空间关系、同组差异,还要自己决定参考图和 Prompt。只要其中一层没想清楚,最终结果就会像抽卡。
现在我更相信三条规则:
- 事实和视觉自由要分开。 商品结构必须真实,但相机机位和视觉表达不必被业余实拍锁死。
- 关键设计决策要前移。 整套 Art Direction、差异化和最终 Prompt 应该在用户确认前完成。
- 生成阶段应该退化成执行器。 规划越清楚,真正出图时需要重新思考的事情就越少。