AI 界面为什么都长一个样:设计品味正在变成 Agent 的约束层

2026-10-01T09:20:00+08:00 | 13分钟阅读 | 更新于 2026-10-01T09:20:00+08:00

@
AI 界面为什么都长一个样:设计品味正在变成 Agent 的约束层

你大概见过那个页面。深色或浅色的底,标题里有一个词被染成了紫色渐变,副标题下面挂着一个圆角方形的图标块,往下是三张等宽卡片,每张卡片在鼠标悬停时轻轻上浮并加深阴影,段落文字是灰色,页面滚动到每个区块时内容依次淡入上移。你说不清它哪里丑,但也记不住它长什么样。

问题不在于它难看。问题在于它和昨天那个页面、上个月那个页面、以及你自己用同一个工具生成的另一个页面,几乎是同一个东西。

这件事正在被当成一个工程问题来解。方向也很清楚:把"审美"从提示词里的形容词,变成 Agent 可以读取、可以执行、可以检测、可以回归测试的一层约束。这篇文章想讲清楚这层约束的三级结构、每一级的真实机制和边界,以及它在哪里一定会失效。

一、平均值不是模型偷懒,而是三个机制叠加的必然

把界面同质化归因于"模型审美差"是最省事也最没用的解释。真正的成因至少有三层。

第一层是训练分布。 所有主流模型都在同一批 SaaS 落地页、同一批模板站、同一批组件库文档上训练过。你要求它"做一个好看的定价页",它给出的不是它认为最好的答案,而是它见过最多的答案。这几乎是定义上的众数。Impeccable 的 README 把这件事的产物列得很直白:一切都用 Inter、紫到蓝的渐变、卡片里套卡片、在彩色背景上放灰色文字、每个标题上方都压一个圆角方块图标。

第二层是"生成的痕迹",也就是那些一眼能认出来的套路。 Anthropic 官方的 frontend-design skill 里有一段专门点名这些特征:只把标题里的某一个词改成斜体、加粗或换色来制造重点;给标签用全大写;在内容上方加一些不必要的排版小标签;在内容并不是序列的时候,硬加上 01 / 02 / 03 的编号标记;每个区块都来一次淡入上移,每张卡片都做悬停过渡。这份文件只有一千三百 token 左右,却被大量项目当成前端设计的第一块基石,原因很朴素:它把"AI 味"从一个模糊感受,变成了可以逐条对照的清单。

第三层是缺少反馈回路,这一点最关键。 人写页面,写丑了会被同事骂、被用户吐槽、被数据打脸,品味是在反馈里长出来的。Agent 写页面没有这个过程。它交付出代码就结束了,它看不到渲染结果,也不知道这个界面三个月后有没有人愿意用。于是它只能退回到概率最高的那个选择上。

学术界给这种现象起了个名字。一篇针对生成式 UI 工具的评测论文(Design Theater)用 24 个 UI 生成任务、5 个工具、120 个界面做了一轮系统测试,提出三个指标:思考保真度(工具说出来的设计推理有多少真的落进了界面)、原则遵循度(界面是否满足提示词隐含的 UX 原则),以及设计同质化指数(不同工具在同一提示词下产出的界面有多相似)。作者用"设计剧场"来形容核心发现:工具会流畅地输出听起来非常专业的设计理由,但界面里并没有兑现这些理由。这不是生成失败,而是它生成的东西本身就难以被评价。

这解释了为什么"再让他改改"通常没用。你面对的不是一个态度问题,而是一个没有反馈、没有约束、只能输出众数的系统。

二、第一层约束:从形容词到动词,给 Agent 一套设计词汇

“把这个页面做得更好看一点"是不可执行的指令。它没有方向,没有程度,没有验收标准,Agent 只能把它翻译成"更接近训练数据里被反复点赞的那种样子”。

Impeccable 这一层做的事,本质上是给 Agent 装一套设计工作室里的词汇表。它把常见的模糊诉求拆成了 24 个具体命令,每个命令都对应一个可执行的动作,而不是一句评价。比如 bolder 和 quieter 是一对方向相反、可来回拨动的旋钮;distill 是纯粹的减法,要求把组件削到只剩本质;polish 是交付前的最后一次对齐;audit 是技术性检查(无障碍、性能、响应式);critique 走的是 UX 层面的评审(层级、清晰度、情感共鸣)。这套命令覆盖七个支柱:排版、颜色、空间设计、响应式、交互、动效、UX 文案。

Taste Skill 走了另一种更参数化的路子。它的做法是把风格拆成三个 1 到 10 的刻度盘:设计变体度(低分是居中对称的保守布局,高分是刻意打破栅格的非对称结构)、动效强度(低分只留悬停和微交互,高分上滚动触发和视差)、视觉密度(低分留给大量留白,高分做到仪表盘级别的信息密度)。它甚至写进了一条"变体强制"规则:永远不要连续产出两次完全相同布局和气质的东西。

把品味参数化成滑杆,本身就是一次很有价值的坦白:有品味不是一个是非判断,而是一个连续谱上的取向。 同时它也暴露了这一层的能力上限。刻度盘能告诉你"更张扬"或"更克制",但决定不了张扬到什么程度是对的。它把不可执行变成了可执行,但不负责判断可执行的结果好不好。

这一层真正的收益,是把团队评审的语言换了一遍。以前是"我觉得不好看",现在是"先跑一次 distill,把这三个装饰去掉,再跑 bolder,给我三个变体"。前者无法推进,后者可以一轮一轮往下走。

三、第二层约束:把设计系统写成文件

词汇解决的是当下这一次生成。下一次换会话、换 Agent、换工具,一切又要重新交代一遍。所以第二层要做的事情很自然:把设计系统落成一个文件。

这件事正在被标准化。Google 的 Stitch 团队把 DESIGN.md 的草案规范开源了出来(仓库 google-labs-code/design.md,2026 年 4 月创建,目前约 2.8 万星、两千多 fork)。它的结构非常克制,只有两层:

  • YAML frontmatter 放机器可读的 token。 颜色、排版、圆角、间距、组件,全部是精确值。
  • Markdown 正文放人类可读的理由。 解释这些值为什么存在、该怎么用。

规范里那句定位很值得抄下来:token 是规范值,散文是理由。Agent 需要精确值才能生成一致的代码,需要理由才能在规范没有覆盖到的新场景里做出不跑偏的判断。二者缺一不可,只有 token 会变成一堆没有灵魂的常量,只有散文则等于没有约束。

正文的章节顺序是固定的,可以省略但顺序不能乱:Overview、Colors、Typography、Layout、Elevation & Depth、Shapes、Components、Do’s and Don’ts。组件的 token 只允许八种属性(backgroundColor、textColor、typography、rounded、padding、size、height、width),这个限制很聪明:它逼你把设计系统里的自由度压到可穷举的程度。从 2026 年 4 月到今天不到半年,这个格式长到两万八千星,说明它踩中了真需求。

配套的 linter 更能说明这套东西的野心,它给 DESIGN.md 定义了九条校验规则,其中几条是真正能救命的:

规则级别检查内容
broken-referrortoken 引用(如 {colors.primary})指向不存在的 token
missing-primarywarning定义了颜色却没有 primary,Agent 会自动帮你编一个
contrast-ratiowarning组件的前景背景对比度低于 WCAG AA 的 4.5:1
orphaned-tokenswarning定义了颜色却没有任何组件用到
missing-typographywarning定义了颜色却没有排版 token,Agent 会退回默认字体
section-orderwarning章节顺序不符合规范
unknown-keywarning顶层键疑似拼写错误(如 colours 写成 colors 的反面)

注意 missing-primary 和 missing-typography 这两条的措辞:它们警告的不是"你写错了",而是"你不写,Agent 就会自己编"。这就是约束层的价值所在,凡是没人明确决定的自由度,Agent 都会用训练数据里的默认值去填。

还有一处分离设计值得单独提出来。Impeccable 在初始化时会写一份 PRODUCT.md,记录的是产品的持久事实:受众是谁、解决什么问题、在什么场景下被使用、有哪些硬约束、用什么语气说话、有哪些证据。视觉方向则单独记在 DESIGN.md 里。这个拆分很有讲究:产品事实很少变,视觉方向每个界面都可以不同。把两者混在一份文件里,最常见的后果是,改配色的时候顺手把产品定位也改了。

四、第三层约束:确定性检测器,把品味变成可回归测试

前两层都还在"提示"的范畴里。提示能被忽略,文件能被无视。第三层做的事情性质完全不同:把一部分品味写成断言。

Impeccable 最值得学的设计就在这里。它除了 LLM 驱动的评审命令之外,还带了一套确定性的检测规则,跑在 CLI 和浏览器扩展里,不需要调用模型,不需要 API key。能查的东西非常具体:侧边的标签边框、紫色渐变、bounce 缓动曲线、过于局促的内边距、过小的点击热区、不合适的行长。这些检查是确定性的,同样的输入永远得到同样的输出,可以进 CI,可以卡住合并请求。

为什么这一层是整套体系里最关键的?因为让模型当审美裁判,在今天的技术条件下是有硬伤的。这里有几份实测数据可以参照。

一篇关于平面设计偏好的论文(TASTE)发现,设计师对设计成对排序的一致度,大致相当于普通用户对电影排序的一致度,低于众包工人对照片画质排序的一致度。更麻烦的是维度差异:不同评价维度上的信号强度相差约 2.2 倍,色彩和谐这一维最低(平均成对相关 +0.103),排版描述最高(+0.224)。也就是说,“哪个更好看"这个问题在色彩维度上本身就更接近噪声。至于自动评分器,在 64 万组人类偏好对比上训练的 HPSv2.1,在这份数据上只拿到 0.543。

另一篇针对文本到应用工具的基准(UI-Bench)覆盖 10 个工具、30 个提示词、300 个生成站点、4000 次以上的专家判断,用 TrueSkill 模型给出带 95% 置信区间的排名。它在相关工作里给出的判断很直接:现有的基准都在测功能、还原度和代码相似度,没有一个用盲评的专家成对比较来测整体视觉品质;自动化的美学分数只能当辅助诊断,不能当主结论。

这两份数据合起来说明的是一件很实际的事:审美这件事,能被可靠测量的部分和能被执行的约束部分是同一部分。 对比度是否达到 4.5:1、点击热区是否够大、行长是否超过 80 个字符,这些是可以写成断言的;“这个界面对不对、有没有灵魂"则不能。前者的价值是把你从重复劳动里解放出来,后者的价值是提醒你,最后那一步还得人来走。

于是三层的分工也就清楚了:

层次形态能解决的问题解决不了的问题
词汇层一组可执行的命令与刻度把"更好看"变成一次具体操作判断这次操作是否恰当
规范层DESIGN.md / PRODUCT.md跨会话、跨 Agent、跨工具的一致性规范之外的新场景
检测层确定性规则 + CI 断言可度量的硬缺陷,可回归测试整体品质与适配度

五、边界:反 slop 会不会变成新的 slop

到这里必须泼一盆冷水。这套方法有效,但它有一个自带的悖论。

看看 Taste Skill 的禁令清单:禁用的字体包括 Inter、Roboto、Arial、Open Sans、Helvetica;禁用的样式包括通用的 1px 灰边框、生硬的深色投影、贴到顶部的等宽粘性导航栏、没有留白的对称三列栅格;推荐的替代是 Geist、Clash Display、Plus Jakarta Sans 这类字体,更细的线条和更大的留白。

这份清单独看很有品味。但当上万个项目都装了同一份清单,结果就是你打开二十个网站,看到的是同一种"高级感”:同样的细体无衬线、同样的大留白、同样的克制灰阶。反 slop 一旦被标准化,它自己就成为新的平均值。 这是约束层的第一个内在冲突,工具的普适性和个性的独特性在这一点上直接对立。

第二个冲突更根本:能被检测的部分不等于品味本身。linter 能告诉你对比度达标,但它说不出这个界面对不对。前面提到的"设计剧场"描述的正是这种断裂,理由写得越漂亮,越容易让人以为界面已经兑现了,而实际上没有。所以确定性规则越多,越要警惕一种新的自欺:把绿灯等同于好设计。

第三个问题是维护成本。规则集会老。今天禁紫色渐变是对的,因为它被用烂了;三年后禁用清单本身可能需要重写。DESIGN.md 一旦进了仓库,它就跟其他依赖一样,需要有人负责更新、需要 lint、需要评审。设计系统从来不是一次性的交付物,这是所有规范类方案的通病,AI 并没有豁免它。

还有一个实操上的坑值得提前避开:不要在同一层重复安装工具。社区里流传的一个分层建议很有参考价值,基础词汇层用一个官方 skill 打底(大约一千三百 token 的那一层),规范层在 DESIGN.md 和 Taste Skill 之间二选一(两者解决同一个问题,叠在一起会互相竞争),精修层用 Impeccable 的 polish 和 audit,最后再针对项目最弱的一环补一个专项 skill。层级清晰比工具齐全重要得多。

六、落地:小团队今天就能做的五件事

如果把上面所有内容压缩成可以立刻执行的动作,大概是这五条。

第一,先写禁止项,再写正例。 这是所有约束里性价比最高的一条。明确列出"我们不做紫蓝渐变"“标题里不单独染色"“不是序列就不加编号”,比列举一堆"我们要什么"管用得多。有社区项目在提取个人品味时把 anti-goals 单列一节,称为最强的护栏,这个判断是对的:Agent 在面对空白时一定会用默认值补,堵住默认值比引导方向更立竿见影。

第二,建一个二十张图的参考库。 把你真的喜欢的界面截图存下来,标注你喜欢的具体是哪一点(是留白、是字重对比、还是动效节奏)。这既是给 Agent 的图像输入,也是团队内部对齐审美最快的方式。看图说话比形容词精确一百倍。

第三,写一份最小的 DESIGN.md。 不必一上来就写满八节,先覆盖 Colors、Typography、Components、Do’s and Don’ts 四节,然后跑一遍 linter。重点检查两件事:有没有 primary 色,有没有排版 token。这两处空着,Agent 一定会替你编一个。

第四,把确定性检查接进 CI。 从对比度和点击热区这两个最不容易有争议的断言开始。它们跑得比任何模型都快,永远不会因为提示词措辞不同而给出不同答案,是唯一能真正"卡住"合并请求的那一类检查。

第五,保留一条人工盲评通道。 同一个需求,让两个工具各出一版,去掉来源标记再选。这正是 UI-Bench 采用的协议:用盲评的成对比较作为主结论,自动化分数只当辅助诊断。它成本不高,却是目前唯一能回答"到底哪个更好"的可靠方法。

结语

回到开头那个页面。它的同质化不是某一代模型的缺陷,而是"没有反馈、没有约束、只能输出众数"这个结构的必然产物。真正在发生的变化,是行业开始承认这一点,并且把可以工程化的那部分品味逐层外包出去:用词汇把模糊诉求变成动作,用文件把一次性交代变成跨会话的持久约束,用确定性检测把可度量的部分变成断言。

至于不能外包的那部分,今天的所有数据都指向同一个结论,它没有捷径。设计偏好的人类一致度大约只相当于电影评分的水平,色彩维度上的信号更是接近噪声。这不是悲观,反而是好消息:它意味着在审美这件事上,人的判断在很长一段时间里仍然稀缺,仍然值钱。

也许衡量一个团队的 AI 使用水平,很快就会从"你们用哪个模型"变成另一个更有意思的问题:你们那份 DESIGN.md,上一次被人认真读过是什么时候。

参考来源

  • Anthropic frontend-design skill (官方设计 skill,约 1300 token,列出了生成式页面的常见套路)
  • pbakaus/impeccable (设计语言 skill:24 个命令、7 个支柱、61 条确定性检测规则、PRODUCT.md 与 DESIGN.md)
  • Leonxlnx/taste-skill (Anti-Slop 前端框架:三个刻度盘与禁用清单)
  • google-labs-code/design.md (DESIGN.md 格式规范,含 YAML token 结构、章节顺序与 linter 规则;规范文档 )
  • Design Theater: Evaluating the Gap Between User-Facing Design Reasoning and Implementation in Generative UI Tools(24 个任务、5 个工具、120 个界面,提出思考保真度、原则遵循度与设计同质化指数)
  • UI-Bench: A Benchmark for Evaluating Design Capabilities of AI Text-to-App Tools(10 个工具、300 个站点、4000 次以上专家盲评)
  • TASTE: A Designer-Annotated Multi-Dimensional Preference Dataset for AI-Generated Graphic Design(设计师偏好一致度与自动评分器实测)
  • Design Skills for AI Agents: How to Stop Getting Generic Interfaces (分层安装建议与工具对比)
Me

Cut out summary from your post content here.

The remaining content of your post.