把设计规范写成代码格式,是所有 AI 工具的上游约束方法论

102 阅读11分钟

框架定义:当 AI 生成界面时,设计意图在偏离。Schema-As-Code 把设计规范写成代码格式,在语义层建立一套机器可读的约束契约,让 AI 在生成界面之前,先知道"这个场景下必须表达什么语义、不能突破什么边界"。框架不替代任何设计工具或 AI 工具,而是所有 AI 工具的上游约束层——AI 负责生成,规则负责把关。

本文定位:本文是 Schema-As-Code 体系的总纲与预告。核心回答四个问题:AI 生成界面时谁在守住设计意图(问题定义);为什么约束必须写成代码格式(方法论核心:约束显化);三阶段流水线如何运转(Guard → Contract → Verify);以及这套方法论与其他工具的关系(不是替代,是叠加)。读完本文,可以判断这套方法论是否适用于你的团队,再决定是否深入各阶段的专题文章。


当 AI 生成界面时,设计意图在偏离。不是 AI 故意做错,而是系统缺少一层"语义约束"。

本文提出 Schema-As-Code:一套让设计师用 YAML 契约锁住设计意图的三阶段流水线。不是替代任何工具,是所有 AI 工具的上游约束。

一、问题:AI 生成界面时,谁在守住设计意图?

2024-2025 年,设计团队全面进入 AI 辅助生产时代:

  • v0 / Framer AI 用一句话生成可交互原型
  • Claude Code / Cursor 用自然语言写前端代码
  • DevUI HMC / DESIGN.md 让 AI 按组件库规范输出代码

但这些工具都在解决同一个层面的问题:界面长什么样、代码怎么写(形态层)。

没有人解决另一个层面的问题:这个界面在这个场景下表达了什么语义、不能突破什么边界(语义层)。

结果是:

  • AI 生成"删除账户"按钮,给了个蓝色实心按钮,用户一点,账户没了
  • AI 生成告警卡片,把 Critical 写成"严重",值班员觉得不严重,延迟响应
  • 设计规范更新了"错误状态分四级",发在语雀文档里,前端没看,AI 更没看
  • 一个产品 500 个页面,人工走查 100 个就累了,剩下 400 个的语义错误上线后才被用户投诉

这不是某个产品的 Bug,而是整个行业在概率性界面时代共同面临的结构性断层。

二、把设计规范写成代码格式,是所有工具的上游约束方法论

我提出 Schema-As-Code(把设计规范写成代码格式的规则文件),不是要做另一个 Design-to-Code 工具,而是要建立一层上游约束。

┌─────────────────────────────────────────┐
│ 语义层:Schema-As-Code                   │ ← 你在这里
│ "这个场景下必须表达什么语义、             │
│  不能突破什么边界"                       │
└─────────────────────────────────────────┘
              ↓ 编译为 Prompt 前缀 / 校验规则
┌─────────────────────────────────────────┐
│ 形态层:v0 / Claude Code / DevUI HMC     │ ← 现有工具
│ "长什么样、用什么组件、怎么写代码"        │
└─────────────────────────────────────────┘

关键洞察:

  • v0 解决的是"AI 能不能生成界面"
  • Claude Code 解决的是"AI 能不能写代码"
  • DevUI HMC 解决的是"代码是否符合组件库规范"
  • Schema-As-Code 解决的是"AI 生成的内容是否偏离了设计意图"

这四层缺一不可,且互不替代。

三、三阶段流水线:从发现问题到证明有效

Schema-As-Code 不是一套理论,是一条可执行的三阶段流水线(Semantic Pipeline)。

阶段一 Guard 结构化诊断(Structured Diagnosis)—— 组件语义快照模式诊断

回答的问题:"我的产品有没有语义断层?"

我设计了一套"结构化问诊"流水线:

  1. 组件语义快照:用 6 个字段记录一个界面组件的语义证据(snapshot_id / product / component_type / visual_record / user_confusion / context,详见《组件语义快照》
  2. 三层判定模型:回答 3 组问题 → 自动匹配语义断层模式
    • 第一层:这是什么组件类型?(错误状态 / 过程状态 / 边界动作 / 操作按钮 / 告警状态 / 信息状态)
    • 第二层:用户的核心困惑是什么?(不知道多严重 / 不知道在干什么 / 不知道权利还在不在)
    • 第三层:当前界面的视觉表达有什么特征?(全部红色 / 文案模糊 / 缺少行动指引)
  3. 模式匹配:自动输出"这是 ERR-001 类型的断层",附带同类产品证据

目前已验证 6 个通用模式模式库 v0.1):

模式 ID组件类型断层名称典型症状
ERR-001错误状态后果差异未分级多种错误共用红色
PRO-001过程状态认知阶段未显化Searching/Reading 模糊
BND-001边界动作权利差异未区分拒绝 vs 终止混为一谈
ACT-001操作按钮高危操作未约束删除按钮做成蓝色实心
ALR-001告警状态文案语义降级Critical 被写成"严重"
INF-001信息状态状态权重未对齐通知与警告视觉权重相同

阶段一的完整方法论详见:《组件语义快照》 · 《三层判定模型》 · 《6 个漂移模式》

阶段一产出:诊断报告 + 同类产品证据 + 根因分析。

阶段二 Contract 语义契约化(Semantic Contractualization)—— 设计师作为"语义翻译者"

回答的问题:"我怎么用规则锁住设计意图?"

当设计师发现语义断层后,传统做法是:写一份设计规范文档(PDF/语雀)→ @ 全员通知 → 2 周后走查发现 3 个产品没改对。

Schema-As-Code 的做法是:

status.critical语义令牌(Semantic Token),定义"这个颜色在这个场景下代表致命状态"。完整的语义令牌体系(status.* / phase.* / boundary.* / action.*)见语义规范体系语义字典

编译管线的完整机制详见:《编译管线是语义一致性的"机器翻译层"》

关键设计:一份 YAML 契约,由编译管线编译为 4 种消费格式:

  • Prompt 前缀:供 Claude Code / Cursor 注入 AI 指令
  • JSON Schema:供前端 Props 结构校验
  • Checklist 走查清单:供设计师人工复核
  • CI 校验规则:供自动化流水线拦截

阶段二的完整展开详见:《语义规范体系》 · 《YAML 契约格式》 · 《编译管线》 · 《契约库》

阶段二产出:YAML 契约文件 + 4 种格式编译输出。

阶段三 Verify 验证闭环(Validation Closure)—— 证明规则有效

回答的问题:"我怎么证明规则真的防住了语义漂移?"

三层验证工具:

  1. 语义分级器:输入任意错误文案,1 秒内返回语义分级建议(Fatal / Transient / Retryable / Degraded)
  2. JSON 语义校验器:粘贴组件语义快照,自动匹配已知模式并标记风险
  3. 四层推演引擎:语法推演 → 语义推演 → 安全推演 → 美感推演,逐层校验、逐层短路

验证指标(数据模型推演口径,非实测数据):

指标之前之后
语义返工率30%5%
规范同步时间2 周0.5 天
走查覆盖率20%100%

四、为什么必须是 YAML,而不是 Prompt 或文档

约束写在 Prompt 里:不可审计(改了没人知道)、不可复用(每个项目重写一遍)、不可版本管理(无法 Diff、无法回滚)、不可校验(机器无法判断生成结果是否违反了"那一段话")。

约束写在文档里:人可能看漏、看错、看过时版本;机器根本看不到。

YAML 契约获得四项能力:可被机器读取(AI 生成前注入)、可被自动校验(CI 阻断)、可被版本管理(Git Diff 追溯)、可被多格式分发(一处修改四处同步)。

五、经济价值:从"人传人的方言"到"机器可读的普通话"

传统工作流的隐性成本:

环节现状问题
规范定义设计师写语雀文档机器无法读取
规范同步@全员 + 开会2 周还有人没收到
规范执行前端凭经验实现每个人理解不同
规范走查设计师人眼检查500 页面只能看 100 个
规范修复上线后用户投诉修复成本 ×10

总成本 = 设计意图在跨角色传递中不断失真,反复修复。

Schema-As-Code 工作流的经济价值:

环节改变节省
规范定义设计师写规则文件意图直接机器可读
规范同步Git 变更自动触发从 2 周 → 0.5 天
规范执行AI 自动读取指令前缀前端不再凭经验猜
规范走查机器自动校验 100%设计师只处理异常
规范修复生成前拦截上线后零语义事故

总收益 = 设计意图从"人传人的方言"变成"机器可读的普通话"。(以上数字为数据模型推演口径,非实测数据。)

设计师角色的完整展开见:《设计师与产品经理》角色专题

设计师的新角色:"语义翻译者"

在 AI 生成界面的时代,设计师的核心竞争力不是"会不会写代码",而是:

"能不能把设计意图翻译成机器可读的规则,让 AI 在生成内容之前就知道什么不能说、什么不能做。"

这个角色:比工程师更懂设计意图的语义,比设计师更懂实现的约束,是"设计 → 工程"之间的翻译层。而 YAML 契约就是这个翻译层的载体。

六、与其他工具的关系:不是替代,是叠加

工具类型解决什么问题Schema-As-Code 怎么叠加
Design-to-Code(Anima/Builder)从设计稿到代码在导出前加语义校验,防止代码生成后语义漂移
AI 原型(v0/Framer AI)快速验证想法在生成前注入 Prompt 前缀,约束原型语义
AI 编程(Claude Code/Copilot)自然语言写代码在 Prompt 上下文注入 YAML 约束,代码生成前已知语义边界
企业规范(DevUI HMC)符合组件库的代码在组件语义映射时叠加语义层,组件用对了但场景语义也要对
设计系统规范(DESIGN.md)视觉规范的机器可读化消费 DESIGN.md 的 Token,但约束的是语义映射关系

Design Token 定义"颜色是什么"(如 #EF4444),语义令牌 定义"颜色代表什么"(如 status.critical)。Schema-As-Code 消费 DESIGN.md 的视觉定义,但约束的是语义映射关系

七、仓库与在线体验

已开源:

结语

AI 时代的设计工作流正在重构。不是"设计师会不会被 AI 替代"的问题,而是"设计师在 AI 工作流中扮演什么新角色"的问题。

Schema-As-Code 给出的答案是:设计师不需要写代码,但需要写"语义契约"——把设计意图翻译成机器可读的规则,成为 AI 生成界面的上游约束层。

这不是一个工具,是一个方法论。不是替代任何现有工具,是所有工具的上游约束。

Gap 期局限性声明:当前状态为架构推演与最小可行原型阶段。YAML 规范、校验逻辑为定义层实现,尚未接入生产级 LLM API 或 CI 流水线。欢迎基于现有思路共建。

关于作者:魏雯,体验架构设计师。专注于 AI 界面的语义治理,解决的核心问题:让 LLM 生成的界面不偏离设计规范。10+ 年互联网设计经验。设计系统 / 体验工程 / AI 原生|广州 / 深圳


下一步:阶段二深度展开

本文是 Schema-As-Code 体系的总纲与预告。下一篇深度展开阶段二 Contract 语义契约化(Semantic Contractualization):从意图到规则的翻译哲学、设计师的 YAML 书写规范契约库管理、编译机制与真实案例。详见下一篇《阶段二 Contract:设计师作为"语义翻译者"——当 AI 生成界面时,我怎么用规则锁住设计意图》。

附录:三阶段流水线速查表

阶段统一命名回答的问题核心资产
阶段一Guard 结构化诊断(Structured Diagnosis)我的产品有没有语义断层?6 字段快照 + 三层判定模型 + 模式库 v0.1(6 模式)
阶段二Contract 语义契约化(Semantic Contractualization)我怎么用规则锁住设计意图?YAML 契约(7 字段)+ 契约库 + 4 种编译格式
阶段三Verify 验证闭环(Validation Closure)我怎么证明规则真的有效?四层推演引擎 + 用例库 × 12 + 验证报告

1920.png