先写死主体和风格——再让 GenEvolve 自己演进

文章导读
想让 GenEvolve 这类演进式提示词工具自己往前走,同时又怕它把主体和风格一起改掉,通常的做法不是少让它改,而是把提示词拆成两段:一段每轮逐字复制的锁定层,一段允许慢慢变的放开层。锁定层写死主体身份、画幅比例、风格关键词;光照、构图、细节密度这类可变量放进放开层,交给演进自己去试。判断依据很直接:只要每一轮喂进去的主体描述本身是被工具改写过的文本,主体漂移就只是时间问题,跟工具好不好用关系不
📋 目录
  1. 一 把提示词拆成锁定层和放开层两段分别写
  2. 二 锁定层写主体身份、画幅比例、风格关键词
  3. 三 放开层只留光照、构图、细节密度这类可变量
  4. 四 跑两轮后逐字比对锁定层是否被原样带入下一轮
  5. 五 发现锁定层被改动时回退到上一轮输入并替换放开层
A A

想让 GenEvolve 这类演进式提示词工具自己往前走,同时又怕它把主体和风格一起改掉,通常的做法不是少让它改,而是把提示词拆成两段:一段每轮逐字复制的锁定层,一段允许慢慢变的放开层。锁定层写死主体身份、画幅比例、风格关键词;光照、构图、细节密度这类可变量放进放开层,交给演进自己去试。判断依据很直接:只要每一轮喂进去的主体描述本身是被工具改写过的文本,主体漂移就只是时间问题,跟工具好不好用关系不大。

适用场景是同一个角色、同一个产品、同一套视觉风格需要连续出多轮结果。操作动作是把一份提示词分成锁定层和放开层,锁定层逐字复制不参与改写,放开层每轮只改一项。验证方式是把上一轮锁定层文本和下一轮实际提交的文本放在一起逐字对照,并留一行差异记录。边界也要说清楚:这种方式约束的是文本层面的一致性,模型自身的随机差异仍然存在,最终仍需人工过目并决定是否采用。

把提示词拆成锁定层和放开层两段分别写

两段式写法的作用,是让每一轮改动的范围在写词阶段就定下来,而不是等输出跑偏了再回头猜是哪句话被改掉了。常见的组织方式是把锁定层放在前面,放开层放在后面,中间用一个不会被误解的分隔标记。提交给 GenEvolve 时,明确说明只有放开层允许改写,锁定层原样带入。下面是一个可以直接套用的骨架,方括号里是替换项。

[LOCK 锁定层 · 每轮原样复制,不接受任何改写]
主体: [主体名称 + 3 到 5 个固定外观锚点]
画幅比例: [单一比例值]
风格关键词: [3 到 6 个词,顺序固定]
排除项: [明确不允许出现的元素]

[OPEN 放开层 · 每轮只改一行]
本轮变量: [光照 | 构图 | 细节密度]
取值: [该变量在本轮的目标值]

LOCK 段是每轮原样复制的部分,写完之后就不再动它;OPEN 段是每轮只动一行的部分。提交前把整段拼成一份完整提示词,但心里要清楚哪几行来自哪一层,后面做比对时才有的放矢。如果工具支持系统提示与用户提示分开填写,可以把 LOCK 段放在系统侧、OPEN 段放在用户侧,这样更不容易在长对话里被改写。

锁定层写主体身份、画幅比例、风格关键词

锁定层要回答的问题是:哪些内容一旦变了,这轮结果就不再是同一个东西。字段不用多,但每一个都要写得能被逐字复制。

  • 主体身份:写名称、类别,再补 3 到 5 个固定外观锚点,例如发色、服装款式、标志性配件。锚点数量控制在能区分身份就够,写太多会让模型顾此失彼。
  • 画幅比例:只写一个值,比如 1:1、3:2 或 9:16。不要写取值范围,也不要写类似方图或竖图这种模糊表述。
  • 风格关键词:3 到 6 个词,顺序固定。顺序固定是为了让每轮文本可逐字比对,换序虽然语义接近,但比对时会产生噪音。
  • 排除项:把明确不要出现的东西列出来,例如多余的肢体、额外的人物、指定画风之外的处理。

逐字固定的写法上有几个习惯值得养成:一行只放一个字段,字段名和值之间的分隔符固定不改;不要在锁定层里出现「或者」「可改为」「类似」「大约」这类给出多选项的词,模型很可能把多选项当成可替换项;不要用括号补充说明,括号内容容易被当成可选备注。写完之后通读一遍,凡是自己都说不清是不是必须保留的词,就先从锁定层里删掉。

放开层只留光照、构图、细节密度这类可变量

放开层的目标是给演进留出空间,但不碰主体。可放进去的字段通常包括以下几类,每类都建议先定一个小的取值集合,而不是每轮自由发挥。

  • 光照:光源方向(顺光、侧光、逆光)、强度档位(低、中、高)、色温倾向(偏冷、中性、偏暖)。这三个子项每轮只动一个。
  • 构图:机位高度、主体在画面中的位置、留白比例、视角远近。同样每轮只动一个子项。
  • 细节密度:低、中、高三档即可,档位本身也建议先固定下来,避免每轮用不同说法描述同一档。
  • 背景环境:在不改变主体身份的前提下,允许背景元素变化。如果背景本身也是识别特征的一部分,就不要放进放开层。

每轮只改一项,是这套办法最容易被忽略、但收益最明显的一条。同时改光照和构图,结果变好或变差都无法归因到具体变量,下一轮就无从取舍。实践中可以按轮次记录:第几轮、改了哪个变量、取值是什么、锁定层是否逐字一致。这份记录比任何感受都更能说明演进方向对不对。

跑两轮后逐字比对锁定层是否被原样带入下一轮

锁定是否生效,不能只看第一轮。第一轮通常是人工手写的,看起来当然一致;真正要验证的是第二轮及以后,工具在生成新提示词时有没有把锁定层带进去。做法很简单:把上一轮提交的锁定层文本单独存成文件,再把下一轮实际使用的提示词里的对应部分取出来,放在一起对照。

# 把上一轮锁定层存下来,下一轮取出对应段落再比对
diff -u round1_lock.txt round2_lock.txt

如果没有命令行环境,用编辑器的对比功能或人工并排看也可以,关键是逐字而不是看大意。比对结果建议按字段记录成表,一行一个字段:轮次、字段名、期望文本、实际文本、是否被改动。只要出现一处改动,就先当作漂移处理,不要用语义相近来解释过去。如果工具在输出里回显了完整提示词,直接用回显文本比对;如果没有回显,就以自己实际提交的输入作为对照基准,同时保存提交记录,便于后续复盘。

发现锁定层被改动时回退到上一轮输入并替换放开层

确认锁定层被改动之后,正确的动作是回到上一轮那份完整输入,而不是在漂移后的文本上继续修。继续修会让主体描述越改越远,后面反而说不清原始主体是什么样子。

  1. 停掉当前迭代,把这一轮的结果和输入都保存下来,作为问题记录,暂不采用。
  2. 取回上一轮那份完整输入,也就是锁定层和放开层都还正确的那一版,作为基线。
  3. 把基线里的锁定层整段复制回来,覆盖当前被改动过的部分。不要凭记忆重打,重打容易带入同义词替换。
  4. 只替换放开层里的那一行变量,填入本轮想试的新取值,其余开层内容保持不变。
  5. 重新提交,并在记录里注明这是一次回退后的重跑。

替换之后需要做一次可复现的验证:先把新提交的锁定层文本与基线逐字对照,确认一致;再看输出的主体身份、画幅比例、风格关键词是否与上一轮结果对得上;最后确认本轮的实际改动只有放开层的一项。三件事都对上,才说明回退是干净的。如果回退后连续两轮仍出现锁定层被改写,通常说明锁定层里混进了可选词或者字段描述过长,先把锁定层精简到最短可识别版本,再重跑一次观察。整个过程里,主体和风格只在锁定层里定义一次,演进只发生在放开层,这是这套做法能持续推进的前提。