Schema-As-Code
Schema-As-Code / Field-Level Difference
主题 ④ · 字段层差异

字段层差异

颜色、文案、图标各自有独立的语义定义

机器能执行规则,前提是规则本身写得对。如果"严重的用红色"这种机器读不懂的自然语言是原材料,
再强大的编译管线也翻译不出精确的机器指令。字段层差异回答:同样的意图,自然语言 vs 契约字段,到底差在哪?

字段层差异 Before / After

点击切换,看同样的设计意图在自然语言和契约字段中的形态差异

Before 自然语言规范 机器只能"渲染成文字"
"错误状态要分级显示。严重的用红色,一般的用黄色,轻微的用灰色。文案要写清楚,让用户知道该做什么。高危操作要二次确认。边界动作要礼貌,涉及敏感内容要说明原因,有时候需要终止对话。"
问题 1
"严重"是形容词,机器不知道什么算严重
问题 2
"写清楚"是主观标准,走查时各执一词
问题 3
"有时候"是模糊副词,机器不知道何时终止
问题 4
没有"绝对不能碰"的红线
1

案例 1:错误状态分级

自然语言 vs 契约字段 · 7 个字段逐项对比

Before · 自然语言规范

"错误状态要分级显示。严重的用红色,一般的用黄色,轻微的用灰色。文案要写清楚,让用户知道该做什么。高危操作要二次确认。"

After · 契约字段

intent_id: "ERR-001"
semantic_domain: "observational"
version: "v1.1.0"
applicable_products:
  - "ChatGPT"
  - "Kimi"
  - "DeepSeek"

semantic_tokens:
  error_severity:
    fatal:     { color: "status.critical", ... }
    transient: { color: "status.neutral",  ... }
    retryable: { color: "status.warning",  ... }
    degraded:  { color: "status.info",     ... }

user_action:
  fatal:     [{ label: "刷新页面", action: "refresh" }, ...]
  transient: [{ label: "等待自动恢复", action: "wait" }]

llm_constraints:
  - "限流提示禁止使用红色"

immutable_boundaries:
  - { type: "safety", action: "block" }
契约字段
自然语言的问题
契约字段的解法
字段 1 意图编号
"那个错误状态的东西"
没有唯一标识,沟通时指代模糊
intent_id: "ERR-001"
精确指向,验收时引用版本号
字段 2 描述
"严重的用红色"
"严重"是形容词,机器不知道什么算严重
description: "系统级故障,上下文可能丢失"
现象+根因+后果,一句话说清边界
字段 3 语义域
文档里没提
设计师知道是"观察性的",机器不知道
semantic_domain: "observational"
机器知道该查哪本字典,跨层禁止可执行
字段 4 适用产品

不知道这个规范在哪个产品生效
applicable_products: ["ChatGPT", "Kimi"]
全局/局部生效明确,排除列表可配
字段 5 语义令牌
"文案要写清楚"
"清楚"是主观标准,走查时各执一词
error_severity: { fatal | transient | retryable | degraded }
四级枚举,每级绑定颜色+行为+文案
字段 6 机器约束
"高危操作要二次确认"
写在文档里,AI 生成时不读
llm_constraints: ["限流禁止用红色"]
生成前注入 Prompt,直接拦截
字段 7 不可变边界

没有"绝对不能碰"的红线
immutable_boundaries: [{ type: "safety", action: "block" }]
违反即阻断,不可协商
2

案例 2:边界动作区分

自然语言 vs 契约字段 · 拒绝 ≠ 终止

Before · 自然语言规范

"AI 拒绝用户请求时,要礼貌一点。如果涉及敏感内容,要说明原因。有时候需要终止对话,让用户知道。"

问题拆解:

• "礼貌一点"是形容词,机器无法执行
• "有时候"是模糊副词,机器不知道何时终止
• "让用户知道"没有标准,用户不知道权利还在不在

After · 契约字段

intent_id: "BND-001"
semantic_domain: "transactional"

semantic_tokens:
  boundary_action:
    refusal:      # 拒绝请求,保留上下文
      session_state: "active"
      history_retention: "full"
      user_can_retry: true

    termination:  # 终止对话,清空上下文
      session_state: "terminated"
      history_retention: "none"
      must_show: ["数据保留政策", "申诉入口"]

    escalation:   # 升级审核
      session_state: "review"
      must_show: ["审核预计时间"]

immutable_boundaries:
  - { type: "clarity", rule: "终止必须说明数据保留政策", action: "block" }

关键差异

边界动作字段把自然语言里的"拒绝/终止/升级"三个模糊动词,变成了机器可区分的三级枚举。每个级别绑定不同的用户权利:上下文是否保留、能否申诉、数据保留政策是否说明。机器不再猜测"有时候",而是按枚举值精确执行。

逐字段差异:7 个字段 × 自然语言痛点

同样的设计意图,自然语言缺什么,契约字段补什么

契约字段
自然语言痛点
机器获得的能力
意图编号 Intent ID
"那个错误状态的东西" — 没有唯一标识
精确引用、版本追溯、差异 Diff 可见
描述 Description
"严重的用红色" — 形容词无法执行
现象+根因+后果,机器可理解边界
语义域 Semantic Domain
文档里没提 — 机器不知道查哪本字典
机器知道场景归属,跨层禁止可执行
适用产品 Applicable Products
无 — 不知道规范在哪个产品生效
全局/局部生效明确,排除列表可配
语义令牌 Semantic Tokens
"文案要写清楚" — 主观标准各执一词
离散枚举,机器按值查询不再自由发挥
机器约束 LLM Constraints
"高危操作要二次确认" — AI 不读文档
生成前注入 Prompt,生成时校验拦截
不可变边界 Immutable Boundaries
无 — 没有"绝对不能碰"的红线
违反即阻断/升级,不可协商

不是"翻译格式",是"增加机器可执行结构"

差别不是"格式不同",是"机器能不能执行"

维度 Before · 自然语言规范 After · 契约字段 差异带来的能力
表达内容 一段文字 字段路径 + 值 + 约束 机器可按字段查询、校验、拦截
机器可执行 只能供人阅读 可校验、可拦截、可阻断 编译期与 CI 期阻断违规
行为约束 无,只有人类可读的形容词 用户行动 + 机器约束 交互语义不可被生成器省略
跨层规则 语义域 + 跨层禁止 场景误用被拦截
版本管理 文档过期无人知 版本 Version + Git Diff 变更可追溯、可回滚
AI 消费 AI 看到文字,自由发挥 AI 按 Prompt 前缀注入约束 按规则生成,不按概率生成

字段层差异明确,下一步?

去契约库查看已形式化为代码的规则,或进入验证实验室测试机器拦截效果

返回 Schema-As-Code →