尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【深度解析】Open Design 本地优先架构:Coding Agent 驱动 AI UI 生成工作流实战

【深度解析】Open Design 本地优先架构:Coding Agent 驱动 AI UI 生成工作流实战 1. 为什么本地优先架构才是 AI UI 生成的正确打开方式先说结论Open Design 是一个本地优先、可接入现有 Coding Agent、基于 Skill 与 Design System 驱动的开源设计工作流。它能做什么把「帮我做个好看的页面」这种随机 Prompt变成有任务边界、有视觉约束、有检查清单的结构化工程流程。适合谁适合那些已经在用 Claude Code、Codex CLI、Cursor Agent 这类编码工具又希望 UI 产物能进 Git、能审查、能复用的开发者。我见过太多团队在 AI UI 生成上踩同一个坑模型明明会写 CSS生成出来的东西却总是「AI 味」很重——满屏紫色渐变、随机 Emoji 图标、圆角卡片堆叠、编造的 KPI 数字。问题不在模型能力而在工作流缺失。你给模型一句「做个 Dashboard」它只能靠猜你给它一个 dashboard Skill 加一份 design.md它才知道边界在哪。传统云端 AI 设计工具有三个硬伤。第一强绑定云端生态设计能力锁死在某个平台里没法接进你现有的开发环境。第二不可本地化运行团队私有代码库和内部设计规范根本没法安全喂进去。第三输出风格不稳定同一个需求跑三次视觉体系、组件层级、交互重点可能完全不同你没法做版本对比。Open Design 的思路不是重新训练一个设计模型而是构建一个 Design Shell。它在本地启动守护进程检测你机器 PATH 里可用的 Coding Agent把这些 Agent 当作设计执行引擎。整个链路是用户需求 → Open Design 本地应用 → 选择 Skill / Design System → 调用本地 Coding Agent → 生成 HTML / React / Deck / Markdown 产物 → 本地预览与编辑。这个架构的价值在于三点。产物可以进 Git 版本管理每次生成都是一个可 diff 的 commit团队可以维护自己的 Skill 和 design.md把审美沉淀成文本规则输出文件可审查、可测试、可重构而不是停留在聊天窗口里的一坨文本。项目本身采用 Apache 2.0 License 开源实际成本取决于底层 Agent 或模型消耗。Skill 解决的是任务边界问题。Open Design 内置了 Web Prototype、SaaS Landing Page、Dashboard、Pricing Page、Docs Page、Mobile App、Magazine-style Deck、PM Spec、Runbook、Finance Report、Kanban Board 等可组合 Skill。选 dashboard 时模型被约束为数据密集型管理后台风格选 magazine_ppt 时偏向杂志式版面与视觉叙事。每个 Skill 提供任务边界、组件结构、视觉重点、输出格式和检查清单。Design System 解决的是稳定性问题。内置 70 份 design.md借鉴了 Linear、Stripe、Airbnb、Notion、Apple、Cursor、Supabase、Raycast、Sentry、MongoDB 等产品的视觉语言。它把抽象审美转成文本化规则比如「使用 12 栅格布局」「避免过度圆角」「KPI 卡片必须包含指标来源和更新时间」。模型不再凭直觉生成而是在稳定视觉系统里完成任务。2. TaoToken 统一 Key/API 通道的前置准备在本地跑通 Open Design 工作流绕不开一个现实问题底层 Coding Agent 要调模型而多模型切换、Key 管理、额度监控这些事如果每个 Agent 单独配一遍维护成本会迅速失控。我的做法是引入一个统一 API 层把模型调用收敛到一个入口。TaoToken 采用 OpenAI 兼容模式开发者只需要配置 Base URL、Key 和模型名称三件套即可接入。它的技术价值在于聚合主流大模型统一接口降低多模型切换成本对需要同时评估代码能力、设计推理能力、长上下文能力的场景比较友好。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。为什么 Open Design 场景特别需要统一通道因为 UI 生成任务对模型能力的要求是分层的。规划页面结构、理解 design.md 约束、生成 React 代码这几步对模型的长上下文和指令遵循能力要求不同。你可能想用强模型做结构规划用性价比模型做批量组件生成。如果每个 Agent 都直连不同厂商Key 散落在各处切换一次要改五六个配置文件。统一通道的另一个好处是额度与调用可观测。本地跑 UI 生成流水线时一次完整任务可能触发多轮 Agent 调用成本容易失控。通过统一入口你能在一个地方看到调用量而不是在 Claude Code、Codex CLI、Cursor 各自的账单里拼凑。具体到配置你需要先拿到 Key。访问 https://taotoken.net/api-keys 创建 API Key然后在控制台 https://taotoken.net/console 确认额度状态。模型对话调试入口在 https://taotoken.net/chat 接入文档在 https://taotoken.net/doc 。如果你打算长期跑编码和 Agent 任务Coding Plan 页面 https://taotoken.net/coding-plan 有对应的套餐说明。这里要强调一个原则TaoToken 是模型调用的统一通道不是替代你的编辑器或 Agent 工具。Open Design 负责设计工作流编排Coding Agent 负责执行TaoToken 负责把模型调用收敛成一条可管理的链路。三者职责清晰不要混为一谈。配置前先确认本地环境。你需要 Node.js 18、一个可用的 Coding AgentClaude Code、Codex CLI、Cursor Agent、Gemini CLI、OpenCode 任一以及一个能写入的工作目录。工作目录的选择很关键后面会讲权限控制。先把这些前置条件备齐再进入下一节的配置环节。3. 可复制的 Coding Agent 与本地服务配置片段这一节给可直接复制的配置。核心是把 Coding Agent 的模型调用指向统一通道同时把 Open Design 的本地服务跑起来。先配 Coding Agent 侧。以 Claude Code 为例它的配置走环境变量和 settings 文件。在项目根目录创建.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-opus-4-6 }, permissions: { allow: [ Read, Write, Bash(npm run *), Bash(npx *) ] } }三件套对应关系要记牢Base URL 是https://taotoken.net/apiKey 是你在 API Keys 页面创建的那串Model ID 按你实际要用的填。Claude Code 走 Anthropic 协议所以用ANTHROPIC_前缀的环境变量。如果你用 Codex CLI配置走~/.codex/auth.json和~/.codex/config.toml。先写auth.json{ OPENAI_API_KEY: sk-你的TaoToken密钥 }再写config.tomlmodel gpt-5.4 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api wire_api chatCodex 走 OpenAI 兼容协议wire_api填chat表示用 chat completions 接口。Model ID 换成你要用的即可。如果你用 Cline 或带 MCP 的 Agent配置走 MCP server 定义。在 Cline 的 MCP 设置里加{ mcpServers: { taotoken-bridge: { command: npx, args: [-y, taotoken/mcp-bridge], env: { TAOTOKEN_BASE_URL: https://taotoken.net/api, TAOTOKEN_API_KEY: sk-你的TaoToken密钥, TAOTOKEN_MODEL: claude-opus-4-6 } } } }同样三件套Base URL、Key、Model ID一个都不能少。Agent 侧配好后跑 Open Design 本地服务。先克隆并安装git clone https://github.com/open-design/open-design.git cd open-design npm install npm run build启动本地守护进程npm run dev -- --port 4317 --workdir ./workspace--workdir指定 Agent 的工作目录这一步是权限控制的关键。不要把--workdir指向你的家目录或包含密钥的目录。建议单独建一个workspace目录只放 UI 生成相关的输入输出文件。启动后 Open Design 会扫描 PATH 里的 Coding Agent。你可以在终端看到类似输出[open-design] scanning agents... [open-design] found: claude-code (v1.x) [open-design] found: codex-cli (v0.x) [open-design] local server listening on http://localhost:4317如果某个 Agent 没被检测到检查它的可执行文件是否在 PATH 里用which claude或which codex确认。接着配置 Skill 和 Design System 的加载路径。在workspace下建两个目录mkdir -p workspace/skills workspace/design-systems把你常用的 design.md 放进去。比如从内置设计系统里复制一份 dashboard 风格cp -r node_modules/open-design/design-systems/linear-dashboard workspace/design-systems/Skill 文件是 Markdown 格式一个 dashboard Skill 长这样# Dashboard Skill ## 目标 生成企业级数据分析 Dashboard。 ## 输出要求 1. 使用 React Tailwind CSS。 2. 包含侧边导航、顶部状态栏、KPI 区域、趋势图占位、数据表格、任务列表。 3. 禁止紫色渐变、随机 Emoji、编造夸张指标。 4. 组件需具备清晰信息层级。 5. 单文件 React 组件默认导出 App。 ## 检查清单 - [ ] 信息层级是否清晰 - [ ] 是否避免过度装饰 - [ ] 代码是否可直接运行把这些文件放好后Open Design 在生成时会读取 Skill 和 Design System拼进发给 Agent 的 Prompt 里。Agent 再通过你配好的统一通道调模型。整条链路就通了。4. 从需求描述到 UI 产物的完整验证请求配置就绪后跑一次端到端验证。目标是确认「需求 → Skill Design System → Agent → 模型 → UI 产物」这条链路真的能产出可运行代码。先确认本地服务在跑curl http://localhost:4317/health返回{status:ok,agents:[claude-code,codex-cli]}说明服务正常且检测到了两个 Agent。然后准备需求文件。在workspace下建requirement.md为一个 AI Agent 运行监控平台生成 Dashboard。 需要展示 - Agent 运行次数 - 平均响应延迟 - 工具调用成功率 - 最近失败任务 - 模型调用成本趋势 - 团队成员任务分布发起生成请求。Open Design 提供 HTTP 接口用 curl 触发curl -X POST http://localhost:4317/generate \ -H Content-Type: application/json \ -d { skill: dashboard, designSystem: linear-dashboard, requirementFile: ./workspace/requirement.md, agent: claude-code, output: ./workspace/App.jsx }服务会返回一个任务 ID然后你可以轮询状态curl http://localhost:4317/tasks/task-id生成过程中Open Design 会把 Skill、Design System、需求拼成完整 Prompt交给 Claude Code 执行。Claude Code 通过你配的ANTHROPIC_BASE_URL把请求发到统一通道模型返回 React 代码Agent 写入workspace/App.jsx。任务完成后检查产物ls -la workspace/App.jsx head -50 workspace/App.jsx你应该能看到一个完整的 React 组件包含侧边导航、KPI 卡片、表格等结构。如果产物里出现了紫色渐变或 Emoji 图标说明 Design System 没被正确加载回去检查design-systems目录路径。把产物放进 Vite 项目跑起来npm create vitelatest ai-dashboard -- --template react cd ai-dashboard npm install npm install tailwindcss tailwindcss/vite把workspace/App.jsx复制到src/App.jsx配置 Tailwind然后npm run dev浏览器打开http://localhost:5173你应该能看到一个信息密度合理、风格克制的 Dashboard。这就是一次完整的验证动作从需求描述到可预览的 UI 产物。验证成功的标志有三个。第一产物代码结构完整能直接运行不报错。第二视觉风格符合 Design System 约束没有 AI 味套路。第三产物文件在 Git 里可 diff你能看到每次生成的差异。如果这一步跑通了你可以把requirement.md换成真实业务需求把 Skill 换成团队自定义的把 Design System 换成内部规范。整条流水线就具备了可复现性。5. 本篇常见错误排查401、local proxy failed 与 reading choices跑这条链路时报错集中在几个地方。这一节按真实报错逐个拆。401 Unauthorized。这是最常见的。原因通常是 Key 没配对或没生效。检查三处.claude/settings.json里的ANTHROPIC_API_KEY是否是完整的sk-开头字符串环境变量是否被 shell 覆盖用echo $ANTHROPIC_API_KEY确认Key 是否在控制台被禁用或额度耗尽。如果用的是 Codex检查~/.codex/auth.json里的OPENAI_API_KEY字段名是否正确Codex 对字段名敏感。local proxy failed。这个报错说明 Agent 尝试连本地代理但失败了。Open Design 本身不启代理它直连 Agent。如果你看到这个错检查是不是在 Agent 配置里误填了http://localhost:xxxx作为 Base URL。Base URL 应该是https://taotoken.net/api不是本地地址。另一个可能是 Open Design 的--port和 Agent 配置里的端口冲突换个端口重试。reading choices 报错。典型信息是Cannot read properties of undefined (reading choices)。这说明模型返回体结构不符合预期通常是 Base URL 或协议类型配错了。Claude Code 走 Anthropic 协议Base URL 用https://taotoken.net/apiCodex 走 OpenAI 兼容协议wire_api填chat。如果协议和端点不匹配返回体里就没有choices字段。检查你的 Agent 用的是哪套协议对应填对。OAuth 相关报错。如果你之前用 Claude Code 登录过官方账号本地可能残留 OAuth token它会覆盖你配的 API Key。清理方法删除~/.claude/下的凭据缓存或者显式设置ANTHROPIC_API_KEY环境变量优先级高于 OAuth。Codex 同理检查~/.codex/下是否有旧的登录态。Agent 未被检测到。Open Design 启动时扫描 PATH如果which claude没输出说明 Agent 没装或不在 PATH。用npm install -g anthropic-ai/claude-code重装或把可执行文件路径加进 PATH。产物为空或只有注释。这通常是 Prompt 拼装出了问题。检查 Skill 文件是否是合法 MarkdownDesign System 目录名是否和请求里的designSystem字段一致。Open Design 找不到对应文件时会静默跳过导致 Prompt 里缺少约束模型输出质量下降。生成超时。UI 生成任务 Prompt 较长如果模型响应慢会超时。检查统一通道的额度状态或在请求里加大timeout参数。另外确认--workdir目录有写权限Agent 写不进文件也会表现为超时。排查顺序建议先curl http://localhost:4317/health确认服务活着再单独测 Agent 能否调通模型最后才查 Open Design 的 Prompt 拼装。分层定位比一上来就翻日志快得多。6. 把统一通道接进你的本地 UI 生成流水线跑通一次验证只是起点。真正有价值的是把这条链路固化成团队可复用的流水线。核心动作是把模型调用统一到一条通道上让 Open Design、Coding Agent、模型三者解耦。具体做法所有 Agent 的 Base URL 都指向https://taotoken.net/apiKey 统一从 API Keys 页面管理Model ID 按任务类型分配。结构规划用长上下文强模型批量组件生成用性价比模型切换只改一个字段不动 Agent 配置。接入文档在 https://taotoken.net/doc 里面有各协议的端点说明和参数对照。模型对话调试入口 https://taotoken.net/chat 可以快速验证某个 Model ID 是否可用不用每次都跑完整流水线。长期跑编码和 Agent 任务的话Coding Plan 页面 https://taotoken.net/coding-plan 有套餐说明控制台 https://taotoken.net/console 看额度。一个实用技巧把workspace目录纳入 Git但把design-systems和skills做成 submodule 或独立仓库。这样团队共享设计规范但每个项目的产物独立版本管理。每次生成都是一次 commitdiff 出来就是设计演进史。最后提醒权限控制。Open Design 给 Agent 分配工作目录Agent 有读写能力。--workdir只指向workspace不要指向包含密钥、生产配置、客户数据的目录。这是本地优先架构的安全底线别图省事跳过。
返回列表