refactor: 优化工具消息发送逻辑

This commit is contained in:
jxxghp
2026-03-28 22:38:20 +08:00
parent 296d815e3e
commit bfea0174dd
+19 -18
View File
@@ -44,8 +44,6 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta):
3. 调用具体工具逻辑(子类实现的 execute 方法) 3. 调用具体工具逻辑(子类实现的 execute 方法)
4. 持久化工具结果到会话记忆 4. 持久化工具结果到会话记忆
""" """
# 判断是否为后台任务模式(无渠道信息,如定时唤醒)
is_background = not self._channel and not self._source
# 获取工具执行提示消息 # 获取工具执行提示消息
tool_message = self.get_tool_message(**kwargs) tool_message = self.get_tool_message(**kwargs)
@@ -54,27 +52,30 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta):
if explanation: if explanation:
tool_message = explanation tool_message = explanation
if not is_background and settings.AI_AGENT_VERBOSE: # 发送工具执行过程消息
# 非后台模式:发送工具执行过程消息 if self._stream_handler and self._stream_handler.is_streaming:
if self._stream_handler and self._stream_handler.is_streaming: if settings.AI_AGENT_VERBOSE:
# 流式渠道:工具消息直接追加到 buffer 中,与 Agent 文字合并为同一条流式消息 # VERBOSE:工具消息直接追加到 buffer 中,与 Agent 文字合并为同一条流式消息
if tool_message: if tool_message:
self._stream_handler.emit(f"\n\n⚙️ => {tool_message}\n\n") self._stream_handler.emit(f"\n\n⚙️ => {tool_message}\n\n")
else: else:
# 非流式渠道:保持原有行为,取出 Agent 文字 + 工具消息合并独立发送 # 非VERBOSE,不输出最后结果前的消息
agent_message = ( self._stream_handler.clear()
await self._stream_handler.take() if self._stream_handler else "" else:
) # 非流式渠道:保持原有行为,取出 Agent 文字 + 工具消息合并独立发送
agent_message = (
await self._stream_handler.take() if self._stream_handler else ""
)
messages = [] messages = []
if agent_message: if agent_message:
messages.append(agent_message) messages.append(agent_message)
if tool_message: if tool_message:
messages.append(f"⚙️ => {tool_message}") messages.append(f"⚙️ => {tool_message}")
if messages: if messages:
merged_message = "\n\n".join(messages) merged_message = "\n\n".join(messages)
await self.send_tool_message(merged_message) await self.send_tool_message(merged_message)
logger.debug(f"Executing tool {self.name} with args: {kwargs}") logger.debug(f"Executing tool {self.name} with args: {kwargs}")