Orchard: An Open-Source Agentic Modeling Framework

Paper: arXiv:2605.15040 Code: microsoft/Orchard Code reference: readme-only @ c1bcdc16 (2026-05-14) Dataset: microsoft/Orchard

1. Motivation (研究动机)

Agentic modeling 的目标不是只让 LLM 生成文本,而是把模型训练成能在外部环境中多轮规划、调用工具、观察反馈并完成任务的 autonomous agent。论文指出当前开放研究的主要瓶颈在两层:一层是系统层,高性能 agent 往往依赖闭源 harness、托管 sandbox、私有训练系统或专有服务;另一层是训练层,很多开源项目集中在 agent orchestration / prompt harness,却没有提供可复用的大规模 trajectory distillation、on-policy RL rollout、评测与数据发布链路。

具体问题有三点:第一,软件工程、浏览器导航、个人助理这些任务需要不同 Docker image、工具接口、截图或文件系统状态,单一 harness 很容易把模型训练到某个格式里,导致换 harness 后崩溃。第二,长轨迹任务 reward 稀疏,SFT 只模仿成功轨迹会丢掉大量失败但有探索价值的 partial progress;RL 固定采样 条 rollout 又会把算力浪费在全成功或全失败的 prompt 上。第三,环境服务如果绑定 trainer、scheduler 或 agent harness,数据、recipe 和模型就很难跨任务复用。

Orchard 要解决的是:构建一个薄的、Kubernetes-native、harness-agnostic environment layer,并在它上面展示三条可复用 agentic training recipe:Orchard-SWE、Orchard-GUI、Orchard-Claw。这个问题值得研究,因为一旦环境层能稳定提供 sandbox lifecycle、command execution、file I/O、network policy 和 REST API,SFT、RL rollout、评测、不同 harness 与不同任务域就可以共享同一套基础设施,开源社区也更容易复现实验、迁移数据和比较训练方法。

Figure 1 解读:左图把 SWE-bench Verified resolve rate 放在参数规模轴上,Orchard-SWE SFT+RL 用 30B-A3B 规模达到 67.5%,接近大 10–30 倍的 frontier MoE。右图显示 Orchard-GUI 以 4B VLM backbone 达到 WebVoyager / Online-Mind2Web / DeepShop 平均 68.4%,接近 Gemini computer-use-preview 的 69.3%,强调论文的核心动机:如果 environment layer 和训练 recipe 做对,小模型也能在 agentic task 上接近大模型或闭源系统。

2. Idea (核心思想)

核心 insight 是:agent 能力训练的可复用边界不应放在某个 harness 或 trainer 内,而应下沉到一个薄的 environment service。Orchard Env 只负责 sandbox 生命周期、执行、文件、网络隔离与 API;trajectory collection、SFT、RL、evaluation 和 harness 都在它上层组合,因此同一个环境层可以服务 SWE、GUI 和 Claw 三个很不同的 agentic domain。

关键创新是把“开源 agent 框架”从常见的 prompt/harness 编排推进到可训练的 agentic modeling stack:SWE 中用 credit-assignment SFT 学失败轨迹的 rise segment,用 BAR 提升稀疏 reward RL 的信息密度;GUI 中用少量高质量 browser trajectory + judge-grounded RL 训练 4B VLM;Claw 中用合成 workflow 任务和跨 harness 训练验证技能迁移。

与 E2B / Daytona 这类 managed sandbox service 相比,Orchard Env 强调 self-host、Kubernetes-native 和低成本;与 MegaFlow / ProRL Agent 这类 rollout/training infrastructure 相比,它不是把环境管理耦合进 trainer,而是保持独立 REST service;与 Browser-Use、OpenHands 等 harness 相比,它不规定 agent loop 和 tool schema,而是让多个 harness 都能复用同一 sandbox substrate。

更深一层看,Orchard 的方法论把 agentic modeling 拆成三个可迁移层次:第一层是 environment substrate,保证所有任务都能被 sandbox、执行、回收和审计;第二层是 trajectory substrate,把 teacher rollout、失败轨迹、judge verdict 和 harness trace 都保存成可训练数据;第三层是 optimization substrate,用 SFT 给模型初始 tool-use prior,再用环境真实反馈做 RL。这样的分层使 SWE 的 bash/file-edit loop、GUI 的 Playwright screenshot loop、Claw 的 productivity-tool loop 可以共享同一套基础设施,但不强迫它们共享同一个 agent prompt 或 tool schema。

3. Method (方法)

3.1 Overall framework: Orchard Env 作为薄环境层

Figure 2 解读:图中间的 Orchard Env 是核心抽象,向上连接 trajectory distillation、SFT、RL rollout 和 evaluation,向下连接 SWE Docker、browser sandbox、Claw tool environments 等异构任务环境。顶层的 Orchard-SWE、Orchard-GUI、Orchard-Claw 不是三个独立系统,而是三种使用同一 Env primitive 的 recipe:它们共享 sandbox lifecycle / execution / file / network API,但各自拥有不同 harness、teacher、reward 和 model backbone。

Orchard Env 的设计目标可以概括为三个 requirement:

  • Thin, standalone service boundary:环境管理从 agent harness、model serving、training orchestration 中拆出来,调用方只依赖稳定 API。
  • Low-cost image compatibility:通过 runtime agent injection 支持任意任务 Docker image,不要求为每个 SWE repository 或 browser task 重建镜像。
  • Accessible and cost-practical at scale:运行在标准 Kubernetes / cloud VM 上,能使用 autoscaling 和 spot instance,避免托管 sandbox 的高额长时 rollout 成本。

3.2 Orchard Env architecture

Figure 3 解读:架构分成 Python SDK、FastAPI orchestrator、in-pod agent 三层。冷路径(Pod create/delete/readiness)走 Kubernetes API server;热路径(exec / file / health)直接通过 Pod IP 访问 sandbox 内部的 lightweight FastAPI agent,避免 kubectl exec 和 WebSocket setup 的开销。这个设计让生命周期管理保持中心化,但命令执行不被 Kubernetes control plane 卡住。

三个组件的职责如下:

  • Client SDK:提供 SandboxClient / AsyncSandboxClient,支持创建 sandbox、命令执行、文件上传下载、patch 应用、context-manager 自动清理、heartbeat 和 retry。
  • Orchestrator:FastAPI Deployment,多副本可选 Redis backend;把 POST /sandboxes 转成 Pod spec,注入 init container、resource limit、NetworkPolicy、readiness probe;PodWatcher 用 Kubernetes LIST+WATCH 缓存状态,ExecManager 把执行请求路由到具体 Pod IP,并用 per-sandbox lock 序列化同一 sandbox 的并发请求。
  • In-pod agent:运行在 sandbox container 内的轻量 FastAPI server,暴露 /exec、file upload/download/list 和 health endpoint;命令超时会 kill 整个 process group;只在 cluster internal network 可达。

直觉上,Orchard Env 能同时支持大规模训练和跨 domain 复用,是因为它把“环境中发生了什么”变成了一组很窄的 primitive,而不是把某个 agent loop 写进基础设施。SWE harness 可以把 bash/file edit/submit 封装在上层,GUI harness 可以把 Playwright 操作和截图观察封装在上层,Claw harness 可以把邮件/日历/工具服务封装在上层;Env 只保证这些操作都发生在隔离、可回收、可并发的 sandbox 中。

3.3 Orchard-SWE: credit-assignment SFT + BAR RL

Problem setting. SWE 任务采用 SWE-bench formulation:给定 GitHub issue 和 repo snapshot,agent 需要生成 patch,只有通过 gold test suite 才算正确。主评测是 SWE-bench Verified 500 human-validated instances,辅助评测包含 SWE-bench Multilingual 和 Terminal-Bench 2.0。agent 使用 ReAct-style loop,工具包括 shell execution、file viewing/editing 和 patch submission;每个 task 在 Orchard Env 中以 2 vCPU / 8 GiB sandbox 运行。

Trajectory collection. Orchard-SWE 从 SWE-rebench、SWE-rebench V2、Scale-SWE 收集任务,用 MiniMax-M2.5 和 Qwen3.5-397B teacher 采样,每个任务采 5 条 rollout,并使用 OpenHands 与 mini-swe-agent 两种 harness。过滤包括:超过 64K tokens 的轨迹、未定义 tool call、无法 parse 的 action。最终数据包含 107,185 trajectories、19,287 unique task instances、平均 47.5 turns、约 21K tokens/trajectory,其中 74,649 resolved、32,536 unresolved。

Credit-assignment SFT. 与只保留 solved trajectory 的做法不同,Orchard-SWE 让 teacher 对失败轨迹做 retrospective value estimation。给定失败轨迹 ,teacher 在知道最终测试结果的前提下估计每步历史 的成功概率: 然后定义 per-step credit: 论文抽取所有满足 的 maximal contiguous rise segments(),把失败轨迹中真正推进任务的片段纳入监督。SFT loss 只监督 resolved trajectory 的全部 action tokens,以及 unresolved trajectory 中 rise segment 内的 action tokens: 这里 是参与 loss 的 action-token 集合;环境 observation 和 rise segment 外的 action token 被 mask。这样 unresolved trajectory 不会把失败动作直接教给模型,但会贡献 repository navigation、file localization、partial root-cause analysis 等“正确方向”的中间能力。

def extract_rise_segments(values, epsilon=0.05):
    """Paper-derived pseudocode; official repo has not released implementation files."""
    credits = [values[t + 1] - values[t] for t in range(len(values) - 1)]
    segments, start = [], None
    for t, c_t in enumerate(credits):
        if c_t >= epsilon and start is None:
            start = t
        if (c_t < epsilon or t == len(credits) - 1) and start is not None:
            end = t if c_t < epsilon else t + 1
            segments.append((start, end))
            start = None
    return segments
 
 
def credit_assignment_sft_loss(model, trajectory, rise_segments=None):
    logits = model(trajectory.prompt_tokens, trajectory.context_tokens)
    action_mask = trajectory.assistant_action_token_mask.clone()
    observation_mask = trajectory.environment_observation_token_mask
    action_mask[observation_mask] = False
    if not trajectory.resolved:
        action_mask &= tokens_inside_segments(trajectory, rise_segments)
    return torch.nn.functional.cross_entropy(
        logits[action_mask], trajectory.target_tokens[action_mask]
    )

Balanced Adaptive Rollout (BAR). SWE RL 使用 environment-grounded binary reward:最终 patch 通过 gold test suite 记 ,否则记 。固定 条 GRPO rollout 在 SWE 里会遇到两个问题:prompt 太简单时全成功、太难时全失败,group reward variance 为 0;成功率偏离 0.5 时,即使 group 不退化也会被正/负样本不平衡主导。BAR 的做法是在线、per-prompt、stride-based 组装 fixed-size training group。

算法参数包括 training group size 、maximum budget 、stride 、target positive fraction interval 和理想比例 。每次生成 条 trajectory,按 reward 分成 positive / negative / backfill,尝试选出正样本比例落在区间内且最接近 条;成功则 early stop,否则继续生成;到 后仍不满足,就 relaxed fallback 或 TopRanked fallback。论文实验使用 rollout batch size 16、

def balanced_adaptive_rollout(prompt, policy, reward_fn, env_factory,
                              group_size=8, max_budget=16, stride=16,
                              rho_min=0.375, rho_max=0.625):
    """Paper-derived pseudocode for BAR; not copied from released code."""
    pool = []
    rho_star = 0.5 * (rho_min + rho_max)
    for _ in range(0, max_budget, stride):
        batch = [run_agent_trajectory(policy, prompt, env_factory())
                 for _ in range(stride)]
        for traj in batch:
            traj.reward = reward_fn(traj)
        pool.extend(batch)
        group = try_assemble_group(pool, group_size, rho_min, rho_max, rho_star)
        if group is not None:
            return group
    group = try_assemble_group(pool, group_size, 0.0, 1.0, rho_star)
    return group if group is not None else top_ranked(pool, group_size)
 
 
def try_assemble_group(pool, group_size, rho_min, rho_max, rho_star):
    usable = [t for t in pool if t.status in {"completed", "truncated"}]
    positives = sorted([t for t in usable if t.reward > 0], key=lambda t: (t.status, len(t.response)))
    negatives = sorted([t for t in usable if t.reward <= 0], key=lambda t: (t.status, len(t.response)))
    if len(positives) + len(negatives) < group_size:
        return None
    n_min = math.ceil(rho_min * group_size)
    n_max = math.floor(rho_max * group_size)
    n_star = round(rho_star * group_size)
    for n_pos in sorted(range(n_min, n_max + 1), key=lambda n: abs(n - n_star)):
        n_neg = group_size - n_pos
        if n_pos <= len(positives) and n_neg <= len(negatives):
            return positives[:n_pos] + negatives[:n_neg]
    return None

最终 rollout group 内的 advantage 仍按 group-relative reward 标准化:

3.4 Orchard-GUI: generic browser harness + judge-grounded RL

Orchard-GUI 采用 browser-use agent formulation:任务由起始 URL 和自然语言 intent 定义,agent 通过浏览器界面完成任务,最终用 LLM-as-a-judge 根据 final response 和 screenshot sequence 判定成功。评测包含 WebVoyager、Online-Mind2Web、DeepShop。论文刻意不用 Browser-Use 这类 bespoke harness,而是使用通用 ReAct-style loop 和 OpenAI tools schema,动作空间包含 13 个 atomic tools:clickhoverdragwritepress_keysscrollgoto_urlgo_backwaitnew_tabswitch_tabclose_tabdone(response)

每个 GUI episode 在 Orchard Env 中运行 Playwright-controlled Chromium sandbox(2 vCPU / 8 GiB)。输入包含 task intent、最新 screenshot、viewport、tab summary;模型输出 <think>...</think><tool_call>;工具响应连同新 screenshot 作为下一轮 user turn。为了避免 30-step rollout 的 screenshot history 撑爆 64K context,训练时只保留最近 张 screenshot,依赖此前 reasoning trace 携带历史信息。

Figure 4 解读:GUI 数据从 WebGym 的 292,092 raw tasks 出发,依次移除 evaluation overlap、child tasks、WebVoyager intents、long-tail sites、Qwen3-Embedding-8B 相似度 的近重复 intent,得到 15,601 个 deduplicated seed tasks。这个过滤链路服务两个目标:避免 benchmark leakage,同时把训练任务集中到更常见、更可评测的网站分布上。

Figure 5 解读:左侧显示 15,601 个 seed tasks 分布在 6 类 top-level domains;右侧强调覆盖率:任务池覆盖 MOZ Top-500 的 425/500(85.0%)和 SimilarWeb Top-100 的 57/100(57.0%),其中 48.5% 的任务落在 MOZ Top-500、13.0% 落在 SimilarWeb Top-100。这说明 GUI 数据不是窄站点 benchmark,而是面向 open web 的多站点训练池。

Figure 6 解读:每个 task 用 Qwen3-VL-235B-A22B-Thinking teacher 采 4 条 rollout,共得到 62,395 条 teacher rollouts。左图按四次 rollout 的结果划分:26.3% tasks 全成功、42.1% mixed、31.6% 全失败;全失败任务中 41.1%(2,026 tasks,占总池 13.0%)是 captcha 全阻塞。右图按网站展示 teacher success rate,说明失败不完全来自模型能力,也来自反爬、认证、region lock 等环境因素。

SFT 只使用 GPT-4.1 judge 判为 success 的 rollout,并且刻意不吃掉所有 successful pool:PAE-WebVoyager 成功 rollout 有 4,826 条,InSTA-v3 成功 rollout 有 26,154 条,但 SFT 只从 PAE-WebVoyager 中每 task 取最短 successful trajectory,并把每站点 cap 到 ,得到 412 个 SFT tasks / 70 个网站。RL 使用同一任务池但更严格去重(similarity threshold 0.95),得到 2,198 tasks。

GUI SFT 从 Qwen3-VL-4B-Thinking 初始化,视觉 encoder 和 multi-modal projector 冻结,只更新 language-model weights;每个 assistant turn 变成一个训练样本,只监督最后目标 assistant response,mask system prompt、历史 assistant turns 和环境 observation。SFT 训练 3 epochs,peak LR ,10% linear warmup + cosine schedule,per-device batch 2、gradient accumulation 8、8 data-parallel workers,global batch 128。

GUI RL 从 SFT checkpoint 出发,使用 multi-turn GRPO:每个任务采样一组 browser trajectories,按 trajectory-level reward 算 group-relative advantage,并广播到所有 assistant-response tokens;observation 和 tool feedback tokens 被 mask。reward 是格式检查 + binary judge:所有 assistant turn 都 parse 成合法 <think> + tool-call 且最终 done(response) 被 GPT-4.1 判成功则 ;重复格式失败导致终止则 ;其他情况为 。RL 使用 asymmetric PPO clipping(),无 KL / entropy regularization,并采用 step-budget curriculum:先用 15-step cap 训练到饱和,再把 cap 提升到 30。

def gui_trajectory_reward(turns, final_response, screenshots, user_intent, judge):
    """Paper-derived pseudocode for Orchard-GUI reward."""
    if any(not parses_as_think_and_tool_call(t.assistant_text) for t in turns):
        return -1.0
    if too_many_format_failures(turns):
        return -1.0
    verdict = judge.score(final_response=final_response,
                          screenshots=screenshots,
                          user_intent=user_intent)
    if verdict == "success":
        return 1.0
    if verdict in {"judge_api_failure", "captcha_aborted"}:
        return None  # remove_sample: zero loss mask
    return 0.0

Figure 7 解读:红色曲线表示从 SFT checkpoint 初始化的 RL,蓝色曲线表示直接从 base model 初始化的 RL。两者训练 reward 可能接近,但 SFT 初始化在 evaluation success 上更高且更稳定,说明 browser RL 不是只靠在线 reward 搜索就够了;高质量 SFT 提供的 tool-use prior 决定了 RL 是否能泛化到 held-out evaluation tasks。

3.5 Orchard-Claw: personal assistant workflow agent

Orchard-Claw 面向 Claw-Eval 的多步日常 workflow:如邮件分类、通知处理、日历/工具使用等。任务得分由 completion、safety、robustness 聚合: 时记为 pass。训练和评测使用两类 harness:Claw-Eval 自带 ReAct-style harness,以及更快的 ZeroClaw Rust harness;每个任务环境在 Orchard Env 中以 2 vCPU / 2 GiB sandbox 运行。

Claw 数据通过 Claude Opus 4.6 从 Claw-Eval seeds 和 ClawHub workflows 合成,四步循环为:提出并过滤 task ideas;生成环境、文件、tool server 和 test script;用 MiniMax-M2.5 solver 生成 rollout;根据 rollout 迭代任务可行性和指令清晰度。平均每个任务合成成本 $4.9,最终得到 192 tasks。SFT 数据由 MiniMax-M2.5 teacher 通过两个 harness 各采 5 条 rollout,只保留完成任务的 trajectories;为记录 ZeroClaw 这类复杂 harness 的训练样本,作者实现 proxy LLM server,记录每次 LLM call 的 input/output,最终得到 561 trajectories 和 4,537 training pairs。

SFT 使用 Qwen3-30B-A3B-Thinking-2507,训练 1 epoch,global batch 16,64K context,cosine LR 从 衰减到 ,超长序列 left truncation;推理时扩到 256K context。RL 使用标准 GRPO,batch size 8、group size 8、150 steps;每 step 可并行 64 个异步 rollout sandboxes。reward 为 binary environment-grounded:rollout 通过所有 test scripts,则该 rollout 内所有 input/output pairs 得 ,否则得 ;不设最大 step,而设 10-minute wall-clock budget,超时 rollout 全部排除训练。

def claw_rollout_reward(test_results, timed_out=False):
    """Paper-derived pseudocode for Orchard-Claw binary reward."""
    if timed_out:
        return None  # aborted rollouts are excluded from training
    return 1.0 if all(test_results.values()) else -1.0
 
 
def claw_grpo_batch(policy, tasks, group_size=8):
    groups = []
    for task in tasks:
        rollouts = run_parallel_claw_rollouts(policy, task, group_size=group_size,
                                              wall_clock_budget_sec=600)
        usable = [r for r in rollouts if r.reward is not None]
        groups.append(compute_group_relative_advantages(usable))
    return groups

Figure 8 解读:左图显示 RL 训练过程中 train / validation success rate 上升,右图显示 episode length 也随训练增长。作者的解释是:模型不只是学会更早终止,而是在更长多轮交互中完成更多任务;这支持 Claw 这类 workflow agent 需要 end-to-end rollout 训练,而不是只做短回答 SFT。

3.6 Released repo state and code-to-paper mapping

论文公式与 released code 实现差异:截至 readme-only@c1bcdc16,官方 GitHub 仓库公开但处于 Release on hold — code will be released soon 状态,仅包含 README.md、license/security 文件和 docs/figures/orchard-architecture.png;没有实际 src/orchard/server/agent/、training recipe、reward/loss 或 deployment scripts。因此当前不能验证论文公式与实现是否一致,也不能从 launch config 读取训练超参;上文伪代码均按论文算法写成,不代表 released code。

Code reference: readme-only @ c1bcdc16 (2026-05-14) — pseudocode and mapping based on the public repo state inspected for this note

Paper ConceptSource FileKey Class/Function
Orchard Env overall scope, SDK/server/agent promised layoutREADME.mdNo released class/function; README describes intended src/orchard/, server/, agent/ layout
Public architecture imagedocs/figures/orchard-architecture.pngStatic figure asset
Orchard-SWE / Orchard-GUI / Orchard-Claw training recipesREADME.md roadmap sectionNot released; README says recipes/evaluation suite/Orchard-Claw will follow
DatasetsHugging Face microsoft/Orchard linked from READMEswe and gui dataset configs, not source code

4. Experimental Setup (实验设置)

4.1 Datasets and scale

DomainDataset / sourceScale used in paper
Orchard-SWE SFTSWE-rebench, SWE-rebench V2, Scale-SWE teacher rollouts107,185 trajectories; 74,649 resolved; 32,536 unresolved; 19,287 unique task instances
Orchard-SWE RLSWE-rebench V2 Python subset + held-out Scale-SWE not used in SFTfiltered to about 2k instances with initial pass rate
Orchard-GUI full poolWebGym raw tasks after filtering292,092 raw tasks 15,601 seed tasks
Orchard-GUI SFTPAE-WebVoyager successful rollouts412 tasks / 70 websites, shortest successful rollout per task, website cap
Orchard-GUI RLPAE-WebVoyager + InSTA-v3 deduped tasks2,198 RL tasks
Orchard-ClawSynthetic Claw-Eval / ClawHub-derived workflows192 tasks; 561 trajectories; 4,537 training pairs

4.2 Baselines and metrics

  • SWE:对比 R2EGym-Agent、OpenHands-LM、Skywork-SWE、SWE-Agent-LM、SWE-Mirror-LM、SWE-Compressor、SWE-Master、OpenSWE、Scale-SWE-Agent、Qwen3/Qwen2.5/GLM 系列等;主指标是 SWE-bench Verified resolve rate,辅助包括 SWE-bench Multilingual、Terminal-Bench 2.0、SWE-rebench V2 pass@1/pass@3。
  • GUI:对比 GPT-5 / Gemini / OpenAI computer-use-preview、UI-TARS、Fara-7B、MolmoWeb、Qwen3-VL-4B/235B;指标是 WebVoyager、Online-Mind2Web、DeepShop success rate 和三者平均值。
  • Claw:对比 Claude Opus 4.6、GPT 5.4、Gemini 3.1 Pro、Qwen3.5 397A17B、MiniMax、Kimi、Nemotron、Qwen3-30B-A3B、Qwen3-Coder;指标是 ClawEval
  • Environment:执行 latency、1,000 sandbox stress-test success rate、Terminal-Bench 2.0 Docker vs Orchard Env pass rate、128 parallel sandboxes × 240 hours 成本。

4.3 Training and infrastructure configs reported by the paper

  • Orchard Env evaluation:8 nodes,每 node 32 vCPU / 128 GiB RAM;sandbox image 预拉取;每 sandbox 2 vCPU / 8 GiB。Stress test 使用 1,000 parallel sandboxes,每个执行 4 commands。
  • Orchard-SWE SFT:Qwen3-30B-A3B-Thinking;5 epochs;global batch 128;64K context;cosine LR ;inference context 128K。
  • Orchard-SWE RL:最多 150 steps;global batch 128;64K context;LR peak reported as cosine decay;rollout batch 16;training group ;stride ;positive fraction interval
  • Orchard-GUI SFT/RL:Qwen3-VL-4B-Thinking;vision encoder 和 projector 冻结;SFT 3 epochs,peak LR ,10% warmup,global batch 128;RL 使用 GRPO、PPO clipping 、无 KL/entropy、15-step 到 30-step curriculum。
  • Orchard-Claw SFT/RL:Qwen3-30B-A3B-Thinking-2507;SFT 1 epoch,global batch 16,64K context,LR ,推理 256K;RL batch 8、group 8、150 steps、每 step 64 async sandboxes、10-minute wall-clock budget。

由于官方 repo 当前未发布 launch scripts/configs,这些训练配置只能引用论文正文,不能进一步追溯到 released config override;这是当前复现层面的主要缺口。

5. Experimental Results (实验结果)

5.1 Orchard Env system results

MetricOrchard Env resultComparison / interpretation
Avg command latency0.280 sSkyPilot Code Sandbox 0.284 s;E2B 0.747 s;Modal 2.046 s
1,000-sandbox stress test100% success, 26 s end-to-end4,000 commands total, avg create 11.75 s, avg exec 0.28 s
Terminal-Bench 2.0 GPT-4.135.1Docker baseline 34.1
Terminal-Bench 2.0 MiniMax-M2.554.4Docker baseline 52.6
Terminal-Bench 2.0 Qwen3-8B-thinking8.8Docker baseline 7.0
Cost: 128 sandboxes × 240h$673 on spot / $3,362 on-demandDaytona/E2B $7,078;spot 比 managed sandbox 低约 90%

结果支持两点:直接 Pod-IP hot path 确实把 command latency 压到接近原生 sandbox;agent injection 没有明显损害下游 agent performance,因为 Terminal-Bench 2.0 上 Orchard Env 与 Docker baseline 在 3 个模型上都在 run-to-run variance 内。

5.2 Orchard-SWE results

SystemBase ModelHarnessSWE-bench Verified resolved
Qwen3-30B-A3B-InstructOpenHands22.0
Qwen3-Coder-30B-A3B-InstructOpenHands51.6
GLM-4.7-Flash-30A3B59.2
Scale-SWE-AgentQwen3-30B-A3B-InstructOpenHands64.0
Orchard-SWE (SFT)Qwen3-30B-A3B-Thinkingmini-swe-agent64.3
Orchard-SWE (SFT)Qwen3-30B-A3B-ThinkingOpenHands62.1
Orchard-SWE (SFT+RL)Qwen3-30B-A3B-Thinkingmini-swe-agent67.5

Orchard-SWE 的同规模提升最清晰:相对 Qwen3-30B-A3B-Instruct,从 22.0% 到 SFT 64.3% 是 +42.3 points,SFT+RL 67.5% 则是 +45.5 points;相对 Qwen3-Coder-30B-A3B-Instruct 的 51.6% 也有明显优势。SFT 已接近 Scale-SWE-Agent 64.0%,RL 再提升到 67.5%。

SystemOpenHands SWE-Vmini-swe SWE-Vmini-swe SWE-MKimi-CLI SWE-VKimi-CLI T-Bench 2.0
Scale-SWE64.0invalidinvalidinvalidinvalid
OpenSWE-32B62.454.928.73.60.0
Orchard-SWE62.164.351.045.020.1

泛化表说明单一 harness leaderboard 会掩盖 harness lock-in。OpenSWE-32B 从 native OpenHands 62.4% 掉到 Kimi-CLI 3.6%,而 Orchard-SWE 在三种 harness 上保持 45.0–64.3%,最差 drop 为 19.3 points。论文也明确承认这还没有解决泛化问题:Kimi-CLI Verified 的 45.0% 相对 mini-swe 64.3% 仍有显著下降,完全未见过的 harness/domain 仍是挑战。

关键 ablation:

  • Data scale dominates selection:SFT-only 从 512 到 2048 trajectories 的增益大于 selection strategy 差异;例如 Diverse repo 44.0 52.2(+8.2),而 2048 时所有 selector spread 只有 2.0 points。
  • Cross-harness training is necessary:12K resolved trajectories 控制实验中,mini-swe 训练/评测为 57.9,但换 OpenHands 评测掉到 19.0;OpenHands 训练/评测为 53.5,换 mini-swe 为 28.0。
  • Credit-assignment SFT 有效:scale-matched 32K resolved-only 为 59.3%,加入 32K unresolved rise-segment trajectories 后为 61.2%,+1.9 points。
  • RL 的作用依赖 init:moderate init 在 Verified 48.1 50.1、Multilingual 22.0 28.7;heavy init 在 Verified 64.3 67.5,但 Multilingual 略回退,说明重 SFT 后 RL 更偏 in-distribution specialization。

5.3 Orchard-GUI results

SystemStepsTraining tasksWebVoyagerOnline-M2WDeepShopAvg
Gemini computer-use-preview10088.657.362.069.3
Qwen3-VL-235B-A22B-Thinking3063.163.756.761.2
MolmoWeb-8B100>278.5K78.235.342.351.9
Qwen3-VL-4B-Thinking3049.032.033.338.1
Orchard-GUI-4B-SFT300.4k60.247.048.752.0
Orchard-GUI-4B (SFT+RL)302.6k74.167.064.068.4

Orchard-GUI 的主要结论是小数据 + environment-grounded RL 在开放浏览器任务上非常有效。SFT 到 SFT+RL 的提升为 WebVoyager +13.9、Online-Mind2Web +20.0、DeepShop +15.3,平均从 52.0 到 68.4。Online-Mind2Web 和 DeepShop 上尤其明显:相对最强 prior open baseline MolmoWeb-8B,Online-Mind2Web 高 +31.7 points,DeepShop 高 +21.7 points;相对 235B teacher,也在 Online-Mind2Web / DeepShop 上分别高 +3.3 / +7.3。

局限也很直接:GUI 数据受网站环境强烈影响,15,601 task pool 中 4,934 个 all-fail tasks 里有 2,026 个是 captcha-blocked;这意味着 reward 和失败归因中混有环境不可达、反爬和认证噪声。论文通过 remove_sample 排除 judge API failure 和 captcha-aborted runs,但开放网页环境仍会限制可复现性。

5.4 Orchard-Claw results

SystemTasksClawEval ClawEval
Claude Opus 4.670.880.8
MiniMax M2.547.265.2
Qwen3-30B-A3B-Thinking14.339.8
Qwen3-Coder-30B-A3B-Instruct30.449.7
Orchard-Claw (SFT)0.2k22.450.3
Orchard-Claw (SFT+RL)0.2k31.759.6

Orchard-Claw 用 0.2k synthetic tasks 超过同规模开源 baseline:SFT+RL 相对 Qwen3-30B-A3B-Thinking 的 从 14.3 到 31.7, 从 39.8 到 59.6;相对 Qwen3-Coder-30B-A3B-Instruct 的 30.4 / 49.7,也在 上高 9.9 points。RL 相对 SFT 的增益为 +9.3、 +9.3。

ModelReAct ZeroClaw ReAct ZeroClaw
Qwen3-30B-A3B-Thinking14.320.539.844.7
Qwen3-Coder-30B-A3B-Instruct30.429.849.754.7
Orchard-Claw (SFT)22.425.550.362.1
Orchard-Claw (SFT+RL)31.741.059.673.9

跨 harness 评测是 Claw 的核心证据:同一个 Orchard-Claw SFT+RL 模型从 ReAct 切到 ZeroClaw 后, 从 31.7 到 41.0(+9.3), 从 59.6 到 73.9(+14.3),增益大于对比模型。作者把这归因于训练阶段就暴露在多个 harness 中,使模型能利用 ZeroClaw 的 subagents、auto-compact 等更强 inference-time harness feature,而不是过拟合 ReAct 格式。

5.5 Overall conclusion and caveats

论文的证据链支持一个 systems + learning 的联合结论:薄、开源、harness-agnostic 的 Orchard Env 让数据收集、SFT、RL 和评测都能跨 domain 复用;在此基础上,SWE 的 credit-assignment SFT / BAR、GUI 的 judge-grounded RL、Claw 的跨 harness workflow 训练分别证明环境层不是单纯工程封装,而会影响最终 agent capability。

主要 caveats:第一,官方 GitHub 在当前 commit 还没有发布实现代码,复现只能依赖论文和数据,无法核对训练 config、reward/loss 代码或 paper-vs-code gap。第二,SWE 泛化仍未解决,Kimi-CLI 和 Terminal-Bench 2.0 相比 in-domain SWE-bench 仍有大幅下降。第三,GUI 环境里 captcha、反爬、region lock 和 judge failure 会污染 reward 信号。第四,Claw 只用了 192 synthetic tasks,虽然显示了 RL 和 harness transfer 的潜力,但与 Claude/GPT/Gemini 等闭源大模型仍有明显差距。