惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
S
Schneier on Security
P
Privacy & Cybersecurity Law Blog
S
Security @ Cisco Blogs
W
WeLiveSecurity
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
NISL@THU
NISL@THU
T
Troy Hunt's Blog
L
LangChain Blog
L
LINUX DO - 最新话题
T
The Exploit Database - CXSecurity.com
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
A
About on SuperTechFans
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
Y
Y Combinator Blog
H
Heimdal Security Blog
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
SecWiki News
SecWiki News
Microsoft Security Blog
Microsoft Security Blog
T
Tenable Blog
P
Proofpoint News Feed
H
Hacker News: Front Page
G
GRAHAM CLULEY
I
Intezer
V
V2EX
S
Secure Thoughts
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
Latest news
Latest news
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
博客园_首页
Webroot Blog
Webroot Blog
博客园 - 三生石上(FineUI控件)
AI
AI
N
News | PayPal Newsroom
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
B
Blog RSS Feed
美团技术团队

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
DESIGN.md:让 AI 编码助手理解你的设计系统
Cheman · 2026-06-25 · via BlogFinder

今天在 GitHub Trending 上看到一个有意思的项目:google-labs-code/design.md,它试图解决一个非常前沿的问题——如何让 AI 编码助手真正理解并应用人类的设计系统。

一、项目概述

DESIGN.md 是 Google Labs 推出的一个格式规范,用于向 AI 编码代理(如 Claude、GPT、Cursor 等)描述视觉识别系统。它的核心思想是:将设计系统以结构化的方式写入一个 DESIGN.md 文件,AI 读取后即可生成符合该设计系统的 UI 代码。

核心特性:

  • 结合机器可读的设计 Token(YAML front matter)和人工可读的设计原理(Markdown 正文)
  • 提供 CLI 工具进行格式验证、版本对比和 Token 导出
  • 内置 WCAG 对比度检查,确保生成的设计符合无障碍标准
  • 支持与 Tailwind CSS、W3C Design Tokens 等格式互操作

二、技术原理

2.1 文件结构设计

DESIGN.md 的创新之处在于它用一套文件同时服务两种消费者:

层级格式消费者作用
YAML front matter机器可读AI 编码代理提供精确的设计 Token 值
Markdown 正文人工可读人类设计师/开发者解释设计决策的原因和应用方式
---
name: Heritage
colors:
  primary: "#1A1C1E"
  secondary: "#6C7278"
  tertiary: "#B8422E"
  neutral: "#F7F5F2"
typography:
  h1:
    fontFamily: Public Sans
    fontSize: 3rem
  body-md:
    fontFamily: Public Sans
    fontSize: 1rem
rounded:
  sm: 4px
  md: 8px
spacing:
  sm: 8px
  md: 16px
---

## Overview

Architectural Minimalism meets Journalistic Gravitas...

Token 提供规范值,正文提供应用上下文——AI 同时获得"是什么"和"怎么用"。

2.2 Token 类型系统

DESIGN.md 定义了一套类型安全的 Token 系统:

类型格式示例
Color任意 CSS 颜色"#1A1C1E", "oklch(62% 0.18 250)", "rgb(26,28,30)"
Dimension数字 + 单位48px, -0.02em, 1.5rem
Token Reference{path.to.token}{colors.primary}, {rounded.sm}
Typography对象fontFamily, fontSize, fontWeight, lineHeight

Token 之间支持引用,形成依赖图:

components:
  button-primary:
    backgroundColor: "{colors.tertiary}"
    textColor: "{colors.on-tertiary}"
    rounded: "{rounded.sm}"
    padding: 12px

2.3 Linter 架构

CLI 内置的 linter 运行 9 条规则,每条规则产生固定严重级别的结果:

规则严重级别检查内容
broken-referrorToken 引用 {colors.primary} 无法解析
missing-primarywarning定义了颜色但没有 primary
contrast-ratiowarning组件 backgroundColor/textColor 对比度低于 WCAG AA(4.5:1)
orphaned-tokenswarning定义了但未被任何组件引用的颜色 Token
token-summaryinfo各 Section 定义的 Token 数量汇总
missing-typographywarning定义了颜色但没有字体 Token

Linter 既可 CLI 调用,也可作为 TypeScript 库引入:

import { lint } from '@google/design.md/linter';

const report = lint(markdownString);
console.log(report.findings);       // Finding[]
console.log(report.summary);        // { errors, warnings, info }
console.log(report.designSystem);   // 解析后的 DesignSystemState

2.4 导出管道

export 命令将 DESIGN.md Token 转换为其他格式:

DESIGN.md ──export──▶ Tailwind v3 JSON config
            ├──export──▶ Tailwind v4 CSS theme
            └──export──▶ W3C DTCG tokens.json

Tailwind v4 导出使用 CSS 自定义属性命名空间(--color-*, --font-*, --text-*, --radius-*, --spacing-*),与 Tailwind v4 的 @theme 块无缝集成。

三、安装与快速开始

3.1 安装 CLI

# 标准安装
npm install @google/design.md

# Windows 用户需要引号包裹包名(PowerShell 中 @ 会被特殊处理)
npm install "@google/design.md"

# 或直接用 npx 运行(无需安装)
npx @google/design.md lint DESIGN.md

Windows 注意事项: 直接运行 npx @google/design.md lint DESIGN.md 在 Windows 上可能因 .md 后缀与系统 Markdown 文件关联冲突而无输出。此时应使用 designmd 别名:

npx -p @google/design.md designmd lint DESIGN.md

3.2 第一个 DESIGN.md

在项目根目录创建 DESIGN.md

---
name: MyApp Design System
colors:
  primary: "#0055FF"
  secondary: "#6C7278"
  neutral: "#F7F5F2"
typography:
  heading:
    fontFamily: Inter
    fontSize: 2rem
    fontWeight: 700
  body:
    fontFamily: Inter
    fontSize: 1rem
rounded:
  sm: 4px
  md: 8px
spacing:
  sm: 8px
  md: 16px
components:
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#ffffff"
    rounded: "{rounded.sm}"
    padding: 12px
---

## Overview

Clean, modern SaaS aesthetic with strong visual hierarchy...

## Colors

The palette is rooted in a vibrant blue primary...

3.3 验证

npx @google/design.md lint DESIGN.md

输出结构化 JSON:

{
  "findings": [
    {
      "severity": "warning",
      "path": "components.button-primary",
      "message": "textColor (#ffffff) on backgroundColor (#0055FF) has contrast ratio 4.52:1 — passes WCAG AA."
    }
  ],
  "summary": { "errors": 0, "warnings": 0, "info": 2 }
}

四、使用方法与实战

4.1 与 AI 编码代理配合

DESIGN.md 放在项目根目录,AI 代理(如 Cursor、GitHub Copilot、Claude Code)会自动读取并应用设计 Token:

// AI 读取 DESIGN.md 后生成的代码会自动使用 Token 值
// 而非硬编码随意的颜色和字体
const buttonStyle = {
  backgroundColor: '#0055FF',   // from colors.primary
  color: '#ffffff',
  borderRadius: '4px',          // from rounded.sm
  padding: '12px',             // from components.button-primary.padding
  fontFamily: 'Inter',          // from typography.body.fontFamily
};

实际效果对比:

场景无 DESIGN.md有 DESIGN.md
AI 生成按钮随机颜色,每次不同始终使用 colors.primary
多次迭代设计逐渐漂移Token 约束,风格一致
新组件需要反复提示设计规则自动遵循已有 Token

4.2 版本对比(diff)

当设计系统演进时,用 diff 命令检测 Token 级变更:

npx @google/design.md diff DESIGN.md DESIGN-v2.md
{
  "tokens": {
    "colors": { "added": ["accent"], "removed": [], "modified": ["tertiary"] },
    "typography": { "added": [], "removed": [], "modified": [] }
  },
  "regression": false
}

这在设计系统重构或升级时非常有用——可以像代码 PR 一样 Review 设计变更。

4.3 导出到 Tailwind

# Tailwind v3 — 生成 theme.extend 配置对象
npx @google/design.md export --format json-tailwind DESIGN.md > tailwind.theme.json

# Tailwind v4 — 生成 @theme CSS 块
npx @google/design.md export --format css-tailwind DESIGN.md > theme.css

theme.css 内容示例:

@theme {
  --color-primary: #0055FF;
  --color-secondary: #6C7278;
  --color-neutral: #F7F5F2;
  --font-heading: Inter;
  --font-body: Inter;
  --radius-sm: 4px;
  --radius-md: 8px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
}

4.4 导出到 W3C DTCG 格式

npx @google/design.md export --format dtcg DESIGN.md > tokens.json

生成的 tokens.json 符合 W3C Design Tokens Format Module,可导入 Figma、Sketch 等设计工具。

五、常见问题与解决方案

Q1: Windows 上运行 npx @google/design.md 没输出?

A: 这是 Windows 的 .md 文件关联与 npm 的 bin 名称冲突导致的。使用 designmd 别名:

npx -p @google/design.md designmd lint DESIGN.md

package.json scripts 中也应使用 designmd

{
  "scripts": {
    "design:lint": "designmd lint DESIGN.md"
  }
}

Q2: npm install 报错 ENOVERSIONS

A: 这意味着 npm 没有查询公共注册表。检查配置:

npm config get registry
# 正常应返回: https://registry.npmjs.org/

如果返回的是内部镜像或私有注册表,需要临时切换:

npm config set registry https://registry.npmjs.org/
npm cache clean --force
npm install @google/design.md

Q3: lint 报错 broken-ref

A: Token 引用 {colors.primary} 找不到对应定义。检查:

  1. YAML front matter 中的 Token 名称拼写
  2. 引用路径是否正确(如 {colors.primary} vs {color.primary}
  3. 被引用的 Token 是否确实定义在 YAML 中

Q4: lint 警告 contrast-ratio

A: 某个组件的 backgroundColortextColor 对比度低于 WCAG AA 标准(4.5:1)。解决方法:

  1. 调整颜色使对比度达标
  2. 或用较大的字体(18pt 以上或 14pt 粗体)可放宽至 3:1

Q5: 如何在 CI 中集成 DESIGN.md lint?

A: 在 CI 配置中添加 lint 步骤,lint 命令在发现 error 级别问题时退出码为 1:

# .github/workflows/design-lint.yml
- name: Lint DESIGN.md
  run: npx @google/design.md lint DESIGN.md

六、总结

DESIGN.md 是一个非常巧妙的桥接方案——它用一套人类和 AI 都能理解的格式,将设计系统"编程化",让 AI 编码代理能够生成符合品牌规范的 UI 代码。

它的价值在于:

  1. 设计即代码——设计系统可以像代码一样版本管理、Code Review、CI 检查
  2. AI 对齐——给 AI 提供精确的设计约束,减少反复提示的成本
  3. 格式互通——通过 export 管道对接 Tailwind、Figma 等现有工具链

目前项目处于 alpha 阶段,规范和 CLI 还在活跃开发中,但核心思路已经非常清晰。对于正在探索 AI 辅助开发工作流的团队,DESIGN.md 值得一试。

资源链接: