diff --git a/modules/terminal_ops.py b/modules/terminal_ops.py index 6503e64..f35a7e3 100644 --- a/modules/terminal_ops.py +++ b/modules/terminal_ops.py @@ -42,6 +42,15 @@ class TerminalOperator: print(f"{OUTPUT_FORMATS['info']} 检测到Python命令: {self.python_cmd}") self._toolbox: Optional[ToolboxContainer] = None self.container_session: Optional["ContainerHandle"] = container_session + + def _reset_toolbox(self): + """强制关闭并重建工具终端,保证每次命令/脚本运行独立环境。""" + if self._toolbox: + try: + self._toolbox.shutdown() + except Exception: + pass + self._toolbox = None def _detect_python_command(self) -> str: """ @@ -137,6 +146,8 @@ class TerminalOperator: Returns: 执行结果字典 """ + # 每次执行前重置工具容器,防止上一条命令的输出/状态干扰 + self._reset_toolbox() # 替换命令中的python3为实际可用的命令 if "python3" in command and self.python_cmd != "python3": command = command.replace("python3", self.python_cmd) @@ -296,6 +307,9 @@ class TerminalOperator: 执行结果字典 """ timeout = timeout or CODE_EXECUTION_TIMEOUT + + # 强制重置工具容器,避免上一段代码仍在运行时输出混入 + self._reset_toolbox() # 创建临时Python文件 temp_file = self.project_path / ".temp_code.py" diff --git a/static/src/components/chat/VirtualMonitorSurface.vue b/static/src/components/chat/VirtualMonitorSurface.vue index 0b1d374..a4b39d2 100644 --- a/static/src/components/chat/VirtualMonitorSurface.vue +++ b/static/src/components/chat/VirtualMonitorSurface.vue @@ -89,6 +89,32 @@ +