From 17373bc0fe0b395dae04cf3caaeb426070f5a327 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 24 Mar 2026 20:21:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96Agent=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=8E=92=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/agent/callback/__init__.py | 3 +++ app/agent/tools/base.py | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/agent/callback/__init__.py b/app/agent/callback/__init__.py index 21d327a6..b2ef68a1 100644 --- a/app/agent/callback/__init__.py +++ b/app/agent/callback/__init__.py @@ -61,6 +61,9 @@ class StreamingHandler: 接收 LLM 流式 token,积累到缓冲区。 """ with self._lock: + # 如果存量消息结束是两个换行,则去掉新消息前面的换行,避免过多空行 + if self._buffer.endswith("\n\n") and token.startswith("\n"): + token = token.lstrip("\n") self._buffer += token async def take(self) -> str: diff --git a/app/agent/tools/base.py b/app/agent/tools/base.py index 8afb0f7b..66713879 100644 --- a/app/agent/tools/base.py +++ b/app/agent/tools/base.py @@ -53,7 +53,7 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta): if self._stream_handler and self._stream_handler.is_streaming: # 流式渠道:工具消息直接追加到 buffer 中,与 Agent 文字合并为同一条流式消息 if tool_message: - self._stream_handler.emit(f"\n⚙️ => {tool_message}\n") + self._stream_handler.emit(f"\n\n⚙️ => {tool_message}\n\n") else: # 非流式渠道:保持原有行为,取出 Agent 文字 + 工具消息合并独立发送 agent_message = ( @@ -67,7 +67,7 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta): messages.append(f"⚙️ => {tool_message}") if messages: - merged_message = "\n".join(messages) + merged_message = "\n\n".join(messages) await self.send_tool_message(merged_message) logger.debug(f"Executing tool {self.name} with args: {kwargs}")