关于 rendering-layout-performance
帮助开发者处理 TUI 绘制错误、闪烁、CPU 占用、缩放适配和滚屏损坏的技能。内容聚焦状态驱动渲染、布局计算、输出批处理、性能控制及备用屏幕的生命周期管理。
主要功能
- 01基于状态和终端尺寸渲染
- 02批量写入并减少控制序列
- 03处理缩放与小尺寸布局
- 04节流高频事件和渲染循环
- 05管理备用屏幕及退出清理
适用场景
- 01减少界面闪烁和空闲时的高 CPU 占用
- 02适配不同宽高的终端窗口
- 03避免日志干扰全屏界面或损坏滚屏
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill rendering-layout-performance安装后在 Claude Code 中输入/rendering-layout-performance确认已加载。
附带文件references/alternate-screen-lifecycle.mdreferences/render-loop-patterns.md
详细介绍
TUI 渲染、布局、性能与备用屏幕生命周期
当 TUI 绘制错误、闪烁、浪费 CPU、无法妥善处理调整大小、破坏滚屏内容,或需要稳健的渲染架构时,请使用此技能。
渲染原则
- 根据状态渲染。 视图应是当前状态和终端尺寸的纯投影。
- 批量写入。 构建一帧画面,比较差异或将更新加入队列,然后一次性刷新。避免大量小型写入。
- 尽量减少终端控制操作。 反复重置样式、移动光标和清屏开销很大,在远程连接上也很显眼。
- 限制高频来源。 合并日志、指标、鼠标移动、连续的调整大小事件和进度更新。
- 明确帧的所有权。 全屏渲染器在活动期间拥有屏幕;后台输出应写到其他位置。
布局规则
- 每帧或每次调整大小事件发生时,都根据
width和height计算布局。 - 设置最低可用尺寸,并在低于该阈值时显示清晰的小屏幕提示。
- 优先使用约束、弹性布局、网格、分屏或框架布局原语,而不是随意指定坐标。
- 将焦点、选中项、视口偏移和光标位置保存在 UI 状态中。
- 测试窄屏、宽屏、高屏、极小屏和尺寸不规则的终端。
备用屏幕生命周期
对于全屏应用,如果用户退出后应返回原始滚屏内容,请使用备用屏幕。对于简单输出,如果命令结果应保持可见,则不要使用备用屏幕。
清理时必须恢复:
- 备用屏幕。
- 原始(raw)/半原始(cbreak)模式。
- 鼠标跟踪。
- 带括号的粘贴模式。
- 焦点和扩展键盘模式。
- 光标可见性和样式。
- 若有修改,则恢复终端标题或调色板。
性能检查清单
- UI 循环不会因网络、磁盘、子进程或 API 调用而阻塞。
- 长时间运行的操作通过消息、通道或任务发布进度。
- 将渲染速率限制在人类感知所需的水平,尤其是仪表板。
- 在执行耗时的重新计算前,合并调整大小事件。
- 对大型数据集中的表格和列表进行虚拟化或分页。
- TUI 占用屏幕时,日志记录不会写入 stdout/stderr。
- 如果支持远程终端,应将远程终端和 SSH 延迟纳入测试。
故障模式
| 症状 | 可能原因 | 修复方法 |
|---|---|---|
| 闪烁 | 清空整个屏幕或反复刷新 | 比较差异并批量写入,避免全屏清除 |
| 空闲时 CPU 占用高 | 无条件的重绘循环 | 根据事件渲染,或使用受限频率的定时器 |
| 崩溃后 Shell 损坏 | 未在 panic/exception 时执行清理 | 使用统一的终端保护机制,并通过 finally/defer/drop 执行清理 |
| 布局重叠 | 使用绝对坐标或尺寸过期 | 调整大小后重新计算约束 |
| 日志出现在 UI 中 | 备用屏幕处于活动状态时仍向 stdout/stderr 写入日志 | 使用文件接收器、应用内日志面板或缓冲日志 |
参考文件
references/render-loop-patterns.md- 帧缓冲区、脏区域、限流和事件循环。references/alternate-screen-lifecycle.md- 设置/拆除检查清单和崩溃恢复。
评论
支持 Markdown