leonx.ai Don't trust, verify
← 回首页

English · 中文

为了不再每次盯着预览一版版改,我把品味熬成了闸门——最该管的那道却熬不出来

2026-07-21 · 一台讲解视频引擎的 build log

我做了台讲解视频引擎:喂它一个知识点,它出一条竖屏讲解视频——脊柱动画、旁白、字幕、一个叫豆豆的吉祥物,一条龙。动手前我以为难点是「画得好看」「把 prompt 调聪明」。真做下来,难的是另一件事:我总有那么点眼力,能一眼看出一版「差点意思」,可我说不清差在哪,更没法让机器每次都替我看住。

这篇是把这半个月,我怎么把这点眼力一条条搬进代码的过程老实记下来。好几处是搬错了、又搬回来的。

机器人把一团「品味」云熬成一道硬「闸门」
把说不清的「手感」一瓢瓢舀进去,熬成一道过不了就拦下的硬闸门——这台引擎的活,一大半是这个。

第一刀不在渲染器,在导演

第一版我一直在纠结渲染器画得糙。改着改着才明白,真正的第一刀在更前面:这个概念该被画成「什么会连续变形的东西」。讲稀释,我一开始顺手画成一条往下掉的折线——浓度随时间降嘛。别扭得很。稀释的主角是「盐一粒没少、是水变多了」,那是个容器:液面往上升、盐粒摊薄。换成容器脊柱,一下就对了。

我把这层叫导演:先按概念选对脊柱(容器、粒子、受力、光路、数轴……二十来根),再谈怎么渲染。选错脊柱,后面画得再精细也别扭,还跟别的片长得一个样。偷 3b1b 一句话——让「概念 = 看得见的几何量」,别拿第二层比喻去糊。

那「拿不准该用哪根脊柱」怎么办?

回退到折线图。但凡有专属脊柱能对上,就别硬凑折线——凑出来的,就是那种「哪条视频都长一个样」的味道。

道具这块,我踩的坑

开场我爱给一个生活镜头:烧水、存钱罐、电池。引擎按我一句话描述生成 SVG 道具。坑不少。我写「一个玻璃杯放灶上烧」,画出来玻璃杯架在明火上,违和;写「用温度计表示增长」,观众根本看不懂温度计凭什么代表复利。

学到的规矩很土:道具就给一两个实物名词(存钱罐、水壶、电池),别写动作、别写数字、别拿抽象概念当实物。能画成图标的才留,画不成的宁可不放。

品味在漂,我不想每次拿眼睛顶

最烦的是「漂」。这张图我用了这个绿、那张随手换个绿;这根线 2px、那根 3px,全凭当时手感。单看每张都行,连起来一股拼盘味。我不想每次都拿眼睛去顶它。

于是把「调性」收成一处单一真相源 signature.js:十一个语义角色(主线条、误区红、数据绿、强调黄……),二十多种描边宽度塌成四级,圆角三级。渲染器里不许再写生 hex、不许随手给线宽,一律引用角色。旁边还搁一道棘轮闸门看着:色数、线宽种类只能降不能升——今天收敛到的干净度,明天想漂回去,门不让。

stroke: { hair: 1, base: 2, emph: 3, heavy: 5 }   // 20+ 种线宽塌成 4 级
accent: "#ffd166"  // 强调 · 现状用得最多(73 次)——先锚定,再谈收敛

动效同理。一开始觉得动效「差点意思」是缺库,试来试去发现 GSAP 早到顶了,差的是缓动和节奏。我把它写死进一层「动作签名」:默认 ease-in-out(线性一看就机械)、动作干脆做完就 hold 定住(别摊满整句旁白,那是「慢得要死」的根)、移动时长按距离给。注释里我给自己留了一句:

顺滑是"每次都必须对"的机械保证 → 归这层代码,不归导演/提示词。
导演只给意图(选脊柱、drive 目标、分镜节奏),这层决定「怎么动」。

这句话是我后来所有决定的分水岭:凡是「每次都得对」的事,别指望写在 prompt 里靠模型自觉,落成代码

品味我攒起来,不是看过就丢

出片时每个讲法我都亲选:同一个知识点先出三个角度,我挑一个,选完连挑剩的两个一起落进一个 jsonl。不是选完就算,是攒料。翻回去看挺有意思——「连续涨跌:先涨两成再降两成」那条,我选了一根价格条反复涨跌(第二次的两成明明是从 120 上减、终值落在 96),没选同轴多折线、也没选切块比例条。

{"concept":"连续涨跌——先涨两成再降两成、价格回到原来了吗",
 "chosen":{"spine":"pctbar", ... "终值不是原价" ...},
 "rejected":[{"spine":"multiGraph", ...}, {"spine":"bar", ...}]}

这些是我以后做同类题的锚,也是哪天真要训一个「替我初选」的判官时,现成的料。

把能算的,熬成闸门

光有品味不够,还得每次都对。凡是能确定性算的一维,我就榨成一道硬门,过不了不许出片:

这些门有个共同点:判据是几何、是公式,不是「我觉得好」。

每条修正,都得寄回去

最要紧的一条实践,是这个循环怎么闭上。我肉眼看出一处毛病,「只改这一条 plan」是最没用的做法。得问一句:这毛病能不能机械化?能,就沉成一道门、一条导演规则,或者改渲染器。

真例子:有条杠杆的片,旁白说「动力臂是阻力臂的两倍,所以一半的力就平衡了」,可那一刻画面里杆明明是歪的——我把「平衡」那拍的状态没钉在真平衡点上。改这一条容易,但我把它升成了规则:旁白凡下「恰好平衡」「只要……就」这种结论,必须有一拍把状态钉在「机器真能算出这个结论」的值上,让同步门咬住。以后不会再有谁在一根歪着的杆上说「平衡了」。

怎么判断一条修正值不值得沉下去?

被我逮到第二次的,一定沉。同一类毛病人肉 catch 两次 = 流程 bug,不是手滑。

自修循环也定了死规矩:只终止在「所有确定性门全绿」,绝不终止在模型自己说「看着好」;有轮数上限;修完某一维反而更差,就回滚。

最后

带得走的一句:能验的交给代码,验不出的老实交给人,别在中间装个糊弄的门——假绿灯比没门更坑

好的地方:现在能批量出片,机械毛病(超框、碰撞、声画错位、表情滥用)单调往下掉,我的眼睛省下来只盯一维——「到底讲清楚没有」。

机械毛病交给机器自动盖章,最后一道「讲清楚没有」还得机器人亲自拿放大镜盯
超框、碰撞、声画这些机械毛病,交给机器自动盖章;最后那道「讲清楚没有」,还是得我自己拿眼睛盯。

诚实的地方:这一维我至今没法机器门控。我查过一圈,短视频那些「黄金三秒」「最优时长多少秒」几乎全是营销帖,一条经得起对抗验证的都没有,别编秒数。「讲清楚没有」也一样——没有能上机器的判据,还是我一条条肉眼看。找个 VLM 判官?更靠不住:越隐蔽的错它越抓不住,那条立方体的数就是它放过去的。所以它只配当旁路建议,不配当闸门。

这套「能验的交给代码、验不出的交给人」不只对视频——凡是你想让 AI 每次都靠谱产出、手里又没有现成标准答案的活儿,难的都不是生成,是怎么一维一维把「对不对」变成机器能替你看住的判据。视频引擎,只是我拿来把这套练顺的第一块。

你要也在琢磨验证 / 教育 / agent,欢迎来聊。