trainer

Data Pipeline

Scaffolds

Supported agent scaffolds and their converters

The agent scaffold that produced a trajectory determines its raw shape, which in turn selects the swe_data_process converter module used to turn it into IM data. Set the active scaffold in config.yamlruntime_info.input.source.scaffold.

Converter matrix

ScaffoldConverter module
claude-codeswe_data_process.claudecode_opencode.convert_cc_to_im
open-codeswe_data_process.claudecode_opencode.convert_oc_to_im
openhands-sdkswe_data_process.openhands.convert_openhands_sdk_to_im
terminus2swe_data_process.terminus2.convert_terminus2_to_im

Only these job-dir converters are wired. The refactored swe_data_process package removed the older source-specific converter scripts, so a scaffold outside this matrix has no conversion path.

IM format

Every converter emits the same intermediate (IM) shape — one JSONL row per trajectory:

{
  "version": "2.0.0",
  "meta_info": {
    "unique_info": {
      "_instance_id": "owner__repo-123",
      "_agent_type": "main",
      "_score": {"composite_score": 0.72, "...": "..."}
    }
  },
  "tools": ["..."],
  "messages": [
    {
      "role": "user/assistant/tool",
      "content": "...",
      "reasoning_content": "...",
      "tool_calls": ["..."]
    }
  ]
}

_instance_id, _agent_type, and _score are stored under meta_info.unique_info on disk. The package's load_jsonl() expands them back to the legacy top-level shape for internal scoring and filtering helpers.

Reasoning content and templates

Match the template family to the base model: Qwen3 uses qwen3 / qwen3_nothink, while Qwen3.5 uses qwen3_5 / qwen3_5_nothink. Select the thinking-capable variant when the training records intentionally preserve reasoning content; use the *_nothink variant for non-thinking data. The active Qwen3.5 profile uses qwen3_5. See Configuration.

On this page