问题
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 高度相关。
问题
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 放大。
期望