项目介绍
Ansiq 是一个 Rust TUI 框架,面向需要持续运行、处理流式输出、管理 viewport 的终端应用。
如果你的应用不只是“画几个 widget 就结束”,而是还需要:
- 长时间运行
- 不断接收新数据
- 处理 focus、输入路由和局部更新
- 管理 viewport 和 scrollback
那么 Ansiq 想解决的就是这类问题。
Ansiq 适合什么
Ansiq 当前特别适合以下类型的终端软件:
- AI / agent 工作台
- 实时监控与 dashboard
- 文档或 schema 浏览器
- 有明显 pane、列表、详情区、输入区的交互应用
- 需要在一个 runtime 内协调 async work、focus 和渲染的终端程序
Ansiq 不是什么
Ansiq 当前不是:
- 一个以浏览器/DOM 心智为中心的框架
- 一个“只管 widgets,不管 runtime” 的组件包
- 一个已经完全完成的 1.0 框架
更准确地说,Ansiq 现在已经有一个成型的终端 runtime 内核,并正在把 widgets、文档和 examples 持续收敛到同一个体系里。
这套文档怎么读
这套文档不是按仓库目录写的,而是按学习路径写的。
如果你是第一次接触 Ansiq
按下面顺序读:
如果你想先看成品
直接进入 示例总览,再按示例的复杂度选择阅读顺序。
如果你是贡献者或想理解内核
直接进入 Runtime 边界 和 内部原理总览。
你会在 Ansiq 里反复遇到的几个概念
在继续之前,先记住这几个词:
- runtime-first:输入、focus、异步任务、布局、渲染、viewport 都是 runtime 的职责
- retained tree:UI 不是每帧临时画出来,而是由 runtime 保留和更新
- signal-first reactivity:谁脏了由响应式系统决定,怎么更新由 runtime 决定
- subtree replacement:不是整树重建,而是尽量只替换 dirty component subtree
- framebuffer diff:最终输出到 terminal 前,会先做缓冲区 diff 和 patch emission
这几个概念会在后续文档里不断出现。
一个最重要的边界
Ansiq 当前最核心的设计原则之一是:
响应式系统只负责“谁脏了”,UI runtime 负责“脏了之后怎么更新终端屏幕”。
这条边界决定了它和很多“把所有事都塞进组件层”的框架不一样。
下一步
继续阅读 快速开始。
那一页会直接带你跑起一个当前最稳定、最适合 onboarding 的示例,而不是一上来就把你丢进最复杂的 showcase 里。
Last updated on