From 78e8faa203a98a1aa7e816d710e17e2a5b8d4743 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 9 Apr 2026 22:23:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(agent):=20=E9=9D=9E=E6=B5=81=E5=BC=8F?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=95=B0=E5=97=A6=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=BB=8D=E9=9C=80=E5=8F=91=E9=80=81=E5=B7=A5=E5=85=B7=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E4=B8=AD=E9=97=B4=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 啰嗦模式+渠道不支持编辑时,虽然 is_streaming 为 False, 但 astream 仍会将 token 写入 buffer,需要在工具调用时 取出 agent 文字与工具消息合并发送 --- app/agent/tools/base.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/agent/tools/base.py b/app/agent/tools/base.py index 7153b7ae..cea0f268 100644 --- a/app/agent/tools/base.py +++ b/app/agent/tools/base.py @@ -72,9 +72,20 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta): # 非VERBOSE,重置缓冲区从头更新,保持消息编辑能力 self._stream_handler.reset() else: - # 非流式模式(后台任务或渠道不支持消息编辑且啰嗦模式关闭) - # 此时使用 ainvoke 执行,无流式 token 产出,不发送任何中间消息 - pass + # 非流式模式(渠道不支持消息编辑,但可能通过 astream 产出了 token 到 buffer) + if self._channel and settings.AI_AGENT_VERBOSE: + # 啰嗦模式:取出 Agent 文字 + 工具消息合并发送 + agent_message = ( + await self._stream_handler.take() if self._stream_handler else "" + ) + messages = [] + if agent_message: + messages.append(agent_message) + if tool_message: + messages.append(f"⚙️ => {tool_message}") + if messages: + merged_message = "\n\n".join(messages) + await self.send_tool_message(merged_message) logger.debug(f"Executing tool {self.name} with args: {kwargs}")