跳到主要内容
Native Shell (nsh)

Native Shell (nsh) - 用 Rust 一次编写、六大平台原生渲染的跨端 UI 框架

Rust跨端开发UI框架原生应用AI编程

Native Shell(nsh)是长桥开源的 Rust 优先原生 UI 框架,一套代码即可构建 iOS、Android、macOS、Windows、Linux 与 Web 应用,各平台使用自己的原生视图、文本输入与交互习惯,并内置 AI Agent 友好的命令行工具链。

★ 9 最近更新: 2026-11-05 nsh.dev
访问网站

详细介绍

工具介绍与核心亮点

Native Shell(命令行工具名 nsh)是长桥(Longbridge)团队开源的 Rust 优先原生 UI 框架。它的核心主张是「一次编写,处处原生」:同一套组件、状态与业务逻辑代码,编译后分别落到各平台自己的原生 UI 基础设施上,而不是套一层自绘引擎或 WebView。

  • 各平台用各自的原生组件:iOS 走 UIKit + CoreText,Android 用 Android View + StaticLayout,macOS 用 AppKit,Windows 用 Win32 + Direct2D / DirectWrite,Linux 用 GTK 4 + Pango,Web 端直接输出 HTML + CSS。文本输入、选区、输入法与无障碍能力全部来自系统,因此观感与操作手感和原生应用一致。
  • 按设备习惯切换交互:框架内建了 Menu、ContextMenu、NavStack 等同时覆盖桌面与手机的交互组件。同一个 Menu,在桌面上从触发点弹出,在手机上从底部以 sheet 形式升起;ContextMenu 桌面是右键,手机是长按。应用侧只写一次。
  • 弹性布局:基于 Taffy 实现 Flexbox 与 Grid,支持 Tailwind 式断点(md:、lg:),也可以在 Rust 里读取 window() 尺寸做条件渲染。例如聊天应用在宽窗口下并排显示侧边栏、会话列表与消息,在手机上则一次只显示一屏。
  • Retained View,稳定 120 FPS:每个元素都是平台长期持有的视图。状态变化只会重新执行读取了该 signal 的表达式,并且每帧只批量提交真正被改动的视图(MountBatch),其余视图保持原样,动画交给原生执行,无需每帧跑 JS。聊天、表单、列表这类常规界面在静止时接近空闲,滚动与动画在 ProMotion 屏幕上可保持 120 FPS。
  • 样式与行为分离:nsh/base 提供无样式的基础组件——导航、对话框、菜单、浮层、标签页、复选框、Sheet——由它们负责状态、焦点、键盘与无障碍;视觉部分由你完全自定义,可用 Tailwind 类名或类型化样式。
  • 原生组件可真接嵌入:地图、WebView、视频播放器以及宿主注册的任意原生视图,都只是同一视图层级中的子视图,可以和其余界面一起参与布局、裁剪、滚动并处理触摸(nativeComponent)。

一条工具链,同时服务人和 AI

一个 nsh 可执行文件覆盖创建、构建、类型检查、热重载运行、测试、打包与签名全流程,自带 TSX 打包器与 TypeScript 检查器:

$ nsh init my-app --template rust
$ nsh run my-app --target macos
$ nsh test
$ nsh package my-app --target windows
# --template ts 可改用 TSX
# ios · android · macos · windows · linux · gpui · web

对 AI Agent 特别友好:所有 API 都由 Rust 源码生成类型声明,文档以 llms.txt 形式提供,Agent 可以用同一套命令完成「生成 → 运行 → 测试 → 修复 → 打包」的完整闭环。

测试在每个目标上都会跑

nsh test 先以 headless 方式跑应用测试,再把同样的测试放到 macOS、Windows、Linux、GPUI 窗口、iOS 模拟器、Android 真机或浏览器中执行,并使用平台自己的输入方式,因此跨端行为差异可以在 CI 中被发现,而不是等用户反馈。

发布之后还能继续扩展

在 iOS 用 NshAppView、Android 用 NshView、桌面与 GPUI 应用用 AppView、网页用 createPlayer,即可在任意界面里嵌入一个 NSH 视图,并在运行时加载经过签名的 TSX 模块:

let app = NshAppView()
try app.grantCapabilities(grants)
let info = try await app
  .loadPackage(at: file, trust: trust)
// verified, sandboxed, running

这意味着可以在一个屏幕里同时挂载多个模块、复用宿主自己的原生组件,并按自己的节奏推送更新。更进一步,可以让模型按请求生成一个 TSX 模块,服务端校验并签名后,由应用在沙箱中以原生方式渲染——这也是 Native Shell 主打的「用界面回答问题」的 AI 交互形态。

适合谁用

  • 想用 Rust 写跨端应用,但不愿接受自绘引擎带来的观感与可访问性损失的团队。
  • 需要一套代码同时覆盖移动端、桌面端与 Web 的中小型产品。
  • 希望把 AI Agent 接入日常开发流程,让 Agent 直接调用命令行完成构建、测试与打包的开发者。

如何开始使用

  1. 打开 https://nsh.dev/ 了解框架定位与各平台后端支持情况。
  2. 阅读 https://nsh.dev/docs/getting-started 完成环境准备。
  3. 用 nsh init my-app --template rust(或 --template ts)初始化项目,nsh run 起本地热重载预览,nsh test 跑跨端测试,nsh package 产出各平台安装包或静态站点。

需要注意,各平台有最低系统版本要求:iOS 15+、Android API 28+、macOS 14+、Windows 10 1809+、Linux GTK 4.14+。

Open Lovable – 开源AI驱动的网站转React转换器

Open Lovable是Mendable AI的一个开源项目,它允许开发者克隆任何网站,并利用AI将其转换为React应用,由Firecrawl、Groq/Moonshot AI和E2B沙箱提供支持。免费、自托管且注重隐私。

open lovableopen-lovablewebsite to React

Kiro:下一代 AI IDE,专为规范驱动开发而生

Kiro 是 AWS 推出的 AI IDE,通过规范驱动开发、Agent 自动化、项目引导机制,帮助开发者从原型快速走向生产级应用。

AI IDEaiIDE

OpenRouter - 大语言模型的统一接口

OpenRouter 是一个统一接口,允许用户访问来自不同供应商的多种大型语言模型(LLMs),包括专有模型和开源模型。它提供更具竞争力的价格、更高的可用性,并且无需订阅。

ai

Jules - Google 的 AI 编程助手,自动处理重复性编码任务

Jules 是 Google 推出的 AI 编程助手,基于 Gemini 2.5 Pro 模型,支持异步执行任务,自动处理代码错误修复、依赖项更新、单元测试生成与运行等任务,与 GitHub 无缝集成,帮助开发者提升编程效率。

aiagentgoogle

OpenAI 平台

Playground 是 OpenAI 提供的一个在线交互式工具,用于测试和探索其语言模型(如 GPT-3.5、GPT-4、GPT-4o)的能力。它特别适合开发者、内容创作者、产品经理以及任何希望在不写代码的情况下与 AI 模型交互的人。

aideveloper

Databricks:统一大数据与AI解决方案平台

Databricks提供统一的数据分析平台,助力数据工程师和科学家高效处理大数据、构建AI模型。整合数据湖、机器学习生命周期管理,提升团队协作效率。立即体验端到端AI解决方案。

数据分析人工智能