Simplify the logic for Docker provider

This commit is contained in:
yuanmengqi
2025-07-23 17:19:47 +00:00
parent fd7381210e
commit 0a2929137b

View File

@@ -163,7 +163,6 @@ class DesktopEnv(gym.Env):
self.vlc_port = 8080
# Initialize with default (no proxy) provider
self.current_use_proxy = False
self.manager, self.provider = create_vm_manager_and_provider(provider_name, region, use_proxy=False)
self.os_type = os_type
@@ -194,15 +193,8 @@ class DesktopEnv(gym.Env):
self.require_terminal = require_terminal
# Initialize emulator and controller
# Docker provider needs delayed initialization due to container lifecycle
if provider_name == "docker":
logger.info("Docker provider detected - will initialize on first reset()")
# Initialize controllers as None for Docker - they'll be set up in reset()
self.controller = None
self.setup_controller = None
else:
logger.info("Initializing...")
self._start_emulator()
logger.info("Initializing...")
self._start_emulator()
# mode: human or machine
self.instruction = None
@@ -232,6 +224,7 @@ class DesktopEnv(gym.Env):
# Get the ip from the virtual machine, and setup the controller
vm_ip_ports = self.provider.get_ip_address(self.path_to_vm).split(':')
self.vm_ip = vm_ip_ports[0]
# Get the ports from the virtual machine (for Docker provider only)
if len(vm_ip_ports) > 1:
self.server_port = int(vm_ip_ports[1])
self.chromium_port = int(vm_ip_ports[2])
@@ -271,17 +264,6 @@ class DesktopEnv(gym.Env):
self.action_history.clear()
for attempt in range(MAX_RETRIES):
# Check and handle proxy requirement changes BEFORE starting emulator
if task_config is not None:
# Only consider task proxy requirement if proxy is enabled at system level
task_use_proxy = task_config.get("proxy", False) and self.enable_proxy
if not self.enable_proxy and task_config.get("proxy", False):
logger.info("Task requires proxy but proxy is disabled at system level, ignoring proxy requirement.")
if task_use_proxy != self.current_use_proxy:
# keep because get_info_from_website depend on this
self.current_use_proxy = task_use_proxy
# Only revert to snapshot if environment has been used (step/setup)
# This optimization is especially important for cloud providers like AWS
# where unnecessary snapshot operations are costly and time-consuming
@@ -295,11 +277,6 @@ class DesktopEnv(gym.Env):
self.is_environment_used = False
else:
logger.info("Environment is clean, skipping snapshot revert (provider: {}).".format(self.provider_name))
# Initialize Docker provider controllers if not already done
if self.provider_name == "docker" and self.controller is None:
logger.info("Initializing Docker provider controllers...")
self._start_emulator()
if task_config is not None:
if task_config.get("proxy", False) and self.enable_proxy: