Schema-As-Code
Schema-As-Code / YAML Contract
主题 ④ · YAML 契约

YAML 契约:设计意图的接口定义

编译即规则

形式化为代码的规矩,在机器世界里长什么样?
一份 YAML 契约被机器读取、编译、执行时的真实形态——不是设计师看到的 YAML 文本,而是机器消费链路中的 4 种可执行格式。

唯一事实来源

设计师写一份 YAML 契约,机器自动编译成四种东西——不用写四遍,改一处,四处同步。

ERR-001 错误状态后果差异未分级
唯一事实来源
# intent/err-001.yaml
# 语义域:observational(观察型)——用户被动接收系统状态

intent_id: "ERR-001"
semantic_domain: "observational"
version: "v1.1.0"

semantic_tokens:
  error_severity:
    fatal:
      description: "系统级故障,对话上下文可能丢失"
      visual_mapping:
        color_token: "status.critical"
        motion_token: "pulse.red.urgent"
        icon_token: "alert.octagon"
      user_action:
        - label: "刷新页面"
          action: "refresh"
        - label: "导出历史"
          action: "export_history"

    transient:
      description: "网络抖动,系统可自动恢复"
      visual_mapping:
        color_token: "status.neutral"
        motion_token: "spinner"
        icon_token: "loader"
      user_action:
        - label: "等待自动恢复"
          action: "wait"

    retryable:
      description: "请求频率已达上限"
      visual_mapping:
        color_token: "status.warning"
        motion_token: "none"
        icon_token: "clock"
      user_action:
        - label: "等待倒计时"
          action: "wait_countdown"
        - label: "升级套餐"
          action: "upgrade"

    degraded:
      description: "部分功能可用,可继续生成"
      visual_mapping:
        color_token: "status.info"
        motion_token: "none"
        icon_token: "info.circle"
      user_action:
        - label: "继续生成"
          action: "continue"

immutable_boundaries:
  - boundary_type: "safety"
    rule: "禁止所有错误状态共用同一种红色视觉表达"
    violation_action: "block"
  - boundary_type: "clarity"
    rule: "每个错误级别必须提供明确的用户行动指引"
    violation_action: "warn"

编译管线:从唯一事实来源到四种机器形态

唯一事实来源
ERR-001.yaml
v1.1.0
编译管线
Compiler
查字典 → 编译
四种机器形态
4 Formats
自动同步
🤖
Prompt 前缀
给 AI 编程工具
⏳ 待编译
📐
JSON Schema
给结构校验器
⏳ 待编译
📋
Checklist
给设计师走查
⏳ 待编译
🔧
CI 规则
给自动化流水线
⏳ 待编译

机器拦截现场

当 AI 试图生成违规内容时,机器如何拦截?

❌ 未注入契约 违规通过
⚠️ 请求过于频繁,系统出现严重错误
红色背景 · 无恢复指引 · 用户恐慌性刷新
• AI 把 retryable 做成了 fatal 级别的视觉
• 用户看到"严重错误",以为数据丢失
• 其实等 30 秒就好,但用户 panic 了
✓ 注入契约后 合规生成
⏱️ 请求过于频繁,请在 42 秒后重试
黄色提示 · 时钟图标 · 倒计时 + 升级入口
• 机器先查 ERR-001.yaml → 匹配 retryable
• 拦截:禁止用"严重"描述限流,禁止红色
• 返回修正建议 → AI 重新生成合规内容

拦截日志

契约编译完成,下一步?

去验证实验室测试机器拦截效果,或查看消费状态追踪

返回 Schema-As-Code →