生产级 Agent 库 Covonaut 的 TUI 是如何做的
Covonaut 的 TUI 采用的是 Elm 架构
界面是组件树,靠消息(Msg)和命令(Cmd)驱动刷新。组件只声明自己该怎么渲染,引擎负责把结果渲染到屏幕上。
差分式渲染
每帧比对前后两版内容,只把真正变化的单元格写进终端。光标所在行没有变动的话直接跳过。长对话中持续输出 token 时,这种写法体感上更丝滑。
齐全的底层能力
- 按键解析支持 Kitty 键盘协议,能精确区分组合键;
- 主题用 JSON 描述,修改文件即时热重载;
- 终端内可以直接显示图片,适配 Kitty、Sixel、iTerm2 三种协议;
- Emacs 风格的多行编辑输入。
界面交互完整度:
- Overlay 能在主窗口上叠加弹窗和命令面板;
- Agent 返回的 Markdown 格式内容直接在终端渲染,且带语法高亮;
- 输入框支持自动补全,含模糊匹配和文件路径补全。
Covonaut 的 GitHub 仓库是 covoyage/covonaut,里面有 tui-demo,clone 下来就能看到实际效果。
