当前位置: 首页 > news >正文

TUI 的繁荣与选型

TUI 的繁荣与选型

一、TUI 为什么突然火了?

TUI 近两年的火,不是简单的"复古",而是一场由开发者"用脚投票"引发的理性回归。现代图形界面(尤其是 Electron 类应用)在性能、交互一致性、认知负担上的问题集中爆发,让开发者开始重新审视终端那块黑窗口的价值。

维度传统 GUI(Electron 应用)现代 TUI为什么 TUI 赢了?
资源占用 内存几百 MB,启动缓慢 通常 <50MB,毫秒级启动 开发者苦"卡顿"久矣,对轻盈的渴望压倒华丽特效
交互效率 鼠标主导,操作路径长 键盘驱动,双手不离主键盘区 对程序员而言,键盘效率远高于鼠标
界面一致性 各自为政,快捷键混乱 遵循 Vim/Emacs 经典范式 学习一次,随处可用,降低认知负荷
远程开发 X11 转发或远程桌面,体验糟糕 SSH 天生完美支持 云开发时代,终端操作远程服务器无可替代
视觉噪音 动画、渐变、阴影,信息过载 极简、纯粹,聚焦信息本身 专注场景下,"少即是多"成为共识

三大驱动力

1. 对"图形界面失控"的逃离

原生开发越来越复杂——Windows 上 WinForms → WPF → WinUI 更迭频繁,macOS 设计指南前后矛盾。跨平台的 Electron 成了权宜之计,却带来性能新问题。终端这个"最后的共识界面"重新进入开发者视野。

2. AI 引爆点

AI 编程工具的爆发成为 TUI 出圈关键催化剂。以 DeepSeek TUI 为代表的项目在 GitHub 迅速走红:命令行调用 AI 成本更低、过程更透明、支持超长上下文(百万 Token)。当最前沿的 AI 能力以最高效的方式在终端呈现,TUI 成了"生产力利器"而非"老古董"。

3. 框架生态成熟

两年前开发一个漂亮 TUI 应用并不容易,而现在成熟框架极大降低了门槛。更关键的是,2025–2026 年主流框架集体进入 v2 时代——Bubble Tea v2 重构了声明式 View 架构,Ratatui v0.30 支持 no_std 嵌入式场景,Textual 保持月级迭代节奏。生态基础设施已就位。


二、选型干货:主流框架全景对比

当前 TUI 框架四大阵营:

维度Bubble Tea (Go)Ratatui (Rust)Textual (Python)Ink (JS/React)
GitHub Stars 40.7k ⭐ 19.1k ⭐ 34.9k ⭐ 35.6k ⭐
架构模式 Elm 架构(MVU) 即时模式(Immediate Mode) 异步响应式 + CSS React 组件化
渲染方式 View() 返回 string 每帧 draw() 全量重绘 即时模式 + diff React Reconciler
布局系统 Lip Gloss(链式调用) Constraint 约束布局 CSS(.tcss 文件) Yoga(Flexbox)
内置组件 约 12 个(Bubbles 扩展) 约 15 个 + 50+ 社区 crate 60+ 组件 约 18 个(inkjs/ui)
样式方案 Lip Gloss ratatui::style 模块 CSS 样式表 + 热重载 React 内联样式
鼠标支持 ✅ v2 原生 ✅ 通过 crossterm ✅ 一等公民 ✅ 通过 ink-mouse
图片渲染 ✅ go-termimg(Sixel/Kitty/iTerm2) ✅ ratatui-image(Sixel/Kitty/iTerm2/Halfblock) ✅ textual-image(TGP/Sixel/Unicode) 有限
SSH 服务 ✅ Wish 库 ✅ textual serve
Web 运行 ✅ ratzilla(WASM) ✅ textual serve(无需改代码) ✅ 浏览器 CLI
嵌入式 (no_std) ✅ v0.30+
启动耗时 ~30ms <10ms ~250ms ~200ms
内存占用 ~45MB ~12MB ~120MB ~100MB+
二进制体积 ~8MB ~2.5MB N/A(需 Python 运行时) N/A(需 Node)

数据来源: GitHub Stars、各框架官方文档、社区报告(2026 年 6 月)

各语言更多选择

Go 生态:

  • tview(13.7k ⭐)—— 命令式部件库,K9s 和 gh CLI 使用,实战验证充分

Rust 生态:

  • Cursive —— 声明式 ncurses 风格,适合表单类应用

  • FTXUI(9.8k ⭐)—— C++ 零依赖,支持 WASM 和像素级 Canvas

Python 生态:

  • Rich —— Textual 底层库,纯渲染不做交互

  • Urwid —— 老牌 TUI 库,回调风格

JS/TS 生态:

  • OpenTUI(9.4k ⭐)—— TS + Zig 后端,支持 React/SolidJS/Vue 三种 reconciler

  • Blessed —— 经典但已停维,不推荐新项目使用


三、场景化选型指南

🅰 语言已限定,怎么选?

如果你在用首选框架理由
Go Bubble Tea + Lip Gloss + Bubbles 生态最完整(40k ⭐),Elm 架构清晰,Charm 生态开箱即用
Rust Ratatui 性能极致,社区 crate 丰富,Netflix/OpenAI/AWS 都在用
Python Textual 60+ 组件,CSS 样式,textual serve 一键转 Web,开发效率最高
JavaScript/TypeScript Ink React 生态复用,Claude Code / Gemini CLI 都基于它构建
C++ FTXUI 零依赖,功能完备,支持 Canvas 像素绘制
C# (.NET) Terminal.Gui 40+ 组件,Swing 风格 API,v2 刚重大重写,.NET 生态首选

🅱 需要鼠标交互 + 图片粘贴/显示,怎么选?

核心需求: 鼠标点击、滚轮、拖拽 + 终端内显示图片(Sixel / Kitty 协议)+ 粘贴图片

推荐排名:

  1. Textual(Python)⭐⭐⭐⭐⭐

    • 鼠标是第一等支持,@on 装饰器即可绑定点击事件

    • textual-image 库支持 Kitty TGP、Sixel、Unicode 三套渲染方案,自动检测终端

    • 图片缩放、裁剪、对齐开箱即用

    • 注意: Sixel 渲染性能一般,频繁刷新会闪烁,适合静态图片展示

    • 开发者体验最好,适合原型快速落地

  2. Ratatui(Rust)⭐⭐⭐⭐

    • ratatui-image 支持 Sixel/Kitty/iTerm2/Halfblock 四种协议

    • 通过 crossterm 捕获鼠标事件

    • StatefulImage 支持 fit/crop/scale 三种自适应模式

    • 性能最强,图片刷新无闪烁

    • 代价: 需要自己管理事件循环,编码量较大

  3. Bubble Tea(Go)⭐⭐⭐⭐

    • v2 原生支持鼠标

    • go-termimg 支持 Kitty/Sixel/iTerm2 + Halfblock 回退

    • 设置简单,几行代码即可在 View() 中插入图片

    • Charm 生态颜值最高,适合面向用户的产品

关键指南: 图片显示依赖终端模拟器支持。部署前务必确认目标用户的终端兼容性:

终端SixelKitty 协议iTerm2 协议
Kitty
Xterm ✅(需 -ti vt340
WezTerm ✅(最稳定)
iTerm2 (Mac) ✅ Beta
Windows Terminal
VS Code 终端
Alacritty ❌(有 fork)

备选方案: Halfblock(Unicode 半块字符 + 前景/背景色)在所有终端都可以工作,但分辨率较低。适合作为"兜底"方案。

🅲 需要读取/播放视频,怎么选?

这是一个小众但增长的需求。 终端播放视频本质上是逐帧提取 → 转换为 Sixel/Kitty 协议 → 送往终端渲染

方案原理推荐度
sakura(独立工具) 使用 ffmpeg 解码 + libsixel 渲染,支持 GIF/MP4/MKV ⭐⭐⭐⭐⭐ 拿来即用
Ratatui + ffmpeg 子进程 通过 Ratatui 画 Canvas,ffmpeg 输出帧到管道 ⭐⭐⭐⭐ 深度集成但编码量大
Bubble Tea + ffmpeg 在 Cmd 中异步 ffmpeg 解码,View 渲染 ⭐⭐⭐ 适合轻量场景

实操建议:

  • 如果目标是轮子而不是造轮子,直接集成 sakuraffmpeg + libsixel 作为子进程调用

  • 如果要在 TUI 框架内实现视频预览,推荐 Ratatui——它的 Canvas 组件支持低层像素绘制,配合 ratatui-image 协议,可以做到逐帧刷新

  • 视频播放对终端性能要求极高,建议加上帧率限制(15–24fps)和音频同步机制

  • 重要: 绝大多数终端模拟器无法流畅播放视频,部署前必须圈定终端类型(Kitty / WezTerm / Xterm vt340)


四、最终推荐方案

最流行(Follow the Crowd)

你的语言推荐框架理由
Go Bubble Tea 40.7k ⭐,Charm 生态一统江湖,开发者体验最佳
Python Textual 34.9k ⭐,组件最丰富,CSS 给 Web 开发者零门槛
Rust Ratatui 19.1k ⭐,行业巨头背书,性能天花板
JS/TS Ink 35.6k ⭐,React 生态复用,大厂背书
C# (.NET) Terminal.Gui 10.8k ⭐,40+ 组件,v2 重大重写,.NET 开发者首选

最合适(Pick the Right Tool)

你的场景最佳选择备选
快速原型 / 企业内部工具 Textual(Python)CSS + 60+ 组件,当天出活 Bubble Tea
高性能监控面板 / 实时数据流 Ratatui(Rust)<10ms 启动,12MB 内存 FTXUI (C++)
面向用户的 CLI 工具 Bubble Tea(Go)颜值最高,单二进制分发 Textual Serve
嵌入式 / IoT / 资源受限 Ratatui no_std FTXUI
既有 React 代码库 / 前端团队 Ink(React)或 OpenTUI(TS)
需要 SSH 远程使用 Bubble Tea + WishTextual Serve
需鼠标 + 图片交互 Textual > Ratatui > Bubble Tea 参见上节
需视频播放 Ratatui + ffmpeg 或独立工具 sakura

一句话总结

快糙猛选 Textual,严肃高性能选 Ratatui,颜值控选 Bubble Tea,前端转过来的选 Ink。

没有银弹。选型三角:团队语言栈 → 性能要求 → 交互复杂度,按这个顺序排除,答案自然浮现。


五、主流 AI TUI 应用选型一览

AI 编程助手的爆发是 TUI 复兴的最大催化剂。来看看主流 AI TUI 应用都用了什么框架、以及为什么这么选:

应用所属框架语言体积启动响应选型亮点
Claude Code Anthropic Ink(深度魔改) TypeScript / Node.js 200–400MB 启动 2–5s,渲染 60fps React 生态 + 140+ 组件,自定义渲染引擎(类型数组 + 双缓冲 + 对象池)
OpenCode 社区(anomalyco) OpenTUI(自研) TypeScript + Zig 核心 ~50MB 毫秒级启动 Zig 原生核心 + SolidJS 响应式;多线程架构(UI Worker 分离);C ABI 跨语言调用;OSC52 剪贴板原生集成
Crush Charm Bubble Tea Go 单 ~10MB 毫秒级启动 全 Charm 生态(Lip Gloss / Bubbles / Glamour),颜值最高;支持多模型切换;跨平台最广(含 Android)
Codex CLI OpenAI Ink(React) TypeScript / Node.js ~200MB+ 启动 2–5s 沿袭 Ink 路线,与 Claude Code 架构思路相似
Gemini CLI Google Ink(React) TypeScript / Node.js ~200MB+ 启动 2–5s 同样基于 Ink,Google 内部 CLI 工具家族统一技术栈
Claude Code Rust(社区) srothgan Ratatui Rust 单 ~3MB <100ms 启动,内存 20–50MB 替换官方 Node 版,内存降至 1/10;Tokio 异步事件循环;语法高亮 + 虚拟滚动聊天历史
GitHub Copilot CLI GitHub Ink(React) TypeScript / Node.js ~200MB+ 启动 2–5s 微软/.NET 系但 CLI 层仍选 Ink,React 终端渲染事实标准

关键趋势

  • Ink(React)是 AI TUI 的默认起点——Claude Code、Codex、Gemini CLI、Copilot CLI 都在用。React 组件化 + 声明式渲染的优势在复杂 TUI(140+ 组件)中无可替代。

  • 但性能瓶颈驱动了分化——Claude Code 不得不深度魔改 Ink 渲染引擎(自写类型数组双缓冲),社区甚至直接用 Ratatui 重写了 Claude Code Rust 版,内存降为 1/10、启动快 50 倍。

  • 原生语言正在反攻——OpenTUI(Zig)和 Crush(Go)证明,编译型语言 + TUI 框架可以提供接近 GUI 的体验,同时保持终端原生性能。

  • "性能"不是唯一维度——Crush 靠 Charm 生态的"颜值"出圈,说明在 AI TUI 领域,开发体验和视觉品质同样重要。

  •  
http://www.jsqmd.com/news/936142/

相关文章:

  • 12306候补总失败?试试用Bypass实时监控捡漏票(附与官方候补机制对比)
  • 暗箱式紫外分析仪|上海金鹏分析仪器有限公司 - 品牌推荐大师
  • 别再为向量搜索内存发愁了!Elasticsearch 8.x 的 int8_hnsw 量化实战指南
  • 2026 深圳汽车贴膜有哪些权威榜单发布:RC 高端车膜服务登顶五星,豪车贴膜首选 - 资讯速览
  • 从“偶发故障”到“确认故障”:深入聊聊DTC状态位(Status Mask)的工程实践与避坑指南
  • 大连名表回收估价哪家准?五家本地机构专业度测评 - 奢侈品回收测评
  • 告别裸机调试:迪文DGUS_V7647串口屏变量地址设置与单片机通信实战
  • 实测优选:沈阳手表回收靠谱商家清单,照着卖不踩坑 - 奢侈品回收测评
  • 黑客松实战指南:24小时极限开发如何高效协作与创新
  • 国内微波杀菌设备工厂可靠性排行:2026最新5家头部企业实测 - 奔跑123
  • 别只当编辑器用!深度挖掘QtCreator 5.12+的设计与调试模式,让你的GUI开发效率翻倍
  • 基于光敏电阻与伺服电机的太阳能追踪器DIY:图形化编程实现闭环控制
  • Arduino智能桌面收纳树:红外遥控RGB灯光与创客实践
  • 洛阳市嵩县 适老化改造上门|维小达 适老厨房、适老卫生间、全屋适老化、适老化定制等一站式适老化改造服务 - 维小达科技
  • 2026 深圳车衣贴膜推荐:高端膜艺标杆,认准这几家! - 资讯速览
  • BetterNCM插件管理器完整指南:3分钟实现网易云音乐功能大升级 [特殊字符]
  • 哈尔滨市道里区胜广建材:专业的哈尔滨沙子出售公司 - LYL仔仔
  • Arduino与Visuino实战:用按钮控制I2C LCD屏的开关与状态切换
  • 国内微波烘干设备工厂2026最新排行:从参数到服务的硬核对比 - 奔跑123
  • 热点预警:毕业论文抽查趋严!这8款AI毕业论文工具谁更靠谱? - 逢君学术-AI论文写作
  • 保姆级教程:用Node-RED连接ThingsBoard,实现设备数据上传与仪表盘可视化
  • 2026遵义装修公司推荐:消协口碑筛查,9家零恶意增项靠谱家装企业 - 商业新知
  • 洛阳市老城区 管道疏通 上门服务|维小达 马桶疏通、地漏疏通、洗菜盆疏通、洗手盆疏通、浴缸疏通、小便池疏通、蹲便器疏通一站式管道疏通服务 - 维小达科技
  • 深圳名表回收去哪卖靠谱?2026年六大平台实测+避坑指南,这家真的零套路 - 薛定谔的梨花猫
  • 基于Arduino与HC-SR04的非接触式水位检测系统设计与实现
  • 沙洋县26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • 孝南区26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • 基于ESP32的智能动感单车改造:开源控制器实现虚拟骑行阻力自动调节
  • 历时2个月实地调研,苏州然鼎装饰从选材到竣工全解析 - 资讯速览
  • 魔兽争霸3现代重生指南:5大创新技术让你的经典游戏焕发新生