- Published
当 Claude 读完《Refactoring UI》:让 AI 摆脱程序员审美
Author
Robin
一、每个程序员都经历过的"审美车祸现场"
你让 Claude Code 生成一个落地页。功能全对,代码能跑,但打开一看:标题 36px 加粗、副标题 24px 灰色、正文 18px、按钮红配绿、卡片阴影糊成一团——典型的"程序员审美"。
诡异的是,每个元素单独拎出来都没错:字号是字号,颜色是颜色,阴影是阴影。可它们放在一起,就是透着一股廉价感。你说不上来哪里不对,只能含糊地讲一句:"界面看起来有点廉价,改好看点。"然后 Claude 一通盲目调像素,越改越糟。
问题不在代码,在视觉决策没有系统。人靠感觉做设计,AI 就更只能靠感觉——而 AI 的"感觉",是全网平庸 CSS 的平均值。
二、《Refactoring UI》到底教了什么
2018 年,Tailwind CSS 作者 Adam Wathan 和设计师 Steve Schoger 写了一本薄薄的书《Refactoring UI》,副标题就差把读者点名了:写给"会写代码但不懂设计"的开发者。
这本书的核心论点很反直觉:好设计不是天赋,是遵守规则。它把那些设计师"一看就知道"的东西,拆成了一条条可以机械执行的硬性规定:
- 先定比例尺,再动手:字号、间距、颜色全部从一个有限集合里选。比如字号只用 12 / 14 / 16 / 20 / 24 / 30 / 36,间距只用 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64。永远不要出现 13px、17px 这种随手发明的数值。
- 层级不靠字号,靠字重和色彩深度:想让标题更突出?别急着加大字号,先试试加粗(400→700),或者把颜色从 slate-500 加深到 slate-900。视觉层级是"重量感"的对比,不是尺寸竞赛。
- 配色 60-30-10:60% 中性底色、30% 次要色、10% 强调色。页面花里胡哨,十有八九是强调色超标了。
- 阴影模拟光源:小而锐的阴影 = 元素贴近平面,大而柔的阴影 = 浮得更高。别给所有卡片套同一个阴影,那等于告诉用户"光从四面八方来"。
- 用 HSL 调色,不用取色器瞎点:固定色相,只调饱和度和明度,一套协调的配色就出来了。
- 对比度是硬指标:正文与背景对比度至少 4.5:1(WCAG 标准),这不是建议,是及格线。
看出来了吗?这些规则的共同点是:它们都是"约束",而不是"灵感"。不需要审美,只需要执行。这恰恰是 AI 最擅长的事。
三、从书到技能:让 Claude 严守比例尺
最近 GitHub 上出现的一类项目,就是把上面这套规则直接编码成 AI 的"技能"。代表作是 gnurio/refactoring-ui-plugin(同生态还有 899ms 的同名实现),它把《Refactoring UI》的原则拆成了 10 个结构化技能:
| 技能 | 干什么 |
|---|---|
| 建立视觉层级 | 判断用户第一眼先看到什么 |
| 应用字体比例尺 | 用字号、字重、颜色建层级 |
| 构建配色 | 定义灰阶、主色、强调色的完整色阶 |
| 统一间距 | 用固定步进建立节奏感 |
| 按钮层级 | 区分主要 / 次要 / 第三优先级操作 |
| 消除视觉噪音 | 删掉不必要的装饰 |
| 空状态设计 | 让"没内容"也有用 |
| 正确使用阴影 | 按" elevation" 功能性地用阴影 |
| 管理色彩对比度 | 保证可读性和可访问性 |
| 邻近分组 | 用距离表达元素关系 |
外加一个 meta-refactor-ui 编排器,可以对一份设计稿做全量走查。在 Claude Code 里用法极其简单:
/refactor-ui --design="path/to/design.md"
它的工作机制值得玩味:每个技能都是一个 SKILL.md 文件,里面把规则写死——"标题只能从字号比例尺里选""正文对比度必须 ≥ 4.5:1""阴影按 elevation 分三档"。Claude 执行时没有自由发挥的空间,只能在预设的间距、字号、颜色和阴影比例尺中做选择。
这意味着,当你说"界面看起来有点廉价"时,它不再盲目调像素,而是按流程走查:先查层级(是不是全靠字号在硬撑?),再查配色(强调色是不是超了 10%?),再查阴影(光源是不是打架了?),最后基于 HSL 色彩逻辑和模拟光照原理,给出一套机械化、可解释的改进方案。每一步改动都能说出"为什么",而不是"我觉得这样好看点"。
顺带一提,这类插件都明确声明与 Tailwind Labs 无关——是社区把书的方法论"编译"成了 AI 可执行的格式,书本身还是值得买一本的。
四、为什么"约束"比"创造力"更重要
LLM 生成前端代码时那种挥之不去的"通用模板感",根子在训练数据:网上能爬到的 CSS,绝大多数是平庸的。模型做的是概率采样,每次都倾向于输出"最可能"的平庸解,而不是"最好"的设计。temperature 调得再低,也只是在平庸里选一个更确定的平庸。
refactoring-ui-skill 的价值,在于它承认了一个现实:指望 AI 突然长出审美是不现实的,但让 AI 严格执行一套成熟的方法论是完全可行的。这就好比代码 lint——我们从来不指望 linter 有"代码品味",但 eslint --fix 确实让代码库下限大幅提高。这些设计技能,就是给 UI 做的 lint。
这也不是孤立现象。2026 年 AI 前端工具正在集体转向"约束驱动":
- DESIGN.md:给 AI 立设计规矩的文档,相当于 UI 领域的 AGENTS.md;
- agent skills 生态(如 mblode/agent-skills 里的
ui-design/ui-audit):把设计评审拆成可调用的技能; - Stitch 这类生成式 UI 工具:背后同样是"先定设计系统,再生成页面"的路数。
范式已经很清楚了:AI 做设计的进化方向,不是追求虚无的创造力,而是对成熟方法论的像素级执行。创造力负责 0 到 1 的惊艳,约束负责 1 到 100 的不翻车——而绝大多数工程场景,恰恰只需要不翻车。
五、对独立开发者的意义
对于习惯用 Claude Code 构建产品的独立开发者,这个变化是实实在在的:相当于给你的 AI 雇员内置了一个从不疲惫的资深设计师,7×24 小时做设计评审。
以前的工作流是:AI 出一版 → 你凭感觉说"有点丑" → AI 凭感觉改 → 你继续凭感觉验收。感觉对感觉,方差巨大。现在的工作流是:AI 出一版 → 技能按规则走查 → 输出带解释的改进清单。工程实现从一开始就跑在正确的视觉轨道上,"廉价感"在萌芽阶段就被掐掉了。
更深一层,它解决的是独立开发者的结构性短板:我们不缺把功能做出来的能力,缺的是一套能落地、且不显业余的视觉决策系统。请不起设计师,学设计又太慢——那就别学了,直接把规则编译成 AI 的约束。审美可以外包给比例尺。
结语
下次当你想对 Claude 说"界面有点廉价"时,不妨先问自己一个问题:你是缺一个有品味的 AI,还是缺一套说得清的规则?
《Refactoring UI》八年前就给出了答案。现在,终于有人把答案写成了 AI 读得懂的格式。
本文选题来自 BlogPress 选题池,发布后同步归档。