ZIXUAN WANG*, 2026

<aside> 📌

Personal technical writeup, based on work done during an internship on the MiroMind RL team, written for personal learning only

</aside>


Figure 1: MiroVerse data engine. Two synthesis tracks: curated public datasets passed through a quality filter and a verifiability check, and raw data lifted into a concept graph and expanded, converge on an agent whose trajectories are kept only when they pass a verifier.

Figure 1: MiroVerse data engine. Two synthesis tracks: curated public datasets passed through a quality filter and a verifiability check, and raw data lifted into a concept graph and expanded, converge on an agent whose trajectories are kept only when they pass a verifier.

<aside> 🧭

Abstract

From large scale industry practice, a deep‑research agent's capability upper bound is mainly set by the questions it trains on, the environment(tool) it interacts with. The hard, under‑appreciated problem is synthesizing multi‑hop questions that are simultaneously: (i) genuinely multi‑hop (no single‑retrieval shortcut) (ii) verifiable (pairing checkable gold answer) (iii) difficulty‑controllable (iv) diverse and cheaply scalable

Color convention

1. Why this matters

Open deep‑research agents have scaled along two visible axes: model size and context length. MiroMind's tech report (arXiv:2511.11793) names a third: interaction depth, up to ~600 tool calls inside a 256K‑token context, and shows accuracy rising monotonically as the tool‑call budget grows. But interaction depth is bounded by the same thing: the questions in the training set. A question solvable by one search teaches a single retrieval, no matter how long the context or how many GRPO steps you run on it. A shortcut‑solvable question never teaches a 40‑hop search. So the real lever is the data‑generation process. MiroMind's data engine (Figure 1) runs two synthesis tracks: curated public data passed through quality and verifiability filters, and raw data lifted into a concept graph and expanded. Both feed into an agent that runs full trajectories, keeping only those a Success/Fail verifier accepts. The resulting traces are overwhelmingly web‑grounded. Reading the shares off Figure 1's pie chart (which displays percentages; the integer counts below are computed from the 602,179 total tool calls):

tool calls share
Google Search 251,102 41.7%
Web Scraping 177,053 29.4%
Search & Browse 112,485 18.7%
Python Code 43,124 7.2%
Create Sandbox 11,662 1.9%
Run Command 1,889 0.3%
Others 4,864 0.8%

A question worth training on must be four things at once:

<aside>

Principle. Properties (i)-(iv) are jointly achievable only when you fix the latent structure first (blue) and certify the item with a verifier (green); only then does the surface text (red) become a faithful encoding of that structure. Text‑first generation hopes the structure emerges; structure‑first guarantees it.

</aside>

1.1 The failure mode: passage‑to‑question

The naive baseline shows an LLM a passage and asks it to "write a hard multi‑hop question." It controls surface fluency and topical relevance, but nothing about structure or answer.