<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Publications | Xinyue Zheng</title><link>https://grandsmile.github.io/publications/</link><atom:link href="https://grandsmile.github.io/publications/index.xml" rel="self" type="application/rss+xml"/><description>Publications</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 01 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://grandsmile.github.io/media/icon_hu_982c5d63a71b2961.png</url><title>Publications</title><link>https://grandsmile.github.io/publications/</link></image><item><title>UniCode: Augmenting Evaluation for Code Reasoning</title><link>https://grandsmile.github.io/publications/unicode/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://grandsmile.github.io/publications/unicode/</guid><description>&lt;p&gt;&lt;strong&gt;ICML 2026&lt;/strong&gt; ·
·
·
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;UniCode&lt;/strong&gt; is a generative evaluation framework for code reasoning. Instead of asking whether a model can solve a familiar static benchmark, UniCode asks whether the model can still reason when the problem is structurally rewritten, recomposed, scaled, and tested against robust corner cases.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;&lt;img src="https://grandsmile.github.io/publications/unicode/figure1-overview.png"
alt="UniCode overview" width="100%"&gt;
&lt;/figure&gt;
&lt;h2 id="background-the-evaluation-paradox"&gt;Background: the evaluation paradox&lt;/h2&gt;
&lt;p&gt;Modern code LLMs score impressively on standard benchmarks, yet often fail when requirements shift in realistic coding settings. This is the &lt;strong&gt;evaluation paradox&lt;/strong&gt;: high benchmark accuracy does not necessarily mean robust reasoning. Static benchmarks can be saturated, contaminated, or solved through familiar templates and statistical shortcuts rather than genuine algorithmic adaptation.&lt;/p&gt;
&lt;p&gt;UniCode addresses this by moving from &lt;strong&gt;static evaluation&lt;/strong&gt; to &lt;strong&gt;generative evaluation&lt;/strong&gt;. Instead of repeatedly testing a fixed set of problems, UniCode expands a dynamic problem space by transforming high-quality seed tasks into new variants that preserve rigor while changing the reasoning path required to solve them.&lt;/p&gt;
&lt;h2 id="why-existing-benchmarks-are-still-insufficient"&gt;Why existing benchmarks are still insufficient&lt;/h2&gt;
&lt;p&gt;Many recent benchmark variants improve coverage, but a large portion of them still rely on &lt;strong&gt;shallow perturbations&lt;/strong&gt;—for example variable renaming, story rewriting, or surface-level rephrasing. As we argue in the paper, these settings often focus on &lt;strong&gt;superficial variations&lt;/strong&gt; rather than changing the &lt;strong&gt;underlying reasoning logic&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That means a model can appear robust simply because the old solution template still works. But in realistic coding, the challenge is not just reading a different story — it is adapting when the constraint changes, when the complexity budget changes, or when multiple algorithmic ideas must be composed together.&lt;/p&gt;
&lt;p&gt;UniCode is designed to test exactly this deeper form of reasoning.&lt;/p&gt;
&lt;h2 id="methodology"&gt;Methodology&lt;/h2&gt;
&lt;p&gt;UniCode has three main components.&lt;/p&gt;
&lt;h3 id="1-multi-dimensional-task-augmentation"&gt;1. Multi-dimensional task augmentation&lt;/h3&gt;
&lt;p&gt;UniCode starts from high-quality seed programming problems and generates new tasks along &lt;strong&gt;five reasoning axes&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Axis&lt;/th&gt;
&lt;th&gt;What changes&lt;/th&gt;
&lt;th&gt;What it probes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Narrative perturbation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Theme, variable names, or irrelevant context&lt;/td&gt;
&lt;td&gt;Whether the model is biased by surface tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rule modification&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Operational rules or boundary conditions&lt;/td&gt;
&lt;td&gt;Whether the model follows new constraints instead of a memorized solution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Efficiency scaling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Input scale and computational budget&lt;/td&gt;
&lt;td&gt;Whether the model switches to a more efficient algorithm when needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sequential composition&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multiple algorithmic steps are chained together&lt;/td&gt;
&lt;td&gt;Whether the model can maintain long reasoning chains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Concept fusion&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multiple algorithmic concepts are merged into one task&lt;/td&gt;
&lt;td&gt;Whether the model can perform combinatorial generalization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;These augmentations intentionally change the &lt;strong&gt;reasoning graph&lt;/strong&gt;, not just the wording.&lt;/p&gt;
&lt;h3 id="2-stress-driven-test-generation"&gt;2. Stress-driven test generation&lt;/h3&gt;
&lt;p&gt;For newly generated tasks, human-written reference solutions do not scale. UniCode therefore constructs reliable test suites through a &lt;strong&gt;stress-driven pipeline&lt;/strong&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://grandsmile.github.io/publications/unicode/figure2-test-generation.png"
alt="Stress-driven test generation" width="100%"&gt;
&lt;/figure&gt;
&lt;p&gt;The pipeline combines &lt;strong&gt;random cases&lt;/strong&gt;, &lt;strong&gt;adversarial cases&lt;/strong&gt;, and &lt;strong&gt;corner cases&lt;/strong&gt;. For ground-truth outputs, UniCode uses brute-force solvers on small inputs, filters optimized candidates through trusted stress tests, uses majority voting on larger inputs, and finally applies LLM adjudication when solver outputs disagree.&lt;/p&gt;
&lt;h3 id="3-fine-grained-diagnosis"&gt;3. Fine-grained diagnosis&lt;/h3&gt;
&lt;p&gt;A single pass/fail score hides why a model fails. UniCode therefore categorizes failures into &lt;strong&gt;modeling errors&lt;/strong&gt;, &lt;strong&gt;logic bugs&lt;/strong&gt;, &lt;strong&gt;complexity errors&lt;/strong&gt;, &lt;strong&gt;indexing/cache bugs&lt;/strong&gt;, and &lt;strong&gt;other implementation mistakes&lt;/strong&gt;. This turns the benchmark from a simple leaderboard into a diagnostic tool for reasoning analysis.&lt;/p&gt;
&lt;h2 id="experimental-results"&gt;Experimental results&lt;/h2&gt;
&lt;p&gt;UniCode evaluates &lt;strong&gt;19 LLMs&lt;/strong&gt; across reasoning-focused, general-purpose, and open-source families. The benchmark is both challenging and discriminative: even the top model reaches only &lt;strong&gt;70.3% average Pass@1&lt;/strong&gt;, and the average performance drop from seed problems to UniCode variants is &lt;strong&gt;31.2%&lt;/strong&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://grandsmile.github.io/publications/unicode/leaderboard.png"
alt="UniCode leaderboard" width="100%"&gt;
&lt;/figure&gt;
&lt;h3 id="main-takeaways"&gt;Main takeaways&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Large performance collapse:&lt;/strong&gt; strong performance on seed benchmarks does not reliably transfer to structurally augmented variants.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hard split is still very difficult:&lt;/strong&gt; several models drop to &lt;strong&gt;0.0%&lt;/strong&gt; on the hard subset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Narrative shifts are easier than structural shifts:&lt;/strong&gt; models are relatively robust to surface changes, but often fail when the logic, scale, or composition changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reliable automatic evaluation:&lt;/strong&gt; the stress-driven pipeline achieves &lt;strong&gt;94.5% correctness&lt;/strong&gt; and &lt;strong&gt;86.0% coverage&lt;/strong&gt; in the test-generation quality study.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="where-do-models-fail"&gt;Where do models fail?&lt;/h2&gt;
&lt;p&gt;UniCode reveals that model failures are &lt;strong&gt;structured&lt;/strong&gt;, not random. The paper highlights three key findings:&lt;/p&gt;
&lt;h3 id="1-large-variance-across-reasoning-dimensions"&gt;1. Large variance across reasoning dimensions&lt;/h3&gt;
&lt;p&gt;Aggregate benchmark scores hide substantial within-model variance. Even strong models can perform well on one reasoning axis and collapse on another. This means a single average score often masks important blind spots.&lt;/p&gt;
&lt;h3 id="2-structural-changes-are-much-harder-than-surface-changes"&gt;2. Structural changes are much harder than surface changes&lt;/h3&gt;
&lt;p&gt;Models are comparatively robust to &lt;strong&gt;narrative perturbations&lt;/strong&gt;, but they deteriorate sharply once the &lt;strong&gt;underlying reasoning graph&lt;/strong&gt; changes. The hardest settings are typically &lt;strong&gt;efficiency scaling&lt;/strong&gt;, &lt;strong&gt;sequential composition&lt;/strong&gt;, and &lt;strong&gt;concept fusion&lt;/strong&gt;, which require the model to adapt its strategy rather than reuse a familiar template.&lt;/p&gt;
&lt;h3 id="3-seed-problem-regression"&gt;3. Seed-problem regression&lt;/h3&gt;
&lt;p&gt;The most revealing phenomenon is &lt;strong&gt;seed-problem regression&lt;/strong&gt;: models frequently fall back to the logic of the original seed task even when the augmented problem invalidates that logic. In other words, the model recognizes the old template, but fails to integrate the new constraints.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://grandsmile.github.io/publications/unicode/figure3-reasoning-variants.png"
alt="Model performance across reasoning variants" width="100%"&gt;
&lt;/figure&gt;
&lt;p&gt;Beyond accuracy, UniCode also shows that the dominant error types are not small implementation mistakes. Instead, the main failures are &lt;strong&gt;modeling errors&lt;/strong&gt; and &lt;strong&gt;complexity errors&lt;/strong&gt;, revealing weaknesses in conceptualization, algorithm selection, and computational scaling.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://grandsmile.github.io/publications/unicode/figure4-error-distribution.png"
alt="Error distribution across models" width="100%"&gt;
&lt;/figure&gt;
&lt;p&gt;Figure 5 provides concrete case studies of these failures. The examples show that models often reuse a memorized modeling paradigm or a low-efficiency solution that was valid for the seed task, but becomes wrong once new structure or new constraints are introduced.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://grandsmile.github.io/publications/unicode/figure5-seed-regression.png"
alt="Seed-problem regression case study" width="100%"&gt;
&lt;/figure&gt;
&lt;p&gt;Together, these results suggest that current code LLMs are often strong at syntax and familiar templates, but still fragile in &lt;strong&gt;zero-shot adaptation to novel algorithmic requirements&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Paper:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dataset:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;datasets&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_dataset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dataset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;load_dataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;grandsmile/Generative_Coding_Dataset&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="citation"&gt;Citation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bibtex" data-lang="bibtex"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@article&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;zheng2026unicode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{UniCode: Augmenting Evaluation for Code Reasoning}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Zheng, Xinyue and Lin, Haowei and Cai, Shaofei and Zheng, Zilong and Yang, Yaodong and Liang, Yitao}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;journal&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{arXiv preprint arXiv:2510.17868}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;year&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{2026}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>MCU: An Evaluation Framework for Open-Ended Game Agents</title><link>https://grandsmile.github.io/publications/mcu/</link><pubDate>Thu, 03 Jul 2025 00:00:00 +0000</pubDate><guid>https://grandsmile.github.io/publications/mcu/</guid><description/></item><item><title>MineStudio: A Streamlined Package for Minecraft AI Agent Development</title><link>https://grandsmile.github.io/publications/minestudio/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://grandsmile.github.io/publications/minestudio/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;MineStudio&lt;/strong&gt; is an open-source package for Minecraft AI agent development. It lowers the engineering barrier for embodied policy research by unifying environment customization, trajectory data processing, policy modeling, offline pretraining, online finetuning, distributed inference, and benchmark evaluation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Authors:&lt;/strong&gt; Shaofei Cai*, Zhancun Mu*, Kaichen He, Bowei Zhang, &lt;strong&gt;Xinyue Zheng&lt;/strong&gt;, Anji Liu, Yitao Liang&lt;br&gt;
&lt;em&gt;Equal contribution&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
·
·
·
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="MineStudio workflow"
srcset="https://grandsmile.github.io/publications/minestudio/workflow_hu_505470291dc0ead7.webp 320w, https://grandsmile.github.io/publications/minestudio/workflow_hu_3b74811e9622abb6.webp 480w, https://grandsmile.github.io/publications/minestudio/workflow_hu_e20a353a458fcbbc.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://grandsmile.github.io/publications/minestudio/workflow_hu_505470291dc0ead7.webp"
width="760"
height="228"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="abstract"&gt;Abstract&lt;/h2&gt;
&lt;p&gt;Minecraft is a valuable testbed for embodied intelligence and sequential decision-making, but developing and validating new Minecraft agents often requires substantial engineering work. MineStudio provides a streamlined, open-source software package that helps researchers build, train, evaluate, and benchmark agents in a unified workflow.&lt;/p&gt;
&lt;p&gt;The package integrates seven core components: &lt;strong&gt;simulator&lt;/strong&gt;, &lt;strong&gt;data&lt;/strong&gt;, &lt;strong&gt;model&lt;/strong&gt;, &lt;strong&gt;offline pretraining&lt;/strong&gt;, &lt;strong&gt;online finetuning&lt;/strong&gt;, &lt;strong&gt;inference&lt;/strong&gt;, and &lt;strong&gt;benchmark&lt;/strong&gt;. With this modular design, researchers can focus more on algorithmic innovation and less on reimplementing infrastructure.&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Minecraft offers a rich open-world environment: agents need to perceive high-dimensional observations, plan over long horizons, interact with objects, collect resources, craft tools, and complete diverse tasks. This makes it an ideal platform for studying embodied AI, reinforcement learning, imitation learning, and open-ended agent evaluation.&lt;/p&gt;
&lt;p&gt;However, the Minecraft AI ecosystem has long suffered from fragmented engineering pipelines. Different works often customize environments, datasets, controllers, models, and evaluation protocols in incompatible ways. This makes it hard to reproduce results, compare agents fairly, or quickly test a new algorithmic idea.&lt;/p&gt;
&lt;p&gt;MineStudio addresses this problem by providing a coherent development stack for Minecraft agents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Simulator:&lt;/strong&gt; a customizable Minecraft simulator wrapper with callback-based environment configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data:&lt;/strong&gt; an efficient trajectory data structure for storing and retrieving long Minecraft demonstrations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Models:&lt;/strong&gt; a unified policy-model template and a gallery of baseline Minecraft agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline training:&lt;/strong&gt; a practical pipeline for pretraining agents from offline gameplay data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Online training:&lt;/strong&gt; distributed reinforcement learning support with memory-based policies and crash recovery.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inference:&lt;/strong&gt; a parallel and distributed pipeline for running and evaluating agents at scale.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Benchmark:&lt;/strong&gt; automated batch testing for diverse Minecraft tasks, connected to open-ended evaluation with MCU.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For my broader research agenda, MineStudio is closely related to my interest in &lt;strong&gt;open-ended agent evaluation&lt;/strong&gt;: instead of evaluating agents only on fixed small task sets, we need infrastructure that can generate, run, and diagnose many diverse tasks in complex environments.&lt;/p&gt;
&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;p&gt;MineStudio requires Python 3.10+ and JDK 8. A minimal installation looks like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda create -n minestudio &lt;span class="nv"&gt;python&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3.10 -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda activate minestudio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda install --channel&lt;span class="o"&gt;=&lt;/span&gt;conda-forge &lt;span class="nv"&gt;openjdk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt; -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install MineStudio
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Test whether the simulator can launch:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python -m minestudio.simulator.entry
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For GPU rendering with VirtualGL:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;MINESTUDIO_GPU_RENDER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; python -m minestudio.simulator.entry
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="minimal-usage"&gt;Minimal Usage&lt;/h2&gt;
&lt;h3 id="create-a-minecraft-simulator"&gt;Create a Minecraft simulator&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;minestudio.simulator&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MinecraftSim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MinecraftSim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;obs_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;224&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;224&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;render_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;640&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;360&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;callbacks&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;obs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sim&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reset&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="load-a-pretrained-policy-and-interact-with-the-environment"&gt;Load a pretrained policy and interact with the environment&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;minestudio.simulator&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MinecraftSim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;minestudio.simulator.callbacks&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;RecordCallback&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;minestudio.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;VPTPolicy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;policy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;VPTPolicy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;CraftJarvis/MineStudio_VPT.rl_from_early_game_2x&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;policy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;eval&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MinecraftSim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;obs_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;callbacks&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;RecordCallback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;record_path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;./output&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;frame_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pov&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;memory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;obs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reset&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1200&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;memory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;obs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;input_shape&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;obs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reward&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;terminated&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;truncated&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;step&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="install-from-source"&gt;Install from source&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install git+https://github.com/CraftJarvis/MineStudio.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="why-minestudio-matters"&gt;Why MineStudio Matters&lt;/h2&gt;
&lt;p&gt;MineStudio makes Minecraft agent research easier in three ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Less engineering overhead.&lt;/strong&gt; Researchers can reuse a common simulator, data format, model interface, training pipeline, and evaluation framework.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;More reproducible comparisons.&lt;/strong&gt; Standardized interfaces make it easier to compare agents under shared environments and benchmark protocols.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Better support for open-ended evaluation.&lt;/strong&gt; The benchmark module enables batch testing over diverse Minecraft tasks, which is important for discovering agent weaknesses in complex open-world settings.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="citation"&gt;Citation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bibtex" data-lang="bibtex"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@article&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;cai2024minestudio&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{MineStudio: A Streamlined Package for Minecraft AI Agent Development}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{Cai, Shaofei and Mu, Zhancun and He, Kaichen and Zhang, Bowei and Zheng, Xinyue and Liu, Anji and Liang, Yitao}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;journal&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{arXiv preprint arXiv:2412.18293}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;year&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{2024}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>