feat(agent): 添加reset方法支持流式消息原地更新

This commit is contained in:
jxxghp
2026-03-28 23:08:06 +08:00
parent bfea0174dd
commit f70eaf9363
2 changed files with 15 additions and 2 deletions

View File

@@ -98,6 +98,19 @@ class StreamingHandler:
self._message_response = None
self._msg_start_offset = 0
def reset(self):
"""
重置缓冲区,清空已发送的文本从头更新,但保持消息编辑能力。
与 clear 的区别:
- clear完全重置所有状态后续会开新消息
- reset只清空buffer保留消息编辑状态后续继续编辑同一条消息
"""
with self._lock:
self._buffer = ""
self._sent_text = ""
self._msg_start_offset = 0
async def start_streaming(
self,
channel: Optional[str] = None,

View File

@@ -59,8 +59,8 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta):
if tool_message:
self._stream_handler.emit(f"\n\n⚙️ => {tool_message}\n\n")
else:
# 非VERBOSE不输出最后结果前的消息
self._stream_handler.clear()
# 非VERBOSE重置缓冲区从头更新,保持消息编辑能力
self._stream_handler.reset()
else:
# 非流式渠道:保持原有行为,取出 Agent 文字 + 工具消息合并独立发送
agent_message = (