一键导入
performance-invariants
做渲染/滚动/输出性能优化,或需要判断"正确性 vs 流畅 vs 可读性"取舍时使用。覆盖脏行渲染、缓存层、合并、render loop 禁忌。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
做渲染/滚动/输出性能优化,或需要判断"正确性 vs 流畅 vs 可读性"取舍时使用。覆盖脏行渲染、缓存层、合并、render loop 禁忌。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
改动 PTY 会话、libghostty-vt 桥接、终端输入、OSC/HTML 适配时使用。覆盖终端状态唯一真相源、会话协议、输出合并与输入路径。
改动 ProGhostty 渲染层(Metal 直渲 / cell-grid 回退 / 滚动 / 脏行)时使用。覆盖三层降级梯、不可变快照契约、像素滚动路径与渲染边界。
改动工作区、分屏树、pane 生命周期、App 层协调 (AppModel)、或 App↔Core 分层时使用。覆盖唯一 owner、值类型分屏树与分层边界。
| name | performance-invariants |
| description | 做渲染/滚动/输出性能优化,或需要判断"正确性 vs 流畅 vs 可读性"取舍时使用。覆盖脏行渲染、缓存层、合并、render loop 禁忌。 |
优化性能、动热路径(渲染 / 滚动 / 输出)前读本文件。
正确性 > 流畅 > 可读性
含义:宁可代码复杂一点,也绝不每帧 rebuild 或重绘整屏。但正确性(尤其 alternate-screen / TUI)永远压过滚动动画的顺滑。
GhosttyTerminalFrame),不共享可变状态。NSAttributedString。已在位(docs/architecture/rendering-path-and-optimization-plan.md):
SmoothScrollEngine + SmoothScrollBrowseResolver + presentBrowseWindow(rows(at:),VT 不动);亚行余量 viewport.visualOffsetY。PaneScrollController(PaneScrollCoordinator 像素余量 + ScrollCommitCoordinator ~120Hz 行提交)。CellGridDirtyTracker — 算脏行 + 脏 cell 范围。MetalGlyphAtlas — 缓存渲染后的字形图。MetalDirectRenderEngine — 按字形 atlas entry id + generation 缓存 Metal 纹理。StyleStatsCache — 跳过未变行的样式统计重扫。ResizeSensitivityCache — 除非缓存键变,不重扫光标下方所有行。TerminalOutputCoordinator + TerminalOutputBatchCoordinator — 输出快照/字节两级合并,共 8ms 预算。加优化前先确认想要的缓存是否已存在——主路径问题多在 rows(at:)/display-link 呈现;fallback 问题多在行提交帧。
overscanTop.cells + viewport.cells + overscanBottom.cells 在多处重复构建,滚动时加 CPU 压力。frame()/scrollFrame() 跨 bridge 锁把 cells 拷成 Swift 值。MetalDirectRenderEngine.shouldWaitForCommandCompletion 在首帧/纹理 resize/全量重绘/光标行脏/overlay 存在等条件下等命令完成,可能造成滚动尖刺。MetalDirectRendererBackend.scrollFrameFullSceneRebuildReason 在形状/维度/overscan 变化时强制全脏——保守但别无谓触发。docs/architecture/rendering-path-and-optimization-plan.md(renderer 性能工作要求先更文档再对齐实现)。docs/architecture/rendering-path-and-optimization-plan.md(权威,含全部层 + 已知重点 + 工作假设)、docs/renderer-scrolling.md、docs/renderer-overscan-research.md。计时测试:TerminalRendererBackendTests、TerminalResizeCoordinatorTests(burst/coalescing 相关)。