MetaWorld Model (MWM)#

MWM maintains dated, scoped environment knowledge, a briefing, examples, an open-questions docket, and callable programs. Acting agents use its context and one wm tool. A Codex learner reviews evidence after each block of episodes and maintains the world model.

Choose MWM for an ordered environment stream with a task-owned evidence store. It requires more task integration than a context-only optimizer; it is not a drop-in switch for an arbitrary prompt-only config.

Required integration#

Resource

Contract

Template and method

template: mwm, evolver.name: mwm

Episode order

data.shuffle: false; data.step_size is the learning block

Evidence

The pipeline writes the native evidence layout and returns RunOutput.extra["mwm"]

Access

Evidence path in evolver.params.evidence and evolver_access.environment

Deployment description

task-info/mwm/ (or evolver.params.deployment) describing the venue, host, and environment

Learner environment

Codex CLI and Linux namespace/sandbox support; model endpoint configured for the session

Channels

Task tools declared through evolver_access.tools, as required by the venue

Use ServeLearnBench or CL-Bench as a complete integration reference. The task pipeline, rather than the Trainer, owns the benchmark’s acting loop and evidence writing.

The framework renders native runtime instructions from the venue texts; keep task-specific deployment text in the task directory rather than patching the MWM template.

Block lifecycle#

With bootstrap enabled (the default), the Trainer runs the native bootstrap session before any rollout and records it as step 0. That session receives an evidence store containing only its README; the first serving block uses the bootstrapped adapter. With bootstrap disabled, the first block uses the starting adapter.

After serving each block, the learner reviews its evidence, performs maintenance, and revises memory and programs. The next block consumes the accepted update.

When block_size is set, a shorter last block receives no learner session. Align learning and test boundaries deliberately. In ServeLearnBench, a window boundary may occur inside a block, so some cases are not learned before that window’s checkpoint is tested.

Parameters and defaults#

description: The MetaWorld Model learner (MWM V2 default, docket on, hypothesis off). One Codex session per block
  with the native contract, agenda, skills, patterns and maintenance; reads the task's evidence store at /evidence.
class: evolver.py:MwmEvolver
needs: [environment]
params:
  backend: codex              # the learner is a Codex session (a model reference binds it, as for the codex Evolver)
  model: null                 # the learner model; null: the Codex default
  args: []                    # extra codex arguments, e.g. -c model_reasoning_effort="high" (provider settings come
                              # from the model's backend; a plain model id needs them here)
  home: []                    # files of ~/.codex copied into the agent home; none: the provider key is an env var
  price: null                 # USD per million tokens {input, cached_input, output}
  evidence: null              # the task's evidence store (required), granted through evolver_access.environment
  deployment: null            # the venue's texts for MWM (contract/, delegation, host.json, environment/),
                              # relative to the run config; null: task-info/mwm
  learner_tools: null         # task tools also offered as MCP tools; null: all. The gate serves every task tool
  bootstrap: true             # the native bootstrap session in the first step
  session_timeout_s: 1800     # per session, the native evolver timeout
  retry_wait_s: 30            # before the one retry after an infrastructure failure
  network_isolation: true     # own network namespace; only the tool endpoint and 127.0.0.1 ports in args
  block_size: null            # = data.step_size: the shorter final block then gets no session, as natively
  hide: []                    # paths hidden from the learner's sandbox besides the defaults; "module:<name>" hides
                              # an installed Python package (a benchmark whose evaluator sits beside the framework)

session_timeout_s bounds a native session; the Trainer has its own call timeout. Provider arguments and model settings belong to the learner session, while acting-model settings belong to the task integration. network_isolation is a separate MWM setting; understand both that and the outer sandbox configuration.

Use benchmark-specific scoring for streaming experiments. A single aggregate test call cannot express all per-window or environment-state protocols; see Evaluation.