跳到主要内容

2 篇博文 含有标签「frontend」

查看所有标签

你的设计系统曾是文档,现在它需要成为一个编译器

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的设计系统在过去十年中得以幸存,是因为人类吸收它的速度很慢。新入职的工程师通过 Figma 文件、PR 里的细节纠错,以及那个总能揪出错误灰色阴影的设计师来学习组件变体。这种吸收流水线的吞吐量大约是每位工程师每周几个组件——速度慢到足以让设计团队手动把控边缘情况。

编程智能体刚刚打破了这条流水线。一个智能体集群可以在午饭前生成 50 个稍有偏差的按钮:每一个看起来都挺合理,但每一个使用的十六进制值可能差了两个色阶,内边距可能是 14px 而非你规范中的 16px 阶梯,圆角则是随手捏造的。没有哪个设计师能跟上这种评审速度。而你首先想到的指令——在系统提示词中加入“遵循样式指南”——会像所有其他软性指令一样逐渐失效:随着上下文窗口被填满,它的统计权重会下降,模型会退回到它从数百万个其他代码库中学到的通用 CSS 模式。

解决方案不是写更好的提示词。而是一次类别转变:你的设计系统必须停止作为供人类解读的“文档”,转而成为由机器执行的“契约”。文档只是请求,而编译器则是拒绝。

当流式 Token 遇到屏幕阅读器:生成式 UI 的无障碍债

· 阅读需 12 分钟
Tian Pan
Software Engineer

过去两年中最受赞誉的交互模式——文本逐字显现,仿佛机器正在放声思考——对于屏幕阅读器用户来说,这更像是噪音而非语言。你的模型输出的每一个 Token 都是一次 DOM 变更。如果在这个流中插入一个简单的 aria-live 区域,屏幕阅读器会尝试播报每一次到来的变更,从而产生断断续续、相互重叠的洪流,每秒钟会在句中重置几十次。使你的产品显得充满灵性的功能,恰恰是让那些依赖辅助技术的人无法使用它的元凶。

这就是无障碍债,而生成式 UI 积累这种债务的速度比以往任何界面模式都要快。其原因是结构性的:传统的 Web 内容是静态且可预测的,因此你可以推理一次后即发布。生成式界面在每次交互时都会发生变化——一个提示词返回列表,下一个返回表格,再下一个流式输出 600 字的文章,随后是一个工具调用组件。这里没有可供审计的固定 DOM,没有可验证的稳定 Tab 键顺序,也没有代表“页面”的单一快照。无障碍契约必须在无限的生成输出空间中保持有效,而几乎没有人为此进行测试。