RT meng shao: Vercel Labs 开源发布了原生桌面应用开发工具包「Native SDK」 https://github.com/vercel-labs/native 保留 Web 那套声明式 UI 的作者体验,却把...
多源视角
We’re releasing new Qwen3.6 quants that run 2.5× faster on your GPU.<br><br>Qwen3.6-27B NVFP4 runs on 24GB VRAM.<br>35B-A3B can hit 17,561 tok/s (B200).<br><br>We also improved acc…
查看这条来源真佩服 Vercel 的挖坑速度,又开了个大坑,后面就看能不能填上了。<br><br>Native SDK 是一套用 Zig 语言构建原生桌面应用的开发框架,它想解决的问题是用声明式标记语言写 Native UI。<br><br>要我说,在 AI 时代之前,这类框架真的挺有价值的,写一遍到处能运行。<br><br>现在 AI 时代,不如同一套设计,让 AI …
查看这条来源RT meng shao<br>Vercel Labs 开源发布了原生桌面应用开发工具包「Native SDK」<br>https://github.com/vercel-labs/native<br><br>保留 Web 那套声明式 UI 的作者体验,却把浏览器/WebView 这层重运行时换成自研引擎直接绘制到操作系统窗口。没有浏览器,没有 WebVie…
查看这条来源AI 摘要
Vercel Labs 开源 Native SDK,保留 Web 声明式 UI 体验,用自研引擎替代浏览器/WebView 直接绘制到 OS 窗口。基于 Zig 实现 Elm 架构,dev 模式热重载约2秒,release 模式编译时解析,二进制仅几 MB。内置 automation server 和 CLI agent skills,支持 AI 智能体读取 accessibility 快照、驱动 widget。开发者可用声明式范式构建高性能原生桌面应用,并集成 AI 自动化。 核心观点: 1. Native SDK 采用 Zig 实现 Elm 架构(Model/Msg/update/View),dev 模式热重载约2秒,release 模式 markup 编译进二进制,体积仅几 MB。 2. 自研引擎直接绘制到 OS 窗口,无浏览器/WebView,通过结构性 identity 和 keyed 列表确保跨重建状态稳定。 3. 内置 automation server,任何 agent 可读取 accessibility 快照、驱动 widget、断言状态,CLI 自带 agent skills。
推荐理由高信息密度,值得细读
原文
保留 Web 那套声明式 UI 的作者体验,却把浏览器/WebView 这层重运行时换成自研引擎直接绘制到操作系统窗口。没有浏览器,没有 WebView,二进制里也没有解释器。
桌面应用的经典两难: · 原生方案(Cocoa/Win32/GTK/Qt):性能与系统集成好,但作者体验笨重、跨平台割裂。 · Web 方案(Electron/Tauri/WebView):声明式 UI 范式成熟、迭代快、生态大,但代价是一个数十到上百 MB 的浏览器运行时。
Native SDK 做的:表达力不该和性能对立。把 Web 那套"声明式 markup + 数据绑定"的作者模型留下,把底下的运行时换成原生绘制引擎,于是同时拿到"写得像写网页"和"跑得像原生 app"。
技术架构:四件套 + 一个闭环 一个 app 就是一个 loop,由四部分组成(典型的 Elm/The Architecture 架构,但用 Zig 实现): · Model — 一个普通 Zig struct,承载全部状态。 · Msg — 一个 tagged union,枚举所有可能发生的事件。 · update(model, msg) — 唯一可以修改状态的地方。 · View — .native 声明式 markup 文件(或 Zig view 函数),从 model 派生 UI。
渲染:自研引擎,编译期 markup · dev 模式:.native 文件运行时解析,文件改动约 2 秒热重载,保留 model 状态与 widget identity。 · release 模式:markup 在 comptime 编译进二进制,发布包里没有 parser/解释器。脚手架 counter app 编出来只有几 MB。
两种引擎产出完全相同的 widget tree(结构性 id、类型化 handler 表一致),所以测试、自动化、golden 在 dev/release 两端都成立。
原生绘制管 OS 真窗口;同时 OS 自己管:滚动物理、菜单、对话框、托盘、文本输入、IME、HiDPI。
Widget identity 与 rebuild 安全性 每次 update 后运行时都会从 model 重建整棵 view,重建被设计成廉价且安全: · 结构性 identity:widget 跨重建/重排/热重载保留 id,所以滚动位置、文本光标、焦点这类引擎拥有的状态不会丢。 · keyed 列表:list item 用 key(跨容器迁移用 global-key)保持 identity;无 key 的同类兄弟按位置取 id,前面插入/删除会让后续兄弟重新消歧——引擎状态可能"跳",keyed 项和 keyed 祖先则稳。 · 源头优先:引擎保留态会持续到 model 显式给新值;这也是 controlled pattern 要把运行时值回写 model 的原因。 · 错误降级不崩溃:update 抛错被捕获并记录在 bounded error ring(自动化快照里能看到 dispatch_errors=),app 继续跑。
最值得注意的:AI in the workflow · 每个 app 内嵌 automation server:任何 agent 可读 accessibility 快照、驱动 widget、断言实时状态、对运行中窗口拍确定性截图。 · accessibility 检查在 native check 里被机器校验。 · CLI 自带 agent skills(native skills list),教 agent 怎么用整套工具。
金句
表达力不该和性能对立。
没有浏览器,没有 WebView,二进制里也没有解释器。
讨论
暂无评论。