《AI 原生软件开发生命周期》 · 设计环节

AI 原生设计流水线

从设计规范到高保真原型、再到 Figma 与代码的可执行指南——基于一次完整的真实实践(为适老化产品建立设计系统)整理而成。

DESIGN.md Claude Code Figma MCP 设计治理
WHY

范式转变:设计的事实源搬家了

传统 SDLC 中,设计的事实源(single source of truth)是 Figma:设计师在画板上创作,开发通过「交付」把设计变成代码。AI 原生 SDLC 中,事实源上移到仓库里的文本规范——因为文本是 AI 的原生格式:可读、可 diff、可 lint、可版本化。

传统流向 · 人类设计师主导

规范口头 / Wiki→ Figma事实源→ 代码交付

Figma 是创作层。设计师改稿后,AI 经 Figma MCP 读取画板、更新代码——Framelink 等只读 MCP 原生支持这个方向。

AI 原生流向 · AI 主导设计

DESIGN.md事实源→ HTML 原型设计稿→ Figma协作层→ 代码

两个现实约束塑造了这条流向:Figma 对 AI 只读(免费账号 REST API 只读、官方写能力需付费席位);HTML 是 AI 的天然设计稿(秒级迭代、真实渲染、可交互)。

AI 原生设计环节的本质:把设计从「图片」变成「文本 + 工具链」——规范可执行、原型可生成、偏离可审计、流程可复现。

两种流向并非互斥,长期维护的产品会形成双向闭环:AI 产出 HTML → 导入 Figma 供人评审 → 人在画板上微调 → AI 经 MCP 读回改动 → 同步代码。而 DESIGN.md 在两种流向里都是最上游的锚。

STAGE 1

阶段一 · 提炼设计规范(网站 → DESIGN.md)

设计规范采用 Google 的 DESIGN.md 格式(npm 包 @google/design.md):一个双层 Markdown 文件,YAML front matter 存机器可读的 design tokens,正文存人类可读的设计理念。Tokens 给 AI 精确的值,prose 告诉它为什么。

1.1 抓取参考来源

从现有网站提炼时,抓取 HTML 与主样式表,分析颜色、字阶、圆角、间距与组件模式。目标站有反爬保护时的退路是 Wayback Machine:

# 查最近快照
curl "http://web.archive.org/cdx/search/cdx?url=example.com&output=json&limit=-3&filter=statuscode:200"
# 抓快照页面与 CSS
curl -L "http://web.archive.org/web/<时间戳>/http://example.com/"

1.2 编写 DESIGN.md

---
name: SGCC Portal · 国网绿央企门户
colors:
  primary: "#00796A"      # 全站唯一交互强调色
  accent:  "#F6AB00"      # 琥珀金,每屏至多一处
typography:
  body:
    fontFamily: Microsoft YaHei, sans-serif
    fontSize: 14px
components:
  button-page:
    backgroundColor: "{colors.primary}"
    textColor: "#FFFFFF"
    rounded: "{rounded.sm}"
---

## Overview
央企门户美学:庄重、秩序、信息密集但不杂乱……

## Do's and Don'ts
- 不要渐变、投影、发光——庄重感来自"什么都没有"。

三条写作心法(来自 DESIGN.md 的哲学,实践中全部验证):

  • 一个具体引用胜过一串形容词。「央企门户、机关报式排版」比「简洁、现代、大气」信息量大得多——后者只会生成平庸的中间态。
  • 负面约束是免费的。引用足够具体时,「不要渐变、不要大圆角」这类限制直接封死风格漂移,不必逐条罗列。
  • 格式靠生长,不靠 spec。规范只规定最小结构,项目可自由扩展章节,linter 对未知内容宽容(保留,不报错)。

1.3 质量门:lint 必须 0/0

# 校验(0 errors / 0 warnings 才放行)
designmd lint DESIGN.md
# 版本对比(审计偏离、检测回归)
designmd diff DESIGN.md DESIGN-v2.md
# 导出 tokens 到代码(Tailwind v4 / DTCG)
designmd export --format css-tailwind DESIGN.md > theme.css

lint 内置 11 条规则,最实用的三条:broken-ref(token 引用悬空,error)、contrast-ratio(组件前景/背景低于 WCAG AA 4.5:1,warning)、orphaned-tokens(定义了却没被组件引用的颜色)。对比度检查与适老化设计天然同向——规范工具本身就是无障碍守门员。

STAGE 2

阶段二 · HTML 高保真原型(DESIGN.md → 设计稿)

HTML 是 AI 的设计稿,原因有三:迭代速度(改 prompt → 刷新,几秒一轮);保真度(真实排版引擎、真实字体渲染,高于画板);可交互(hover、锚点、流程可直接体验)。设计评审在浏览器里完成,不在 Figma 里。

2.1 生成规则

  • 单文件、零依赖:tokens 内联为 :root CSS 变量,整页自包含,随处可开。
  • 内容对齐领域文档:文案、功能描述必须来自项目的领域文档(如 CONTEXT.md),AI 不杜撰产品行为。
  • 规范忠实:颜色、字号、圆角、间距全部取自 tokens;组件模式(导航、卡片、页签、页脚)按规范组件实现。
  • 项目偏离显式化:确需偏离(如适老化把正文从 14px 提到 16px),写入 DESIGN.overrides.md 并在 HTML 头部注释引用——见「设计治理」。

2.2 原型即评审物

把原型在浏览器打开即进入评审循环:看效果 → 口头反馈 → AI 修改 → 刷新。确认前不要进 Figma——HTML 阶段的修改成本是秒,Figma 阶段是分钟级且不可由 AI 代劳。

在 HTML 阶段把设计定稿。本次实践中,原型一次通过评审;若在 Figma 导入后才发现要改结构,只能回到 HTML 改完再重新导入。
STAGE 3

阶段三 · 导入 Figma(HTML → 协作层)

Figma 在 AI 原生流程中的角色是协作与存档:给人看、给人评论、留版本、做交付。先认清工具的能力边界:

途径能力适用
Figma REST API只读(读文件、节点、样式、导出图)免费账号可用;回读校验
官方 Dev Mode MCP读选中图层的结构化数据与设计变量完整功能需付费席位
Framelink MCP(figma-developer-mcp)只读,用 personal token设计稿 → 喂给 AI → 生成代码
html.to.design(扩展 + 插件)单向写入:HTML 页面 → 可编辑画板本流程的导入桥

3.1 操作步骤(人工完成)

  1. AI 在原型目录起本地服务器:python3 -m http.server 8901 --bind 127.0.0.1;
  2. Chrome 打开 http://127.0.0.1:8901/,点 html.to.design 扩展 → Capture this page;
  3. Send to Figma → 桌面端唤起,配套插件自动落地为可编辑画板;
  4. 把文件链接发回给 AI,进入对齐校验。
禁止路径不要在 Figma 插件里直接粘贴 localhost URL。插件的渲染在厂商服务器上进行,访问不到你的本机——本次实践因此产生过一个空文件。本地页面必须走 Chrome 扩展(扩展在本机抓取渲染结果,不受网络可达性限制);同理,直接双击打开的 file:// 页面扩展无权访问,必须起本地服务器。
STAGE 4

阶段四 · 对齐与实现(规范 ⇄ 设计稿 ⇄ 代码)

4.1 规范直达代码

export --format css-tailwind 产出的 @theme CSS 变量块,即使不用 Tailwind 也能直接贴进任何项目的 <style> 当 design tokens 用——规范与实现同源,不存在「设计稿和代码两个版本」。

4.2 设计稿回读校验

新会话中通过 Framelink MCP 的 get_figma_data 读取画板结构与样式,与 DESIGN.md tokens 比对,确认导入无损、实现无漂移。

注意不要轮询 Figma REST API。免费(Starter)账号限流阈值低,轮询必触发 429。校验用一次性读取,或干脆人工目测——别把流程卡在自动化校验上。

4.3 变更与审计

规范或产出变更时跑 designmd diff 旧 新:token 级增删改一目了然,回归(错误/警告变多)时退出码为 1,可直接接 CI。diff 在这里不是「改完留痕」的工具,而是审计工具——确认项目偏离始终只有 overrides 里声明的那几条。

GOVERNANCE

设计治理:标准只读,偏离显式

AI 会顺手改文件——治理规则必须前置。三层模型:

公司标准 DESIGN.md只读消费→ 项目偏离 DESIGN.overrides.md只记 delta + 理由→ 产出物原型 / Figma / 代码
  • 标准不被项目修改。DESIGN.md 是输入,不是草稿。
  • 偏离必须带理由。例:「正文 14px → 16px——目标用户为 60–80 岁老花眼人群,适老化可读性优先」。
  • 偏离可审计。定期用 diff 对照标准,确认没有隐性漂移。
  • 回流有门槛。某条偏离在多个项目反复验证有效后,由标准维护者走评审回流入公司标准——项目侧不代劳。
SETUP

工具链配置(一次性)

Figma token 管理

Personal access token 放入 shell 环境,绝不进 git:

# ~/.zshrc
export FIGMA_TOKEN="figd_xxxxxxxx"

Figma MCP 注册(Claude Code)

注册在用户级且 token 直接内嵌——GUI 启动的编辑器不读 ~/.zshrc,用 ${VAR} 引用会取到空值:

claude mcp add figma --scope user -- \
  npx -y figma-developer-mcp --figma-api-key figd_xxxxxxxx --stdio
# 验证
claude mcp list   # 期望输出:figma: ... ✔ Connected

DESIGN.md CLI

可用 npx @google/design.md,或克隆仓库后用 bun run cli <cmd> 本地调用(后者绕开包下载的权限拦截,也便于锁定版本)。

PITFALLS

踩坑记录:每个坑只踩一次

以下全部来自一次真实实践。固化的意义就是把「试错」变成「照做」。

坑现象正确路径
目标站反爬curl 返回 412 与 JS 挑战页(瑞数类保护)改走 Wayback Machine 快照(CDX API 查档)
npx 权限拦截npx @google/design.md 被安全策略拦下本地克隆仓库,bun run cli lint
file:// 抓不了Chrome 扩展默认无权访问本地文件页python3 -m http.server 起 localhost
插件抓 localhostFigma 插件粘贴 localhost URL → 生成空文件必须走 Chrome 扩展本机抓取
REST 限流Starter 账号轮询校验 → 429 Rate limit一次性读取 / MCP 回读 / 人工目测
环境变量取空GUI 启动的编辑器不读 ~/.zshrc,MCP 报 missing envMCP 配置用户级注册、token 内嵌
ROLES

人工介入点:AI 与人的分界

步骤执行者
提炼规范、生成原型、lint / export / diff、起本地服务器AI 全自动
安装浏览器扩展与 Figma 插件、点 Capture、发回文件链接人(约 2 分钟)
设计评审拍板、偏离回流标准的决策人

把这张表写进流程文档后,AI 能自动跑到「需要人点扩展」那一步并把指引递过来——人机分工显式化,是流程可复现的前提。

CHECKLIST

落地检查清单

把设计环节嵌入 ticket 生命周期:界面类 ticket 标记 ready-for-agent 之前,逐项确认:

一句话总结:规范先行、原型即设计、Figma 为协作层、偏离可审计、流程可复现。