一块面板装下六个模型:Composer v2 的设计过程
选择器背后的 6 个模型几乎在任何一件事上都不一致:有的接受尾帧,有的锁死时长,有的音频单独计价,连分辨率的写法都没有两个是一样的。Composer v2 的做法是把每个模型描述成一份能力描述符,再由面板把当前模型做不到的选项置灰而不是隐藏,切换模型时布局不再跳动。文章拆解了这份描述符的结构、一次性修好非法组合的协调过程,以及我们删掉的两个控件——多镜头开关和模板页签,它们在任何一家供应商的 API 里都找不到对应字段。
我们如何核验每个模型的真实能力、积分价格是怎么算出来的,以及面板背后做过哪些取舍。
一篇长文,摘要已经写全——目前还没有可以点进去的详情页。
选择器背后的 6 个模型几乎在任何一件事上都不一致:有的接受尾帧,有的锁死时长,有的音频单独计价,连分辨率的写法都没有两个是一样的。Composer v2 的做法是把每个模型描述成一份能力描述符,再由面板把当前模型做不到的选项置灰而不是隐藏,切换模型时布局不再跳动。文章拆解了这份描述符的结构、一次性修好非法组合的协调过程,以及我们删掉的两个控件——多镜头开关和模板页签,它们在任何一家供应商的 API 里都找不到对应字段。
工程笔记、积分算法与创作方法。每张卡片都把要点写完整了,因为背后暂时还没有文章详情页。
供应商文档和供应商的实际行为对不上的次数,比你想象的多。我们对着 aivideoapi.ai 的参考文档逐个核验了 20 个模型,逐一记录它支持哪些模式、真正可用的分辨率与时长、音频是否额外计费,以及每秒的积分单价。这份能力矩阵就是面板在运行时读取的数据源,所以做不了 1080P 的模型永远不会把这个选项摆出来——也解释了为什么 20 个里最终只有 6 个进入选择器。
每个模型都有自己的计价口径,所以我们只做一次归一:Vgent 积分 = ceil(供应商积分 × 0.75)。它一律向上取整,保证你在生成前看到的估算不会低于实际预扣;预扣就停在这个估算上限上,供应商回报的真实消耗目前只写进日志,不会回冲每日预算,所以生成失败时退款状态显示为待核对。文章用一条 5 秒片子把这笔账算了一遍,也说明了 200 Vgent 积分的免费额度方案和匿名单条 300 供应商积分上限是怎么定下来的。
能扛住换模型的提示词都有同一个结构——一个主体、一个动作、一次运镜、一种光线,顺序固定,多余的不写。我们把四条提示词逐句拆开,展示每一句改变了画面里的什么,并解释为什么堆形容词最先牺牲掉的往往是运动。这也是面板里那个「加入电影感」按钮只追加一句固定描述、而不去改写你原文的原因。
图生视频需要一张首帧;只有部分模型接受尾帧,而且没有任何一个模型会替你脑补两张本来就不相干的画面之间的镜头。续作的限制更严:它只能接着本站生成过的片段往下做,凭一枚自包含的签名来源令牌,裸的任务 ID 或粘贴进来的供应商链接都会被拒绝。我们自己的上传存储还没接通,所以文章明确写清楚了这几条路径里今天哪些能用、哪一条还在等它。
200 Vgent 积分,不用注册、不用绑卡——难的地方在于既让它真的够用,又不至于被批量刷走。这个数字目前仍是额度方案,服务端并不按访客记余额:真正在跑的是单条 300 供应商积分的上限、按网络地址(IP)计的限流,以及一份所有匿名调用共享的每日供应商预算;此外还有一枚防止连点重复扣费的幂等键,和一条让任务在刷新页面后仍能找回的归属记录。文章讲了这些计数为什么放在 Redis 而不是浏览器里、为什么共用一个网络时配额可能已经被同网络的其他人花掉,以及生成失败时为什么退款状态显示为待核对,直到供应商确认为止。
第二套配色从来都不是免费的:每个 token 要翻倍,每条渐变都得重新过一遍对比度,切换开关本身还会变成一份必须持久化、又不能在水合时闪一下的状态。我们在样式表里留了一个亮色主题钩子,但后面什么都没接。文章复盘了让单一主题站得住脚的那些对比度工作,包括为什么行动按钮的渐变起点用了比强调色更深的蓝,好让白字压在上面仍能过 4.5:1。