1. 当设计师说“我想自己把界面搭出来”,Onlook 解决了什么
Onlook 是一个开源的浏览器端可视化前端构建工具,你可以把它理解成“设计师的 Cursor”:在画布里拖拽、点击、调整间距和布局,它实时生成可维护的 React + TailwindCSS 代码;反过来你改代码,画布也跟着变。它适合三类人:不想被“设计稿转代码”卡住的设计师、想快速搭原型的 React 开发者、以及需要边做边理解组件结构的前端学习者。
但真正落地时会撞上一个很现实的问题:Onlook 的 AI 能力(语义识别、组件拆分建议、命名优化)需要调用大模型,而模型通道的配置往往是整条链路里最容易劝退人的一环。你要么在多个供应商之间来回切换 Key,要么在 Cline、Cursor、Onlook 各自的配置文件里重复填 base_url 和 api_key,改一次错一次。这篇就把这条链路打通:用 TaoToken 作为统一 Key/API 通道,给 Onlook 的 AI 能力供能,同时把 settings.json 和 config.toml 两份配置骨架给全,最后在 Cline 里验证“Onlook 生成的组件”和“TaoToken 调用”确实联通。
我试过把模型通道单独抽出来统一管理,后面换模型、加工具都不用动业务侧配置,省下来的时间比想象中多。下面按“先备通道、再写配置、后验证排障”的顺序走,你可以直接跟着复制。
2. 前置准备:TaoToken 统一 Key 与 Onlook 的接入位置
TaoToken 在这里扮演的角色是“统一入口”:你只维护一份 API Key 和一个 base_url,Onlook 侧、Cline 侧、以及后续任何需要模型能力的工具,都指向同一个通道。这样做的直接好处是——当你想从某个模型换到另一个模型时,只改一处,不用在每个工具的配置文件里翻找。
需要先拿到两样东西:
一是 API Key。进入控制台创建,地址是 https://taotoken.net/api-keys ,创建后复制保存,后面配置里会用到。注意 Key 只在创建时完整显示一次,丢了就重建一个。
二是确认 API 基址。TaoToken 的 API 入口是 https://taotoken.net/api ,所有兼容 OpenAI 风格的工具都填这个作为 base_url,不要带多余路径。
注意:base_url 填
https://taotoken.net/api,很多工具的 SDK 会自动拼接/v1/chat/completions之类的路径,你手动再加/v1反而会 404。这一点在排障章节会再强调。
Onlook 本身是前端构建工具,它的 AI 能力通过你配置的模型通道来调用。所以接入逻辑是:Onlook(或它依赖的编辑器/Agent 环境)→ 读取配置文件里的 base_url + api_key → 请求 TaoToken → 返回模型结果。你不需要改 Onlook 源码,只需要把承载它的编辑器环境配置对。
如果你还没装 Onlook,可以从它的开源仓库获取,按 README 起本地服务即可。真正要花心思的是下面两份配置文件。
3. 可复制配置:settings.json 与 config.toml 骨架
不同工具读不同格式的配置。Cline(VS Code 插件形态)走 settings.json,一些 CLI 形态的 Agent 走 config.toml。两份都给全,你按自己用的工具取。
3.1 settings.json:给 Cline / VS Code 系工具
这份配置的核心是把模型提供方指向 TaoToken 的统一通道。把YOUR_TAOTOKEN_API_KEY替换成你在控制台创建的那串 Key。
{ "cline.apiProvider": "openai", "cline.openAiApiKey": "YOUR_TAOTOKEN_API_KEY", "cline.openAiBaseUrl": "https://taotoken.net/api", "cline.openAiModelId": "claude-sonnet-4-20250514", "cline.openAiModelInfo": { "maxTokens": 8192, "contextWindow": 200000, "supportsImages": true, "supportsPromptCache": false }, "cline.customInstructions": "生成 React + TailwindCSS 组件时保持语义化标签,样式用 Tailwind 原子类,不要引入额外 CSS 文件。" }几个字段说明:apiProvider选openai是因为 TaoToken 兼容 OpenAI 风格的请求格式;openAiBaseUrl就是统一入口;openAiModelId按你实际要用的模型填,这里给的是示例值,具体可用模型以控制台或文档为准。customInstructions是我额外加的,让模型在生成组件时遵守 Tailwind 约定,和 Onlook 的输出风格对齐。
3.2 config.toml:给 CLI 形态 Agent
如果你用的是读取 TOML 的命令行 Agent,配置结构类似,只是键名不同。
[model] provider = "openai" api_key = "YOUR_TAOTOKEN_API_KEY" base_url = "https://taotoken.net/api" model = "claude-sonnet-4-20250514" max_tokens = 8192 [model.params] temperature = 0.3 top_p = 0.95 [behavior] stream = true timeout_seconds = 120temperature给 0.3 是偏保守的值,生成组件代码时更稳定,不容易冒出奇怪的类名。stream = true打开流式输出,长组件生成时体验更好。timeout_seconds给足,复杂组件生成偶尔会超过默认超时。
提示:两份配置里的 Key 都不要提交到 Git。settings.json 如果放在项目里,记得加进 .gitignore;更稳妥的做法是用环境变量注入,工具支持的话优先用环境变量。
配置写完先别急着跑,下一节验证通道是否真的通。
4. 验证请求:确认 TaoToken 通道与 Onlook 组件生成联通
验证分两步:先确认通道本身能返回,再确认 Onlook 生成的组件能通过这条通道被 AI 处理。
4.1 用 curl 验证通道
最直接的方式是发一个最小请求,看是否返回正常结构。
curl https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TAOTOKEN_API_KEY" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [ {"role": "user", "content": "用一句话说明 TailwindCSS 的 flex 布局怎么写"} ], "max_tokens": 100 }'如果返回里带choices数组且message.content有内容,说明 Key 和 base_url 都对。如果返回 401,检查 Key 是否复制完整;返回 404,检查 base_url 是不是多写了/v1(curl 这里手动拼了完整路径,但配置文件里不要拼)。
4.2 在 Cline 里跑通 Onlook 组件生成
通道通了之后,回到编辑器。在 Cline 对话框里给一个贴近 Onlook 场景的任务,比如:
帮我生成一个 React + TailwindCSS 的卡片组件: - 顶部是标题和副标题 - 中间是描述文字 - 底部一个主按钮和一个次要按钮 - 响应式:移动端单列,桌面端按钮并排 - 用语义化标签,样式全部用 Tailwind 原子类发送后观察两点:一是 Cline 是否正常流式返回代码;二是生成的代码里 Tailwind 类名是否合理(比如flex flex-col md:flex-row gap-3这类响应式写法)。如果这两点都满足,说明“Onlook 生成组件 → TaoToken 调用模型 → 返回可维护代码”这条链路是通的。
实测下来,把customInstructions写清楚之后,生成的组件结构明显更贴近 Onlook 的输出风格,组件拆分也更合理。你可以把 Onlook 画布里拖出来的布局描述成文字,丢给 Cline 让它补全逻辑层,两边配合着用。
5. 本篇常见错排查
配置和验证过程中,下面几个错出现频率最高,按顺序排查基本能覆盖。
401 Unauthorized。九成是 Key 问题:复制时带了空格、Key 已失效、或者用了别的平台的 Key。重新在 https://taotoken.net/api-keys 建一个,整串替换。
404 Not Found。基本是 base_url 写错。配置文件里只填https://taotoken.net/api,不要加/v1、不要加/chat/completions。SDK 会自己拼路径,你手动拼就重复了。
模型名报错 / model not found。openAiModelId或model字段填的模型名不在可用列表里。以控制台或接入文档里列出的为准,别凭记忆填。
流式输出卡住或超时。把timeout_seconds调大,或者临时关掉stream看是否恢复。网络抖动时流式连接容易断,非流式更稳。
生成的组件样式全乱。不是通道问题,是模型没遵守 Tailwind 约定。检查customInstructions是否生效,或者在对话里明确要求“只用 Tailwind 原子类,不写自定义 CSS”。
Cline 读不到配置。settings.json 的键名要和插件版本匹配,不同版本字段名可能微调。改完配置重启编辑器,让插件重新加载。
注意:排障时优先用 curl 单独验证通道,把“通道问题”和“工具配置问题”分开,能省一半时间。
6. 接下来怎么用:把统一通道接到你的编码工作流
通道打通之后,Onlook 负责视觉侧的拖拽与结构生成,TaoToken 负责把模型能力稳定地供给到 Cline 这类编码环境,你负责在两者之间做判断和微调。这套组合的价值不在于“全自动”,而在于把重复的布局劳动和通道配置劳动都压下去,让你专注在组件逻辑和交互细节上。
如果你打算长期用这套工作流做编码和 Agent 任务,可以了解下 Coding Plan,它更适合高频、长周期的编码场景:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=coding_plan
想直接在浏览器里验证模型对话效果,用模型对话入口最快:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=model_chat
需要管理 Key、查看用量,进控制台:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=console
接入细节和字段说明以文档为准:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=doc
如果你在用 Claude Code 形态的 Agent,接入参考:https://taotoken.net/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=claude_code
最后留一个我踩过的坑:配置改完一定要重启编辑器再验证,插件缓存旧配置的情况比你想的常见。把 curl 验证当成固定动作,通道先通,再谈工具,顺序别反。