用途
OpenTUI 是一个用于构建终端用户界面(TUI)的开发平台。本技能为使用 OpenTUI 构建 TUI 提供整合式参考,帮助开发者通过决策树找到合适的框架与组件,并加载详细文档。适用于任何 TUI 任务,包括组件、布局、键盘与键位映射、动画、测试等。
主要能力
OpenTUI 提供三种框架入口:
- Core:命令式 API,包含全部基础原语,适合需要完全控制、追求最大性能、无框架开销的场景,也适合在 OpenTUI 之上构建库或框架。
- React:React 协调器,用于声明式 TUI,适合熟悉 React 组件模式的开发者。
- Solid:SolidJS 协调器,用于声明式 TUI,适合追求细粒度响应式与最优重渲染的开发者。
跨领域概念包括:布局(Yoga/Flexbox 布局系统)、组件、键盘(底层键盘输入处理)、键位映射(声明式分层键位绑定,@opentui/keymap)、动画(基于时间线的动画)、测试(测试渲染器与快照)。
组件按类别划分:
- 文本与显示:text、ascii-font、image、time-to-first-draw、styled text、qr-code
- 容器:box、scrollbox、scrollbar、embedded-terminal、borders
- 输入:input、textarea、select、tab-select、slider
- 代码与差异:code、line-number、diff、markdown、text-table
附加包:
- @opentui/keymap:分层键位绑定/命令引擎(Bun 或 Node,无 FFI)
- @opentui/qrcode:二维码组件
- @opentui/ssh:通过 SSH 提供 TUI 服务
- @opentui/three:Three.js WebGPU 渲染器(原 core/src/3d)
- @opentui/examples:可运行示例(原 core/src/examples)
Core 还提供已加载/流式/捕获的音频、原生图像、主机与终端剪贴板服务,以及 OSC 桌面通知。
使用方式
关键规则:
- 新项目使用 create-tui,参见各框架 REFERENCE.md 快速开始。
- create-tui 选项必须位于参数之前。
bunx create-tui -t react my-app可用,bunx create-tui my-app -t react不可用。 - 切勿直接调用
process.exit(),应使用renderer.destroy()(参见 core/gotchas.md)。 - React/Solid 中文本样式需要嵌套标签,使用修饰元素而非 props(参见 components/text-display.md)。
参考文件结构:每个框架在 ./references/<framework>/ 下包含 5 个文件:REFERENCE.md(概述、何时使用、快速开始,始终先读)、api.md(运行时 API、组件、hooks,编写代码时读)、configuration.md(设置、tsconfig、打包,配置项目时读)、patterns.md(常见模式、最佳实践,实现指导时读)、gotchas.md(陷阱、限制、调试,故障排除时读)。跨领域概念在 ./references/<concept>/ 下以 REFERENCE.md 为入口。
阅读顺序:先读所选框架的 REFERENCE.md,再根据任务读取相关文件——构建组件读 api.md 与 components/<category>.md;设置项目读 configuration.md;布局/定位读 layout/REFERENCE.md;键盘/输入处理读 keyboard/REFERENCE.md;分层键位绑定/命令读 keymap/REFERENCE.md;动画读 animation/REFERENCE.md;故障排除读 gotchas.md 与 testing/REFERENCE.md。
示例路径:
./references/react/REFERENCE.md # React 从这里开始
./references/react/api.md # React 组件与 hooks
./references/solid/configuration.md # Solid 项目设置
./references/components/inputs.md # Input、Textarea、Select 文档
./references/core/gotchas.md # Core 调试技巧
运行时说明:OpenTUI 运行于 Bun,原生构建使用 Zig。运行时要求与构建指导参见 ./references/core/gotchas.md。
适用场景
- 需要显示内容:纯文本或样式文本、带边框/背景的容器、可滚动内容区、独立滚动条、ASCII 艺术横幅/标题、PNG/JPEG/WebP/GIF 图像、首绘诊断、二维码、嵌入式子终端/VT 输出(仅 Core)、带边框/换行的数据表格、语法高亮代码、差异查看器(统一/分屏、hunk 导航)、带诊断的行号、Markdown 内容(流式)。
- 需要用户输入:单行文本字段、多行文本编辑器、垂直列表选择、水平标签选择、值滑块、声明式/分层键位绑定、自定义键盘快捷键。
- 需要布局/定位:Flexbox 风格布局(行、列、换行)、绝对定位、响应终端尺寸、内容居中、复杂嵌套布局。
- 需要动画:基于时间线的动画、缓动函数、属性过渡、循环动画。
- 需要处理输入:键盘事件(按下、释放)、分层绑定/命令/引导键、焦点管理、粘贴事件、鼠标事件、文本选择与选中即复制、主机/终端剪贴板服务或 OSC 52。
- 需要测试 TUI:快照测试、交互测试、测试渲染器设置、调试测试。
- 需要平台能力:播放已加载声音或 MP3/FLAC 流、捕获麦克风 PCM/录制 WAV、解码/变换/显示图像、读写主机或终端剪贴板、桌面通知(OSC 9/777/99)、自定义 stdin/stdout(PTY、xterm.js)、通过 SSH 提供 TUI 服务。
- 需要调试/故障排除:运行时错误与崩溃、布局问题、输入/焦点问题、复现与回归测试。
限制
OpenTUI 运行于 Bun,原生构建使用 Zig,需满足相应运行时要求。具体版本要求、平台支持范围、性能上限等细节暂未提供。各组件与 API 的完整参数、返回值及行为细节需查阅对应参考文件。
资源
- 仓库:https://github.com/anomalyco/opentui
- Core 文档:https://github.com/anomalyco/opentui/tree/main/packages/core/docs
- 示例:https://github.com/anomalyco/opentui/tree/main/packages/examples/src
- Awesome List:https://github.com/msmps/awesome-opentui