### 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 次工具调用,开启自动批准)
Activity
QZQ-go commentedon Sep 4, 2026
补充定位:重复出现在远程中继控制会话层面,不是本地桌面窗口。
复现截图来自另一台设备上的 BitFun 桌面客户端(BitFun app ↔ BitFun app 远程控制)查看/控制本机 BitFun 时的会话界面,不是被控端本机的聊天窗口。即:同一条助手文本的多次重复渲染,发生在远程控制会话的事件推送/渲染链路上。
结合主楼的证据(该句被模型拆成 6 个 TextChunk 流式输出),一个高度吻合的机制假设:
建议排查方向相应缩小为:
TextChunk的推送/渲染逻辑(增量 vs 累积全文);被控端本机窗口未观察到此现象(如有其他用户在本地窗口复现,欢迎补充修正)。
补充: 远程控制端与被控端均为 0.2.19 同一版本,可排除两端版本差异因素。