Skip to content

perf(tui): child transcript 在 viewport 裁剪前扫描完整历史并可能二次配对 #185

Description

@tt-a1i

问题

Direct/Workflow child transcript 每次 render 都先扫描完整历史、建立 tool call/result 配对和组件上下文,之后才按 viewport 截取可见行。普通情况渲染成本随全部历史增长;parallel tool calls 与结果分离排列时,配对搜索可退化为二次复杂度。

证据

  • extensions/shared/agent-transcript.ts:247-258,332-369:遍历并配对完整 transcript;
  • extensions/shared/agent-transcript.ts:394-424:缓存前仍构造 history-bound context;
  • extensions/shared/agent-session-page.ts:230-260:viewport slicing 在完整渲染之后。

这会被 spinner、streaming delta、滚动和 resize 的重复 repaint 放大。

期望

  • tool call/result 在 ingestion 时以 call id 增量索引,不在每次 render 搜索历史;
  • viewport 先确定需要的 logical items,再只渲染可见窗口及少量 overscan;
  • finalized row cache 不依赖每次重建全部前文;
  • late result、legacy missing call id、compaction 和 parallel calls 语义不退化;
  • benchmark:32/128/512 items,分别顺序和 64-way separated calls/results,测一次 render 与连续 100 次 repaint;证明线性且主要与 viewport 高度相关。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions