From 8849b8da11db118a95e884bb6be43d01c52c0598 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 22 Aug 2026 19:42:01 +0800 Subject: [PATCH] fix: recreate terminal manager after shutdown --- app/agent/tools/impl/_terminal_session.py | 8 ++++++++ app/agent/tools/impl/execute_command.py | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/agent/tools/impl/_terminal_session.py b/app/agent/tools/impl/_terminal_session.py index 6c602471d..be57e2b7f 100644 --- a/app/agent/tools/impl/_terminal_session.py +++ b/app/agent/tools/impl/_terminal_session.py @@ -721,3 +721,11 @@ class _TerminalSessionManager: terminal_session_manager = _TerminalSessionManager() + + +def get_terminal_session_manager() -> _TerminalSessionManager: + """返回当前进程的终端会话管理器,避免复用已完成关停的实例。""" + global terminal_session_manager + if terminal_session_manager._closed: + terminal_session_manager = _TerminalSessionManager() + return terminal_session_manager diff --git a/app/agent/tools/impl/execute_command.py b/app/agent/tools/impl/execute_command.py index 591ba5660..a3bc9568e 100644 --- a/app/agent/tools/impl/execute_command.py +++ b/app/agent/tools/impl/execute_command.py @@ -21,7 +21,7 @@ from app.agent.tools.impl._terminal_session import ( TERMINAL_DEFAULT_READ_BYTES, TERMINAL_MAX_READ_BYTES, TERMINAL_WAIT_DEFAULT_MS, - terminal_session_manager, + get_terminal_session_manager, ) from app.runtime.log import logger @@ -528,6 +528,7 @@ class ExecuteCommandTool(MoviePilotTool): ) try: + terminal_session_manager = get_terminal_session_manager() if normalized_action == "start": start_command = self._require_command(command) self._validate_command(