RD-Agent Web UI日志白屏与页面卡顿,3步定位修复

发布时间:2026/9/12 17:42:41
RD-Agent Web UI日志白屏与页面卡顿,3步定位修复 RD-Agent Web UI日志白屏与页面卡顿3步定位修复【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent你多半遇到过RD-Agent 跑 RD 循环打开 Web UI 日志视图白屏 30 秒以上渲染出来之后滚动还卡。本文带你按序定位rdagent/log里的 3 个真实瓶颈把一次 12 轮跑动的日志查看从30 秒白屏压到3 秒内可交互总耗时约 15 分钟。现象定位白屏到底卡在哪一层日志链路是RDAgentLog经FileStorage写 pkl → UI 里refresh()调iter_msg()读取 →get_msgs_until()缓存 →StWindow渲染。白屏基本是下面 3 个瓶颈之一按序排查。1.1 排查 pkl 全量加载storage.py症状选中日志目录后页面长时间转圈才出现内容。看rdagent/log/storage.py的FileStorage.iter_msg()for file in self.path.glob(pkl_files): # **/*.pkl 全量扫描 with file.open(rb) as f: content pickle.load(f) # 逐个反序列化全部驻留内存 msg_l.sort(keylambda x: x.timestamp) # 全量读完才排序根因就在最后两行不管你想看几条消息整棵日志树都要一次性读取、反序列化并排序耗时和内存随日志量线性上涨。1.2 排查 All Loops 全量遍历app.py症状点侧边栏 All Loops 按钮后长时间无响应。看rdagent/log/ui/app.py的按钮处理if st.button(:green[**All Loops**], use_container_widthTrue): get_msgs_until(lambda m: False) # 结束条件永假必须遍历完全部消息get_msgs_until是同步while循环Streamlit 脚本要等它跑完才返回渲染阶段——日志量越大白屏越久。1.3 排查逐条日志渲染web.py症状页面出来了但滚动发慢、滚动条极长。看rdagent/log/ui/web.py的StWindow.consume_msgdef consume_msg(self, msg: Message): self.container.code(msg_str, languagelog) # 每条日志一个独立 code 块每条消息创建一个独立st.code块DOM 节点数随日志条数线性增长这是渲染后卡顿的主因。分步修复从免改码到改渲染层2.1 修复一用 iter_msg 的 tag 参数缩小扫描范围约 5 分钟rdagent/log/storage.py的iter_msg(tag...)已支持按 tag 缩小 glob 范围。快速诊断某一阶段时直接指向对应子目录避免全树扫描fs FileStorage(path).iter_msg(tagevolving code) # 只扫该阶段日志验证方式用python -m rdagent.log.ui.app --log_dir 日志目录重启 UI观察首屏渲染是否在数秒内完成。2.2 修复二单块容器替代逐条渲染约 10 分钟把rdagent/log/ui/web.py的StWindow改成字符串缓存 复用同一占位符让 DOM 节点数不再随日志条数增长def consume_msg(self, msg: Message): self.lines.append(msg_str) # 只缓存字符串 self.box self.container.empty() # 复用占位符 self.box.code(\n.join(self.lines[-50:]), languagelog)验证方式渲染完成后再来几条新消息用 DevTools 统计[data-testidstCodeBlock]数量应保持恒定不再增长。2.3 修复三WebStorage 同步 HTTP 移到后台约 5 分钟运行期间主进程偶尔卡 1 秒是rdagent/log/ui/storage.py的WebStorage.log在日志同步路径上推 HTTPresp requests.post(f{self.url}/receive, jsondata, timeout1) # 阻塞日志路径把推送改成尽力而为的后台任务超时缩短到 0.2 秒、不等响应同时给self.msgs设上限如只留最近 1000 条。验证方式停掉 UI 服务器观察主进程打日志时不再出现 1 秒停顿。效果对比与收尾 以下为作者环境实测一次 12 轮模型跑动约 400 个 pkl 日志文件用python -m rdagent.log.ui.app --log_dir 日志目录启动 UI。指标修复前修复后首屏渲染耗时约 35s约 3s完整渲染后页面 DOM 元素数约 12,000约 900python 进程内存占用约 1.1GB约 320MB卡顿前可承载日志量约 500 条5,000 条以上进阶方向给FileStorage增加时间戳索引文件让扫描与truncate走索引查找或将日志视图迁移到虚拟滚动组件只加载可视区消息。行动清单归档LOG_SETTINGS.trace_path下的旧跑动只保留最近 3 次用iter_msg(tag...)缩小 UI 日志扫描范围把逐条日志渲染换成单块容器复用【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考