Files
goodbuddy/docs/features/chat-history-navigation/prd.md
T
mesalogo e2a5f83666
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Deploy website to GitHub Pages / Deploy static website (push) Canceled after 0s
docs: publish chat history navigation workflow
2026-10-08 16:34:25 +08:00

1.7 KiB

聊天历史连续滚动

用户问题

长会话向上阅读时,当前界面每次只增加 80 条消息,并在顶部显示“加载更早的消息”控件。这个控件把连续滚动切成多个操作,用户无法像 VSCode 一样直接拖动滚动条或连续滚到会话顶部。

目标

  • 已加载的当前会话可以从底部连续滚动到顶部。
  • 消息仍按可见范围挂载,长会话不会因为取消 80 条限制而一次性创建全部消息组件。
  • 滚动位置、锚点、消息展开状态和流式输出行为保持稳定。
  • 为后续 minimap 提供完整的消息索引和可定位滚动范围。

范围

  • 取消真实聊天会话的 80 条历史窗口增量。
  • 保留现有消息窗口化、占位高度、滚动锚定和按需挂载。
  • 对 100、500、2,000、10,000 条消息进行功能和性能对比。
  • 记录 minimap 的下一阶段性能测试入口,但本阶段不实现 minimap。

非目标

  • 不改变未打开会话的摘要加载策略。
  • 不要求一次从数据库加载所有未加载的会话历史。
  • 不取消最多约 60 条消息组件的 DOM 窗口化限制。
  • 不在本阶段加入 minimap、消息摘要接口或新的 IPC。

产品验收

  • 打开一个已加载历史的会话后,顶部不再出现“加载更早的消息”按钮。
  • 用户可以连续滚动到第一条消息,滚动位置不会因消息挂载或高度测量而跳动。
  • 2,000 条消息会话仍保持窗口化渲染,实际挂载消息数量维持现有上限附近。
  • 流式输出、输入、消息展开、附件和工具输出行为没有回归。
  • 若会话只有摘要,仍按现有逻辑按需加载完整历史。