- 人工智能
- 大模型
- 强化学习
- AI Agent
- 微调
【免费下载链接】OpenClaw-RL
OpenClaw-RL: Train any agent simply by talking
本文是 OpenClaw-RL 仓库中
gui-rl子项目(桌面 GUI Agent 强化学习环境)的实操指南,围绕本地虚拟化提供者VirtualBox展开:从官方镜像下载、Windows 环境变量配置到VBoxManage命令验证,完整覆盖INSTALL_VITUALBOX.md的核心步骤;同时结合 virtualbox/provider.py 与 virtualbox/manager.py 的源码实现,深入讲解 VBoxManage 在 GUI-RL 训练/评估管线中的真实调用链,帮助你在一台本地机器上低成本搭建、校验并接入桌面 Agent 训练环境。
一、VirtualBox 在 GUI-RL 中的定位
OpenClaw-RL 的gui-rl目录训练并评估「桌面 GUI 智能体」:Vision-Language 模型(如 Qwen3-VL)通过截屏观察真实桌面,输出pyautogui键盘/鼠标动作,在一个由 VM 池服务器管理的虚拟机环境中执行任务。虚拟机的生命周期(开机、取 IP、保存/恢复快照、关机)统一抽象在desktop_env/providers/下的 Provider 与 VMManager 接口中。
根据 providers/init.py 的工厂函数create_vm_manager_and_provider,当传入provider_name="virtualbox"时,会实例化:
VirtualBoxVMManager(), VirtualBoxProvider(region)也就是说,VirtualBox 是 GUI-RL 支持的一种本地(非云端)虚拟化 provider,与 vmware、docker、aws、azure、aliyun、volcengine 等并列,可通过环境变量GUI_PROVIDER_NAME=virtualbox一键切换(见 env_pool_server.py)。
与云端 provider 不同的是,在 desktop_env.py 中,virtualbox(连同vmware)被标记为is_environment_used = True,意味着虚拟机会从「脏状态」启动,每次reset()都需要通过快照回滚来恢复初始环境——这正是 VirtualBox 快照功能在训练管线中承担的关键职责。
二、安装 VirtualBox(对应原文档三步流程)
步骤 1:下载 VirtualBox
前往 VirtualBox 官方下载页面下载与你宿主机操作系统匹配的安装包。VirtualBox 官方支持 Windows、macOS(Intel)、Linux 等主流平台。
⚠️重要限制:Apple 芯片(M1、M2 等)不支持 VirtualBox。原文档明确说明,对于搭载 Apple 芯片的 Mac,只能改用 VMware Fusion 作为替代虚拟化方案。这一限制在仓库源码中同样得到印证:manager.py 的
_install_vm中,当检测到宿主平台为 Darwin(macOS)时会直接抛出异常:
if platform.system() == 'Darwin': # macOS url = UBUNTU_ARM_URL raise Exception("MacOS host is not currently supported for VirtualBox.")即使用 Apple 芯片的 Mac 作为 GUI-RL 宿主,目前也无法通过 VirtualBox provider 创建训练用虚拟机。
步骤 2:安装 VirtualBox
运行安装包,按安装向导的提示完成安装即可。无需额外勾选特殊组件,默认安装即包含VBoxManage命令行工具。
Windows 专属配置:把安装路径加入PATH环境变量
在 Windows 上,安装程序默认不会把VBoxManage所在的目录加入系统PATH,这会导致后续命令行调用失败。需要手动将安装路径追加到PATH:
- 默认安装路径:
C:\Program Files\Oracle\VirtualBox - 追加方式:系统设置 → 环境变量 → 编辑用户/系统变量
Path→ 新建条目并填入上述路径 → 重启终端生效
仓库源码也特别保留了这条注意事项:provider.py 文件头注释明确指出:
Windows will not add command VBoxManage to PATH by default. Please add the folder where VBoxManage executable is in (Default should be "C:\Program Files\Oracle\VirtualBox" for Windows) to PATH.
而在 manager.py 中,VirtualBoxVMManager模块加载时会主动为 Windows 补全 PATH,避免导入即失败:
if platform.system() == 'Windows': vboxmanage_path = r"C:\Program Files\Oracle\VirtualBox" os.environ["PATH"] += os.pathsep + vboxmanage_pathLinux / macOS(Intel)用户安装后一般已可直接调用VBoxManage,若提示命令找不到,同样需要确认其所在目录(Linux 下通常为/usr/bin)已在PATH中。
步骤 3:验证安装是否成功
在终端中执行:
VBoxManage --version- 若安装成功且
PATH配置无误,会输出当前安装的 VirtualBox 版本号,例如7.0.18r162988; - 若提示
VBoxManage: command not found(或 Windows 下的不是内部或外部命令),则说明安装路径未正确加入PATH,请回到步骤 2 检查配置。
这一验证至关重要:GUI-RL 的 VirtualBox provider 全部功能都建立在VBoxManage命令行可用这一前提之上。下面从源码层面看它到底被调用了多少次。
三、VBoxManage 在 GUI-RL 源码中的真实调用链
3.1 Provider 层的核心命令(virtualbox/provider.py)
VirtualBoxProvider实现了 base.py 中Provider抽象类的五个方法,每个方法内部都是对VBoxManage的封装:
| Provider 方法 | 底层 VBoxManage 命令 | 用途 |
|---|---|---|
start_emulator | VBoxManage startvm <uuid>/VBoxManage startvm <uuid> --type headless | 启动虚拟机,headless=True时以后台无界面模式运行 |
get_ip_address | VBoxManage guestproperty get <uuid> /VirtualBox/GuestInfo/Net/0/V4/IP | 通过 Guest Additions 上报的客户机属性获取 VM 的 IPv4 地址 |
save_state | VBoxManage snapshot <uuid> take <snapshot_name> | 为当前状态创建命名快照 |
revert_to_snapshot | VBoxManage controlvm <uuid> savestate+VBoxManage snapshot <uuid> restore <snapshot_name> | 先保存状态、再回滚到指定快照,用于任务环境复位 |
stop_emulator | VBoxManage controlvm <uuid> savestate | 保存状态并停止虚拟机 |
其中几个关键细节值得注意:
- VM 标识解析:
_get_vm_uuid()(provider.py)接受三种输入——.vbox文件路径(解析其中的 XMLMachine元素的uuid属性)、VM UUID、或 VM 名称(通过VBoxManage list vms匹配),并优先通过VBoxManage list vms/list runningvms判断 VM 是否已在运行,避免重复启动。 - IP 获取依赖 Guest Additions:
get_ip_address读取/VirtualBox/GuestInfo/Net/0/V4/IP属性,若返回值为空会记录错误 "Have you installed the guest additions?" 并每 3 秒重试(WAIT_TIME = 3)。这意味着训练用的 Ubuntu 镜像必须预装 VirtualBox Guest Additions,否则环境无法连通。 os_type与region参数被忽略:为了与 AWS 等云端 provider 保持接口一致,start_emulator的os_type、stop_emulator的region参数对 VirtualBox 无效(源码中以注释说明)。
3.2 Manager 层的完整装机流程(virtualbox/manager.py)
当没有空闲虚拟机可用时,VirtualBoxVMManager.get_vm_path()会调用_install_vm()自动完成「从零装机」,其流程相当于一次自动化版的 VirtualBox 使用教程:
- 下载镜像:从 HuggingFace 数据集
xlangai/ubuntu_x86_virtualbox下载Ubuntu.zip(见常量UBUNTU_X86_URL),支持断点续传(Range请求头)与HF_ENDPOINT=hf-mirror.com镜像加速(manager.py); - 解压并导入:解压后用
VBoxManage import <Ubuntu.ovf> --vsys 0 --vmname <name> --settingsfile <name.vbox> --basefolder <dir> --unit 14 --disk <name_disk1.vmdk>导入 OVF 模板(manager.py); - 配置桥接网络:
VBoxManage modifyvm <vm> --nic1 bridged+--bridgeadapter1 <网卡名>,默认选择VBoxManage list bridgedifs输出的第一个桥接网卡(NAT 方案在源码中以注释形式保留但未启用); - 无界面启动:
VBoxManage startvm <vm> --type headless,最多重试 20 次; - 等待就绪:通过
VBoxManage guestproperty get <vm> /VirtualBox/GuestInfo/Net/0/V4/IP获取 IP,并轮询访问http://<ip>:5000/screenshot确认 VM 内的截图服务已启动; - 设置分辨率:
VBoxManage controlvm <vm> setvideomodehint 1920 1080 32,与 GUI-RL 默认的SCREEN_WIDTH=1920、SCREEN_HEIGHT=1080对齐; - 创建初始快照:
VBoxManage snapshot <vm> take init_state,即DesktopEnv默认回滚目标snapshot_name="init_state"。
由此可以看出:VBoxManage --version验证通过,是后续整个自动化装机、快照回滚与训练复位链路能够工作的地基。
3.3 VM 注册表与并发分配
VirtualBoxVMManager通过本地注册表文件.virtualbox_vms管理虚拟机分配状态:每行记录vm_path|free(空闲)或vm_path|<pid>(被某进程占用),配合FileLock保证并发安全(manager.py)。_check_and_clean还会周期性清理注册表中已失效的 PID 记录,并删除virtualbox_vm_data/下未注册的虚拟机目录。这意味着同一台宿主机可以同时维护多台 VirtualBox 虚拟机,供 GUI-RL 的 VM 池按需分配。
四、将 VirtualBox 接入 GUI-RL 训练/评估管线
4.1 通过环境变量切换 Provider
GUI-RL 的环境池服务器 env_pool_server.py 支持用命令行参数或环境变量指定 provider:
# 方式一:环境变量(与 gui_rl 系列脚本的 GUI_PROVIDER_NAME 约定一致) export GUI_PROVIDER_NAME=virtualbox export GUI_PATH_TO_VM="/path/to/your.vbox" # 可选:直接指定已有虚拟机 # 方式二:命令行参数 python env_pool_server.py --provider-name virtualbox \ --region local \ --screen-width 1920 \ --screen-height 1080 \ --prewarm-envs 1对应地,DesktopEnv(provider_name="virtualbox", ...)内部会调用create_vm_manager_and_provider完成装配,并在_start_emulator()中依次执行provider.start_emulator()→provider.get_ip_address()→ 建立PythonController/SetupController远程控制通道(desktop_env.py)。
4.2 相关参数速查
| 参数 / 环境变量 | 默认值 | 说明 |
|---|---|---|
--provider-name/GUI_PROVIDER_NAME | volcengine | 设为virtualbox启用本地虚拟机 provider |
--path-to-vm/GUI_PATH_TO_VM | 空(自动分配) | 指定.vbox文件路径、VM 名称或 UUID;不指定时由VirtualBoxVMManager自动创建 |
--region/GUI_REGION | us-east-1 | 对 VirtualBox 仅接受None或local(见_add_vm断言),同时作为桥接网卡名传入_install_vm |
--screen-width/height | 1920×1080 | 需与 VM 内分辨率(setvideomodehint设置值)匹配 |
--headless | 关闭 | 开启后以VBoxManage startvm --type headless无界面运行 |
GUI_POOL_MAX_ENVS | 64 | VM 池最大并发环境数,本地场景建议按宿主机资源调小 |
GUI_PREWARM_ENVS | 0 | 启动时预热的 VM 数量,用于消除训练冷启动延迟 |
注意:VirtualBox 管理器目前仅支持 Ubuntu客户机(
get_vm_path中os_type != "Ubuntu"会抛出ValueError: Only support Ubuntu for now.),这与 desktop_env.py 默认的os_type="Ubuntu"一致。
五、常见问题排查
基于源码中实际的错误处理路径,安装或运行时最可能遇到的问题如下:
VBoxManage: command not found原因:安装目录未加入PATH(Windows 最常见)。解决:按本文步骤 2 将C:\Program Files\Oracle\VirtualBox追加到PATH并重启终端;Linux 下检查/usr/bin或自定义安装路径。VM IP address not found. Have you installed the guest additions?原因:客户机未安装 VirtualBox Guest Additions,导致guestproperty get .../V4/IP无返回值。解决:在 Ubuntu 虚拟机内安装增强功能并重启,确认网络为桥接模式(manager 已默认配置--nic1 bridged)。MacOS host is not currently supported for VirtualBox.原因:宿主机是 macOS(Darwin),VirtualBox provider 在源码层面明确不支持。解决:改用 VMware Fusion(与仓库的 vmware provider 配合)或换用 Windows / Linux 宿主。Only support Ubuntu for now.原因:get_vm_path传入的os_type不是Ubuntu。解决:保持默认的 Ubuntu 镜像,或自行预置 Ubuntu 虚拟机后通过GUI_PATH_TO_VM指定。首次分配耗时较长原因:
VirtualBoxVMManager在无空闲 VM 时需要走「下载镜像 → 导入 OVF → 配置网络 → 启动 → 等待就绪 → 打快照」全流程(manager 中多次输出 ☕ 等待日志)。解决:训练前预先通过GUI_PREWARM_ENVS预热 VM 池,或手动先创建好.vbox并指定GUI_PATH_TO_VM。
六、总结
在 OpenClaw-RL 的 GUI-RL 桌面智能体训练体系中,VirtualBox 提供了一条无需云端账号、完全本地运行的虚拟机提供路径。其接入门槛只有三步:从官方渠道下载并安装 VirtualBox、在 Windows 上补齐PATH、用VBoxManage --version确认命令行可用。一旦验证通过,后续的 VM 自动创建、桥接网络、IP 获取、快照回滚(init_state)全部由 virtualbox/provider.py 与 virtualbox/manager.py 中的VBoxManage调用链自动完成,最终通过GUI_PROVIDER_NAME=virtualbox无缝接入 env_pool_server.py 管理的 VM 池,为 RL 训练提供可随时复位、干净一致的桌面测试环境。
- 人工智能
- 大模型
- 强化学习
- AI Agent
- 微调
【免费下载链接】OpenClaw-RL
OpenClaw-RL: Train any agent simply by talking
相关推荐
OpenClaw-RL GUI-RL 阿里云 ECS Provider 配置实战:从 OSWorld 桌面环境到 RL 训练基础设施
OpenClaw RL GUI RL 阿里云 ECS Provider 配置实战:从 OSWorld 桌面环境到 RL 训练基础设施 本篇指南面向需要在阿里云
人工智能大模型强化学习AI Agent微调OpenClaw-RL 阿里云 ECS 提供商实战指南:为 GUI-RL 桌面智能体搭建 OSWorld 云上环境
OpenClaw RL 阿里云 ECS 提供商实战指南:为 GUI RL 桌面智能体搭建 OSWorld 云上环境 本指南面向希望在阿里云 ECS 上运行 OS
人工智能大模型强化学习AI Agent微调OpenClaw-RL GUI 桌面环境评估器搭建指南:从系统配置到 compare_table 规则引擎实战
OpenClaw RL GUI 桌面环境评估器搭建指南:从系统配置到 compare_table 规则引擎实战 导读 本文是 OpenClaw RL 项目中 g
人工智能大模型强化学习AI Agent微调
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考