AI智能体训练新范式:远程沙箱中基于OpenCode的强化学习实践

1 阅读

从智能体运行中学习:一种新的训练范式

在人工智能领域,训练编码智能体通常意味着训练者需要亲自驱动整个交互循环:采样一个回合,解析工具调用,执行它们,然后将结果反馈给模型。这种方法虽然有效,但训练出的模型往往与最终部署的智能体行为存在差异。

现在,TRL与OpenEnv的集成带来了一种全新的思路——循环拥有(loop-owning)模式。在这种模式下,智能体(如OpenCode)完全自主运行其工具循环,而训练者则从旁观察并学习。这种范式转变使得训练过程更加贴近实际应用场景,因为模型学习的是智能体真实产生的行为序列。

01_hero_pipeline

架构解析:四个关键组件

整个训练系统由四个核心组件构成,它们通过TRL和OpenEnv紧密协作:

沙箱中的智能体

每个训练样本(rollout)都在一个独立的OpenEnv会话中运行,这是一个隔离的容器环境,拥有自己的文件系统和进程。容器从预构建的Docker镜像启动,其中包含了完整的智能体工具链。智能体在真实的工作空间中执行任务,就像在实际部署环境中一样。

thumbnail_datacenter

透明代理:捕获每一个令牌

这是整个系统的关键创新点。代理位于智能体和vLLM服务器之间,记录每一次模型调用的令牌ID和对数概率。这意味着训练数据完全基于智能体实际生成的令牌,无需重新分词或猜测,确保了训练信号的准确性。

隐藏测试验证器

奖励函数完全由任务决定。在我们的示例中,使用DeepCoder数据集,每个问题都有隐藏测试集(智能体从未见过)。智能体需要编写solution.py文件,奖励则基于通过隐藏测试的比例。这种设计确保了奖励的客观性和挑战性。

训练器:从记录中学习

当智能体完成运行后,TRL从记录的回合中重建训练样本,并执行GRPO算法。奖励通过组相对优势传播到所有被训练的令牌上,实现了高效的策略优化。

远程沙箱:扩展训练规模

本地子进程方式虽然可行,但受限于单机资源。为了扩展训练规模,我们将每个rollout放在远程Hugging Face沙箱中运行,通过统一的沙箱后端进行管理。

from opencode_env.sandbox import HFSandboxBackend

factory = OpenCodeSessionFactory(
    config=config,
    sandbox_backend=HFSandboxBackend(image="ghcr.io/huggingface/openenv-opencode-sandbox:latest"),
    mode="transparent_proxy",
    verifier=DeepCoderStdinVerifier(tests_by_id),
)

预构建的镜像避免了每次rollout的冷启动安装,使得每个沙箱都能快速启动并并发运行。

关键配置:两个vLLM URL

远程rollout带来一个必须注意的细节:训练器和vLLM在同一节点上,通过NCCL同步权重,因此使用localhost地址。但远程沙箱无法访问localhost,它们需要从外部访问同一个vLLM服务。

因此,需要配置两个URL:

  • vllm-url:训练器到vLLM,用于权重同步
  • sandbox-vllm-url:沙箱到vLLM,必须是可访问的端点(如公共vLLM或隧道)

这个配置是远程训练成功的关键。

在Hugging Face Jobs上运行

Hugging Face Jobs允许提交单个脚本,因此我们创建了一个启动器来封装三个步骤:启动vLLM、建立隧道、运行训练器。

hf jobs uv run --flavor h200x2 --secrets HF_TOKEN --timeout 7200s launcher.py

在作业内部,启动器配置好两个URL并运行训练脚本。值得注意的是,远程沙箱使用cpu-basic规格,成本极低(约每小时0.01美元),因此大量rollout的成本可控。

实际训练结果

我们使用Qwen3-8B模型,在32个问题上运行了10步训练。奖励从约0.27提升到0.71,虽然存在噪声,但整体呈上升趋势。reward_std保持在0.4-0.5之间,表明GRPO有足够的组内信号进行学习。

02_our_trackio_reward

这个短训练运行证明了整个流程的可行性,模型确实从智能体产生的令牌中学习到了改进策略。

挑战与解决方案

远程沙箱带来了额外的运维复杂性:沙箱可能启动缓慢、中途出错或运行后残留。因此,需要妥善管理沙箱生命周期,处理失败情况。

另一个安全问题是vLLM暴露。启动器创建的隧道是未认证的公共端点,仅适用于演示。对于生产环境,应使用访问控制的vLLM服务。

经验教训与未来方向

我们最初尝试使用Qwen3-4B模型,但训练不稳定,奖励在几轮后崩溃。改用Qwen3-8B后,模型能够解决足够多的问题,奖励得以稳步提升。这表明模型容量对训练成功至关重要。

当前版本是手动配置的,未来将基于Harbor进行重构,支持更多智能体(如Claude Code、Codex等)和沙箱后端,实现统一训练路径。

资源与参考

这种训练范式为编码智能体的强化学习开辟了新的可能性,让模型能够从真实行为中学习,更贴近实际应用。随着工具链的不断完善,这一方法有望成为智能体训练的主流方式。