关于 Design Constraint Validator
Design Constraint Validator 用于检查设计令牌的数值及其关系是否满足无障碍和一致性要求,面向设计系统开发者。它还通过 MCP 提供验证、解释、依赖图和只读修复建议。
主要功能
- 01检查 WCAG 文本对比度
- 02验证单调尺度和阈值
- 03追踪令牌来源与依赖
- 04导出令牌依赖图
- 05解释违规并建议修复
适用场景
- 01检查文字与背景的对比度
- 02发现字体或间距尺度断层
- 03调查令牌别名和依赖关系
- 04在 AI Agent 工作流中审查违规
MCP 相关
`dcv-mcp` 通过 MCP 提供六种只读 JSON 工具,用于验证、令牌说明、依赖图、约束列表、违规解释和修复建议。MCP 工具不会应用建议的更改。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tokens | object | 否 | 内联 DTCG 风格的令牌树。优先于 tokensPath。 |
| breakpoint | enum | 否 | 可选的约束断点。sm | md | lg |
| configPath | string | 否 | JSON DCV 配置文件的路径。 |
| tokensPath | string | 否 | 服务器文件系统上令牌 JSON 文件的路径。 |
| constraints | object | 否 | 来自 dcv.config.json 的内联约束块。优先级高于 configPath。 |
| constraints.wcag | array | 否 | |
| constraints.thresholds | array | 否 | |
| constraints.enableBuiltInThreshold | boolean | 否 | |
| constraints.enableBuiltInWcagDefaults | boolean | 否 | |
| constraintsDir | string | 否 | 保存顺序约束和跨轴约束的目录。 |
详细介绍
设计约束验证器(DCV)
面向设计系统的数学约束验证器——确保一致性、可访问性和逻辑连贯性。
设计约束验证器(DCV) 可验证令牌集和样式中的设计约束:
- ✅ 可访问性: WCAG 文本对比度、感知亮度下限和上限
- ✅ 顺序与单调性: 递增的字体排版比例、间距层级
- ✅ 阈值与策略: 最小值/最大值范围、跨轴保护条件(尺寸 × 字重 × 对比度)
- ✅ 图智能: 导出 Hasse/偏序集图;提供带关联边说明的“原因”解释
这不是架构 lint 工具,而是用于值和关系的推理验证器。


安装
# Local (recommended)
npm i -D design-constraint-validator
# One-off run, no install (the bin name `dcv` belongs to an unrelated package)
npx design-constraint-validator --help
本地安装后即可使用更短的 dcv 可执行文件(例如 npx dcv --help)。
要求: Node.js ≥ 18.x(ESM)
快速开始
DCV 会根据你自己的约束验证你自己的令牌。在空目录中运行:
# 1. Your design tokens (DTCG-style "$value")
cat > tokens.json <<'JSON'
{
"color": {
"text": { "$value": "#888888" },
"bg": { "$value": "#999999" }
}
}
JSON
# 2. Your constraints — auto-discovered as dcv.config.json in the cwd
cat > dcv.config.json <<'JSON'
{
"constraints": {
"enableBuiltInWcagDefaults": false,
"enableBuiltInThreshold": false,
"wcag": [
{ "foreground": "color.text", "background": "color.bg", "ratio": 4.5, "description": "Body text on background" }
]
}
}
JSON
# 3. Validate (positional path or --tokens; exits non-zero on violations)
npx design-constraint-validator validate tokens.json --summary table
# Explain one token (the tokenId is required)
npx design-constraint-validator why color.text --tokens tokens.json --format table
# Export the dependency graph
npx design-constraint-validator graph --tokens tokens.json --format mermaid > graph.mmd
这些一次性命令使用完整的软件包名称,因为 npm 上的
dcv可执行文件名称已属于一个无关的软件包。 执行npm i -D design-constraint-validator后, 请使用更短的npx dcv …。
输出示例(validate):
validate: 1 error(s), 0 warning(s)
ERROR wcag-contrast color.text|color.bg @ Body text on background — Contrast 1.24:1 < 4.5:1
scope rules warnings errors
------ ----- -------- ------
global 1 0 1
发现违规时,退出代码为 1;验证通过时为 0(使用 --fail-on off 可始终以 0 退出)。内置的 WCAG/阈值默认规则针对随附示例中的令牌 ID,因此验证自己的令牌名称时,请像上面那样禁用这些规则。
编程 API
import { validate } from 'design-constraint-validator';
// Synchronous. Point at files, or pass `tokens` / `constraints` inline.
const result = validate({
tokensPath: './tokens.json',
configPath: './dcv.config.json', // omit to auto-discover dcv.config.json in the cwd
});
if (!result.ok) {
for (const v of result.violations) {
console.log(`[${v.ruleId}] ${v.message}`);
}
process.exitCode = 1;
}
完整的编程用法请参阅 API 参考。
在 AI Agent 中使用(MCP)
DCV 附带第二个二进制文件 dcv-mcp,可通过 MCP stdio 向 Agent 客户端提供验证功能。将其添加到 Claude Desktop 或通用 MCP 客户端配置中,如下所示:
{
"mcpServers": {
"dcv": {
"command": "npx",
"args": ["-y", "--package", "design-constraint-validator", "dcv-mcp"]
}
}
}
该服务提供六个只读、返回 JSON 的工具:
validate- 根据内联constraints或配置文件,验证内联tokens或tokensPath。why- 说明一个令牌 ID 的来源、别名、依赖项、依赖方和别名链。graph- 返回令牌依赖关系的nodes和edges。list-constraints- 列出给定输入中启用的约束(WCAG 对、阈值、顺序/亮度刻度、跨轴约束)。explain- 将违规情况转换为通俗易懂的文本及机器可读事实。suggest-fix- 为违规情况计算经过验证的满足条件的值(WCAG 颜色、阈值/单调边界),不会写入任何内容。
三个推导工具(list-constraints、explain、suggest-fix)均保持只读——它们会返回建议;是否应用建议由你决定(dcv set / dcv patch)。完整的 Agent 工作流请参阅 AI 指南。
工具失败时会返回结构化 JSON:{ "ok": false, "error": { "code": "...", "message": "..." } }。
文档
适合所有人
适合用户
适合开发者
更多资源
为什么选择约束,而非惯例?
传统的代码检查工具会发现架构问题(“有值、有类型”)。 DCV 会强制执行对用户体验和品牌完整性至关重要的关系:
- 在所有主题和状态下保持清晰易读的对比度
- 合理的层级间距/排版(单调刻度)
- 协调一致的跨轴行为(例如,在需要时字号越大、字重越高)
- 符合策略要求(AA/AAA、内部阈值)
这样就能将令牌从“一堆数字”转变为形式化的设计系统。

对比:架构校验工具与 DCV
| 特性 | 架构校验工具 | DCV |
|---|---|---|
| 校验内容 | JSON 结构、类型 | 数学关系、无障碍性 |
| 发现问题 | 缺少字段、类型错误 | 对比度违规、层级关系中断 |
| 目的 | 格式合规 | 设计系统完整性 |
| 示例 | DTCG 架构校验器 | WCAG 检查、单调刻度 |

DCV 与 Anima 的
design-tokens-validator(专注于架构)无关联。
输入格式
DCV 接受令牌 JSON(扁平或嵌套)和可选的策略 JSON。 适配器可规范化常见生态系统的数据:
- Style Dictionary - 参见 examples/style-dictionary/
- Tokens Studio JSON - 参见 examples/tokens-studio/
- DTCG(Design Tokens Community Group)— 支持读取 2025.10 稳定规范(结构化 sRGB 颜色、结构化尺寸、
{alias}引用、$extensions透传;对非 sRGB 色彩空间发出警告而不会错误计算;不涵盖复合类型)。参见 examples/dtcg/
完整的适配器文档:适配器
DCV 与 DecisionThemes
DCV 是独立的校验引擎——可用于任何令牌系统。
DecisionThemes(将于 2026 年推出)是基于 DCV 构建的完整设计系统框架:
- 五轴决策模型(Tone、Emphasis、Size、Density、Shape)
- VT/DT 流水线(Value Themes + Decision Themes → 确定性的 CSS 配置)
- Studio UI + Hub 市场,用于分享 Decision Systems
DCV 为 DecisionThemes 提供校验层,但也可完美地独立运行。 预览:www.decisionthemes.com
方法与现有技术
Design Constraint Validator 引擎基于一套主题化和校验方法,该方法以防御性现有技术的形式发布。
如需了解底层架构(Decision Themes / Value Themes、确定性计算、计算后校验和回执):
这些文档让该方法可公开实现,并防止专利垄断。
安全与供应链
SBOM(软件物料清单)
DCV 会生成符合 CycloneDX 标准的 SBOM,以提高供应链透明度:
- CI 构建: 每次 CI 运行都会生成 SBOM 构件(保留 90 天)
- 版本标签: 为发布标签生成 SBOM 构件
- GitHub Releases: 创建 GitHub Release 时,会附加 SBOM 文件(JSON + XML)
- 手动: 在项目根目录运行
npx @cyclonedx/cyclonedx-npm
下载:
路线图
- 支持自定义约束的插件 API
- VS Code 诊断(内联说明)
- 跨轴规则包(排版 × 字重 × 对比度)
- 签名 / 可证明的回执——
dcv validate --receipt目前已会输出环境与输入内容哈希;密码学签名属于路线图规划 - UI 图表浏览器(节点检查器、违规项聚焦)
理念
约束,而非惯例。
设计系统需要数学保证。此验证器:
- 强制执行关联关系——字体层级、颜色渐变
- 验证无障碍性——通过 Alpha 合成计算 WCAG 对比度
- 说明违规原因——通过来源追踪展示规则失败的原因
- 随复杂度扩展——对数千个令牌进行增量验证
相关项目
这是核心验证引擎。如需了解具备 5 轴框架(语调、强调、尺寸、密度、形状)和主题配置器 UI 的完整决策驱动型设计系统,请参阅 DecisionThemes(即将推出)。
贡献
欢迎贡献!请参阅 CONTRIBUTING.md
许可证
MIT © Cseperke Papp
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。