LLM时代的生成式UI运行时
Co-authored by Claude Opus 4.7

LLM 时代有个很诱人的玩法:让模型直接说出 UI 应该长什么样,端上拿到一份描述就把界面拼出来。比起预先把每个页面写死,这种「server 推一份意图,client 渲一份界面」的形态对 AI 类业务太顺手了 —— 模型每讲一句话,界面跟着变一次,不用再发版。
Flutter 官方有一份 genui 在做这件事,但它的运行时跟它假设的服务端协议捏在一起卖。一旦你的服务端不是它那个形状 —— 不走 JSON-RPC、消息体判别 key 不一样、事件回传走另一条通道 —— 那份运行时就用不上了。
所以我把它的”形状”抽出来,写成了一个纯端侧的 SDR(Server-Driven Rendering)运行时:只对四类消息负责,剩下的怎么传、怎么发,全甩给宿主。这篇按「核心思路 → 调用路径(三个场景)→ 数据规约 → 取舍」走一遍。



