Skip to Content
指南项目介绍

项目介绍

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

按下面顺序读:

  1. 快速开始
  2. 第一个应用
  3. 核心概念
  4. 响应式
  5. 组件与 view!

如果你想先看成品

直接进入 示例总览,再按示例的复杂度选择阅读顺序。

如果你是贡献者或想理解内核

直接进入 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