☰
别再忍 AI 写的“模板味“页面了 这个 58k+ Star 项目专治 AI 审美癌 taste-skill
2026/10/2 20:35:23 网站建设 项目流程

1. 为什么 AI 写的前端总有一股“模板味”

如果你最近用 Claude Code、Cursor 或者 Codex 写过前端页面,大概率见过这个场景:输入“帮我做一个 SaaS 登录页”,AI 十秒钟吐出一份代码——深色背景、紫蓝渐变 Hero、居中大标题、三张等宽 Feature Card、底部 Footer。换个项目再让它写,配方几乎一模一样,连 em dash 的用法都一致。

这不是你的 prompt 写得不好。LLM 本质是概率机器,它没有审美偏好,只会复制训练数据里出现频率最高的模式。训练语料里“科技感”被反复标注成紫色渐变,“现代布局”被反复标注成三栏等宽卡片,于是 AI 把这些当成了默认答案。业内管这个现象叫 AI Slop——流水线式的视觉垃圾。

我试过在 prompt 里写“不要紫蓝渐变、不要三栏卡片”,结果 AI 换了个颜色,布局还是老样子。因为自然语言约束太软,模型在生成几千行代码的过程中会逐渐“遗忘”你的要求。真正有效的做法,是把设计规则写成 AI 能持续读取的结构化文件,让它在写代码前先审稿、再编码。

taste-skill 就是干这件事的。它是一个 58k+ Star 的开源项目,定位是“AI Agent 反模板化前端框架”。注意,它不是组件库,不提供任何 UI 组件;也不是设计工具,没有 GUI。它交付的是一份 SKILL.md 文件——给 AI Agent 看的设计行为规范,告诉它什么该做、什么禁做、怎么调参、怎么自检。

它解决的核心痛点有三个。第一,AI 默认布局高度同质化,Hero 永远居中、Feature 永远三等分。第二,AI 对“科技感”的理解停留在紫蓝渐变,缺乏中性底色和排版驱动层级的能力。第三,AI 动效要么没有、要么过度,缺少中间态。taste-skill 通过三个可调旋钮(DESIGN_VARIANCE 布局实验度、MOTION_INTENSITY 动效深度、VISUAL_DENSITY 信息密度)加上一份硬禁令清单,把这些问题逐个封死。

适合谁用?如果你用 AI 编码工具做 Landing Page、作品集、品牌官网,并且希望产出看起来“不像 AI 写的”,这个项目值得花半小时接入。它明确声明不适用于仪表盘、数据表格、多步表单、代码编辑器这类重交互界面——那些场景需要的是信息密度和操作效率,不是设计品味。

下面我会从接入配置讲到 GSAP 动效落地,再给出同一提示词下启用前后的结构差异检查方法。全程可复制,不需要你懂设计理论。

2. TaoToken 统一 Key 与 API 通道前置配置

在接入 taste-skill 之前,先解决一个工程问题:AI Agent 调用模型的通道。如果你同时用 Claude Code、Cursor、Codex CLI 三个工具,每个工具都要单独配 Key、单独管额度,切换起来很烦。TaoToken 提供统一 Key 和 API 通道,一个 Key 覆盖多个模型入口,省去反复配置的麻烦。

TaoToken 是什么?简单说,它是一个模型 API 聚合通道,把不同模型的调用统一到一套 Base URL 和 Key 体系下。你可以在官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册后拿到 Key,然后在各个 AI 编码工具里填同一个 Base URL 和 Key。API 地址是 https://taotoken.net/api,注意这个地址不加 UTM 参数,直接用于代码配置。

适合谁?适合同时使用多个 AI 编码工具、不想每个工具单独管理 Key 的开发者。也适合团队场景——统一通道后,额度管理和调用日志集中在一处,排查问题方便很多。

具体操作步骤。第一步,打开官网注册账号,进入控制台。第二步,在控制台左侧找到 API Keys 菜单,创建一个新 Key,复制保存。第三步,根据你用的工具,把 Base URL 和 Key 填进对应配置文件。不同工具的配置位置不一样,下面分别说明。

Claude Code 的配置在~/.claude/settings.json,你需要设置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两个环境变量,或者在 settings 文件里写env字段。Cursor 的配置在设置界面的 Models 面板,选择 OpenAI Compatible 模式,填入 Base URL 和 Key。Codex CLI 的配置在~/.codex/auth.json,需要写OPENAI_API_KEY和OPENAI_BASE_URL。

这里有个坑要注意:不同工具对 Base URL 的路径要求不一样。有的工具要求填到/v1结尾,有的只填域名。TaoToken 的 API 地址是https://taotoken.net/api,如果工具报 404,试着在末尾加/v1再试。我实测下来,Claude Code 用https://taotoken.net/api直接可用,Cursor 需要填https://taotoken.net/api/v1。

配置完成后,你可以用模型对话功能快速验证 Key 是否生效。打开 https://taotoken.net/api 对应的模型对话页面,发一条测试消息,如果能正常返回,说明 Key 和通道都没问题。这一步很重要,因为后面 taste-skill 的调试依赖模型正常响应,如果通道有问题,你会误以为是 SKILL.md 配置错了。

关于 Coding Plan,如果你打算长期用 AI Agent 做编码和 Agent 任务,可以关注一下。它适合高频调用场景,比按次计费更划算。具体入口在控制台里能找到。

最后提醒一点:TaoToken 是合规的 API 通道,不要把它和任何非正规中转混为一谈。配置过程中如果遇到 401 错误,先检查 Key 是否复制完整、是否有多余空格。如果遇到 local proxy failed,检查你的网络环境是否能正常访问 API 地址。

3. 可复制的 SKILL.md 配置与 GSAP 动效接入

这一节是全文的技术核心。我会给出完整的 SKILL.md 配置片段、GSAP 动效接入步骤,以及三个旋钮的参数对照表。所有配置都可以直接复制到你的项目里。

先说 SKILL.md 的放置位置。taste-skill 支持两种使用方式:一种是通过npx skills add命令安装到全局技能目录,另一种是手动把 SKILL.md 文件复制到项目根目录。手动方式更可控,推荐后者。在项目根目录创建SKILL.md文件,把下面的配置写进去。

# SKILL.md - Design Taste Frontend ## Brief Inference Before writing any code, output one line of design reading: "Reading this as: [page type] for [audience], with [style language], leaning toward [tech stack] + [motion level]." ## Three Dials - DESIGN_VARIANCE: 1-10 (layout experimentation) - MOTION_INTENSITY: 1-10 (animation depth) - VISUAL_DENSITY: 1-10 (information density) Infer dial values from user description. Do not ask. ## Hard Bans - Zero em dashes on page. Use hyphens or restructure. - No section numbering eyebrows (00/INDEX, 06 · how it works). - No version tags in Hero (V0.6, BETA, INVITE-ONLY). - No scroll hints (Scroll, ↓scroll, Scroll to explore). - No fake product UI built with divs (fake task list, fake dashboard, fake terminal). - No hand-written SVG icons. Use Phosphor/HugeIcons/Radix/Tabler. - No AI copy cliches (Elevate, Seamless, Unleash, Next-Gen). - No three equal-width feature cards. - No purple-blue gradients. Replace with neutral base colors. - No border-t + border-b on every list row. ## Pre-flight Checklist Before delivering code, verify: - Every color has a purpose. - Spacing follows 4pt/8pt grid. - Typography hierarchy uses max 3 sizes. - Animation duration <= 300ms unless justified. - Mobile-first, tested at 320px breakpoint. ## GSAP Motion Skeleton Use GSAP for scroll-triggered animations. Import from "gsap" and "gsap/ScrollTrigger". Register plugin once. Use gsap.from() for entrance, gsap.to() for state change. Keep duration between 0.2s and 0.3s. Use ease: "power2.out".

这份配置的关键在于“Hard Bans”部分。它把 AI 的坏习惯列成禁令,而不是建议。建议会被模型忽略,禁令不会。比如“No three equal-width feature cards”直接封死了最泛滥的 AI 布局,“No purple-blue gradients”封死了最常见的 AI 设计指纹。

三个旋钮的参数对照表如下:

旋钮1-34-67-89-10
DESIGN_VARIANCE居中对称传统适度变化非对称现代艺术混沌
MOTION_INTENSITY静态或 hover 微交互入场动画滚动触发视差+磁吸
VISUAL_DENSITY美术馆留白标准呼吸感紧凑仪表盘级

你不需要手动调这三个值。在 prompt 里描述风格,AI 会自动推断。比如你说“做一个类似 Linear 的极简 SaaS 页面”,AI 会推断 VARIANCE=5、MOTION=3、DENSITY=3。你说“做一个 Awwwards 风格的作品集”,AI 会推断 VARIANCE=8、MOTION=7、DENSITY=2。

接下来是 GSAP 动效接入步骤。taste-skill 的动效部分重度依赖 GSAP 和 Motion,轻量项目可能觉得重,但如果你要做滚动触发和视差效果,GSAP 是目前最稳的选择。

第一步,安装依赖:

npm install gsap

第二步,在入口文件注册 ScrollTrigger 插件:

import gsap from "gsap"; import { ScrollTrigger } from "gsap/ScrollTrigger"; gsap.registerPlugin(ScrollTrigger);

第三步,写一个滚动触发的入场动画。下面这段代码让 Hero 区的标题和 CTA 按钮在页面加载后依次淡入上移:

gsap.from(".hero-title", { y: 40, opacity: 0, duration: 0.3, ease: "power2.out", }); gsap.from(".hero-cta", { y: 20, opacity: 0, duration: 0.25, delay: 0.1, ease: "power2.out", });

第四步,写一个滚动触发的 Feature 区动画。注意这里没有用三等分卡片,而是用非对称网格:

gsap.from(".feature-item", { scrollTrigger: { trigger: ".feature-grid", start: "top 80%", }, y: 30, opacity: 0, duration: 0.3, stagger: 0.08, ease: "power2.out", });

第五步,在 CSS 里确保初始状态不会闪烁。给动画元素加will-change: transform, opacity,避免布局抖动。

这里有个坑:GSAP 的from()动画在 React StrictMode 下会执行两次,导致元素闪一下。解决办法是在useEffect里加 cleanup,或者用gsap.context()包裹。如果你用 Vue,在onMounted里调用即可,没有这个问题。

另一个坑是 ScrollTrigger 在移动端 320px 断点下可能触发位置偏移。解决办法是在scrollTrigger配置里加invalidateOnRefresh: true,并在窗口 resize 时调用ScrollTrigger.refresh()。

配置完成后,你的项目根目录应该有SKILL.md和package.json里的 gsap 依赖。AI Agent 在读取 SKILL.md 后,会在生成代码前先输出一行 Brief 解读,然后按禁令和旋钮值生成页面。你可以在对话里看到它说“Reading this as: B2B SaaS landing for technical buyers, with a Linear-style minimalist language”,这说明 SKILL.md 生效了。

4. 验证请求与成功结果对照

配置写完了,怎么确认 taste-skill 真的在起作用?这一节给出具体的验证动作和成功结果对照。核心方法是:同一提示词下,对比启用前后页面结构的差异。

先准备一个测试提示词,固定不变:

帮我做一个 SaaS 产品的 Landing Page,包含 Hero、三个 Feature、一个 CTA 区、Footer。产品是面向开发者的 API 监控工具。

第一步,在不加载 SKILL.md 的情况下,让 AI 生成页面。保存代码,记录以下结构特征:Hero 是否居中、Feature 是否三等分、配色是否紫蓝渐变、是否有 em dash、是否有 section 编号、动效是否存在。

第二步,在项目根目录放入 SKILL.md,重新用同一提示词生成。保存代码,对比同样的结构特征。

成功结果对照表如下:

检查项启用前(典型 AI 输出)启用后(taste-skill 生效)
Hero 布局居中大标题 + 居中 CTA左对齐或非对称网格
Feature 区三张等宽卡片非对称网格或错落布局
配色紫蓝渐变背景中性底色 + 一个强调色
em dash多处出现零个
Section 编号有 00/INDEX 类眉标无
动效无或过度0.2-0.3s 入场 + 滚动触发
图标手写 SVGPhosphor/Radix 图标
文案Elevate/Seamless 类词具体描述性文案

如果启用后 Feature 区还是三等分,说明 SKILL.md 没有被读取。检查文件是否在项目根目录、文件名是否大小写正确(必须是SKILL.md)、AI 工具是否支持自动发现技能文件。Claude Code 和 Cursor 会自动读取根目录的 SKILL.md,v0 和 Lovable 需要手动粘贴规则内容到对话里。

第三步,验证 GSAP 动效是否生效。在浏览器打开页面,滚动到 Feature 区,观察元素是否依次淡入。打开 DevTools 的 Elements 面板,检查动画元素是否有transform和opacity的内联样式变化。如果没有任何变化,检查 gsap 是否正确安装、ScrollTrigger 是否注册、动画选择器是否匹配到元素。

第四步,验证 Brief 推断是否输出。在 AI 对话里,启用 SKILL.md 后,AI 应该在写代码前输出一行“Reading this as: ...”。如果没有这行输出,说明 SKILL.md 的 Brief Inference 部分没有被执行。检查配置里是否有Before writing any code, output one line of design reading这条指令。

我实测下来,启用 taste-skill 后,同一提示词生成的页面在结构差异上非常明显。最直观的变化是 Hero 区从居中变成左对齐,Feature 区从三等分变成 2+1 错落布局,配色从紫蓝渐变变成米白底 + 深绿强调色。这些变化不是随机产生的,而是 SKILL.md 里的禁令和旋钮值共同作用的结果。

还有一个验证动作:检查预检清单是否被执行。在 AI 交付代码后,问它“你检查过预检清单吗”,如果 SKILL.md 生效,AI 会逐项回答颜色用途、间距网格、字号层级、动画时长、移动端断点。如果它答不上来,说明预检清单部分没有被读取。

最后,如果你用 TaoToken 的模型对话功能做验证,可以在对话里直接粘贴 SKILL.md 内容,然后发测试提示词。模型对话入口在 https://taotoken.net/api 对应的页面,适合快速验证规则是否被模型理解,不需要配置本地项目。

5. 本篇常见错误排查

这一节列出接入 taste-skill 和配置 TaoToken 过程中最常见的报错和排查方法。每个错误都给出真实报错信息和解决步骤。

错误一:401 Unauthorized

报错信息:{"error": {"message": "Invalid API key", "type": "authentication_error"}}

原因:Key 复制不完整、有多余空格、或者 Key 已过期。排查步骤:打开 TaoToken 控制台,重新复制 Key,注意不要带前后空格。在配置文件里检查ANTHROPIC_API_KEY或OPENAI_API_KEY的值是否完整。如果用的是 Claude Code,检查~/.claude/settings.json里的env字段是否正确嵌套。

错误二:local proxy failed

报错信息:Error: connect ECONNREFUSED 127.0.0.1:7890或local proxy failed to connect

原因:本地代理配置冲突。排查步骤:检查环境变量HTTP_PROXY和HTTPS_PROXY是否指向了一个不可用的本地端口。在终端执行echo $HTTP_PROXY查看。如果不需要代理,用unset HTTP_PROXY和unset HTTPS_PROXY清除。如果工具配置文件里有 proxy 字段,删掉或注释。

错误三:reading choices 相关报错

报错信息:Error: reading choices: unexpected end of JSON input或failed to parse response: no choices field

原因:API 返回格式与工具预期不匹配。排查步骤:检查 Base URL 是否填对。Claude Code 用https://taotoken.net/api,Cursor 用https://taotoken.net/api/v1。如果工具报 404,试着在 Base URL 末尾加或去掉/v1。另外检查模型 ID 是否填对,Claude Code 需要填claude-sonnet-4-20250514这类具体模型名,不能留空。

错误四:OAuth 相关报错

报错信息:OAuth token expired或failed to refresh OAuth token

原因:工具尝试用 OAuth 方式认证,但 TaoToken 用的是 API Key 方式。排查步骤:在工具设置里关闭 OAuth 登录选项,切换到 API Key 模式。Claude Code 如果之前登录过 Anthropic 账号,需要先/logout,再配置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY。Codex CLI 检查~/.codex/auth.json里是否同时有 OAuth 和 API Key 字段,删掉 OAuth 相关字段。

错误五:SKILL.md 不生效

报错信息:无报错,但 AI 输出仍然是模板化页面。

原因:文件位置不对、文件名不对、或工具不支持自动发现。排查步骤:确认文件在项目根目录,文件名是SKILL.md(大写 S、大写 KILL、小写 md)。Claude Code 和 Cursor 支持自动发现,v0 和 Lovable 需要手动粘贴。如果用的是 Codex CLI,检查~/.codex/auth.json里的OPENAI_BASE_URL是否配置正确,因为 Codex 读取 SKILL.md 依赖模型通道正常。

错误六:GSAP 动画不执行

报错信息:gsap is not defined或ScrollTrigger is not defined

原因:依赖未安装或未注册。排查步骤:执行npm install gsap确认安装。在入口文件检查gsap.registerPlugin(ScrollTrigger)是否在动画代码之前执行。如果用的是 React,检查useEffect的依赖数组是否为空,避免重复注册。

错误七:三件套配置缺失

如果你用 CC Switch、Cline MCP 或 Codex auth.json,必须写全三件套:Base URL、Key、Model ID。缺任何一个都会导致调用失败。Base URL 填https://taotoken.net/api,Key 填控制台复制的值,Model ID 填具体模型名如claude-sonnet-4-20250514或gpt-4o。CC Switch 的配置文件在~/.cc-switch/config.json,Cline MCP 在 VS Code 设置里,Codex auth.json 在~/.codex/auth.json。

排障时如果遇到接入问题,优先检查 API Keys 和接入文档。模型对话功能可以用来快速验证 Key 是否生效。长期编码和 Agent 任务建议用 Coding Plan,额度更充足。

6. 把设计品味固化进你的 AI 工作流

taste-skill 最值得借鉴的地方,不是它列了多少条禁令,而是它把“设计品味”从模糊的感觉变成了可执行的规则。你不需要成为设计师,只需要把 SKILL.md 放进项目根目录,AI 就会在写代码前先审稿、再编码、最后自检。

我自己的做法是:每个新前端项目初始化时,第一件事就是复制一份 SKILL.md 到根目录,然后根据项目类型调整三个旋钮的默认值。官网类项目把 DESIGN_VARIANCE 设到 6-7,MOTION_INTENSITY 设到 4-5;文档站把 VISUAL_DENSITY 设到 6-7,MOTION_INTENSITY 降到 2;作品集把 VARIANCE 拉到 8-9,DENSITY 降到 2-3。这样 AI 生成的页面从一开始就有明确的风格方向,不需要反复在 prompt 里纠正。

GSAP 动效部分,建议从最简单的入场动画开始,不要一上来就做视差和磁吸。先把gsap.from()的 duration 控制在 0.3s 以内,ease 用power2.out,确认滚动触发正常后再加复杂度。移动端 320px 断点一定要测,ScrollTrigger 在窄屏下容易触发位置偏移,加invalidateOnRefresh: true能解决大部分问题。

TaoToken 的统一 Key 通道在这个流程里扮演的是基础设施角色。你不需要在每个工具里重复配置,一个 Key 覆盖 Claude Code、Cursor、Codex CLI,切换工具时不用重新登录。模型对话功能可以用来快速验证 SKILL.md 是否被模型理解,接入文档里有各工具的详细配置示例。

最后说一个实用技巧:把 SKILL.md 里的 Hard Bans 清单单独复制出来,贴在你常用的 AI 对话工具的系统提示词里。这样即使不用 taste-skill 的完整技能包,也能让 AI 避开最常见的模板化陷阱。禁令比建议有效,这是 taste-skill 给我最大的启发。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询