我还用更完整的原始版本做过一次纯文本返图。参考图没有作为图片输入,也没有参与编辑。
返图保留了俯卧、交臂、抬腿、镜子、窗光、花被、纸卡和柠檬前景,但人物脸部占比比参考图更大。
主要结构基本回来了,构图比例还是有差异。一张返图也说明不了稳定性,它只能证明这段 Prompt 在这一次生成里抓住了哪些东西。
参考图与纯文本返图对照:共同保留俯卧、交臂和窗光,返图人物脸部更近
这次返图保留了俯卧、交臂和窗光,人物脸部却明显更近。完整描述能复现方向,不等于复制原图。
长 Prompt 先原样收下
我把上面这段完整 Prompt 放进网页输入区,全部选中,右键保存。
收录器先把它登记成待处理原料。整理完成后,长文本继续留在原始收录层,同时补上:
- 完整原文。
- 创建时间。
- 收录来源。
- 是否需要拆解。
- 后来拆出了哪些词。
- 生成了哪张组合配方。
拆词本身带判断,今天觉得能独立使用的词,后面可能发现还混着两个机制。原文删掉以后,就很难核对当时为什么这么拆。原始层不追求整洁,它负责把证据留住。
选中网页中的长 Prompt 后,通过右键菜单保存到生图词库
右键菜单出现“保存到生图词库”,说明浏览器入口已经接通。它仍然只完成了原料收录。
我拆词时只问一个问题
逗号和字数只能帮我快速找到可疑段落。要不要拆,最后看这一句:
这个描述里,是否包含两个或更多可以分别增删、替换或锁定的画面控制机制?
有,就拆。没有,即使文字稍长,也可以先保留。
例如:
“斑驳浅灰绿卧室”虽然包含材质、颜色和空间名词,但它共同控制的是一个可识别的旧居卧室场景。在当前产品门禁内,它可以作为场景原子词。
“青绿柔雾卧室俯卧抬腿生活方式人像”看起来也是一句短标题,但它同时包含成像、场景、动作、构图和人物类型,不能作为一个独立视觉词,只能作为组合配方名称。
所以我不拿字数直接判定原子词。
把画面里的控制轴摊开
这张图里,我找到了这些可以分别调整的部分:
- 成像:低对比柔焦、细颗粒、轻微数码压缩。
- 光线:窗边局部高曝光、浅青绿环境光抬升暗部。
- 镜头:高位斜俯、倾斜取景、广角感、清晰度层级。
- 构图:脸在左下,身体对角线延伸,右侧前景更重。
- 发型:蓬松微乱短黑发、脸侧不规则碎发。
- 视线与情绪:看向画外、不看镜头;安静走神、轻倦意。
- 动作:俯卧、脸下交叠双臂、屈膝抬腿、裸足交叠。
- 配饰与服装:格纹大蝴蝶结、复古花卉披覆面料。
- 场景与道具:斑驳浅灰绿卧室、透明袋装柠檬与绿果。
接着做替换测试:
- 保留高位斜俯,把俯卧换成坐姿,画面仍然成立吗?成立,所以镜头和动作要分开。
- 保留俯卧,把安静走神换成直视大笑,画面仍然成立吗?成立,所以动作和情绪要分开。
- 保留斑驳卧室,把水果换成书本,场景仍然成立吗?成立,所以场景和道具要分开。
- 保留低对比柔焦,把青绿色环境光换成暖黄色,成像仍然可以成立吗?成立,所以柔焦和色彩光线要分开。
拆词也不是越碎越好。“蓝”“床”“光”都很短,却说不清要控制什么。一个词能单独改变可见结果,就够了。
把复合描述按成像、场景、情绪、光线、镜头和动作拆成原子词
原子词负责独立替换,组合配方负责保留原来的关系。少做任何一边,词库都会不好用。
公开演示只需要九个词
真实项目里,我会把更多细节继续拆开,也会先查词库里有没有同义词。文章不需要公开整张图的完整入库结果。为了让方法一眼能看懂,这里只保留九个代表性控制轴:
| 新增原子词 |
浏览分类 |
真正控制什么 |
| 低对比柔焦 |
成像 |
画面清晰与反差质感 |
| 窗边局部高曝光 |
光线 |
曝光落点 |
| 浅青绿环境光抬升暗部 |
光线 |
暗部色彩与亮度 |
| 近距离高位斜俯拍 |
镜头 |
相机位置与观察角度 |
| 俯卧床面 |
动作 |
身体基础姿态 |
| 脸下交叠双臂 |
动作 |
手臂关系 |
| 视线落向画外 |
动作 |
视线方向 |
| 安静轻倦意 |
情绪 |
可读情绪 |
| 浅青绿旧卧室 |
场景 |
空间环境 |
查重看起来没拆词那么有成就感,却很影响后面的使用。如果“轻微颗粒”“细小颗粒”“细颗粒噪点”各存一遍,搜索很快就会被同义词占满。词数上去了,选择反而更费劲。
我现在宁愿少加几个,也不想给同一种效果起五个名字。
分类是给人找的,视觉职责是给系统用的
对普通读者来说,“光线、镜头、动作、情绪”这些分类已经足够浏览。
系统还要多记一层:这个词究竟在改什么。
例如“视线落向画外不看镜头”,浏览时放在“动作”很顺手;系统记录的职责则是姿态和视线关系。
“蓬松微乱短黑发”放在“主体”,控制的是脸部与发型设计。
“安静走神轻倦意”才是情绪。
两层混在一起以后,会出现一些很奇怪的结果:
- 看到“腿部”就分到主体,其实它由机位制造。
- 看到“CCD”就分到镜头构图,其实它控制成像外观。
- 看到“微笑”就分到主体,其实它是情绪。
- 看到一整套房间、服装和动作,就误判成风格。
最小版本不需要背英文枚举,入库时多问两句就行:
- 我以后会去哪个分类里找它?
- 它到底改变画面的哪个机制?
两次答案对不上,先放进待复核。
拆开以后,别把原图的关系拆丢了
单独看下面这些词,它们都可以替换:
- 俯卧床面。
- 脸下交叠双臂。
- 视线落向画外。
- 近距离高位斜俯拍。
- 浅青绿旧卧室。
但它们一起出现时,才接近原图的身体关系和观察角度。于是我另外保存了一张组合配方:
青绿卧室俯卧人像
它负责保留这些词同时出现时的整体画面方向。
配方是一张关系清单。以后想回到这个画面方向,我不用翻完整 Prompt,也不需要把这些词重新猜一遍。
这几类内容可以这样分:
- 原子词:只控制一个可以独立替换的画面变量。
- 组合配方:多个词共同出现才成立的画面方案。
- 完整 Prompt:一段可以直接复制生成的成品文字。
- 待复核原料:暂时判断不清,先留在原始层。
有些内容暂时分不清,就留在原始层。词库不需要为了表面整齐,把每段文字都塞进某个格子。
按逗号切分、整段保留和按控制轴拆分三种方法的对照
判断标准只有一个:这个描述能不能被单独增删、替换或锁定。
关于 16 个字符的限制
我的生产级插件还给单项操作词的显示名设置了一个门禁:最多 16 个 Unicode 字符。
这是为了适配狭窄的 Chrome 侧栏。词名太长会挤坏卡片,也很容易把一句描述伪装成一个单独变量。
你的最小版本可以先不使用这个限制,也可以根据自己的界面改成 12、20 或 24 个字符。
界面长度和拆词标准要分开。短词可能混了三个机制,稍长的词也可能只控制一件事。
写进文件,还不算入库完成
terms.json 里出现新词,只能说明写入完成。我还会继续检查下面几处。
原始收录还在
完整 Prompt 保留在原始日志里,并记录已完成拆解。
它还会记录拆解时间、派生词和组合配方。
以后发现拆错,还能回到原文重看。
长 Prompt 已经退出正式词条
原来那条整段文字不继续占据词条真源。
不然侧栏搜一个普通词,可能蹦出几百字;运行文件也会把整段场景误当成一个可选项。
新词有分类,也有视觉职责
新词分别落在光线、镜头、动作、情绪和场景等分类中。
它们没有因为来自同一张图,就被统一塞进“风格”。
配方里的名字都能找到
有一个名称写错,或者旧词改名后没有迁移,配方就会悬空。这时应该停下编译先修数据,不能带着错误继续生成运行文件。
审核没通过,就不进运行文件
我的项目会把审核通过的词编译成插件读取的运行文件。
程序跑过规则,只能记作“机器校验”。没人逐条看过,就不能写成人工审核。判断不清的内容先隔离,也不能把“已隔离”说成“已返修”。
机器规则通过和人工逐条确认是两种状态,不能互相冒充。
再从接口和插件里找一次
我会从插件里搜索一个刚整理的公开示例词,例如“近距离高位斜俯拍”。
搜索得到,说明插件正在读取包含它的运行文件;再对照原始收录和配方,才能确认从原料到使用端的整条链路没有断。
你的第一版只有二十个词也没关系。先保证每个词能找到来源、能搜索、能回读。数量以后自然会涨。
从原始收录、运行文件到插件回读的入库成功证据链
写进文件只是中间状态。至少要从运行文件和插件界面重新找到一个本轮新词。
Prompt B:让 Codex 整理新收录内容
当你的插件已经能收录以后,可以把下面这段交给 Codex。
这段任务没有让 Codex 自动“优化 Prompt”。它负责保留原文、拆词、查重、编译和回读。