设计-代码往返并不存在:一位 30 年老兵的实测与漂移警告

Jonathan Gordon · ReWeaver AI 创始人 · 2026-09-12
听中文精华AI 合成朗读00:00
因为随时间推移的漂移就是新的技术债。
— Jonathan Gordon

关联

这一集是 ReWeaver AI 创始人 Jonathan Gordon 的一场演讲,主题听起来有点「扫兴」:那个大家以为已经被 AI 解决的「设计-代码往返」,其实并不存在。所谓设计-代码往返(design-code round trip),指的是设计与工程之间双向的完整闭环——设计能变成代码、代码能回到设计,全程没有任何保真度损失,并且带着持久的溯源信息,确切知道每个元素来自哪里。

先说主角是谁。Jonathan 过去 30 多年一直在构建和设计编码工具、开发者工具和 IDE,而且作为设计师,他花了大量时间和设计、工程团队泡在一起,研究怎么把「设计交接给代码」这件事做好。

他的结论很坦白:这从来不是一门完美的科学。他和工程师谈判、请他们喝酒、交朋友,把东西交付到了客户手里——但闭环从未闭合,因为工程有工程的需求(技术约束),设计有设计的愿景,目标从一开始就分叉了

AI 让他以为闭环有救了,结果被 innerHTML 一盆冷水浇醒

然后 AI 和 LLM 出现了。在他看来,这意味着某种根本性的变化:现在有一个智能,既理解设计意图,同一个智能还能写代码。

他心想,也许终于能以推理的速度闭合这个闭环了。于是他 all in——从 2025 年开始全力 vibe coding(凭感觉和 AI 对话写代码、不细看代码本身),Cursor 甚至给他发邮件说他的使用量位居前 0.1%,他自嘲「我需要多花点时间在户外」。

转折发生在他彻底沉浸在 vibe 里的一天。一大墙文字滚过,他全不在意,直到瞥见一条 innerHTML 语句——他记得很久以前 innerHTML 就是个安全漏洞,可以向其中注入内容。

他拦住 LLM 问「你刚才做了什么?」,对方还非常自豪地解释了一遍。

他只好让它撤销重来。那一刻他意识到:也许不能盲目往前冲,也许我现在需要看一看代码了。而这一生他看过很多代码——他进去看了,然后发现了问题。

业界宣称「往返已解决」,他试了五种工具配置:并没有

当业界开始宣称已经解决了往返问题——包括那个从 Claude Code 直接生成 Figma 画板的著名演示(他强调这不是对 Anthropic 或 Figma 的抨击,「那简直是魔法」)——他像审视 vibe coding 一样深入挖了下去。

他现场演示了自己构建的 harness(测试框架):左边是 AI 生成的代码,右边是 Figma 或 Sketch 里的设计(用什么源头并不重要)。从任一侧出发、带上一个 prompt,调用 LLM 就能往另一侧更新——比如「拿这个表单,从它构建一个设计系统」,代码和运行时里的设计系统都真的建出来了,还带着跳回 Figma 的链接。他加了 company 字段和橙色按钮,代码更新、设计也更新,「这太棒了」。

但真正的杀手锏是那个「Show Drift」按钮——这是 ReWeaver AI 的代码首次公开亮相。点下去,会同时从代码和设计两侧生成一份问题清单,跨多个维度:设计质量、代码质量、性能、design tokens 等等。

他现场演示了一个无障碍问题:某元素没有 ARIA live region(一种让屏幕阅读器播报内容的无障碍机制),盲人用户就收不到关于它的播报。ReWeaver 发现它、说能修、然后修掉了。

谈到无障碍他动了真感情:他在微软做过无障碍工作,当 LLM 刚问世时他非常沮丧,因为生成的代码开箱即无障碍不达标。「我当时想,什么,模型没有在无障碍方面接受过训练?」——随即他想起了 20 年前工程师需要接受无障碍培训的岁月,「所以现在我们又来了一遍,只不过这次是在无障碍方面训练 LLM,而不是工程师」

他认真试过五种不同的工具配置,做双向的代码↔设计往返,结论是「结果不太顺利」:从未真正实现完整往返,大量有损问题——绑定丢失、设计的修改保留了但代码没有。他不说我们永远到不了那一步,但即使到了,他也怀疑能否完全到达。所以他说,不该说「也许」需要像 ReWeaver 这样的工具——我们确实需要,来帮我们看见漂移

核心洞见:漂移就是新的技术债,解法是确定性护栏

这整段经历凸显了一个他从构建开发者工具的过去带来的判断:开发者工具在本质上是确定性的——你写代码、编译、得到 AST,每次运行结果相同。但当你把 AI 放进流程的中间、前面或末端,你不再必然得到相同的结果。

于是他给出了本集最扎心的一句判断:当下的漂移在写代码时就会浮现,但随时间推移累积的漂移,是你接下来六个月要承受的痛苦,「因为随时间推移的漂移就是新的技术债」——而且它会壮丽地堆满你的代码库。应对方法:你需要看代码、找到漂移、修复漂移,而做法是在 AI 周围设置确定性的护栏——AI 仍然在那里,但被护栏围着。

他还做了一个对照实验:在一个 UI 足够复杂的代码库上跑 12 次迭代。纯 AI 主导、全程 LLM,起步只有 30% 的保真度(真正的像素级完美),且会逐渐退化;叠加确定性护栏(发现问题、修复问题)后大幅提升——但到不了 100%,因为「那 10% 是人类判断,人类决策」。

人仍然在这个等式里。

他进一步指出三个盲区:其一是模型本身——非确定性、概率性,当下就有漂移。而今天的现状是「我们被锁定在 AI 上」:设计到代码靠 AI,代码到设计靠 AI,循环、聊天机器人、跨工具链的工作流,还始终有 token 成本要留意。在这个世界里,「智能体在掌控,人类在环路中」

他要提出的替代方案:人类掌控,而非人类在环路中

他想提出点不一样的。理想中的往返应该是什么样:完全双向、两个方向都能编辑、无损、所有界面都被保留(从代码到设计再回来,不会有奇怪的东西坏掉)、溯源信息被携带——你在 Figma 里看到这个按钮想改它,就得知道是哪一行代码写出了它。核心是确定性的调和:护栏知道有修复方案就修,不知道就明确告诉你「这里有问题,但需要你来修」。

具体到产品:ReWeaver 的核心是九个维度的确定性护栏,作为顶层的软件质量与生产就绪度维度——其中设计一致性是核心(代码与设计系统不一致就得修),无障碍性单列一个维度(他承认「也许这有点自私,但我认为这是核心」),AI 代码生成治理也是关键一环。值得注意的是 ReWeaver 自己不写代码:你说「应用修复」,它替你写,你能看到代码被写出来,也随时可以说「算了,撤销」或干脆忽略。而且它用全本地 LLM,零额外 token 成本,想接 Claude 也随你。

所有这些背后是一条核心原则:人类始终掌控——掌控成本、掌控代码、掌控设计,「因为这就是我们几十年来一直在做的事。我们一直在掌控。

我们不需要失去控制」。他不否认「人类在环路中」也不错,但「人类掌控」是更有理想主义追求的目标。因为归根结底:你需要的,其实就是你得到的——他管这叫 Winniwig(What You Need Is What You Get)。

最后是行动号召:现在就可以在 reweaver.ai/playground 用自己的 AI 生成代码跑扫描,页面还有个小挑战——如果你能让 AI 生成出足够低 PDR(生产漂移比)得分的代码,就能拿到 beta 前排席位。beta 计划七月中旬放出,他在找早期用户帮他把产品做得更好。

本集带走

  • 别信「往返已解决」的宣传:实测五种工具配置,双向设计↔代码往返仍会大量有损——绑定丢失、一侧改动另一侧没跟上。真要用,先在自己的真实项目里验证。
  • 随时间累积的漂移是新的技术债:单次生成的漂移当场能看见,但反复迭代堆下来的漂移会在几个月后压垮代码库,必须主动检测和管理。
  • 用确定性护栏围住 AI:开发者工具天生是确定性的,AI 是概率性的;在 AI 周围加确定性的检查与调和(发现问题就修、修不了就明确报告),能把保真度从约 30% 大幅拉高。
  • 到不了 100% 是故意的:最后约 10% 是人类判断和决策,工具应该把问题亮出来让能力保留在人手里,而不是替你拍板。
  • 无障碍问题又回来了:LLM 生成的代码开箱即无障碍不达标,就像 20 年前工程师需要培训一样,现在要靠工具和护栏去训练/约束模型。
  • 选工具看三件事:是否携带溯源信息(设计里的按钮能否定位到代码)、是否有额外 token 成本(本地方案可做到零)、以及人类是否始终掌控每一步修改。
全部金句 4 条

因为随时间推移的漂移就是新的技术债。
Because drift over time is the new tech debt.
—— Jonathan Gordon · [14:28]

从某种意义上说,现在我们有一个理解设计意图的智能,而同一个智能也能写代码。
In a sense, now we have one intelligence that understands design intent and the same intelligence can write code.
—— Jonathan Gordon · [03:26]

所以在这个世界里,智能体在掌控,人类在环路中。
So in this world, the agents are in control and the humans in the loop.
—— Jonathan Gordon · [14:01]

你到不了 100,因为那 10% 是人类判断,人类决策。
You can’t get to 100 because that 10% is human judgment, human decision making.
—— Jonathan Gordon · [13:27]

接着看

顺着「AI 编程」挖下去

换个口味