Vercel 一直在尝试让 Agent 生成符合自家设计风格的网页,做法是把字体、间距、颜色等确定内容写进 stylesheet,能用程序判断对错的问题写成 deterministic checks,只把需要判断的部分留在 design.md 交给模型。
Vercel 发了一篇挺有意思的文章。
他们一直在尝试让 Agent 帮忙做网页。
一开始遇到的问题其实很典型:
同样一句“按照 Vercel 的设计风格做”,不同模型做出来的东西完全不一样。
于是最自然的想法来了:
那就把 Vercel 的设计规范告诉 AI。
字体怎么用、页面怎么排、信息怎么组织、什么叫好的设计……全部写下来,做成一个 design. md,让 Agent 每次干活之前先读一遍。
但很快他们又发现,事情没这么简单。
因为很多我们觉得已经说得很清楚的话,对模型来说其实还是模糊的。
比如:
“keep the layout clean”。
人看到这句话,大概知道是什么意思。
但模型会问你:
多 clean 算 clean?
留多少白?
标题多大?
表格多宽?
哪些信息应该突出?
于是不同模型开始各自理解、各自发挥。
Vercel 后来做了一件我觉得很关键的事:
他们不再试图把所有问题都塞进 Prompt。
需要判断的东西,留在 design. md 里。
字体、间距、颜色、布局这些已经确定的东西,直接写进 stylesheet,根本不给模型发挥。
能用程序判断对错的问题,就写 deterministic checks。
真正没办法量化的审美和信息层级,最后才交给人 Review。
然后他们准备了一组固定页面,一遍遍让 Agent 生成。
生成,Review,发现问题,修改规则,再生成。
前前后后跑了 200 多次实验。
最后,在他们的一组测试里,加入 design.md 之后,已知错误从 91 个降到了 39 个,少了 57%。
但我觉得这个数字反而不是这篇文章最重要的地方。
真正有意思的是:
Vercel 没有在想办法让模型变得更聪明,而是在想办法让模型越来越不需要聪明。
确定的事情,就不要让它判断。
可以检查的事情,就不要相信它。
只有真正需要判断的地方,才把自由度留给模型。
而人每一次 Review,也不应该只是把这一次结果改对。
如果一个错误会重复出现,就想办法把这次纠错变成 Rule、Style、Check 或 Eval,让下一次 Agent 从一开始就更难犯这个错误。
这可能也是 Agent Engineering 和单纯写 Prompt 最大的区别。
Prompt 想的是:
我该怎么告诉 AI,把这件事做好?
Agent Engineering 想的却是:
我该怎么设计一个环境,让 AI 即使没那么聪明,也很难把这件事做错?
模型能力当然还会继续涨。
但当大家最终都能调用差不多聪明的模型时,真正拉开差距的,可能是谁先把自己过去散落在人脑里的经验、规则、工具和判断,变成了一套 Agent 可以继承的系统。
来源:@frxiaobei · x.com