From 8755688c8e9830f43d43b22d5290a95529257ca2 Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Sun, 14 Dec 2025 17:38:03 +0800 Subject: [PATCH] feat: enhance virtual monitor command/python playback --- modules/terminal_ops.py | 14 + .../components/chat/VirtualMonitorSurface.vue | 50 +++- .../chat/monitor/MonitorDirector.ts | 257 +++++++++++++++++- static/src/composables/useLegacySocket.ts | 25 ++ .../components/chat/_virtual-monitor.scss | 152 +++++++++++ 5 files changed, 484 insertions(+), 14 deletions(-) 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 @@ +