Tobatsu · Release Model Redesign

给模板加一个「变体」能力

同一个模板能挂好几个版本,发任务时带个可选字段选哪个 —— Docker 镜像 tag 那个路子。加法,不是重写;上游一行代码都不用改。

一眼看全

14
真正的功能
28
现在的模板名字
3 步
新的发版流程
0
上游要改的代码

14 个真功能,现在被拆成了 28 个名字。新模型把"同一件事的几个名字"收成一个模板 + 几个 tag。

现状:为什么乱

今天一个任务带一个名字,系统拿名字找到当前在用的那一版(snapshot)。问题是"测试还是正式"是藏在名字后缀里的:

名字带 _test → 给测试版 名字不带 → 给正式版

结果同一个功能,为了区分测试 / 正式 / Mai 专用,被复制成了好几个互相独立的模板:

画中画 一个功能 video_pip_compose video_pip_compose_mai video_pip_compose_mai_test
真实例子 · 画中画现在是 3 个独立模板;数字人也是 3 个;其余多数是「正式名 + _test」成对。

新模型:一个模板 + 几个 tag

把"同一件事的几个名字"收成一个模板。模板底下挂多个版本(snapshot),每个版本贴个 tag(标签)。发任务时带一个可选字段选 tag —— 不带就走默认那版(就是现在的行为)。

任务请求 tag: v2 (可选字段) Template video_pip_compose tag: default 默认 tag: v2 新变体 tag: canary 灰度 snapshot A 现在用的那版 snapshot B 新变体版本 snapshot C 灰度版本
墨蓝路径 = 请求带 tag:v2 → 命中 v2 → 拿 snapshot B。不带字段 → 走 default → snapshot A(现在的行为)。

发版就三步

01

生成 snapshot

把这一版冻结下来 —— 工作流、技能、引擎、镜像、队列、交付,全锁住。

02

打 tag

给这个版本贴个标签,比如 v2 / canary。一个标签指一个版本。

03

配环境用哪个 tag

配一下哪个环境走哪个 tag。没有"发布到 prod"这种特殊仪式了。

新名词怎么对上现在的概念

新模型就是现在的什么
snapshot版本包(已有,不变)。冻结工作流 / 技能 / 引擎 / 镜像 / 队列 / 交付 / 环境变量名。
tag新加的标签,指向某个 snapshot,跟 Docker 镜像 tag 一个意思。
默认 tag每个模板现在正在用的那版 snapshot。不带字段就走它,所以旧上游不用改。
可选字段选变体。跟 runtime_env_overrides 同类:发任务时额外带的字段,不带不改默认。
environment"哪个环境用哪个 tag"的配置 —— 不再是"发布到 prod"这种概念。
老 _test / _mai 名字存量,各自独立,现在不动、不迁,自然退场。

怎么迁移 —— 线上一秒不断

这版故意不做的

之前讨论里冒出来一堆复杂设计,全部砍掉,不进这版方向:权限分级、可见性策略、token 档位、命名规则、灰度策略。这些等真要动手实现时再单独定 —— 现在的目标就是看得见 + 能加变体,别的不掺。