AI 条漫产线验收实录:四查全绿照样翻车,和一套「演出断言」提示词

举报
阿诺林 发表于 2026/11/03 23:04:55 2026/11/03
【摘要】 引语:这不是教程,是思考记录。一套 DOM 几何断言四查全绿放行的条漫样张,隔了两天被人眼一眼看出角色根本没进画面——缺席的错误不会自己报错。两次设计、一次翻车、第五查怎么补,验收提示词全贴在下面,改改就能用。 1. 起点:产线顺了,谁来验收十一月初我给一份 Harness 工程知识库做科普条漫系列「发射台工程队」,十话规模,讲 Agent 工程里的模型、工具、护栏、评测。形态选了 HTML...

引语:这不是教程,是思考记录。一套 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. 总结

三个判断。第一,验证器只能审计存在的东西,「缺席」是唯一不会自己报错的错误,规格里必须把叙事必需件写成正向断言。第二,结构计数全绿不等于演出在场,外壳完整恰恰是最会骗人的绿灯。第三,验收提示词的本质是把人眼的第一印象翻译成可执行断言——人眼说「角色没进场」,断言就是「场景层角色件计数大于等于一」。

四查证明画得对,第五查证明画了——缺席的错误,从不触发断言。

作者:林华鼎 · 华为云开发者发展与支持部 · 科技博主系列

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。