回答出字时首页不再整页重画 #123

Open
opened 2026-10-28 06:02:00 +08:00 by Claude · 2 comments
Collaborator

来自 #118 代码体检(体检第 13 条),清单第 4 单。由 Claude 直接实现,不交 Grok。

问题

Home 订阅 streamingReply,流式时每帧(最多 60 次/秒)整页重渲染;桌面默认打开的本命盘面板(ChatChartSplit、PanelBoard)没有 memo,跟着每帧重画。新手引导打字机每 26 ms 一次同类问题。估 1500 字回答约 375 次整页重画。

改法

流式文字只让消息区订阅;面板与其余部分不随每帧重画。不新增 Home 的 useState/useRef。

验收标准

加 Profiler 测试:流式 100 帧期间 Home 与面板提交次数降到原来的 1/10 以下;显示内容不变;home-sidebar-rerender 等既有测试不变。

规矩

  • 基于 origin/staging,独立工作树 codex/*;只改这一件事。
  • BUG 号开工时按 docs/BUG_HISTORY.md 全文件取最大号 +1。
  • 同时改 frontend/src/app/(app)/page.tsx 的单按清单顺序串行。
  • 体检报告:docs/research/code_health_audit_2026_10_28.md(staging a31b6dda3)
来自 #118 代码体检(体检第 13 条),清单第 4 单。**由 Claude 直接实现,不交 Grok。** ## 问题 Home 订阅 `streamingReply`,流式时每帧(最多 60 次/秒)整页重渲染;桌面默认打开的本命盘面板(`ChatChartSplit`、`PanelBoard`)没有 memo,跟着每帧重画。新手引导打字机每 26 ms 一次同类问题。估 1500 字回答约 375 次整页重画。 ## 改法 流式文字只让消息区订阅;面板与其余部分不随每帧重画。不新增 Home 的 useState/useRef。 ## 验收标准 加 Profiler 测试:流式 100 帧期间 Home 与面板提交次数降到原来的 1/10 以下;显示内容不变;`home-sidebar-rerender` 等既有测试不变。 ## 规矩 - 基于 origin/staging,独立工作树 `codex/*`;只改这一件事。 - BUG 号开工时按 `docs/BUG_HISTORY.md` 全文件取最大号 +1。 - 同时改 `frontend/src/app/(app)/page.tsx` 的单按清单顺序串行。 - 体检报告:`docs/research/code_health_audit_2026_10_28.md`(staging `a31b6dda3`)
Claude added the agent/试点agent/排队 labels 2026-10-28 06:02:03 +08:00
Claude added agent/规划中 and removed agent/排队 labels 2026-10-28 07:07:21 +08:00
Author
Collaborator

已改完,推上 staging ad801a5d,正在部署。

  • 回答逐字出来时,现在只有回答那一块跟着更新;首页其余部分和右侧本命盘不再每一帧重画。
  • 实测(新测试里按真实流程连推 100 帧):
改前 改后
首页整页重画 100 次以上 最多 2 次(只在「停止」按钮文案变的时候)
右侧本命盘重画 跟着每帧 0 次
回答正文 每帧更新 每帧更新(不变)
  • 看到的内容不变;「停止」按钮出字前 / 出字后的两种说法照旧。
  • 首页首次加载大小:改前 704,155 字节,改后 704,165 字节(+0.001%);首页仍是静态页。
  • 检查:类型检查、代码规范 0 问题;全量前端测试和 staging 逐条比,没有新失败(有 2 条旧测试写死了改前的变量名,已改成认新组件),新增 4 条。记为 BUG-1472。
  • 没做的一处:新手建档时那几句「打字机」文字仍会让首页每 26 毫秒重画一次。它和建档流程里 8 处「重新播放」逻辑绑在一起,挪动会改变建档时文字重播的行为,超出这张单;只在建档那几秒发生。需要的话我另开一张单。

真机清单:docs/testing/code-health-118-20261028.md 第 11、12 条。部署好了我再说。

<!-- agent:claude review sha=ad801a5db77b05a3bb0544ad8ce7acd1b7033227 verdict=pass staging=ad801a5db77b05a3bb0544ad8ce7acd1b7033227 checklist=docs/testing/code-health-118-20261028.md --> 已改完,推上 staging `ad801a5d`,正在部署。 - 回答逐字出来时,现在只有回答那一块跟着更新;首页其余部分和右侧本命盘不再每一帧重画。 - 实测(新测试里按真实流程连推 100 帧): | | 改前 | 改后 | | --- | --- | --- | | 首页整页重画 | 100 次以上 | 最多 2 次(只在「停止」按钮文案变的时候) | | 右侧本命盘重画 | 跟着每帧 | 0 次 | | 回答正文 | 每帧更新 | 每帧更新(不变) | - 看到的内容不变;「停止」按钮出字前 / 出字后的两种说法照旧。 - 首页首次加载大小:改前 704,155 字节,改后 704,165 字节(+0.001%);首页仍是静态页。 - 检查:类型检查、代码规范 0 问题;全量前端测试和 staging 逐条比,没有新失败(有 2 条旧测试写死了改前的变量名,已改成认新组件),新增 4 条。记为 BUG-1472。 - **没做的一处**:新手建档时那几句「打字机」文字仍会让首页每 26 毫秒重画一次。它和建档流程里 8 处「重新播放」逻辑绑在一起,挪动会改变建档时文字重播的行为,超出这张单;只在建档那几秒发生。需要的话我另开一张单。 真机清单:`docs/testing/code-health-118-20261028.md` 第 11、12 条。部署好了我再说。
Claude added agent/部署中 and removed agent/规划中 labels 2026-10-28 11:14:28 +08:00
Author
Collaborator

@jesse 已部署到 staging(线上版本 a81b3234,前端和排盘服务都是这一版;门禁、数据库迁移成功,登录页 200、未登录读账户 401 正常)。

请看真机清单 docs/testing/code-health-118-20261028.md 第 11、12 条:电脑上问一个长问题,回答出字时右侧本命盘不闪、拖动和点击都跟手。

没问题请关单,有问题直接在这里说。

<!-- agent:claude deployed sha=a81b32349fabc174dcedd7bc2c7c4acc3f7e8b85 --> @jesse 已部署到 staging(线上版本 `a81b3234`,前端和排盘服务都是这一版;门禁、数据库迁移成功,登录页 200、未登录读账户 401 正常)。 请看真机清单 `docs/testing/code-health-118-20261028.md` 第 11、12 条:电脑上问一个长问题,回答出字时右侧本命盘不闪、拖动和点击都跟手。 没问题请关单,有问题直接在这里说。
Claude added agent/待真机 and removed agent/部署中 labels 2026-10-28 11:56:57 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/Jyotisha#123