Architecture · 2026-04-20架构 · 2026-04-20

The Harness.
Nine components. One rule.
架构蓝图。
九个组件。一条规矩。


The full design of the sky-skills harness — nine generator skills and two evaluators. Of the nine components: eight done — the canonical library (02) just reached the full 59/59 matrix — and one built but not yet exercised (09 design-evolve); (06) /design-loop has shipped its first real run. Every component must defend one question: what specific model weakness does it correspond to? No weakness, no seat at the table. sky-skills 架构的完整蓝图 —— 九个 生成器 skill 加两个 评审员。九个组件里:八个已完成——canonical 库(02)刚补满 59/59 整张覆盖表——还有 1 个机制已建但还没跑过进化(09 design-evolve);(06) /design-loop 已完成首次实战。每个组件都必须能回答一个问题:它挡的是模型的哪一个具体弱点?挡不住弱点,就不配留。

Read in another voice用另一种声音读 apple anthropic ember sage glass
Sources指导来源

Two ideas we're building on. 我们站在的两个肩膀。

GAN (Goodfellow et al., 2014) — a generator and a discriminator train adversarially. The sharper the discriminator, the stronger the generator becomes. Our nine design skills are the generator, design-review is the discriminator.

GAN(Goodfellow et al., 2014) —— generator 和 discriminator 对抗训练。discriminator 越锐利,generator 就越强。我们的 9 个设计 skill 是 generator,design-review 是 discriminator。

Anthropic, Harness design for long-running appsplanner / generator / evaluator three-part split, evaluators must be separate, sprint contracts, 5–15 iteration rounds, and the rule we take most seriously: each harness component must correspond to one specific model weakness. Assumptions worth stress-testing, because they may be incorrect or quickly outdated.

Anthropic 的 Harness design for long-running apps —— planner / generator / evaluator 三段式,evaluator 必须独立,sprint contract,5–15 轮迭代。我们最认真对待的一条:每一个 harness 组件都要对应模型的一个具体弱点。这些假设值得压测,因为它们可能不对,或者很快过时。

Agents tend to praise their own work confidently — even when quality is obviously mediocre to a human observer. Separating the agent doing the work from the agent evaluating it is a powerful lever. Agent 倾向于自信地称赞自己的作品 —— 哪怕在人类观察者看来质量明显平庸。把做事的 agent 和评判的 agent 分开,是一个真正的杠杆。
Anthropic — Harness design postAnthropic —— harness-design 文章
Goal目标

What this harness is supposed to deliver. 这个 harness 应该交付什么。

A one-sentence brief becomes a web page that stands next to anthropic.com, stripe.com, linear.app. Not technically bug-freetaste, originality, rhythm, copy, hand-crafted illustrations, device-agnostic, accessible, shareable. 一句话需求,产出能和 anthropic.com / stripe.com / linear.app 同台站着的一张页面。不是"技术上没 bug",而是 有品位、有原创、有节奏、copy 过关、图示手工感强、全设备可用、无障碍、可分享

Nine components九个组件

Every row defends a weakness. 每一行都挡一个弱点。

The only legitimate reason for a harness component to exist is that a specific model weakness makes it necessary. If a reader can argue this weakness isn't real and we can't produce evidence, we remove the component. 一个 harness 组件能存在的唯一理由,是有一条具体的模型弱点要求它存在。如果有人说"这条弱点不成立",而我们拿不出证据,就把这个组件删掉。

9 Components组件
7 Done已完成
1 Just completed刚完成
1 Built · no round机制已建未跑
01 Phase 1 done · expanding期 1 已完成 · 扩展中

design-planner

skills/design-review/scripts/sprint-contract.mjs + bin/design-review --plan + skills/design-planner/SKILL.md Model weakness对应弱点

Faced with a vague brief, the model fills in training-data medians. Scope drifts. A planner expands the brief into a sprint contract — section list, must-include content, hard constraints — before the generator runs. 面对模糊需求,模型会用训练数据的中位数填空,scope 失控。planner 在生成器动手前,把需求展开成 sprint contract —— 必含 section、必含内容、硬指标。

02 Done · 59/59已完成 · 59/59

reference library参考库

skills/<style>-design/references/canonical/ Model weakness对应弱点

Without reference, output regresses to the most average web design. A per-style canonical library of 10 page-types (pricing / landing / docs-home / blog / product / team / comparison / FAQ / changelog / feature-deep) anchors quality at each style's own best — not an industry average. 没有参考,输出就向"最平均的 web 设计"收敛。每个 style 自己的 10 个 page-type canonical 库(pricing / landing / docs / blog / product / team / comparison / FAQ / changelog / feature-deep),把品质锚定在该 style 自己的最好,不是行业平均。

03 Done · 2026-04-24已完成 · 2026-04-24

generator + self-diff生成器 + 自评差异

skills/{apple,anthropic,ember,sage}-design/ Model weakness对应弱点

Models don't naturally articulate their design decisions after writing. Without a required self-diff note, the critic has no concrete target — just vibes. Enforced 2026-04-24 via cross-skill-rules §M + verify.py canonical-self-diff check: every canonical HTML must embed a design-review:self-diff v1 comment block (5+ decisions × [id] chose A over B + known trade-offs). All 14 existing canonicals back-filled from their .md files. 模型写完 HTML 不会自然记录设计决策。没有强制的 self-diff note,critic 没有具体靶子,只能凭感觉评。2026-04-24 正式强制:cross-skill-rules §M + verify.py 的 canonical-self-diff check:每张 canonical 必须 embed design-review:self-diff v1 注释块(5+ 条 [id] chose A over B 决策 + known trade-offs)。14 张现有 canonical 从各自 .md 全部回补完毕。

04 Done · 38 checks已完成 · 38 项 check

mechanical-review

skills/design-review/ Model weakness对应弱点

Models don't self-check runtime behavior — multi-viewport rendering, keyboard navigation, color contrast, LCP/CLS, SEO meta. A mechanical gate catches the class of bugs source-scanning and model self-review both miss. runtime 行为(多视口渲染、键盘可达性、对比度、LCP/CLS、SEO meta)模型自己不会检查。mechanical 检查抓的正是源码扫描和模型自评都抓不到的那一类 bug。

05 Done · 2026-04-22已完成 · 2026-04-22

multi-critic多位专家评审员

.claude/agents/design-{composition,copy,illustration,brand}-critic.md Model weakness对应弱点

Evaluating one's own work tends to produce uniform praise. Even a fresh-context critic has a limited attention budget — one reviewer can't divide it evenly across four orthogonal axes: composition, copy, illustration, brand. Four specialists (weights 25/25/20/30) in fresh contexts + an aggregator. First live run on this page: solo-critic 93, multi-critic 88 — the 5-point gap was the illustration specialist catching a 6th-hue leak inside an SVG the generalist missed. 评审自己的作品会整体说好话。即便 fresh context 的 critic,注意力预算也有限,一个人很难把它均匀分给四个正交维度:版式copy插画品牌。四位专家(权重 25/25/20/30)各自 fresh context + 一位汇总。本页首次实战:单 critic 93,多 critic 88 —— 差的 5 分是插画专家在 SVG 里抓到了通才漏掉的 6 色偷渡。

06 Shipped · first run critic 92已发 · 首跑 critic 92

/design-loop

.claude/commands/design-loop.md Model weakness对应弱点

Models default to ship the first-pass output. Without orchestration, actual iteration ends after 1–2 rounds. A loop controller forces the planner → generator → review → critic cycle for up to 5 rounds, or escalates to a human. 模型默认"第一版够用就发"。没有外部编排,实际只跑 1-2 轮。loop controller 强制 planner → generator → review → critic 最多 5 轮,超过还过不去就交还给人。

07 Done · 2026-04-22已完成 · 2026-04-22

learning-loop

.claude/agents/design-learner.md + scripts/learning-loop.mjs Model weakness对应弱点

Models don't automatically archive "the new issue the critic caught today." Without this loop, the same bug class keeps being caught by humans. design-learner reads critic verdicts (solo or multi) and proposes three codifications: new rows in known-bugs.md, new mechanical checks in visual-audit.mjs, per-skill dos-and-donts entries. First live run 2026-04-22: 13 raw verdict issues → 5 unique bug classes → 3 new known-bugs (1.17/1.18/1.19) + 1 new visual-audit check (figure-no-caption) + 8 dos-and-donts rows. Human-in-the-loop — agent proposes; human applies. 模型不会自动归档"critic 今天新抓到的问题"。没有这个环节,同一类 bug 会反复被人抓到。design-learner 读 critic 的 verdict(单/多),提三件事:known-bugs.md 新行、visual-audit.mjs 新机器 check、每 skill 的 dos-and-donts。首次实战 2026-04-22:13 条原始 issue → 5 类 bug → 新 3 行 known-bugs(1.17/1.18/1.19)+ 1 个新机器 check(figure-no-caption)+ 8 条 dos-and-donts。human-in-the-loop —— agent 提,人审完 apply。

08 Shipped · 2026-06-14已发 · 2026-06-14

library-grower

skills/design-review/scripts/library-grower.mjs Model weakness对应弱点

Models can't self-organize yesterday's good output into tomorrow's reference. Without this, the canonical library stays fixed and becomes stale over 6 months. Five successful outputs of a page-type → auto-distilled into a new canonical, reviewed by a human, merged. 模型没有"把昨天的好产物整理成明天参考"的能力。没有它,canonical library 会固定,6 个月后就开始过期。同一 page-type 攒 5 次优秀产物 → 自动蒸馏成新 canonical,人审核通过后并入。

09 Built · no round yet机制已建 · 未跑

design-evolve

skills/design-evolve/SKILL.md Model weakness对应弱点

Models repeat the same taste mistakes and can't tell which of their own rules actually help. A Darwin / autoresearch ratchet: mutate one generator rule, regenerate, score with the frozen evaluator, keep it only if it strictly beats the baseline with no held-out canonical regressing. Selection, not authorship. 模型会重复同样的审美错误,也分不清自己哪条规则真有用。一个 Darwin / autoresearch 式爬坡:改一条生成器规则、重新生成、用冻结的评审器打分,只有严格超过基线且无 held-out canonical 变差才保留。由选择而非作者决定。

Where it stands当前进度

Nine components, by status. 九个组件,按当前状态。

The pipeline is built end-to-end, in the order hard dependencies allowed. The canonical library (02) just reached its full 59/59 matrix, so what's left is one first run (09 design-evolve, yet to attempt an evolution round). 管线已端到端建好,顺序由硬依赖决定。canonical 库(02)刚补满 59/59 整张覆盖表,只剩一次首跑(09 design-evolve 还没试过一轮进化)。

DONE · 7 JUST COMPLETED · 1 BUILT · NO ROUND YET · 1 Done — the pipeline is built 01 plannersprint-contract + --plan 03 generator self-diff§M + verify.py gate 04 mechanical-review51 checks · 94 known-bugs 05 multi-critic4 subagents + solo critic 06 /design-loop ran · critic 92first real end-to-end run 07 learning-loop 08 library-growerdesign-learner · distill 5+ to candidate Just completed 02 canonical library 58 / 58 page-types covered matrix complete — 10 page-types × anthropic / apple / ember / sage + 18 more run --coverage for the live count Built · no round yet 09 design-evolve Darwin / autoresearch ratchet, wired: evolve-ledger.mjsevolve-rules.mjsregression-gate.mjs rules.json empty · 0 rounds run ledger = the loop's first-run deposit when it runs, the evaluator stays frozen
The harness at a glance — eight components done, the canonical library (02) now complete at the full 59/59 matrix, and design-evolve (09) wired end-to-end but yet to run its first evolution round. harness 全貌 —— 八个组件已完成,canonical 库(02)已补满 59/59 整张覆盖表,design-evolve(09)已端到端接线但还没跑过第一轮进化。
Hard constraint硬约束

The harness must not flatten the nine voices. harness 越复杂,越怕把 9 种声音抹平。

The most dangerous failure mode is that as we build more shared layers, the 9 styles start producing outputs that all look the same. The rule below makes that mechanically impossible: universal rules never judge style; style rules live in per-style folders; critic's taste is anchored to each style's own canonical. 最危险的失败模式:共享层越多,9 个风格的产出越趋同。下面这条规矩让这件事在机制上不可能发生 —— universal 规则从不评判风格,风格规则住在各自的文件夹,critic 的品味锚定在每个 style 自己的 canonical。

Layer Where it lives住在哪 Flattens the voices?会抹平声音吗
Universal quality通用质量 skills/design-review/references/cross-skill-rules.md No不会Only judges does it work (contrast, placeholders, SVG balance). Doesn't touch what a style should look like.只管"能不能用"(对比度、占位符、SVG 平衡),不管"该是什么样"
Cross-skill bugs跨 skill bug 清单 skills/design-review/references/known-bugs.md No不会Already segmented into per-style sections. Orange-CTA bug lives in the anthropic section, sage-green contrast in the sage section.按分节组织。橙 CTA 在 anthropic 节,sage 绿对比度在 sage 节
Style canonicalsstyle canonical 例子 skills/<style>-design/references/canonical/ Strengthens them反过来强化Apple pricing and sage pricing look nothing alike. The libraries are never shared, never copied across styles.apple pricing 和 sage pricing 长得完全不一样。9 个 library 不互抄、不共享、不跨 style 引用
Style personality风格个性 skills/<style>-design/references/dos-and-donts.md Strengthens them反过来强化Palette, fonts, signature moves — all per-style.色板、字体、签名动作 —— 全是各自的
Critic's tastecritic 的品味 Subagent prompt reads this style's canonical + dos-and-dontssubagent prompt 里读 当前 style 的 canonical + dos-and-donts No不会Critic always asks is this a good <style> page? — not is this good in the abstract? The standard moves with the style.critic 永远问"这是不是一张好的 <style> 页",不是"是不是绝对意义上好"。标准跟着 style 走
Status · 2026-06-11今天 · 2026-06-11

What's real. What's next. 哪些是真的。下一步做什么。

Done 8 · 02 library just done · + new 09已完成 8 · 02 库刚完成 · 新增 09

What's actually done 实际已完成

Eight components done (01 / 02 / 03 / 04 / 05 / 06 / 07 / 08); 02 (canonical library) reached the full 59/59 matrix. (06) /design-loop shipped its first real run (critic 92); (09) design-evolve is built but has not run an evolution round yet. (04) mechanical critic — 38-check visual-audit.mjs (brand-presence / italic-overuse / cross-skill-smell / hollow-card / asymmetric-first-col-hero / svg-foreign-hex / figure-no-caption, via pngjs) + 94 known-bugs catalogued; (01) sprint-contract — planner phase 1 — shipped as sprint-contract.mjs + bin/design-review --plan, contract schema still growing; skills/design-planner/SKILL.md (brief→contract guidance) + LOW-CONFIDENCE fallback for canonical-less page-types shipped 2026-06-11; (05) multi-critic — 4 critic subagents in parallel (composition / copy / illustration / brand, weighted 25/25/20/30) + solo design-critic; (07) learning-loopdesign-learner reads verdicts and proposes known-bugs rows + new mechanical checks. 59/59 canonical page-types covered — the full matrix — 10 page-types × anthropic / apple / ember / sage, 5 for atelier, 4 for glass, 3 each for eclat, lectern and primer (a keynote has no pricing page, a board deck has no landing, an application has no hero; the matrix is ragged by design); matrix complete. A second independent evaluator ships as skill 11: gated-dual-clone-audit (4 tiers, paired with skill 10 generator) — same generator/evaluator split principle, different domain.

2026-04-27 additions: anthropic-design v2 — scenario recipes (M1-M10 motion / L1-L10 layout / C1-C11 components) + references/ux-writing.md (CTA / empty / error / placeholder copy + banned-word list) + 11 new recipe classes / 6 keyframes / 4 utility animation classes in assets/anthropic.css. bin/design-review --audit batch mode (file / directory / URL inputs, no exit-on-error, markdown + json reports). 12th skill: doc-review-loop — independent writer/reviewer harness for serious decision documents. Not a design-harness component; it's the iteration pattern of component 06 /design-loop applied to docs — a working proof-of-concept that the loop pattern survives reality.

2026-05-22 additions: anthropic-design v3 — four-piece md rendering pipeline under scripts/: md-mirror (1 .md → 1 anthropic-styled .html with inline CSS), md-rewrite-links (in-place *.md*.html href swap), md-pack (fold linked .md into a flat _md/ subdir + retarget hrefs + basename rescue for ../ typos in source markdown), cross-link-pack (fold cross-dir sibling .html into the same _md/). Goal: an anthropic-styled doc directory that survives cp -r anywhere with every link intact. Field-tested same day on a 4-HTML / 13-md / 124-link doc set.

2026-06-11 additions: diagram-craft v3 — a genealogy of seven kernel diagram types (§15: block / flowchart / timing-waveform / register-bitfield / ring-buffer / pipeline / scheduler-timeline) and constraints split into three layers: aesthetics immutable, quality machine-gated, structure free to customize. Known-bugs 1.28–1.31 codified into 5 new visual-audit.mjs gates; sprint-contract gains a §1b diagram-density rule; template library grown to anthropic 14 / apple 14 pieces; two diagram galleries shipped (anthropic 23 diagrams, apple 14); gold accent corrected cross-skill from #c49464 to #c9913f. Wave 2: visual-audit grows keyboard-a11y + LCP/CLS perf gates (26 checks); verify.py gains a warn tier with SEO meta checks; --audit reports per-kind stats; --distill wired (component 08); design-planner ships as the 13th skill (component 01). Later the same day, diagram-craft reaches the remaining two generators: ember-design and sage-design each gain a diagram-craft.md + 8 diagram templates + an 8-figure gallery, and the diagram-monochrome gate now applies to anthropic / ember / sage (apple stays exempt — grayscale is its identity).
已完成 8 个组件(01 / 02 / 03 / 04 / 05 / 06 / 07 / 08);02(canonical 库)已补满 59/59 整张覆盖表。(06) /design-loop 首跑通过(critic 92);(09) design-evolve 机制已建、但还没跑过一轮进化。(04) 机器 critic —— 51 项 visual-audit.mjs(brand-presence / italic-overuse / cross-skill-smell / hollow-card / asymmetric-first-col-hero / badge-not-referenced / series-viewbox-drift,用 pngjs)+ 94 条 known-bugs;(01) sprint-contract —— planner 期 1,已发(sprint-contract.mjs + bin/design-review --plan),contract 字段还在扩;skills/design-planner/SKILL.md(brief→contract 指南)+ 无 canonical 类型的 LOW-CONFIDENCE 回退已于 2026-06-11 上线;(05) multi-critic —— 4 位 critic subagent 并行(版式 / 文案 / 插画 / 品牌,权重 25/25/20/30)+ 单 design-critic(07) learning-loop —— design-learner 读 verdict 自动给出 known-bugs 行 + 新机器 check 建议。覆盖 59/59 canonical page-type —— 整张覆盖表 —— 10 个 page-type × anthropic / apple / ember / sage,atelier 6 个,glass 4 个,eclat、lectern、primer 各 3 个(发布会没有定价页,董事会 deck 没有落地页,应用没有 hero;这张表本就是不规则的);覆盖表铺满。第二个独立 evaluator 作为第 11 个 skill 落地:gated-dual-clone-audit(4 tier,配对第 10 号 generator)—— 相同的 generator/evaluator 分离原则,不同领域。

2026-04-27 增量:anthropic-design v2 —— scenario recipes(M1-M10 动效 / L1-L10 版式 / C1-C11 控件)+ references/ux-writing.md(CTA / empty / error / placeholder 文案 + 禁用词清单)+ 11 个新 recipe class / 6 keyframes / 4 utility animation class,全部入 assets/anthropic.cssbin/design-review --audit 批量模式(file / directory / URL 输入,不在错误时 exit,输出 markdown + json 报告)。第 12 个 skill:doc-review-loop —— 给认真决策书的独立 writer/reviewer harness。不是 design-harness 组件,是 组件 06 /design-loop 的迭代模式落到文档场景的实证 —— 证明 loop 模式可以从原理走到生产。

2026-05-22 增量:anthropic-design v3 —— scripts/ 下 4 件套 md 渲染管线:md-mirror(1 .md → 1 anthropic 风格 .html,内联 CSS)/ md-rewrite-links(原地 *.md*.html href 替换)/ md-pack(把链到的 .md 折叠到扁平 _md/ 子目录 + 重写 href + basename 救援源文档 ../ typo)/ cross-link-pack(跨目录 sibling .html 也折叠进同款 _md/)。目标:anthropic 风格的文档目录 cp -r 到任何地方所有跳转依然有效。同日实测一份 4-HTML / 13-md / 124-链 的文档集。

2026-06-11 增量:diagram-craft v3 —— 内核七图型谱系(§15:框图 / 流程图 / 时序波形 / 寄存器位域 / 环形缓冲 / 流水线 / 调度时间线)+ 约束三层化(审美不可变 / 质量机器检查 / 结构自由定制)。known-bugs 1.28–1.31 写成 visual-audit.mjs 5 个新检查;sprint-contract 新增 §1b 图密度条款;模板库扩到 anthropic 14 件 / apple 14 件;双 diagram gallery 上线(anthropic 23 图、apple 14 图);金主色 cross-skill 修正:#c49464#c9913f。Wave 2:visual-audit 新增 keyboard 可达性 + LCP/CLS 性能检查(26 项 check);verify.py 新增 warn 档并带 SEO meta 检查;--audit 输出按 kind 统计;--distill 接线完成(组件 08);design-planner 作为第 13 个 skill 上线(组件 01)。同日收尾:diagram-craft 补齐剩下两个 generator —— ember-designsage-design 各得 diagram-craft.md + 8 件图示模板 + 8 图 gallery;diagram-monochrome 检查归属定为 anthropic / ember / sage 生效,apple 凭灰阶身份豁免。

Done · canonical complete已完成 · canonical 铺满

59 / 59 canonical pages 59 / 59 张 canonical

Phase 2a complete — all 59 shipped, atelier (6) and primer (3) included. Each page: full .html + binding .md design-decisions file, all passing verify.py + visual-audit.mjs + screenshot.mjs 0-warning and a --multi-critic pass. They were built 1–2 per focused session — never rushed, to protect the library's reference quality. 期 2a 已完成 —— 全部 59 张交付,含 atelier 6 张与 primer 3 张。每张:完整 .html + 绑定的 .md 设计决策文档,全部过 verify.py + visual-audit.mjs + screenshot.mjs 0 warning 并过 --multi-critic。每个专注 session 做 1–2 张,从不赶工,护住 library 的参考水准。

Queued · needs prior work排队中 · 依赖前置工作

planner → /design-loop → library-grower planner → /design-loop → library-grower

Three components in dependency order, now all built (2026-06-14): (01) planner expands a vague brief into a sprint-contract — shipped (sprint-contract.mjs + bin/design-review --plan), contract schema still growing. (06) /design-loop orchestrates planner → generator → review → critic for up to 5 rounds — its first real end-to-end run shipped an anthropic security page at critic 92. (08) library-grower distills 5+ successful same-type pages into a candidate (library-grower.mjs). And a 9th closes the line: (09) design-evolve — its ratchet is wired but has not run an evolution round yet. The whole harness now installs globally and runs from any directory (2026-06-15). 三个组件按依赖顺序,现在都已建(2026-06-14):(01) planner 把模糊需求展开成 sprint-contract —— 已发(sprint-contract.mjs + bin/design-review --plan),contract 字段还在扩。(06) /design-loop 编排 planner → generator → review → critic 最多 5 轮 —— 首次端到端实战产出 anthropic security 页 critic 92。(08) library-grower 把 5+ 张同类成功页蒸馏成候选(library-grower.mjs)。第 9 个收尾:(09) design-evolve —— 棘轮已接线,但还没跑过一轮进化。整套 harness 现在全局安装、任意目录可跑(2026-06-15)。

The three voice variants (apple / ember / sage) are updated in the same PR as this document. 三个 voice 变体(apple / ember / sage)随主文档同一个 PR 更新。

Rules for changing this document修改本文档的规矩

How this doc stays honest. 这份文档怎么保持诚实。

  • Adding a component — must state the specific model weakness it defends. No weakness, no seat.
  • 新增组件 —— 必须写清它挡的是模型的哪一个具体弱点。挡不住弱点,没位置
  • Removing a component — must present evidence the weakness no longer applies. Vibes aren't evidence.
  • 删除组件 —— 必须给出证据,证明那条弱点已经不成立。感觉不算证据
  • After every real page — update the Status today section. If the harness caught a bug class we hadn't catalogued, append to known-bugs.md and add a check.
  • 每跑完一张真实页 —— 同步"今天"这一节。如果抓到一个新 bug 类,同时追加到 known-bugs.md + 加一个 check
  • If the harness drifts — flattens the nine voices, produces noise that trains evaluators to ignore warnings, gives the generator a way to game the test — write a new Historical lessons entry.
  • 如果 harness 跑偏 —— 抹平 9 种声音、产生让评审员习惯跳过的噪音、给 generator 作弊空间 —— 追加一条"历史教训"
Historical lessons历史教训

Things we were wrong about, written down so we don't repeat them. 我们曾经搞错的事,写下来避免再犯。

2026-04-20

Simplicity first is a heuristic, not a hard rule. "simplicity first" 是经验法则,不是硬规则。

While designing this roadmap, I (Claude) once argued for cutting 8 components to 5, citing the article's simplicity first principle. The user correctly pushed back: Why not 8 again? The article's actual hard rule isn't fewer is better — it's every component must correspond to a specific model weakness. The retreat was unwarranted and I restored all 8. Lesson: when tempted to cut a component, the only valid argument is evidence that the weakness it defends doesn't exist. Heuristic shortcuts are how real weaknesses go undefended. 写这份 roadmap 时,我(Claude)曾经引用文章里 "simplicity first" 把 8 组件砍到 5。用户正确地反问"为什么又不是 8 了"。文章真正的硬规矩不是"越少越好",是"每个组件对应一个具体弱点"。那次退让没有依据,我恢复了 8 个。教训:想裁一个组件时,唯一有效的理由是证据表明它挡的弱点不存在。走捷径裁组件,就是把本该挡住的弱点放开了。

Contribute参与

Think a component is wrong? Missing? Misranked? 觉得某个组件不对?漏了?顺序错了?

The document rules above apply to outside contributors too. Argue with evidence. We'd rather restructure the harness than keep a component that isn't really doing anything. 上面的文档规矩对外部贡献者同样适用。用证据讲话。我们宁愿重构 harness,也不愿让一个其实没挡任何东西的组件继续占位。