摘要
Open Design 不是简单的 AI 画界面工具,而是一个本地优先、可接入现有 Coding Agent、基于 Skill 与 Design System 驱动的开源设计工作流。本文从架构、原理、实战和风险控制角度解析其技术价值。
背景介绍:AI 设计工具的问题不在"不会写 CSS"
近两年,AI 生成 UI 的能力提升很快。从早期的"生成一段 HTML/CSS",到现在可以直接产出原型、Landing Page、Dashboard、PPT Deck、移动端页面,AI 已经具备一定的设计产物生成能力。
但很多 AI UI 工具仍然存在几个典型问题:
- 强绑定云端生态:设计能力通常绑定特定模型或平台,难以接入已有开发环境。
- 不可本地化运行:无法在团队私有代码库、内部设计规范下安全使用。
- 输出风格不稳定:同一个需求多次生成,视觉体系、组件层级、交互重点可能完全不同。
- 缺少结构化约束:模型经常生成大量圆角卡片、紫色渐变、Emoji 图标、伪指标,看起来"AI 味"很重。
Open Design 的定位正是解决这些问题。它不是重新训练一个设计模型,而是构建一个 Design Shell:在本地运行,通过检测开发者已有的 Coding Agent,例如 Claude Code、Codex CLI、Cursor Agent、Gemini CLI、OpenCode 等,将这些 Agent 作为设计执行引擎。
换句话说,Open Design 关注的不是"让 AI 会设计",而是给 AI 一个更合理的设计工作流。
核心原理:Agent + Skill + Design System
1. 本地优先的 Design Shell
Open Design 的关键特征是 Local First。它本身不强制绑定某个云端 AI 服务,而是在本地启动守护进程,连接当前机器 PATH 中可用的 Coding Agent。
其工作模式可以理解为:
text
用户需求
↓
Open Design 本地应用
↓
选择 Skill / Design System
↓
调用本地 Coding Agent
↓
生成 HTML / React / Deck / Markdown 等设计产物
↓
本地预览与编辑
这种方式的优势非常明显:
- 可以复用已有 AI Coding 工具;
- 设计产物可以进入 Git 版本管理;
- 团队可以维护自己的 Skill 和 design.md;
- 输出文件可审查、可测试、可重构,而不是停留在聊天窗口。
Open Design 采用 Apache 2.0 License,项目本身开源。实际成本取决于底层 Agent 或模型,例如使用 Claude Code、Codex CLI、Gemini CLI 时,对应消耗各自的模型资源。
2. Skill:把"随便做个页面"变成结构化任务
AI UI 生成失败的核心原因,并不是模型不会写 CSS,而是缺乏明确的任务边界。
Open Design 引入了可组合 Skill,例如:
- Web Prototype
- SaaS Landing Page
- Dashboard
- Pricing Page
- Docs Page
- Blog Post
- Mobile App
- Magazine-style Deck
- PM Spec
- Weekly Update
- Meeting Notes
- Runbook
- Finance Report
- Invoice
- Kanban Board
- KRs
当你选择 dashboard Skill 时,模型会被约束为生成偏数据密集型、管理后台风格的界面;选择 magazine_ppt 时,则会偏向杂志式版面、视觉叙事和 Deck 结构。
这比直接输入"帮我做一个好看的页面"可靠得多,因为 Skill 会提供:
- 任务边界;
- 组件结构;
- 视觉重点;
- 输出格式;
- 检查清单。
3. Design System:解决 AI UI 的稳定性问题
Open Design 内置大量 design.md 设计系统文件,数量达到 70+。这些设计系统借鉴了 Linear、Stripe、Airbnb、Tesla、Notion、Apple、Cursor、Supabase、Figma、Raycast、Spotify、Webflow、Sentry、MongoDB、ClickHouse 等产品的视觉语言。
design.md 的价值在于,它把抽象审美转化为文本化规则,例如:
markdown
# Internal Dashboard Design System
## Layout
- 使用 12 栅格布局
- 左侧固定导航,主内容区域最大宽度 1440px
- 数据模块之间保持 24px 间距
## Typography
- 标题使用 28px / 36px
- 正文使用 14px / 22px
- 指标数字使用等宽字体
## Component Rules
- 避免过度圆角
- 避免随机渐变背景
- KPI 卡片必须包含指标来源和更新时间
这样一来,AI 不再是凭直觉生成页面,而是在稳定的视觉系统中完成设计任务。
技术资源与工具选型
在多模型开发场景中,我个人更倾向使用统一 API 层来管理模型调用。这里以 薛定猫AI(xuedingmao.com) 为例,它采用 OpenAI 兼容模式,开发者只需要配置 URL、Key 和模型名称即可接入。
它的技术价值主要体现在:
- 聚合 500+ 主流大模型,包括 GPT-5.4、Claude 4.6、Gemini 3.1 Pro 等;
- 新模型上线速度快,便于第一时间验证前沿模型 API;
- 统一接口降低多模型切换成本;
- 对需要同时评估代码能力、设计推理能力、长上下文能力的场景比较友好。
下面示例使用 claude-opus-4-6。该模型在复杂指令遵循、长上下文分析、代码生成和多步骤推理方面表现很强,适合生成结构化 UI Artifact、设计规范和前端代码。
实战演示:用 OpenAI 兼容 API 生成 Dashboard Artifact
下面代码模拟 Open Design 的核心思路:输入 Skill、Design System 和业务需求,调用模型生成一个可落地的 React + Tailwind Dashboard 页面。
安装依赖
bash
pip install openai python-dotenv
.env 配置
bash
XUEDINGMAO_API_KEY=你的_API_Key
Python 完整示例
python
import os
from pathlib import Path
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
class UIDesignArtifactGenerator:
"""
基于 OpenAI 兼容接口的 UI Artifact 生成器。
可用于模拟 Open Design 中 Skill + Design System + Agent 的工作方式。
"""
def __init__(self):
api_key = os.getenv("XUEDINGMAO_API_KEY")
if not api_key:
raise ValueError("请先在 .env 中配置 XUEDINGMAO_API_KEY")
self.client = OpenAI(
api_key=api_key,
base_url="https://xuedingmao.com/v1"
)
# claude-opus-4-6 适合复杂 UI 规划、长上下文约束和高质量代码生成
self.model = "claude-opus-4-6"
def build_prompt(self, requirement: str) -> str:
skill = """
你正在执行 dashboard skill。
目标:生成一个企业级数据分析 Dashboard。
输出要求:
1. 使用 React + Tailwind CSS。
2. 页面必须包含侧边导航、顶部状态栏、KPI 区域、趋势图占位、数据表格和任务列表。
3. 不能使用紫色渐变、随机 Emoji、虚假夸张指标。
4. 所有组件需要具备清晰的信息层级。
5. 代码必须是单文件 React 组件,默认导出 App。
"""
design_system = """
Design System:
- 风格:Linear / Stripe 风格,克制、干净、信息密度高。
- 颜色:以 slate、zinc、neutral 为主,强调色使用 blue。
- 圆角:控制在 rounded-lg 以内,避免过度胶囊化。
- 字体:系统默认 sans-serif。
- 间距:模块间距 24px,卡片内部间距 16px。
- 表格:需要包含状态 Badge、更新时间、负责人字段。
- 可访问性:按钮和导航需要有明确文本,不依赖纯图标。
"""
critique_rules = """
生成前请进行五维自检:
1. Design Philosophy:是否符合企业级 Dashboard 的克制风格?
2. Hierarchy:标题、指标、图表、表格是否层级清晰?
3. Execution:React 代码是否完整可运行?
4. Specificity:是否避免空洞文案和无意义指标?
5. Restraint:是否避免过度装饰和 AI UI 常见套路?
"""
return f"""
{skill}
{design_system}
业务需求:
{requirement}
{critique_rules}
请直接输出完整 React 代码,不要输出 Markdown 解释。
"""
def generate(self, requirement: str) -> str:
response = self.client.chat.completions.create(
model=self.model,
messages=[
{
"role": "system",
"content": "你是一名资深前端架构师和产品设计工程师,擅长生成高质量 UI Artifact。"
},
{
"role": "user",
"content": self.build_prompt(requirement)
}
],
temperature=0.35,
)
return response.choices[0].message.content
def save_artifact(self, code: str, output_path: str = "App.jsx") -> None:
path = Path(output_path)
path.write_text(code, encoding="utf-8")
print(f"UI Artifact 已生成:{path.resolve()}")
if __name__ == "__main__":
requirement = """
为一个 AI Agent 运行监控平台生成 Dashboard。
需要展示:
- Agent 运行次数
- 平均响应延迟
- 工具调用成功率
- 最近失败任务
- 模型调用成本趋势
- 团队成员任务分布
"""
generator = UIDesignArtifactGenerator()
artifact_code = generator.generate(requirement)
generator.save_artifact(artifact_code)
生成 App.jsx 后,可放入 Vite React 项目中运行:
bash
npm create vite@latest ai-dashboard -- --template react
cd ai-dashboard
npm install
npm install tailwindcss @tailwindcss/vite
将生成的 App.jsx 替换项目中的入口组件,即可进行本地预览和二次修改。
注意事项:Open Design 适合做起点,不应直接替代设计评审
1. 输出质量依赖底层模型
Open Design 的上限取决于 Coding Agent 和模型能力。强模型可以更好理解 Skill、Design System 和复杂业务上下文;弱模型即使拿到 design.md,也可能生成结构混乱的代码。
2. 本地目录权限需要谨慎控制
Open Design 会为 Agent 分配工作目录。由于 Agent 具备读写文件能力,应避免暴露敏感目录,例如密钥文件、生产配置、客户数据等。
3. 仍需人工检查响应式与可访问性
对于生产级 UI,AI 生成内容只能作为初稿。仍需前端工程师检查:
- 响应式布局;
- 组件复用;
- 语义化 HTML;
- 键盘可访问性;
- 暗色模式适配;
- 数据真实性;
- 代码可维护性。
4. 不要过度期待"端到端自动设计"
Open Design 当前更适合快速原型、内部工具、Landing Page、Deck、视觉实验等场景。对于核心产品界面,它更像是设计和前端之间的加速层,而不是最终决策者。
总结
Open Design 的价值不在于复制某个闭源设计产品,而在于把 AI UI 生成从"随机 Prompt"推进到"结构化工作流"。
它将三类能力组合到一起:
- 已有 Coding Agent;
- 文件化 Skill;
- 可版本管理的 design.md 设计系统。
这种模式使团队能够在本地运行、审查、分支、复用和演进自己的 AI 设计流程。对于开发者而言,这也是 AI UI 生成更务实的方向:少一点不可控的聊天式输出,多一点可检查、可约束、可落地的工程化产物。
#AI #大模型 #Python #机器学习 #技术实战