AI 条漫产线验收实录:四查全绿照样翻车,和一套「演出断言」提示词
引语:这不是教程,是思考记录。一套 DOM 几何断言四查全绿放行的条漫样张,隔了两天被人眼一眼看出角色根本没进画面——缺席的错误不会自己报错。两次设计、一次翻车、第五查怎么补,验收提示词全贴在下面,改改就能用。
1. 起点:产线顺了,谁来验收
十一月初我给一份 Harness 工程知识库做科普条漫系列「发射台工程队」,十话规模,讲 Agent 工程里的模型、工具、护栏、评测。形态选了 HTML 自绘而非 AI 生图,核心理由就一条:后续十话要反复改字调布局,HTML 改字不重画,SVG 角色写一次就能粘贴十话;AI 生图改一个字就得整张重出。EP01 样张是 15KB 的单文件,配一个 13 行的 Playwright 截图脚本,生成端全程跑在 Hermes Agent 里,主模型是智谱 glm-5.3。
产线本身很顺,真正的问题只剩一个:交出去之前,谁来验收?
2. 第一次设计:不靠视觉模型,靠 DOM 几何断言
当时的硬限制在生成端:glm-5.3 的 provider 不收 image_url,视觉通道实测不可用,我在技能里专门记了「勿反复重试,别把时间烧在死通道上」。与其赌视觉模型,不如利用条漫的本质——纯静态布局页,没有 JS 交互,所有质量问题最终都落在几何上。于是定了四查:
条漫样张验收 · 四查(v1,2026-11-01 版)
1. 横向溢出:内容元素全部落在 1080 画布内(html/body 排除,视口差会假阳性)
2. 元素重叠:气泡 × 看板两两碰撞检测,重叠超过 12px 判为遮挡
3. 文字裁切:scrollWidth 超出 clientWidth 3px 以上即记录
4. 结构计数:面板/名牌/看板/气泡/知识行数量与设计稿逐项对表
EP01 跑完:溢出零、重叠零、4 面板 4 名牌 4 看板 2 气泡全在位。判「一次过」,截图存档,产线固化。
3. 翻车:全绿样张,人眼一眼看出角色没进场
今天复检这套产线。四查原样重跑——还是全绿。截图人审——第一眼就看出问题:格一和格二的对话气泡尾巴指向一片空荡荡的深色渐变,主角小箭和配角台叔只活在开头的演员表里,根本没进分格。漫画格变成了带对话框的 PPT。
我把断言脚本扩了一查再跑,实锤:P1、P2 的场景层 svg=0、img=0、figure=0——整页 3 个 SVG 全部在演员表里;顺带裁切通道抓到一条气泡 3px 级的文字裁切,上一轮也被放过了。
为什么四查看不到?因为四查审计的全是「已存在的元素」:溢出查画出来的盒子,重叠查摆出来的卡片,计数查写出来的面板。而这条产线的错误是「缺席」——该进场的角色压根没写进场景层,缺席的元素不产生任何几何异常,自然不触发任何断言。更讽刺的是,结构计数的全绿恰恰证明了外壳完整,给这次翻车盖了绿灯。
4. 第五查:演出断言——先证明「画了」,再谈「画对」
修补思路不是加第六第七查,而是换断言的层次:从「布局体检」升级到「演出体检」。整改后的验收员提示词如下,可以直接抄:
条漫样张验收员 v2(DOM 断言 + 演出断言,单页样张交稿前跑一遍)
【布局层】
1. 横向溢出:只圈内容元素(面板/演员表/知识卡/气泡/看板),html/body 排除;
2. 元素重叠:气泡×看板两两碰撞,重叠超过 12px 判遮挡;
3. 文字裁切:scrollWidth 与 clientWidth 差值超过 3px 即记录,不许放过;
4. 结构计数:面板/名牌/看板/气泡/知识行数量与设计稿逐项对表。
【演出层】——新增,缺一即 FAIL
5. 角色在场:每个分格的场景层必须至少含一个角色件(svg/位图/人物件任一),
只出现在演员表、没进分格的角色按缺席处理;
6. 气泡落点:带尾巴的气泡必须能指到某个角色件或说话者标识,方向与位置匹配;
7. 术语完整:知识卡的中英术语行数与设计稿一致,一行都不许省。
【判级】
布局层全绿 + 演出层全绿 = 可交付;任一层有记录 = 打回,附具体元素与坐标。
审美不打分,审美留给人眼——但叙事必需件是规格,不是审美。
判别逻辑收敛成一个函数,改改就能用:
def verdict(audit: dict) -> str:
"""audit 为验收员 v2 的输出 JSON,五通道全空才算可交付"""
hard = ("overflow", "overlap", "clipped", "staging")
bad = [k for k in hard if audit.get(k)]
if bad:
return "FAIL: " + ",".join(bad)
for key, want in audit.get("expect", {}).items():
if audit.get("structure", {}).get(key) != want:
return "FAIL: structure." + key
return "PASS"
5. 意外收获:不可用的视觉通道,两天后满血复活
十一月一号我记录「视觉模型通道不可依赖」,十一月三号实测同一通道正常返回,而且质量惊人:它一眼点名「大面积空白疑似缺图、气泡尾巴悬空、头重脚轻」,和我的断言结论逐字吻合。是 provider 配置变了还是走了辅助模型回退,机制不重要,重要的是状态漂移这个事实。两条教训:工具能力的「不可用」结论必须带日期,隔一段时间重新探一次;验证体系别单点依赖,按断言打底、人审兜底、视觉模型恢复即补位的三层设计,哪层活着用哪层。
6. 总结
三个判断。第一,验证器只能审计存在的东西,「缺席」是唯一不会自己报错的错误,规格里必须把叙事必需件写成正向断言。第二,结构计数全绿不等于演出在场,外壳完整恰恰是最会骗人的绿灯。第三,验收提示词的本质是把人眼的第一印象翻译成可执行断言——人眼说「角色没进场」,断言就是「场景层角色件计数大于等于一」。
四查证明画得对,第五查证明画了——缺席的错误,从不触发断言。
作者:林华鼎 · 华为云开发者发展与支持部 · 科技博主系列
- 点赞
- 收藏
- 关注作者
评论(0)