generate by chatGPT

为什么 AI 生成的页面总是紫色?以及如何“去 AI 味”

最近刷到一个有趣的梗:Tailwind 创始人调侃地为当年把 bg-indigo-500 设成默认按钮色道歉——因为现在几乎所有 AI 生成的 UI 都是那种“熟悉的紫色”。你是不是也有同样的感觉?一眼 AI,大片紫、渐变卡片、圆角阴影三件套。

这不是错觉,这是模式收敛。

当你用类似这样的提示词:

站在产品经理和设计师的角度,使用 HTML 设计一个番茄工作法 iOS 应用原型图……

AI 会优先选择它训练数据中“最常见、最安全、最不出错”的组合:Tailwind + 紫色主色 + 柔和渐变 + 大圆角 + 轻阴影。因为这是当前主流开源组件库和 SaaS 产品的审美均值。

如果你不指定风格,它就会回到“统计平均值”。这就是紫色泛滥的根本原因。


一、为什么 AI 会收敛到紫色?

原因可以拆成三个层面。

第一,训练数据分布。
Tailwind、Shadcn、Radix、各类 SaaS 模板大量使用 Indigo / Violet 系主色。模型学习到的“现代 UI”≈“紫色卡片 + 柔和渐变”。

第二,风险最小化。
紫色既不像红色那么激进,也不像绿色那样有语义歧义(成功/错误),是一个“中性偏科技感”的安全选择。

第三,提示词太宽泛。
“现代化”“精美”“完整”“可直接实现”这些词没有具体约束,模型只能调用默认范式。

本质不是 AI 审美差,而是你没有给它风格边界。


二、如何让 AI 不再生成“紫色默认模板”

核心思路:把抽象词换成可执行设计约束

不要说“现代化”,要说:

  • 主色:#0F172A 深灰蓝
  • 辅助色:#22C55E 番茄计时状态绿色
  • 强调色:#F97316 橙色
  • 禁止使用紫色系

不要说“iOS 风格”,要说:

  • 使用 iOS 17 Human Interface Guidelines 风格
  • 采用大标题 + 分组卡片
  • 模糊背景 + 半透明材质
  • 使用 SF Pro 字体(或等价替代)

不要说“精美完整”,要说:

  • 必须包含以下状态:

    • 未开始
    • 计时中
    • 暂停
    • 结束统计页
  • 明确列出组件结构

示例改写提示词:

使用原生 HTML + CSS(不依赖 Tailwind CDN),设计一个番茄工作法 iOS 风格应用原型。
主色为 #22C55E,禁止使用紫色系。
采用玻璃拟态(glassmorphism)设计,圆角 16px,阴影为柔和扩散阴影。
字体使用本地 Inter 或 SF Pro 替代。
页面需包含:计时首页、计时中状态、暂停弹窗、统计页。
所有组件需可直接供 Vue 3 项目拆分实现。

当你给出明确的视觉约束,AI 的输出会明显提升。


三、进阶玩法:定义“设计技能(Skill)”

与其每次重写提示词,不如抽象成一套“设计规范模板”。

你可以建立一个本地 prompt 模板,例如:

1
2
3
4
5
6
7
8
9
Design System:
- Style: Minimal + iOS native
- Radius: 12px
- Spacing scale: 4px system
- Typography: 16px base, 1.5 line-height
- Primary color: #0EA5E9
- No purple
- No Tailwind CDN
- Use semantic class naming

以后所有 UI 生成都附带这段规范。

这本质上是“定义 Agent Skill”,而不是每次临时对话。


四、如何“二开”AI 生成的项目

如果已经生成了一个“紫色 Tailwind 模板”,怎么改?

建议按下面步骤做:

1. 去框架化(可选)

如果你希望长期维护:

  • 去掉 CDN
  • 把 Tailwind 样式提取为变量
  • 或重写为 SCSS / CSS Modules

2. 抽离 Design Token

建立:

1
2
3
4
5
:root {
--color-primary: #22C55E;
--color-bg: #F8FAFC;
--radius-base: 12px;
}

替换所有硬编码的 bg-indigo-500

3. 组件化重构(Vue)

拆分结构:

1
2
3
4
5
/components
TimerDisplay.vue
ControlButtons.vue
StatsCard.vue
PauseDialog.vue

把原始 HTML 拆成 Vue 组件。

4. 建立状态机

番茄钟不是静态页面,它是状态驱动:

1
idle -> running -> paused -> finished

用 Vue refpinia 建立状态流,而不是靠 DOM 切换。


五、真正去 AI 味的方法

“去 AI 味”不是换颜色,而是增加“选择”。

AI 模板最大的问题是:

  • 所有按钮一样
  • 所有卡片一样
  • 所有阴影一样

真实设计不会这么均匀。

你可以:

  • 给主 CTA 更强对比
  • 给统计页用不同布局结构
  • 刻意打破 8px 统一圆角
  • 控制留白,而不是平均分布

设计的灵魂在于“节奏差异”,而不是整齐。


六、总结

AI 生成紫色页面不是 bug,而是统计平均。

当提示词过于抽象时,模型会回到默认模板。
想要真正定制化 UI,你必须给出:

  • 明确色彩体系
  • 明确设计风格
  • 明确状态结构
  • 明确技术栈限制

从“让 AI 设计”转变为“让 AI 按规范实现设计”。

这样生成的页面,才会真正变成你的作品,而不是一眼 AI。