Microsoft Torna o Orchard Open Source: Um Serviço de Sandbox para K8s Que Treinou um Agente com 3B de Parâmetros Ativos a Resultados SWE de Fronteira

Microsoft Torna o Orchard Open Source: Um Serviço de Sandbox para K8s Que Treinou um Agente com 3B de Parâmetros Ativos a Resultados SWE de Fronteira

Na semana passada, a Microsoft disponibilizou o Orchard por completo sob a licença MIT — um framework construído especificamente para treinar e avaliar agentes. O resultado que chama a atenção: o Qwen3.5-35B-A3B, um modelo com aproximadamente 3 bilhões de parâmetros ativos, alcançou 69,7% no SWE-bench Verified — 73,0% após reranking com modelo de valor — aproximando-se de sistemas de fronteira com mais de dez vezes o seu número de parâmetros. E ainda vem acompanhado de: 107.000 trajetórias de treinamento SWE e as receitas de treinamento completas que as produziram.

Para desenvolvedores, o significado prático vai além de um único benchmark. Treinar seu próprio agente de código, agente GUI ou assistente pessoal não exige mais construir infraestrutura de sandbox do zero — a camada de ambiente, os dados e os scripts de treinamento já existem, prontos para rodar.

A Ideia Central: Uma Fundação, Três Receitas

A filosofia de design do Orchard é fácil de resumir: tratar o ambiente como uma camada de serviço estável, e não como uma parte descartável do stack de treinamento. Todas as receitas compartilham a mesma fundação, e destilação, RL on-policy e avaliação reutilizam toda a cadeia.

A fundação: Orchard Env, um serviço de sandbox nativo do Kubernetes

  • Uma API REST limpa cobre todo o ciclo de vida do sandbox — criar, executar, arquivos, patch, deletar — em um protocolo com o qual qualquer linguagem pode se comunicar.
  • Um SDK Python oferece modos síncrono e assíncrono com retries, limpeza automática e context managers embutidos.
  • Qualquer imagem base funciona. O agente é injetado por meio de um init container que carrega seu próprio interpretador Python — sua imagem nem precisa ter Python instalado.
  • Harnesses vêm pré-instalados: codex, claude, pi, opencode e hermes estão no PATH de todos os sandboxes. Trocar de harness significa trocar um comando, não reconstruir uma imagem.
  • Isolamento e controle de custos são padrão: o NetworkPolicy do Calico bloqueia o tráfego de saída por padrão, cada sandbox recebe limites de CPU, memória e timeout, TTLs fazem a limpeza de resíduos, e chaves de API controlam o acesso.

Os números oficiais de desempenho comprovam a tese: latência média de execução de comandos de 0,28 segundos, contra 0,747s do E2B e 2,046s do Modal. Subir 1.000 sandboxes em paralelo teve 100% de sucesso em 26 segundos de ponta a ponta. Rodar 128 sandboxes por 240 horas custa US$ 3.362 on-demand ou US$ 673 em instâncias spot — uma diferença de cerca de dez vezes — enquanto serviços gerenciados de sandbox cobram de US$ 7.078 a US$ 10.305 pela mesma carga de trabalho.

Três receitas, três agentes

ReceitaModelo baseDados de treinamentoTécnicas-chaveResultado principal
Orchard-SWEQwen3.5-35B-A3B107K trajetórias destiladasSFT com atribuição de crédito, rollout adaptativo balanceado, destilação on-policy, recompensas de processo baseadas em rubricas, reranking com modelo de valor73,0% no SWE-bench Verified
Orchard-GUIQwen3-VL-4B-Thinking0,4K SFT + 2,2K tarefas RLPrimeiro destilar, depois RL online em sites reais68,4% de média (74,1 / 67,0 / 64,0)
Orchard-ClawQwen3-30B-A3B-Thinking0,2K tarefas sintéticasTarefas sintetizadas pelo Opus, treinado em dois harnesses59,6% pass@3 (73,9% sob ZeroClaw)

Os números de generalização falam mais alto que as pontuações de destaque. O Orchard-SWE mantém 51,0 no SWE-bench Multilingual, onde o OpenSWE-32B alcança apenas 28,7. Transferido para o harness Kimi-CLI — que ele nunca viu durante o treinamento — ainda pontua 45,0, enquanto o OpenSWE-32B desaba para 3,6. E o Orchard-Claw ganha +14,3 pass@3 ao ser atualizado para o harness ZeroClaw, mais forte. Treinar contra ambientes agnósticos ao harness é o que torna a transferência de capacidades possível.

O problema mais difícil: atribuição de crédito

O modelo de ambiente atual é linear: um sandbox é criado, conduzido por N turnos e destruído. Uma trajetória gera uma única recompensa final que precisa ser distribuída por uma média de 47,5 turnos. O artigo contorna isso indiretamente com estimativa de valor retrospectiva; o roteiro aponta para algo melhor — snapshots (pausar e retomar), branching (bifurcar k continuações a partir de um mesmo estado) e compartilhamento de prefixos, transformando o valor de cada turno de uma inferência em uma medição. Esses primitivos entram direto na camada de ambiente, e são o núcleo do próximo ciclo de pesquisa.

Dez Minutos até um Sandbox em Execução

# 1. Instale (SDK puro em Python, no diretório orchard_env)
pip install -e "orchard_env[dev]"

# 2. Aponte para o seu orquestrador (ainda não tem um? A documentação
#    ensina a subir um no AKS em cerca de 20 minutos)
export SANDBOX_BASE_URL="http://your-orchestrator-host"
export SANDBOX_API_KEY="your-api-key"

# 3. Crie um sandbox, execute um comando, leia a saída
from orchard_env import SandboxClient

with SandboxClient() as client:          # lê as variáveis de ambiente acima
    with client.create_sandbox("python:3.11-slim") as sandbox:
        result = sandbox.exec("echo 'Hello, Orchard!'")
        print(result.stdout)             # Hello, Orchard!

Sem cluster? Quatro scripts sobem um no Azure AKS — provisionamento, build e push das imagens, deploy e teste de fumaça — em cerca de vinte minutos. Clusters fora do Azure e estimativas de custo estão em orchard_env/docs/deployment.md.

Quer treinar seu próprio agente SWE? O dataset e o stack de treinamento também estão disponíveis:

# Dataset: huggingface.co/datasets/microsoft/Orchard
# subset swe: 107.185 trajetórias SWE multi-turno
#   (19.287 instâncias de tarefa / 2.788 repositórios, com
#    rótulos de solução verificados: 74.649 resolvidas / 32.536 não resolvidas)
# subset gui: 3.070 trajetórias de navegação web anotadas com
#   capturas de tela (409 tarefas do WebVoyager)
#
# Treinador: trainer/slime/ (um fork do slime da THUDM)
#   scripts de RL em trainer/slime/examples/orchard/
#   todas as mudanças locais documentadas em ORCHARD_CHANGES.md

Conselhos Práticos

  • Para reproduzir os resultados: comece pelo modelo base Qwen3.5-35B-A3B com o dataset microsoft/Orchard, execute o exemplo orchard do treinador slime e siga a ordem do artigo — SFT com atribuição de crédito, depois destilação on-policy, depois RL.
  • Para reduzir custos: rode avaliação e replay em instâncias spot. 128 sandboxes por 240 horas a US$ 673 custam uma ordem de grandeza menos que serviços gerenciados de sandbox.
  • Para eliminar o descompasso entre treino e deploy: veja o trabalho complementar de RL do OpenForge (arXiv:2607.21557), que treina dentro de harnesses reais — ZeroClaw, OpenClaw, Codex — em vez de reimplementações simplificadas.
  • Para validar rapidamente: deixe o Kubernetes de lado por ora. Leia a documentação do SDK e da API REST (docs/sdk.md, docs/api.md) e integre o SDK ao seu próprio projeto primeiro.

Por Que Isso Importa

A verdadeira contribuição do Orchard não é um número em ranking. É a tese — agora demonstrada — de que a camada de ambiente é o lugar certo para investir quando agentes se tornam algo sério: um serviço estável, mensurável e versionável que toda receita downstream reutiliza. Checkpoints de modelos expiram; um bom ambiente acumula valor. Com a fundação, três receitas comprovadas, um dataset de 107 mil trajetórias e o stack de treinamento todos públicos, o gargalo para treinar um agente de código confiável acabou de migrar da infraestrutura de volta para as ideias.

O projeto está em github.com/microsoft/Orchard, o artigo em arXiv:2605.15040, os dados no Hugging Face, e o relato da própria Microsoft no blog do Microsoft Research.

Notícias Relacionadas