在智能命名(文生文)的基础上,F2C生成代码的语义化程度取决于设计师图层命名的语义化程度,在业务上平均覆盖率只能达到40%-50%左右,部分代码块无法达到语义化的要求。
初版本,我们使用规则命名方式(如下表),确保层级关系与css classname命名不会相互污染,保证还原效果;这种方案的缺点是缺乏语义化
层级 | 类型 | 命名 |
---|---|---|
1 | div | page + 序号 |
2 | div | wrap + 序号 |
3 | div | container + 序号 |
4 | div | content + 序号 |
5 | div | main + 序号 |
6 | div | section + 序号 |
7 | div | subSection + 序号 |
9 | div | block + 序号 |
9 | div | subBlock + 序号 |
/ | img | img + 序号 |
/ | text | text + 序号 |
智能命名V0版本的实际效果如下:
图层示例 | 图层预览 | 生成代码 |
---|---|---|
![]() |
![]() |
![]() |
v1版本,我们使用AI服务对图层名进行翻译,大概可以覆盖40%-50%的图层节点,这个方案的不足是代码的语义化只能受限于设计师的图层语义
对于图层名转换的 Prompt 大致规则如下:
- 使用缩写翻译成4个英文单词,保留数字,并将第一个字母转换为小写。
- 从变量名称中删除非字母数字字符。
- 如果变量名以数字开头,请添加前缀“num”。
- 如果名称超过20个字符,则将其截断为前20个字符。
- 检查所有变量名称。如果有重复,请在末尾添加一个数字
智能命名V1版本的实际效果如下:
图层示例 | 图层预览 | 生成代码 |
---|---|---|
![]() |
![]() |
![]() |
可以看到这个方案的效果依赖于设计师是否有符合预期的图层命名(一般是中文),设计师越按照语义进行设计稿命名,我们得出的代码命名就越符合预期。
使用多模态(视觉语言模型+文本语言模型)优化class命名,详见多模态优化class命名实验多模态优化class命名方案评审
在 v1.0 版本中,我们将命名服务集成至 f2c-ide-server,旨在将远程服务统一到一个端口。然而,随着接入端口和 IDE 种类的不断增加,维护多个端口的后置处理脚本变得愈发复杂。
在 v2.0 版本中,我们通过将 AI 服务前置于 jsonSchema 层,优化了处理流程,使得多个端口能够共享 AI 优化的处理结果。
[流程图]## 渐进式智能命名策略
我们对大部分图层的命名情况总结为下表:
🎬 图层名示例 | 🔍 文生文 | ⚙️ 图生文 |
---|---|---|
Group xx 、编组xx | | 🟩 使用 |
Mask group、蒙版xx | | 🟩 使用 |
Rectangle xx、矩形 xx | | 🟩 使用 |
Frame xx | | 🟩 使用 |
Component xx | | 🟩 使用 |
Text xx | | 🟩 使用 |
Line xx | | 🟩 使用 |
Ellipse xxx | | 🟩 使用 |
文本节点(*当内容与图层名相同) | 🟩 使用 | |
文文本节点(*当内容与图层名不相同) | | 🟩 使用 |
除以上情况外的中文节点 | 🟩 使用 | |
图层预览 | v1代码预览 | v2代码预览 |
---|---|---|
![]() |
![]() |
![]() |
数值解析:
设计图 | 图层规模 | *v2.0覆盖率提升 | 文生文耗时 | 图生文耗时 | *总耗时 | *v2.0耗时增幅 |
---|---|---|---|---|---|---|
![]() |
14 | +50% | 3.75s | 4.96s | 6.35s | 19% |
![]() |
64 | +40% | 6.13s | 6.67s | 9.49s | 5% |
![]() |
49 | +37% | 4.17s | 5.44s | 10.01s | 13% |
随机抓去3个 case,我们v2.0方案发现引入文生图后,覆盖率平均提升42%,耗时平均仅增加10%左右,符合预期
目前,我们可以通过插件设置开启v2版本的智能命名。