ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Open Design 深度解析:开源、本地优先的 Claude Design 替代,让 Coding Agent 变成你的设计引擎

Open Design 深度解析:开源、本地优先的 Claude Design 替代,让 Coding Agent 变成你的设计引擎 1. 为什么我把 Open Design 接进了日常编码流Open Design 是一个开源、本地优先的 vibe design workspace它能把你已经在用的 Coding AgentClaude Code、Codex、Cursor、Gemini CLI、OpenCode、Qwen 等 25 个 CLI直接接进完整设计工作流从一句粗略想法到可交付的原型、落地页、Slides、HTML 视频全流程在你自己的设备上完成。它适合谁适合那些不想被云端 SaaS 锁死、希望设计产物以真实文件形式落在自己仓库里的开发者。我最初关注它是因为团队里设计和工程之间总隔着一层导出与复制粘贴而 Open Design 让 Agent 直接读代码仓库、按设计 token 渲染产物是 HTML、PDF、PPTX、MP4、Markdown 这些能进版本管理的文件。但真正跑起来之前有一个绕不开的环节模型通道。Open Design 本身不做模型它通过 BYOKBring Your Own Key代理去调用你指定的供应商。如果你手上有多个 Agent、多个项目每个都去配一遍不同厂商的 Key维护成本会迅速上升。我的做法是先用 TaoToken 统一 Key/API 通道把模型出口收敛成一条再让 Open Design 的 daemon 指向它。这样换 Agent、换项目时只需要改一处配置而不是满仓库找 Key。这篇就按我实际落地的顺序来先讲清楚 Open Design 解决的是什么问题再把 TaoToken 的前置准备做完然后给出可复制的config.toml与settings.json配置骨架接着做连通性验证最后把我在接入过程中踩到的几个典型报错摊开讲。全程命令和参数都可以直接抄。2. TaoToken 前置把模型出口收敛成一条通道Open Design 的 daemon 会以 OpenAI-compatible 的方式去请求模型端点所以只要有一个兼容的 base URL 和一把 Key就能接上。TaoToken 在这里扮演的角色就是统一通道你拿一把 Key后面无论是 Claude Code、Codex 还是 Open Design 的 BYOK 代理都走同一个出口。这样做的直接好处是Agent 换了一茬Key 不用跟着换。第一步去控制台创建 API Key。地址是 https://taotoken.net/api-keys 登录后新建一个 Key复制出来先存到本地环境变量里别直接写进会提交到 git 的文件。我习惯用.env或者 shell profileexport TAOTOKEN_API_KEYsk-你的key第二步确认你要用的模型名。TaoToken 的模型对话入口在 https://taotoken.net/models 里面能看到当前可用的模型标识。Open Design 的 BYOK 代理在转发时会带上 model 字段所以这个字符串要和通道侧对得上否则会返回 model not found 之类的错误。第三步记下 API base。TaoToken 的 API 根地址是 https://taotoken.net/api Open Design 里配置 provider 时base URL 填这个路径部分由代理自己拼。注意这里不要带任何多余后缀很多 404 都是因为把/v1重复拼了两遍。如果你后面打算长期用 Coding Agent 跑设计任务可以顺带看一下 Coding Plan 页面 https://taotoken.net/coding-plan 它面向的是持续编码和 Agent 场景和 Open Design 这种“Agent 驱动设计”的用法比较契合。接入文档在 https://taotoken.net/doc 配置项对不上时以文档为准。3. 可复制配置config.toml 与 settings.json 骨架Open Design 的配置分两层一层是 daemon 侧的config.toml管 provider、代理和端口另一层是 Agent 侧的settings.json管具体 CLI 怎么被拉起。下面这两份是我实际在用的骨架你把 Key 和模型名替换掉就能用。先看config.toml放在 Open Design 的配置目录下通常是~/.open-design/config.toml以你安装版本的文档为准# Open Design daemon 配置骨架 [daemon] port 7456 host 127.0.0.1 artifact_dir ./artifacts sandbox true [byok] enabled true # 统一走 TaoToken 通道 provider taotoken base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY default_model 你的模型标识 timeout_ms 120000 [byok.providers.taotoken] type openai-compatible stream true # 代理层做 SSRF 防护这里只允许白名单域名 allow_hosts [taotoken.net] [agents] # daemon 启动时扫描 PATH 上的这些 CLI scan [claude, codex, cursor, gemini, opencode, qwen] preferred claude [skills] registry ./skills design_systems ./design-systems几个参数值得单独说。api_key_env指向环境变量名而不是明文 Key这样配置文件可以进仓库。allow_hosts是代理层的白名单只放taotoken.net避免 Agent 被诱导去请求别的地址。timeout_ms给到 120 秒是因为设计类任务经常要生成整页 HTML短超时会中途断流。再看 Agent 侧的settings.json以 Claude Code 为例放在~/.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: ${TAOTOKEN_API_KEY}, ANTHROPIC_MODEL: 你的模型标识 }, permissions: { allow: [ Read, Write, Bash(od:*) ] }, openDesign: { daemonUrl: http://127.0.0.1:7456, designSystem: ./design-systems/default/DESIGN.md, autoPreview: true } }这里的${TAOTOKEN_API_KEY}是引用环境变量Claude Code 启动时会展开。permissions.allow里放Bash(od:*)是为了让 Agent 能调用 Open Design 的 CLI 子命令比如od mcp install和od init。openDesign.daemonUrl指向本地 daemondesignSystem指向你的DESIGN.md品牌契约文件。如果你用的是 Codex 或 Gemini CLI结构类似只是环境变量名不同Codex 用OPENAI_BASE_URL和OPENAI_API_KEYGemini CLI 用GOOGLE_API_BASE之类。核心思路一致——base URL 指向 TaoTokenKey 从环境变量读。4. 验证请求从 daemon 启动到第一个 artifact配置写完先别急着开 UI按顺序做三步验证出问题好定位。第一步启动 daemon 并确认端口在听od daemon start --config ~/.open-design/config.toml curl -s http://127.0.0.1:7456/health健康检查返回{status:ok}就说明 daemon 起来了。如果返回连接拒绝多半是端口被占或者 config 路径不对用od daemon status看日志。第二步单独验证 TaoToken 通道是否通。这一步绕开 Open Design直接用 curl 打模型端点确认 Key 和模型名没问题curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: 你的模型标识, messages: [{role: user, content: reply with ok}], max_tokens: 16 }返回里带choices字段就说明通道是通的。如果这里就报 401检查 Key 有没有复制全报 404检查 base URL 有没有多拼/v1。第三步让 Open Design 真正产出一个 artifact。初始化一个带DESIGN.md的项目然后跑一个最小设计任务od init my-design-project cd my-design-project od run --skill prototype --prompt 生成一个极简登录页单文件 HTML跑完后看./artifacts目录应该出现一个.html文件。用浏览器打开如果页面正常渲染说明从 Agent 到 daemon 到 TaoToken 再到模型这条链路全通了。我实测下来第一次跑通大概需要 30 秒到 1 分钟取决于模型响应速度。如果你想先在网页里确认模型行为可以打开模型对话 https://taotoken.net/models 手动发一条消息对比一下返回风格排查时能快速区分是通道问题还是 Agent 配置问题。5. 本篇常见错排查接入过程中我遇到过的报错基本集中在这几类按出现频率排。第一类ECONNREFUSED 127.0.0.1:7456。这是 daemon 没起来或者端口不对。先od daemon status如果显示 stopped看日志里有没有配置解析错误。常见原因是config.toml里allow_hosts写成了带路径的 URL它只接受纯域名。第二类401 Unauthorized且 curl 单独测也失败。说明 Key 本身有问题不是 Open Design 的锅。检查环境变量有没有在当前 shell 生效echo $TAOTOKEN_API_KEY看输出。如果你在settings.json里写的是明文 Key 而不是${...}引用注意 JSON 里不能有 shell 展开得用真实值或者确保 Agent 支持变量替换。第三类model not found。模型标识和通道侧对不上。去 https://taotoken.net/models 复制准确的标识注意大小写和连字符。Open Design 的default_model和 Agent 的ANTHROPIC_MODEL要一致否则会出现 daemon 能通但 Agent 报错的情况。第四类流式响应中途断掉artifact 只生成一半。这是超时或代理层缓冲导致的。把timeout_ms调大同时确认stream true在 provider 段里。如果还是断检查allow_hosts是否漏了域名代理层拦截会直接掐断连接。第五类Agent 扫描不到。od daemon start后日志里没有列出你装的 CLI。原因是 PATH 里没有那个可执行文件或者config.toml的scan数组里没写。用which claude确认路径再对照scan列表补上。第六类artifact 渲染空白。文件生成了但浏览器打开是白屏。多半是沙盒 iframe 的 CSP 限制检查sandbox true下有没有引用外部 CDN 资源。设计任务尽量让 Agent 产出单文件自包含 HTML避免外链。6. 把设计引擎跑顺之后链路通了之后真正提升效率的是把常用 skill 和 design system 沉淀下来。我现在的做法是每个项目根目录放一份DESIGN.md把品牌色、字体、间距写成 tokenAgent 每次生成都会读它产出风格就稳定了。换 Agent 时这份文件不用动只是 daemon 里preferred改一下。如果你打算长期跑编码和 Agent 任务建议把 Key 管理也收敛好统一走 TaoToken 的 API Keys 页面 https://taotoken.net/api-keys 创建和轮换接入细节以 https://taotoken.net/doc 为准。需要持续编码或 Agent 场景的话Coding Plan https://taotoken.net/coding-plan 可以一起看。模型行为想先手动确认就去 https://taotoken.net/models 发一条消息试试。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进