开发教程

AI 写前端总「一眼 AI」?从自由发挥改成按规范实现

编辑部阅读约 6 分钟

用 GPT、Codex 写小工具,功能逻辑往往一次跑通,界面却总透着一股「AI 味」:大圆角、渐变、满屏卡片和 Badge。问题不在模型写不出代码,而在它只会做加法。本文拆解这种同质化的成因,给出先定参照、把设计约束写成文件、分阶段生成、局部精调等可操作方案,并附一份上线前的检查清单。

用 AI 写小工具的功能部分,现在大多能一次到位:需求描述清楚,数据结构、核心逻辑、边界情况和报错处理很快就能跑起来。真正反复消耗时间的,反而在后面——界面。

功能都对、页面也不算丑,但整体透着一股「AI 味」:卡片套卡片、Badge 到处都是、渐变配大圆角,看着挺现代,却没有辨识度,也说不清信息主次。最后还得自己一条条删、一处处改间距和字号。下面把这个现象的成因和几套可落地的做法整理一下。

功能代码有对错,界面代码没有

这是两件事难度不同的根本原因。功能部分有客观验收标准:输入输出对得上、边界条件覆盖到、异常有兜底,就算完成,模型也能靠编译器和测试用例自我纠错。

界面没有这种反馈回路。一段 JSX 编译通过、浏览器里也渲染正常,但它可能同时犯了「信息层级全平」「主色滥用」「留白毫无节奏」三个错误,而模型自己看不出来。它只被要求「做一个能用的页面」,于是把「看起来专业」的所有装饰一次性叠上去。

「一眼 AI」的典型特征

这些特征高度雷同,基本可以当检查表用:

表现 常见成因 处理方向
圆角全部 16px 以上 默认模板偏向卡片化 圆角只保留一到两档,容器用 4–8px
背景渐变 + 玻璃拟态 把「现代」等同于装饰 纯色或极浅灰底,除非产品本身就是视觉型
每个区块都是 Card 没有信息层级概念,只能靠容器切分 用标题、分割线、留白代替容器
Badge / Tag 铺满列表 误以为状态需要可视化 只保留真正需要突出的状态
emoji 当图标 图标库引入成本高 换成统一的图标库或内联 SVG
字号只有「大标题」和「正文」两级 缺少比例尺概念 建立 4–6 级的字号阶梯
所有按钮都是主色实心 没有主次操作区分 一屏一个主操作,其余用次级或文字按钮

核心问题:模型不会做减法

删减依赖三样模型拿不到的信息:产品定位、目标用户、信息优先级。这些没写进需求,它就只能用通用审美填空,而通用审美的最大公约数就是那套「现代简约」模板。

所以与其抱怨模型审美差,不如承认是输入不足。把「做一个好看的页面」换成可判定的约束,输出质量会立刻不同。

做法一:先有参照物,再谈实现

最省事的一步是给参照,而不是给形容词。

  • 给同类产品的截图,并明确说明只借结构:「参考它的信息层级和区块划分,视觉风格另做」。
  • 给 Figma 稿或设计稿导出,让模型按稿实现,它在这类任务上的完成度通常远高于自由设计。
  • 只能文字描述时,用结构化的语言替代风格词。

对比一下两种写法:

× 做一个现代简约的深色界面,要有科技感

√ 单页应用,三个区块:
  1. 顶部一行:标题 + 一个主操作按钮(右对齐),无副标题
  2. 中部:输入区与结果区左右两栏,比例 1:2
  3. 底部:一行说明文字,字号最小
  背景纯色 #111,不使用渐变和阴影;
  全站只用一档圆角 6px;
  主色只用于主操作按钮和当前选中项;
  状态信息用文字,不要用 Badge。

第二段本质上是在替模型做减法,把「不该加的东西」提前写明。

做法二:把设计约束固化成文件

如果项目会持续迭代,把约束从对话里搬到仓库里更稳。新建一个 DESIGN.md 或 tokens.css,每次让模型改界面前先让它读一遍:

:root {
  --radius-sm: 4px;
  --radius-md: 6px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 16px;
  --space-4: 32px;
  --text-sm: 13px;
  --text-base: 14px;
  --text-lg: 20px;
  --color-bg: #ffffff;
  --color-text: #1a1a1a;
  --color-muted: #6b6b6b;
  --color-accent: #2b6cb0;
}

再配一份禁用清单,效果比任何形容词都好:

  • 不使用渐变、玻璃拟态、投影叠加
  • 不引入新的圆角、阴影、字号数值,一律取变量
  • 不新增图标库,图标统一从既有集合取
  • 一个页面最多一处主色按钮
  • 不加「装饰性」的 Badge、分隔卡片、无意义插图

约束写成硬规则后,模型就失去了自由发挥的空间,而这正是你想要的结果。

做法三:拆成「骨架 → 皮肤」两轮

一次性让它生成整页,等于把结构和视觉同时外包,出错后很难定位。分两步:

  1. 第一轮只要结构:输出语义化的组件树或纯 HTML,标注每个区块的作用、内容优先级、哪些是主要操作。这一轮不要样式。
  2. 你先确认信息层级对不对,把多余的区块砍掉。
  3. 第二轮只上样式:明确要求只改 CSS / className,不动 DOM 结构。

第二轮加一句「只允许修改样式文件,不要增删元素」,能挡掉大部分「顺手加个卡片」。

做法四:精调要指到具体位置

模型对「这个按钮间距再大一点」这类模糊描述反应很差,对具体位置反应很好。

  • 截图并圈出区域,或直接说「第三行的次要按钮和左边文字之间」
  • 一次只改一个维度:先改间距,再改字号,最后改颜色
  • 用「改成什么」而不是「再调调」:「按钮内边距改为 8px 16px,与输入框对齐」

多轮小改动比一次大重写更容易收敛,也更容易回滚。

上线前的界面自查清单

  • 圆角档位不超过两种,且容器圆角小于内部元素
  • 页面没有渐变、玻璃、多重阴影
  • 每种字号都来自同一套阶梯,没有 15px、17px 这类临时值
  • 主色出现次数可控,一屏只有一个主操作
  • 状态信息优先用文字,Badge 只用于真正需要中断注意的地方
  • 图标来源统一,没有 emoji 混入
  • 每个区块都能说清「删掉会损失什么」,说不清就删

几种协作方式的取舍

方式 适合场景 代价
完全自由设计 内部工具、一次性脚本页面、只求能跑 后续返工多,风格不可控
参考站截图 / 竞品结构 没有设计资源,但要求成品感 需要自己挑图并说明「借什么、不借什么」
设计稿或 Figma 驱动 有稿可依,要求还原度 前期要有稿;实现完成度高
组件库 + tokens 约束 长期维护的项目 前期配置成本,换来后续稳定

不存在通用最优解:一次性工具自由发挥最快,要交付给别人的产品则值得先把参照和约束准备好。

两个容易忽略的点

emoji 图标是最容易被识别出「AI 生成」的细节之一。让模型显式使用一个图标集合,例如「所有图标从既有 icon 组件中选,不允许使用 emoji」,通常一句约束就能解决。

运行环境方面,界面精调往往是十几轮的小步迭代,会话一断就得重新交代上下文。如果本地机器会休眠、网络抖动频繁,把这类长会话放到长期在线的机器上跑会省心一些,例如租用一整台放在机房、按月计费的远程 Mac 长时间挂着 Claude Code,属于可选项,不是必需。

另外,涉及逆向工程、绕过模型安全限制这类话题时,风险要自己承担,也可能违反服务条款,不建议在正式项目里尝试;有合法需求就走官方提供的接口和申诉渠道。各家模型能力与工具行为更新很快,具体以官方最新文档为准。

小结

AI 生成界面「一眼 AI」,本质是输入里缺少「不要什么」。把审美诉求翻译成可判定的规则——参照物、设计 token、禁用清单、结构先行——模型的产出就会从「通用模板」变成「你的项目」。功能交给它省下来的时间,值得分一部分用在把约束写清楚上。

Claude CodeCodex提示词UI 设计AI 前端