Skip to content

FireFox环境下Web UI内存异常占用(可能的内存泄漏) #457

@lqx3089

Description

@lqx3089

Bug Description

我在使用CoPAW项目,其应该使用了agentscope-runtime作为其Web UI。在Linux Firefox环境下使用,与Agent对话时,会出现很大的内存占用。该情况主要发生在让Agent生成很长的脚本代码或打开了很多MarkDown渲染块的情况下,例如每次都会点开它的thinking查看思考内容。

怀疑是由于在Firefox中,DOM内存管理比Chromium差,频繁重新渲染大段内容时:
旧的DOM节点可能没有及时被GC回收
语法高亮器创建大量DOM节点
内存累积 → 爆炸
由于我本人没有很强的分析能力,以下部分分析由调用GLM-5的CoPAW提供

Affected Component

  • Engine
  • Sandbox
  • Tools
  • Common
  • Documentation
  • Other: Web UI / @agentscope-ai/chat

Reproduction Steps

  1. Your code:
  2. How to run:
    启动 CoPaw 或任何使用 @agentscope-ai/chat 的前端
    使用 Firefox 浏览器打开控制台
    发送一条触发长回复的消息(例如要求生成代码脚本)
  3. Error occurs at:
    当流式输出大段内容(特别是包含代码块时),Firefox 内存无限制飙升,页面极度卡顿

Expected vs Actual Behavior

**Expected:**流式渲染长 Markdown 内容时,内存应该稳定,不应该持续增长导致崩溃
Actual: Firefox 中流式渲染长内容(尤其是带代码块)时,内存使用量急剧上升(可达数GB),而在Chromium内核的浏览器测试未见这些情况

Error Messages

无错误日志

Environment

AgentScope Runtime Version: v1.1.51 (@agentscope-ai/chat)
Python Version: N/A (前端问题)
OS: Linux (也应在其他系统复现)
Installation: npm / 作为 CoPaw 依赖安装
Browser: Firefox 135+

Additional Context

问题分析:

查看打包后的 index-RBhZ6czj.js,VW 组件(X-Markdown 渲染器)的实现:

VW = Z.memo(e => {
const { streaming: t, content: i, ... } = e,
// 每次content变化都调用zpn解析
g = zpn(i || o || "", { streaming: t, components: r }),
// 每次g变化都重新解析整个markdown
y = m.useMemo(() => g ? O.parse(g) : "", [g, O]);

// 每次都重新渲染整个DOM树
return g ? Z.createElement("div", ..., b.render(y)) : null;
});

根本原因:

每次流式更新 → content 变化
每次都重新解析整个 Markdown → O.parse(g)
每次都重新渲染整个 DOM 树 → b.render(y)
代码块的语法高亮生成大量 DOM 节点
Firefox 的 DOM 内存管理不如 Chromium,旧节点可能未及时 GC

可能的修复方向:

增量渲染:只渲染新增的内容,而非每次重渲染全部
虚拟化长列表:对消息列表使用虚拟滚动
对长代码块使用懒加载语法高亮
限制单次渲染的内容长度

依赖版本:

@ant-design/x-markdown: ^2.2.2
react-markdown: ^10.1.0

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