[BUG]: Telegram agent sends verbose thinking messages while final answer is incomplete or truncated

在 AnythingLLM 桌面版使用内置 Telegram 集成跑 Agent 时,如果流式回复超过一条 Telegram 消息的长度,收尾阶段会把整段回答写进最后一条已分段的消息,导致答案开头(含思考块)重复出现、尾部被截断甚至只剩 ... 。优先排查最终消息的写入与分段逻辑,而不是模型本身。

快速结论:在 AnythingLLM 桌面版使用内置 Telegram 集成跑 Agent 时,如果流式回复超过一条 Telegram 消息的长度,收尾阶段会把整段回答写进最后一条已分段的消息,导致答案开头(含思考块)重复出现、尾部被截断甚至只剩 ...。优先排查最终消息的写入与分段逻辑,而不是模型本身。

适用环境:Issue 中确认的环境为 AnythingLLM 桌面应用,macOS,安装包来自 DMG。Python、CUDA、PyTorch、显卡与依赖版本在 Issue 中没有给出,未作确认。

最快修复方案:暂无确认的一步修复方案(Issue 讨论时 #6767 被说明为修复该截断问题,并计划随下一个版本发布,但本 Issue 未提供具体版本号,也未提供可立即执行的操作)。

注意事项:修复针对的是“最终回答完整送达”,不会隐藏思考块。思考块是刻意显示的,超过 200 字符会折叠成可展开的引用块;若要默认完全隐藏,需要单独提 feature request,属于另一项功能,不在本次修复范围内。在升级到含修复的版本前,可先缩短单次回答长度以降低触发概率。

问题场景

在 AnythingLLM 桌面版(macOS,DMG 安装)中启用内置 Telegram 集成,通过 Telegram 与 Agent 对话。Agent 的思考/推理消息会以接近完整长度直接发到 Telegram;当流式回答较长、需要拆成多条 Telegram 消息时,最终的完整回答表现为被截断,有时只剩 ...,且无法在 Telegram 内展开或找回缺失内容。

报错原文

[BUG]: Telegram agent sends verbose thinking messages while final answer is incomplete or truncated

The actual final answer is frequently truncated or replaced with `...`.
Missing content cannot be expanded or recovered within Telegram.

... (final message ends with ellipsis)

原因分析

根据 Issue 中维护者的确认,根因在 Telegram 机器人的最终消息写入逻辑:当流式回复超过一条 Telegram 消息时,收尾时把整段完整回答写进了最后一条分段消息,而不是只写入该消息剩余的部分。结果最后一条消息重复了回答开头(包括思考块),并因超出长度限制而以 ... 结尾,真正的新增内容丢失。

作为对比,Issue 正文最初怀疑的两个方向并未被确认为根因:一是 Agent 状态消息构建处的 100 字符截断(它只影响单条状态条目,不一定是 Telegram 中看到的完整思考内容的来源);二是完成回调中对已有消息执行 edit 时若超限失败、错误被静默忽略(这属于疑似机制,不是最终确认的诊断)。

另外,思考块在 Telegram 中可见是设计行为,不是缺陷:超过 200 字符会折叠为可展开的引用块。

环境排查

  • 确认使用的是 AnythingLLM 桌面应用,并记录安装方式(macOS DMG)。
  • 确认 Telegram 集成已启用,且对话经由 Agent 执行(会输出思考块与工具执行状态)。
  • 确认问题是否只在长回答(需要拆成多条 Telegram 消息)时出现;短回答通常不触发。
  • 确认当前 AnythingLLM 版本是否为包含 #6767 修复的版本,Issue 中没有给出具体版本号,需在发布说明中核对。
  • Python、CUDA、PyTorch、显卡与相关依赖版本在 Issue 中无证据,无需作为排查重点。

解决步骤

  1. 先用一条明显超过单条 Telegram 消息长度的 Agent 回答复现问题,记录最终消息是否以 ... 结尾、是否重复了回答开头。
  2. 把当前 AnythingLLM 版本与发布说明对照,确认是否已包含 #6767 对应的修复;若尚未包含,升级到包含该修复的版本(具体版本号以官方发布说明为准)。
  3. 临时规避:在 Telegram 渠道中缩短单次回答长度,或让 Agent 分段输出,尽量让单次最终回答不需跨多条消息,以降低触发最终消息覆盖的概率。
  4. 若你不希望看到思考块,需另行提交 feature request 请求“默认隐藏中间思考内容”,不要把它当作本截断问题的修复项。
  5. 如果升级后仍出现最终回答不完整,按“完整回答未可靠分段送达”方向继续反馈,并附上触发时回答的大致长度和最终消息截图。

验证方法

升级到含修复的版本后,用一条超过单条 Telegram 消息长度的 Agent 回答重测:最终回答应只在其所在分段中写入剩余内容,不再重复回答开头(含思考块),也不再以 ... 结尾;把所有分段按顺序拼接后,应能得到与模型实际输出一致的完整回答。

参考来源

Mintplex-Labs/anything-llm #6764

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 30298

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注