Design Token · AI Era
Design Token
设计令牌体系
Design Token 是设计决策的最小语义化单元——将颜色、间距、字重、圆角等视觉属性从"魔法数字"转化为有命名、有层级、有意义的变量,连接设计工具与代码实现,使 AI 辅助生成的界面天然符合品牌规范。
Global Token
全局原始值
定义所有可能的视觉值,如 color.purple.500 = #7239ff,不携带语义,仅作为调色板原料。
Alias Token
语义别名层
color.primary = {color.purple.500},赋予视觉值业务语义,支持主题切换,AI 可理解意图而非具体颜色。
Component Token
组件专属值
button.background = {color.primary},组件局部覆盖,确保组件级样式变更不影响全局品牌一致性。
🤖 为什么 AI 需要 Design Token?
当使用 Cursor / Claude 生成 UI 代码时,AI 需要一种结构化的方式来理解"品牌色是什么"、"按钮主色是哪个变量"、"禁用状态透明度是多少"。完善的 Token 体系让这些决策不依赖于 AI 的"猜测",而是通过变量引用直接读取,生成的代码天然具备主题切换能力和规范一致性。
以下为完整的 Design Token 规范展示,涵盖颜色体系(Color)、间距系统(Spacing)、字体排版(Typography)、圆角(Radius)、阴影(Elevation)、动效时长(Motion)六大维度的完整 Token 定义与命名规范,以及与 Figma Variables 和 CSS Custom Properties 的同步策略。
// Token 标准化的演进之路
Design Token 的概念由 Salesforce 设计团队在 2014 年首次提出,最初只是 Lightning Design System 内部的工程实践。十年间,它从私有规范演变为 W3C 国际标准,并在 AI 时代被赋予全新使命。
2014
Salesforce Lightning Design System
首次将设计变量命名为"Design Token",通过 SCSS 变量文件实现设计决策的集中管理,在工程层面解决"魔法数字"问题。
2019
Style Dictionary · 工具链成熟
Amazon 开源 Style Dictionary,Token 从"SCSS 变量"升级为平台无关的 JSON 配置,可编译为 CSS Variables、iOS Swift、Android XML 等多端格式,跨端 Token 管理成为可能。
2022
W3C Design Token 社区规范草案
W3C Design Tokens Community Group 发布规范草案,统一 Token 的 JSON 格式、类型系统(color / dimension / font-family 等)和引用语法({color.purple.500}),工具互操作性大幅提升。
2023
Figma Variables · 设计工具原生支持
Figma 发布 Variables 功能,将 Token 概念内置于设计工具,支持颜色、数值、布尔、字符串四类变量,与代码 Token 的双向同步终于在工具层面实现闭环。
2024–2025
AI × Token · MCP 协议接入
Figma MCP 协议让 AI 编辑器可直接读取 Variables,AI 生成代码时自动引用 Token 变量名而非硬编码值。Token 从"设计工程化工具"升维为"AI 质量护栏"。
// W3C Design Token 规范解读
W3C 规范定义了 Token 的标准 JSON 格式,统一了各工具链的描述语言。以下是关键规范要点:
W3C Token JSON 示例
color: {
purple: {
500: {
$value: "#7239ff",
$type: "color",
$description: "Brand primary — interactive elements"
}
},
primary: {
$value: "{color.purple.500}", // alias reference
$type: "color"
}
},
spacing: {
base: { $value: "4px", $type: "dimension" },
md: { $value: "{spacing.base} * 4", $type: "dimension" }
}
$type 类型系统
8 种基础类型
color、dimension、font-family、font-weight、duration、cubic-bezier、number、string — 覆盖所有视觉属性维度。
引用语法
{group.name} 格式
花括号语法定义 Token 引用关系,工具链自动解析依赖并生成正确的变量引用顺序,避免循环依赖。
$description 字段
机器与人可读
每个 Token 可附带描述,AI 工具读取时理解使用场景,人工查阅时掌握设计意图——一份 Token,两种受益者。
// 三层 Token 架构详解
三层架构是 Token 体系的核心设计模式,每一层解决不同层级的问题,并在团队协作中形成清晰的职责边界。
LAYER 1
Global Token · 全局原始值
定义所有可能的视觉值,相当于"调色板"。不携带业务语义,不直接被组件引用。通常由设计系统基础建设者维护,修改频率极低。
color.purple.100 = #f3eeff
color.purple.500 = #7239ff
color.purple.900 = #2d0f7a
spacing.4 = 16px
radius.sm = 6px
font.weight.bold = 700
↓ 语义别名引用
LAYER 2
Alias Token · 语义别名层
赋予原始值业务语义。主题切换时只需在这一层重新映射引用关系,所有组件自动更新。这是多主题能力的关键所在。
color.interactive = {color.purple.500}
color.surface = {color.neutral.0}
color.text.default = {color.neutral.900}
space.component = {spacing.4}
↓ 组件专属覆盖
LAYER 3
Component Token · 组件专属值
组件级别的 Token 覆盖,精确控制单个组件的视觉行为,不影响全局 Alias Token。
button.bg.default = {color.interactive}
button.bg.hover = {color.purple.600}
button.radius = {radius.md}
button.text.disabled.opacity = 0.38
// Figma Variables × 代码同步实践
Figma Variables 是目前最接近"设计-代码 Token 双向同步"理想状态的工具方案。以下是从 Figma 到生产代码的完整同步链路:
→
🔌
Tokens Plugin / Figma API
导出为
W3C JSON 格式
→
→
编译为 CSS Vars
iOS / Android
→
⚡ Figma MCP 的新能力:实时 AI 读取
2024 年 Figma 推出 MCP 协议后,AI 编辑器(Cursor / Claude Code)可直接读取当前设计文件的 Variables 值,生成代码时自动将颜色、间距引用替换为对应 Token 变量名,而不是硬编码 HEX 值。这意味着设计师在 Figma 里改一个 Token,AI 下次生成的代码会自然引用新值——无需任何手动通知流程。
// AI 辅助 Token 生成与维护
Token 体系建立后,维护工作往往比建立更繁重。AI 正在将 Token 维护从"人工追踪"升级为"自动化守护"。
🔍
硬编码检测
Claude 或 Cursor 可扫描 Figma 设计稿和代码库,识别所有未引用 Token 的硬编码颜色和尺寸值,生成违规报告并提供修复建议——将人工走查变为持续自动检查。
🧠
语义命名建议
新建 Token 时,AI 可根据使用场景推荐符合命名规范的名称,并检查是否与现有 Token 存在冗余。避免 color.button.default.background 和 color.cta.bg 描述同一件事的混乱。
🎯
颜色对比度合规检查
自动检查 Token 颜色组合是否满足 WCAG AA / AAA 对比度标准,对于不合规的颜色对给出替代方案,将可访问性合规纳入 Token 维护流程。
📊
Token 使用频率分析
AI 分析代码库中各 Token 的引用频率,识别"僵尸 Token"(从未被引用的废弃变量)和"热点 Token"(高频引用、修改影响面大的关键变量),优化 Token 体系迭代优先级。
💭 实践心得:Token 命名是最难的事
建立 Token 体系时,最耗时的不是技术实现,而是命名决策。一个好的 Token 名应该回答三个问题:它描述的是什么(what)、在哪里使用(where)、处于什么状态(state)。我在 Pisell 项目中经历过从 btn-color 到 color.button.background.default 的演进——越冗长的名字越精确,越精确的名字越不容易被误用。如果你在考虑"这个 Token 该叫什么名字",不妨先问:三个月后,一个从未参与这个项目的设计师,能从这个名字准确理解它的用途吗?