Open Design · Prompt Ablation · 2026-06

OD 机制有用,
但和好 Skill 互相替代,而非叠加

一次 4 配置 × 10 需求 × 3 重复的消融实验:把 OpenDesign 的 system prompt 机制栈和 3 个精选 skill 拆开独立计量,看每一层指导到底买到了什么——并用两个独立裁判交叉验证哪些结论扛得住。

120 个产物(4 配置 × 10 需求 × 3 次重复) opus-4.8 + kimi-k2.7 双裁判盲评 360 票(2 裁判 × 180) ~$74 成本
TL;DR

机制单独使用时与 3 个 skill 同样有效,但两者叠加为零增量,多付 40% token;在 dashboard/deck 等工具型场景,重 prompt 反而输给什么都不加的裸模型

换第二个独立裁判(Kimi-k2.7)交叉验证:"skill 有用""叠加零增量"两条复现;但"机制单独有用"换裁判后塌成掷硬币——需标注裁判敏感(详见 05)。

01

实验背景:2200 行 prompt 到底买到了什么

OpenDesign 在每次生成原型前,会给模型注入约 2200 行的 system prompt 机制栈:discovery 提问流程、设计哲学、critique 自检框架、视觉 direction 库。这套东西是产品的核心资产之一,但维护成本不低——每次模型换代、每条新规则、每个新场景都要回头校对。

与此同时,社区已经出现了质量很高的开源设计 skill。本实验选了 3 个有代表性的:taste-skill(反 AI 味主规则集,约 88K 字符)、impeccable-design-polish(生成后再做一轮修订的 polish skill)、GSAP 动效系列(动效纪律,因产物是零依赖单文件 HTML,已改写为 CSS 等价规则)。

于是有了两个必须用数据回答的问题:① OD 机制栈对产物质量有没有真实的正向贡献?② 如果有,这份贡献能不能被"装 3 个好 skill"以更低的复杂度替代?

这是在算一笔"维护成本 vs 产出质量"的账。如果机制的效果跟几个现成 skill 差不多,那 2200 行 prompt 的维护投入就需要重新论证;如果机制有 skill 给不了的独特价值,也要知道它体现在哪类需求上。
02

实验方法与设计

2.1四个配置,互为对照(2×2 消融)

要分清"机制的功劳"和"skill 的功劳",只比较"开 OD"和"关 OD"是不够的——必须把两个因素独立开关,组成四个配置。四个配置用完全相同的模型、相同的调用方式、相同的两轮流程(先生成、再统一做一轮 polish 修订),唯一的差别是 system prompt 里装了什么:

A
裸模型
只告诉模型输出格式,零设计指导。它是基线:其他配置比它好多少,就是"指导"的净价值
0.6K 字符
B
裸 + 3 Skill
taste-skill(反 AI 味)+ impeccable(后置 polish)+ GSAP 动效纪律(CSS 化)
109K 字符
C
OD 机制
OD 真实的 composeSystemPrompt 全栈(discovery 哲学、critique、direction 库),不带任何 skill
55K 字符
D
OD + 3 Skill
机制与 skill 全部叠加——这是当前 OD 用户实际用到的默认形态
163K 字符
B 减 A = skill 单独值多少分;C 减 A = 机制单独值多少分;B 和 D 打平 = 机制叠在 skill 上面没有额外收益。三组减法做完,每一分钱花在哪就清楚了。

2.2测试需求:主场 7 个 + 客场 3 个

10 个需求覆盖两类场景:7 个是 taste-skill 自己声明擅长的(落地页、作品集、长文排版,下称主场),3 个是它自己声明不管的(数据仪表盘、后台表格、幻灯片,下称客场)。每个需求每个配置独立生成 3 次,防止单次运气好坏影响结论。

2.3怎么评:主观盲评 + 客观正则,两层互相印证

质量评判用成对盲评:把同一个需求下两个配置的产物截图发给一个评审模型,问"哪份设计更好"。评审不知道哪张图来自哪个配置,左右顺序随机打乱,并且分两个维度独立投票——craft(视觉品质:排版、层级、配色品味、有没有 AI 味)和 fit(是否满足需求:该有的模块齐不齐、调性对不对)。对照组是 A vs B、A vs C、B vs D 三组,每组 30 格 × 2 维 = 60 票,共 180 票。

主观盲评之外,再加一层不依赖任何评审的检查:直接用正则扫描产物 HTML,数它犯了多少条"硬规则"——比如用了被禁的 Inter 字体、有动画但没给 prefers-reduced-motion 降级、动画作用在会触发重排的布局属性上、文案里出现 AI 味的 em-dash 等 8 项。

盲评防的是"先入为主"——评审连哪边是 OD 都不知道,没法偏袒;正则检查防的是"评审看走眼"——规则写得死的项目,机器数出来多少就是多少。两层结论一致,才算站得住。
03

实验步骤

整条流水线五步,全部脚本化、可复现(代码在 experiments/prompt-ablation/):

  1. 组装四套 system prompt(arms.ts
    C/D 调用 OD 仓库里真实的 composeSystemPrompt(声明自动化场景、要求跳过 discovery 问卷),B/D 注入 3 个 skill 全文(GSAP 规则改写为 CSS 等价物)。四套 prompt 先 dump 出来人工核对体积与内容,再进入生成。
  2. 批量生成 120 个产物(run.ts
    每格两轮:先生成完整 HTML,再用同一段 polish 指令让模型自查修订一轮。所有配置统一两轮,是因为 impeccable 是"二轮修订型" skill——轮数不对齐,比较就不公平。C/D 配置若无视跳过指令先发了 discovery 问卷,runner 自动回复"使用推荐默认值"补回生成,并把这次违规记录在案(见结果 4.4)。模型 opus-4.8,经 OpenRouter 调用。
  3. 渲染截图(screenshot.ts
    Playwright 渲染每个产物:桌面 1440×900 整页长图 + 移动端 390×844 首屏(顺带检测横向溢出)。关键细节:截图前先逐屏滚动到页底再回顶,触发所有滚动入场动画——这一步缺失曾让首轮评审数据整体反转(见 5.4 方法论教训)。
  4. 客观合规检查(check-objective.ts
    8 项正则规则扫描全部 120 份 HTML,输出每格违规数。正则是启发式的,下结论前对命中样本做过抽查,并修掉了一处误报(stroke-width 被误判为布局动画属性)。
  5. 成对盲评(judge.ts
    三组对照逐格出题:两张桌面整页截图并排发给评审模型(同为 opus-4.8),身份盲化、左右按确定性哈希随机翻转,craft / fit 各投一票并写一句理由,理由全部留档可审计。共 180 票。
04

实验结果

4.1主观盲评:机制有效、skill 有效、叠加无效

左方胜平局右方胜
B 裸+Skill vs A 裸模型 31 : 16(平 13)→ skill 有明确正贡献
31
13
16
C OD机制 vs A 裸模型 29 : 14(平 17)→ 机制同样有效,量级相当
29
17
14
B 裸+Skill vs D OD+Skill 25 : 23(平 12)→ 统计上无差异
25
12
23
D 的 prompt 比 B 长 50%(prompt token 多 1.4 倍),质量打平——机制在 skill 之上没有买到任何东西。
前两条对战条说明"加指导"确实有用,两种加法效果差不多;第三条说明两种加法不叠加——它们教的是同一批东西,重复购买。

分维度看更有意思:差距几乎全部来自 craft(B 对 A 在 craft 上 22:8,C 对 A 18:8);而 fit 维度三组对照都接近平手、三分之一以上是平局。也就是说裸 opus-4.8 对"需求要什么"的理解已经很到位,重 prompt 买到的是"更好看",不是"更对题"。

4.2主客场分化:重 prompt 在错误场景是负资产

把同样的票按需求类型拆开,结论出现剧烈反转:

主场 — 落地页 / 作品集 / 长文排版(42 票)
  • C 机制 vs 裸模型24 : 6 碾压
  • D 叠加 vs B 纯skill20 : 13 略优
  • B 纯skill vs 裸模型19 : 13 优
客场 — 仪表盘 / 后台 / 幻灯片(18 票)
  • C 机制 vs 裸模型5 : 8 反输
  • D 叠加 vs B 纯skill3 : 12 大败
  • B 纯skill vs 裸模型12 : 3 大胜
OD 机制满脑子"编辑感、品牌叙事、视觉方向",做营销页是加分项;做后台表格、数据仪表盘时,这些指导把模型往错误的方向带——加了还不如不加。

4.3客观合规:可机械检查的硬规则,全是 skill 的功劳

配置平均违规 / 产物vs 基线显著项
A 裸模型1.20基线Inter 字体 10/30,缺 reduced-motion 6/30
B 裸 + skill0.90−0.30Inter 降到 2,reduced-motion 全清零
C OD 机制1.20±0em-dash 重灾 21/30
D OD + skill0.93−0.27(≈B)em-dash 仍偏高
凡是写得死、可检查的规则("禁用某字体""必须给降级"),只有 skill 在认真执行;OD 机制层在这个维度贡献为零。另外紫渐变检查四个配置全部 0 命中——opus-4.8 这代模型已经自带免疫,说明 anti-slop 规则集需要按模型代际重新校准,有些规则已经过时了。

4.4机制行为与成本

discovery 问卷无视 skip 指令:prompt 里明确声明了"自动化场景,不要发问卷",C 仍有 11/30、D 有 7/30 在第一轮先发了 <question-form>(A/B 为 0)。成本:每个产物(两轮)上游花费 A $0.41、C $0.62、B/D 各 $0.70;D 的 prompt token 总量是 B 的 1.4 倍(417 万 vs 297 万),但质量无增量。

05

交叉验证:换个独立裁判,结论还成立吗

上面所有"哪个配置更好"的判断都出自同一个评审 opus-4.8——它既生成产物又当裁判。这埋着隐患:万一这些结论只是 opus 自己的审美偏好,换个模型就不成立?为排除这点,用同一套盲评流程、同一批产物,换一个完全独立、且非 Claude 家族的裁判 Kimi-k2.7(带视觉能力,看得到排版/配色/留白)重评 180 票。除裁判模型外一切不变。

第一轮是"自己出卷自己批"。这一轮请一个外人按同样标准重批一遍:外人也给出同样排名,才算产物真有高下,而不是某个模型的口味。(本想用 DeepSeek-v4,但它整代纯文本、看不了截图,换成有视觉能力的 Kimi。)

5.1三组对战:两裁判叠在一起看

每条对战上为 Kimi、下为 opus 同组结果,直接对照。绿色=更优配置得票、灰色=平局、红色=另一方得票。

B 裸+Skill vs A 裸模型 — skill 价值 ✓ 两裁判同向
kimi-k2.7
39
2
19
opus-4.8
31
13
16
Kimi 判 B 比 A 39:19,比 opus 还果断。好 skill 对裸模型的提升,两裁判一致认账。
C OD机制 vs A 裸模型 — 机制价值 ⚠ 量级分歧
kimi-k2.7
30
2
28
opus-4.8
29
17
14
opus 判机制明显优于裸模型(29:14);Kimi 看几乎是掷硬币(30:28)。方向一致但量级塌了——这是全实验对裁判最敏感的一条。
D OD+Skill vs B 裸+Skill — 叠加增量 ✓ 两裁判同向
kimi-k2.7
31
2
27
opus-4.8
25
12
23
绿色为 B。两裁判都判 D 没赢过 B——在 skill 之上再叠机制(多付 40% token)换不来质量。这条最稳。

5.2哪些扛住了、哪些塌了

结论opus-4.8kimi-k2.7是否复现
好 skill 明显优于裸模型B 31:16B 39:19✓ 复现,更强
机制单独优于裸模型C 29:14C 30:28△ 方向在、量级塌
机制叠 skill 零增量D 不胜 BD 不胜 B✓ 复现
重 prompt 客场是负资产D 客场 3:12D 客场 6:11✓ 复现
主客场分化也被 Kimi 复现:C vs A 主场两裁判都占优、客场都失优势;D vs B 客场两裁判都把叠加配置判输给纯 skill。"重 prompt 适合营销页、不适合工具型界面"换裁判照样成立。

5.3但单格判断接近抛硬币

聚合方向稳,不代表两裁判对每一张图看法一致。把 90 格 × 2 维里两个裁判都明确选了边(没打平)的 133 票拎出来比对:

55%
两裁判都选边时,选出同一个赢家的比例
45%
硬翻转:一个说左赢、另一个说右赢,几乎等于抛硬币
23% / 3%
打平率 opus / kimi——opus 是"宽容型"裁判,Kimi 是"果断型"
同样 30 张设计平均下来"B 比 A 好"两裁判都同意;但具体到"这一张比那一张好",两人有近一半时候判得正相反。结论:聚合排名可信,单格胜负基本是裁判口味——单裁判的单格判断别当真。
WHY IT MATTERS

这正是做交叉验证的价值。只信 opus 一轮会以为"机制单独明显有用"(29:14)是硬结论;换个裁判才发现它其实脆弱(30:28)。而真正稳的两条——好 skill 有用、机制叠 skill 零增量——经得起换裁判,才值得拿去指导"要不要继续堆 2200 行 prompt"这种真决策。一个能被裁判选择翻转的结论,不该写进产品路线图。

07

实验结论

7.1核心结论

  1. 好 skill 的价值是硬的两裁判复现
    B 对 A 两个裁判都明显占优(opus 31:16、kimi 39:19),主要体现在视觉品质(craft)维度。"装 3 个精选 skill 明显优于裸模型"不依赖裁判选择,是稳定结论。
  2. 机制与 skill 高度冗余,叠加零增量两裁判复现
    D 对 B 始终没胜出(opus 23:25、kimi 27:31),而 D 比 B 多付 40% prompt token。机制的价值可被 3 个精选 skill 以更低复杂度替代,反之亦然——两者教的是同一批东西。这是对"是否继续维护重 prompt"最关键的一条,且它扛住了换裁判。
  3. 机制"单独有用"成立但裁判敏感部分复现
    opus 判 C 明显胜 A(29:14),但换 Kimi 后塌成掷硬币(30:28)——方向没反、量级强烈依赖裁判。后续若要论证"机制有独立于 skill 的价值",必须多裁判佐证,不能只引 opus 一轮。
  4. 两者都是"主场选手",重 prompt 在客场是负资产两裁判复现
    落地页/作品集/长文排版上机制和 skill 都有效(C vs A 主场 opus 24:6);但仪表盘/后台/幻灯片上 C 反输裸模型、D 被 B 大败(客场 opus 3:12、kimi 6:11)。支持"按需求类型路由 prompt 配置",而非"一套大 prompt 打天下"。
  5. 单裁判的单格判断不可信,只有聚合可信方法论
    两裁判在单格上硬翻转率 45%,接近随机;裸 opus-4.8 的下限也已不低(fit 维度大量平手、紫渐变全臂零触发)。任何"逐个产物挑最好"的用法都不该信单裁判,结论只在聚合层面成立;anti-slop 规则集还需按模型代际重新校准。

7.2对 OD 的可执行建议

① 按 metadata.kind 裁剪 prompt 栈:dashboard/deck 类需求少注入创意向指导;② skill 与机制中重复的 anti-slop/动效内容去重——D 形态(机制+skill 全叠)是当前默认路径但性价比最差;③ 修 skipDiscoveryBrief 失效问题;④ 把 em-dash 规则提升到机制层。

7.3顺带捞到的三个可回报问题

  1. skipDiscoveryBrief override 不可靠
    OD 给自动化场景准备了一个开关:在 prompt 里声明"这是自动项目,不要发 discovery 问卷"。实测机制臂 30%(C 11/30、D 7/30)的 turn-1 无视这条指令照发问卷——discovery 层自带的"turn-1 必发问卷"硬规则压过了 skip 指令。任何依赖这个开关的自动化流程(例子库生成、批量任务)都会被卡住,复现稳定,是可以直接开 issue 的真 bug。
  2. em-dash 规则缺口在机制层
    "文案别用 em-dash"是 AI 味检查的常见规则,只写在 taste-skill 里,OD 机制层没有。结果机制臂违规率 70%+;更值得注意的是 D(机制+skill)也偏高——机制的 5 万字 prompt 似乎把 skill 里这条规则"稀释"了。建议把这条提升到机制层。
  3. 视觉截图的 IntersectionObserver 假空白
    带滚动入场动画的页面(元素初始透明,滚到视口才显示),如果不滚动直接整页截图,首屏以下全是空白。OD 自己的视觉回归和预览截图同样会踩这个坑——正确姿势是先逐屏滚到底触发所有入场,再回顶截图。

7.4方法论教训:首轮数据曾被测量偏置完全反转

WHY IT MATTERS

首轮盲评结果是"裸模型 A 胜率 51.6%、纯 skill B 只有 27.5%"——和最终结论完全相反。逐条读评审判词才发现问题:B 配置 30 个产物里 22 个用了 IntersectionObserver 滚动入场(正是 skill 教的"入场错峰"),而截图脚本不滚动直接整页截图,把首屏以下全拍成了透明——评审把最守动效纪律的产物判成了"大量空白、内容缺失"。修复截图流程后重评,结论整体翻正。教训:评估管线本身必须先被审计,否则你测出来的是管线的 bug,不是产物的质量。