为 AI 生成界面而设计

AI 生成的界面,
原生地运行在你的应用里。

native-shell 嵌入 iOS 和 Android 应用,在运行时加载用 TSX 编写的模块——由模型或你的团队编写——经过签名校验,运行在宿主配置的沙箱里,并用真正的 UIKit 与 Android 视图渲染。无需发版。

  • iOS · Android;桌面端(GPUI)开发中
  • 开源 · MIT 或 Apache-2.0
  • 由长桥(Longbridge)构建
Swifttry await app.loadPackage(at: url, trust: trust)
助手
英伟达和苹果这周表现怎么样?

这是两者的对比,可以切换时间范围:

nsh 模块
原生应用:宿主自己的 UIKit / Android 代码nsh 模块:生成的 TSX,在沙箱中运行(此处为 Web 预览)
AI 友好

为模型编写、为宿主把关而设计。

生成的界面要好写、可验证、跑得安全,还要是真正的原生界面。nsh 的每一层都围绕这四点设计。

模型擅长的格式

一个模块就是一个 TSX 文件:信号、少量宿主元素和 Tailwind 类。没有构建配置,没有 node_modules。

  • TSX
  • signal()
  • class

精确的生成式契约

每个元素、属性和模块都有从 Rust 源码生成的 TypeScript 声明,文档也以 llms.txt 提供给模型。

  • .nsh/types
  • llms.txt

无需设备即可验证

nsh trace 无界面地运行模块并报告错误;编译器还能在进程内或浏览器里运行。生成、检查、重试。

  • nsh trace
  • compile_module

不可信,也能安全运行

每个视图一个 QuickJS 虚拟机,内存、调用时长和节点数都有上限,只能使用宿主授予的能力。

  • NshLimits
  • grantCapabilities

签名下发,可吊销

模块以 Ed25519 签名的 .nshpkg 到达;发布密钥由离线根密钥认证,设备端检查吊销列表。

  • nsh publish
  • NshTrust

真正的原生视图

模块由 UIKit 与 Android 视图组成:系统的文本选区、拷贝与翻译菜单、输入法和无障碍都原样可用。

  • UIView
  • android.view.View
三种用法

同一个模块,三种用法。

首要用途是 AI 生成的界面;同一套机制也让原生应用可以扩展,或者直接组成一个独立应用。

AI 生成的界面设计初衷

用界面而不是文字回答

模型为每次请求写一个模块,服务器检查并签名,应用在沙箱里原生地显示它。

import { mount, signal } from "nsh";

function Answer() {
  const range = signal("1W");
  return <view class="gap-3 p-4">…</view>;
}
mount(Answer);
  • 每个回答一个 TSX 文件
  • 下发前完成类型检查与 trace
  • 只拥有宿主授予的能力
为什么做 nsh
原生应用插件

发布之后再扩展应用

在任意页面嵌入 NshAppView 或 NshView,承载团队、合作方或用户之后编写的功能。

let app = NshAppView()
try app.grantCapabilities(grants)
let info = try await app
  .loadPackage(at: file, trust: trust)
// verified, sandboxed, running
  • 一个页面可以放多个模块
  • 宿主注册自己的原生组件
  • 更新无需发版与审核
在 iOS 应用中嵌入
独立应用

也能组成完整的应用

同样的模块可以用 nsh package 打成可安装的 iOS 或 Android 应用,适合试用和小工具。

$ nsh init my-app
$ nsh run my-app
$ nsh package my-app --target ios
$ nsh package my-app --target android
  • 使用预编译的运行时
  • 不需要 Xcode 工程或 Gradle
  • 保存即热更新开发
打包
工作原理

在服务器上生成,在设备上被信任。

服务器负责生成、检查和签名;设备负责校验、隔离和渲染。信任边界清清楚楚。

在服务器上生成,在设备上被信任。在服务器上生成,在设备上被信任。
平台

先手机,再桌面。

  • iOSUIKit · iOS 15+已支持
  • AndroidAndroid View · API 28+已支持
  • 桌面GPUI 后端开发中
  • WebWebAssembly → DOM仅用于演示
原则

模型负责编写界面。
宿主决定它能做什么。

模块只能看到宿主授予的能力,只占用宿主允许的资源,只在签名校验通过后运行。剩下的——文本、输入、无障碍、动画——交给系统的原生视图。

在线试用