feat: strengthen scene-style constraints for detail replacement
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled

This commit is contained in:
Your Name 2026-03-23 23:12:55 +08:00
parent ed6ebbf80a
commit 4afced3b8d

View File

@ -3402,7 +3402,8 @@ async function analyzeReplacementExecutionPlan(params: {
"1. 判断 shouldReplace:当前参考图里是否存在清晰、主要、适合被替换的家具商品主体。",
"2. 判断 useModelImage,并说明原因。",
"3. 提炼 sceneSummary、cameraSummary、placementSummary、preserveSummary、styleSummary、avoidSummary。",
"4. 输出 generationPrompt:这是一段给后续生图模型的本屏生成指令,描述这一屏需要的场景、机位、主体位置和必须保留的内容。",
"4. 输出 generationPrompt:这是一段给后续生图模型的本屏生成指令,描述这一屏需要的场景、机位、主体位置、周边环境重建方向以及必须保留的内容。",
"5. sceneSummary 和 styleSummary 必须尽量描述产品周边环境、软装、灯光、材质氛围与空间气质,而不是只重复“替换产品”。",
workflowPromptExcerpt
? `当前风格与场景限制(来自前置工作流与模式模板):\n${workflowPromptExcerpt}`
: "",
@ -3585,14 +3586,17 @@ function buildAgentReplacementPrompt(params: {
...imageOrderLines,
...scenePlanLines,
"你现在做的不是重新生成一张新图,而是编辑最后一张参考图本身。",
"前面“工作流设定”里的场景组合、空间风格、硬装方案、软装方案、灯光氛围、人群设定,必须作为当前这一屏的强制场景改造要求生效。",
"执行时要基于这些场景组合要求,重建产品主体周边的场景元素、材质氛围、软装陈列、灯光与色调,使当前这一屏呈现出与第一步已选风格一致的场景效果。",
"允许改造的是产品主体周边的场景内容,不仅仅是替换产品本身;但参考图里的文字排版、标题区、信息区、分割线、留白和版式结构必须保留。",
"如果前面商品图、模特图与最后一张参考图底板存在冲突,始终以最后一张参考图底板的版式、机位、构图和信息层级为最高优先级。",
"最后一张参考图是唯一底板,必须保留这张图的文字排版、品牌字样、标题区、卖点区、分割线、留白、机位、构图和信息层级。",
"前面的商品图和模特图只用于替换参考图中的产品主体和与产品直接相关的场景内容,不能改变参考图的版式设计。",
"前面的商品图和模特图用于替换参考图中的产品主体,并按工作流设定去改造与产品直接相关的场景内容,但不能改变参考图的版式设计。",
params.productImageCount > 1
? `前面的 ${params.productImageCount} 张商品输入图都属于同一产品的多角度/多细节白底图,请综合这些图片理解产品结构、材质、颜色、比例、边角、开孔、五金与细节,不可只参考第一张。`
: "前面的商品输入图就是当前要替换进去的产品白底图,请准确保持该产品的结构、材质、颜色、比例和细节。",
"请先识别最后一张参考图中需要被替换的产品主体所在区域,再在原位置完成替换,不要改动无关区域。",
"请严格保留最后一张参考图的版式结构、镜头关系、构图、光影氛围、留白位置和信息层级,只替换其中的商品主体。",
"请严格保留最后一张参考图的版式结构、镜头关系、构图、文字排版、留白位置和信息层级;但产品主体周边的环境、陈列、材质、灯光氛围、软装小物、空间质感需要按第一步工作流设定进行重建。",
"前面的输入商品图用于提供商品主体、材质、颜色和细节特征;如有模特图,请只在参考图本身包含人物展示时再参考模特图。",
"绝对不要忽略最后一张参考图去生成一张无关的新场景图。",
"绝对不要移动、删除、改写、重排参考图里的任何文字与排版元素。",