Schema-As-Code / 语义域
Schema-As-Code 语义地基 · ② 语义域

语义域 Semantic Domain

组件是空容器,语义由场景定义。语义不由组件名称决定,而由覆盖层外赋。
分类回答"这是什么",语义域回答"在此场景下它意味着什么"。

1

组件不携带语义

<Alert>、<Button> 只是视觉形态的空壳。语义由场景外赋,而非内生于名称

2

语义外赋于覆盖层

每个界面点必须且只能被一个 L1 覆盖层声明。语义是"层"的属性,不是"组件"的属性

3

域内唯一、域间隔离

同一个术语在不同域含义不同。跨域绑定被机器拦截,域边界靠规则维护

?

问题:语义住在组件名里,还是住在场景里?

分类模型(Taxonomy)在 AI 生成时代系统性失效

设计系统负责人

"组件库一升级,语义跟着重写,返工从头来过"

根因:语义绑死在组件实现里

AI 工程师

"视觉对了,语义错了——高危操作被画成了普通操作"

根因:容器无语义身份,靠视觉惯性猜

设计师

"'错误提示要克制',十条产品线解读出十种实现"

根因:形容词无边界,不可判定

前端

"type='error' 一个参数打天下,场景信息全丢了"

根因:单参数无法表达场景归属

四条反馈指向同一个根因:语义没有自己的边界层

语义要么长在组件里、跟着实现走(升级即重写),要么飘在文档里、靠人解读("要克制"十种理解)——机器拿到的只是一个 type 字符串,不知道"这个组件在此场景承担什么语义"。

A

核心演示:同一个空容器,不同语义外赋

<Alert> 只是圆角、图标位、关闭按钮的容器。语义由覆盖层注入。

选择覆盖层,观察同一个 Alert 的语义变化

!
transactional status.critical

阻断器

用户必须立即处理,否则系统状态恶化

🚨 系统级故障,对话上下文可能丢失

建议刷新页面重新开始,或导出历史记录。

刷新页面 导出历史

视觉映射

红色脉冲 + 八边形图标

行为约束

必须二次确认 + 恢复路径

文案约束

必须说明后果严重性

observational status.info

信息条

用户可选择性关注,不影响系统状态

ℹ️ 新功能上线:智能摘要已支持 PDF 文档

视觉:蓝色静态 + 信息图标
行为:可自动消失
文案:禁止附加操作说明
navigational action.primary

路径提示

用户需要方向确认,无状态风险

→ 下一步:确认订单信息

视觉:品牌色 + 箭头图标
行为:点击后跳转
文案:显示下一步预览
conversational boundary.refusal

对话边界

双向交流,上下文持续累积

💬 我无法回答这个问题。你可以尝试换个问法,或开始一个新话题。

视觉:紫色提示 + 对话图标
行为:保留输入框 + 提供替代建议
文案:必须说明会话状态

互斥规则:一个界面点只能被一个 L1 覆盖

L1 Mutual Exclusion · 覆盖层互斥是语义域的基石

✓ 合法:单一 L1 覆盖

界面点:支付确认弹窗

<Modal overlay="transactional">
  <Alert binding="status.critical" />
  <Form />
  <Button binding="action.destructive" />
</Modal>
L1 覆盖:transactional ✓
L2 叠加:status.critical + action.destructive ✓
编译结果:通过 ✓

✕ 非法:双重 L1 覆盖

界面点:支付确认弹窗

<Modal overlay="transactional"
       overlay="observational">  ← 冲突
  <Alert binding="status.critical" />
  <Alert binding="status.info" />   ← 冲突
</Modal>

[CI 阻断] overlay-mutual-exclusion

界面点同时声明了 transactional 和 observational 两个 L1 覆盖层。

规则:每个界面点必须且只能被一个 L1 覆盖层覆盖。

🛡

跨层禁止:域边界的机器形态

Anti-Corruption Layer · 域边界不是文档约定,是可判定的机器规则

场景:限流提示(observational 域)

AI 生成器输出:

<Alert overlay="observational"
       binding="status.critical">  ← 跨层非法
  请求过于频繁,请稍后再试
</Alert>

[CI 阻断] cross-layer-forbidden

status.critical 在 observational 域为非法绑定。

期望:status.warning(黄色静态 + 时钟图标)

编译结果:阻断 ✕

修正:合法绑定

字典指导下的正确输出:

<Alert overlay="observational"
       binding="status.warning">  ← 合法
  请求频率已达上限,42 分钟后重试
</Alert>

✓ 跨层校验通过

status.warning 在 observational 域合法。

视觉:黄色静态 + 时钟图标 + 倒计时

编译结果:通过 ✓

字典 v1.0.0 注册的跨层禁止规则

绑定
所属域
跨层禁止
违反后果
status.critical
transactional
observational / navigational / conversational
编译阻断
status.warning
transactional
observational / navigational / conversational
编译阻断
status.info
observational
transactional
编译阻断
status.success
observational
transactional
编译阻断
action.destructive
transactional
observational / navigational / conversational
编译阻断
action.primary
navigational
transactional / observational
编译阻断

四条反馈闭环:踩过的坑怎么被解掉

覆盖层模型对四条真实反馈的闭环回应

语义域是元规则层的地基

语义域(边界)→ 语义绑定(域内定义)→ 场景映射(域内实例)→ YAML 契约(引用域)→ 编译管线(校验域)

进入语义字典 →