Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Bug]: 流式输出的助手文本被重复渲染多次(模型实际只输出一次)

Abierto
#2,778 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@xielixing ya está trabajando en esto.

Desde el 13/9/2026.

  • #3004 de @xielixing — abierto

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
50/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust
Área
desktop

Línea de trabajo

Empieza comparando sessions//turns/turn-XXXX.json con ~/.bitfun/runtime-events/.jsonl; después, sigue cómo los eventos TextChunk llegan a la capa de renderizado de escritorio. Reproduce el problema con la sesión proporcionada y comprueba si cada chunk añade texto acumulado o vuelve a reproducir un mensaje existente. Se considera terminado cuando cada actualización de streaming reemplaza el contenido del mismo mensaje y la oración se renderiza una sola vez.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

在长 agent 会话(多轮工具调用 + 流式文本输出)中,UI 里同一条助手文本段落会重复显示多次(实测同一句完整句子渲染了约 8 遍),看起来像模型陷入了重复输出循环。

排查本地会话日志后确认:模型实际只输出了这句话一次,重复发生在桌面端渲染层。

期望行为:流式 chunk 到达时应更新(replace)同一条消息的累积文本,而不是重复追加渲染。

Area

Desktop app

Reproduction or evidence

现象

一次包含大量工具调用的 agent 任务中,模型在某个 round 输出一句话后,聊天界面里这句话完整重复出现了约 8 次,中间还穿插正常的命令卡片,视觉上像是模型在复读。

证据 A:持久化会话记录

sessions/<sessionId>/turns/turn-XXXX.json 中该 turn 共 17 个 model round,目标句「看来只有 part3 入队成功,补上 part1/2。」仅在 round 13 的 textItems 中出现 1 次;其余 round 文本各不相同、逻辑连贯("走 DLink 中转…" → "KatFile 三卷全部有效…" → "part1/2 还在排队…"),无循环。

证据 B:原始流式事件

~/.bitfun/runtime-events/<sessionId>.jsonl 共 38 个 TextChunk 事件。该句被拆成 6 个 chunk 依次到达:
"看来" / "只有 part3 入" / "队成功" / "," / "补" / "上 part1/2。"
每个 chunk 仅出现一次,整个事件流中该句相关文本无任何重复。

结论

模型侧输出正常,重复发生在客户端渲染层。怀疑方向:流式更新时按 chunk 把累积全文重复 append(而非 replace 同一条消息),或事件重放/断线重连时同一条消息被重复渲染。

本地排查用 sessionId:613dcec9-7526-47b9-8890-11c9ce6d59ae

Environment, if relevant

BitFun version/commit: 桌面版 0.2.19 (com.bitfun.desktop)
OS: macOS
Browser/device: BitFun 桌面客户端
Model/provider: GLM-5.3(agent 会话,3 turn / 52 次工具调用,开启自动批准)

Lenguaje dominante
Rust
Estrellas
2.3k
Forks
236
Merge medio
2 h 51 min
PR fusionados (30 d)
425

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de GCWing/OpenBitFun

Todos los issues de GCWing/OpenBitFun

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.