Skip to content

Agent 输出更新时自动滚动到底部,打断用户阅读历史内容 #3

Description

@wt153

问题描述

当前在 Agent 执行任务或持续输出过程中,如果用户正在查看上方的历史消息、某个工具调用结果,或生成的文档/代码/表格等长内容,界面会在 Agent 有新输出或状态更新时自动滚动到底部。

这会导致用户当前阅读位置被打断,无法稳定查看历史内容。

复现步骤

  1. 打开当前项目的 Agent 对话界面;
  2. 发起一个会持续输出、调用工具或生成较长内容的任务;
  3. 在 Agent 尚未完全结束时,手动向上滚动查看历史消息、工具输出或生成文档内容;
  4. 等待 Agent 继续输出或更新状态;
  5. 观察页面滚动位置。

实际表现

页面会自动滚动到底部,用户正在查看的位置被打断。

期望表现

当用户主动向上滚动查看历史内容时,后续 Agent 输出不应强制把页面滚动到底部。

建议交互:

  • 如果用户当前位于底部附近,新输出时继续自动滚动到底部;
  • 如果用户已经手动向上滚动,则暂停自动跟随;
  • 有新内容产生时,显示“有新消息 / 回到底部”提示;
  • 用户点击提示或手动滚动回底部后,再恢复自动滚动。

建议实现

可以增加自动滚动锁定机制,例如:

const threshold = 80;
const isNearBottom = scrollHeight - scrollTop - clientHeight < threshold;

仅在 isNearBottom === true 时执行自动滚动;当用户手动向上滚动后关闭自动跟随,并在新内容到达时展示提示按钮。

验收标准

  • 用户位于底部附近时,新输出可以自动滚动到底部;
  • [ ]
  • 用户手动向上滚动后,新输出不会打断当前阅读位置;
  • [ ]
  • 有新内容产生但未自动滚动时,有明显提示;
  • [ ]
  • 用户点击提示后可以快速回到底部;
  • [ ]
  • 用户回到底部后,自动滚动能力恢复;
  • [ ]
  • 工具输出、生成文档、长文本消息等场景表现一致。
  • [ ]

优先级建议

P1 / 中高优先级

影响范围

影响 Agent 对话消息列表、工具调用结果展示、生成内容预览等长内容阅读场景。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions