Experience Transfer for Multimodal LLM Agents in Minecraft Game

Paper: arXiv:2604.05533 Code: CatworldLee/Echo Code reference: main @ ee19497f (2026-04-07)

1. Motivation (研究动机)

现有 Minecraft / open-world embodied agent 已经能用 MLLM 做“perception → reasoning → action → memory”的循环,例如 Voyager、JARVIS-1、MP5、MrSteve 等系统会把历史轨迹、规则、recipe 或 skill 放进长期记忆,再通过 retrieval 帮助当前目标规划。但这篇论文指出:这些记忆大多仍是被动仓库,常被当成过去行为索引或可复用 skill library;它们能“找相似经历”,却没有显式回答“这段经历的哪一部分可以迁移、为什么可以迁移、迁移到新任务时应该改什么”。

在 Minecraft 这样的环境里,可迁移规律并不只是文本相似度:工具和盔甲有相似 shape prototype,不同 material family 之间可替换,gathering → smelting → crafting 是重复出现的 process chain,weapon / utility block 又有 function symmetry。如果 agent 不能把这些规律拆开建模,它在遇到 diamond sword、stone pickaxe、new plank/boat 等新任务时,仍会像从零开始一样探索,导致冷启动慢、长程规划不稳定、MLLM hallucination 难验证。

本文要解决的具体问题是:让 multimodal LLM agent 从已有交互经历中抽取可解释、可检索、可验证的迁移经验,并在新 Minecraft crafting / utility tasks 上更快解锁物品。这个问题值得研究,因为 embodied agent 的价值不只是完成单个任务,而是在持续交互中把过去的成功轨迹转化成跨任务、跨世界的 reusable knowledge;一旦迁移有效,agent 可以减少重复试错,在 long-horizon open-world 环境里更接近“越玩越会”的学习形态。

Figure 1 解读:这张图把 Echo 与传统 memory-ICL agent 区分开。传统 DEPS / JARVIS-1 类方法主要把 ICL 用作“给当前目标找 few-shot 示例”;Echo 则把 ICL 变成主动迁移过程:先从 memory bank 中检索可能可迁移的经验,再用 analogy 诱导新任务、执行验证,并把成功轨迹写回记忆。因此它不是只服务当前 query 的 RAG,而是一个持续扩展任务空间的 transfer loop。

Figure 2 解读:横轴是 iteration steps,纵轴是 unique items unlocked。Echo 在中期出现 rapid unlocking:一旦 cold-start 阶段积累到足够可迁移经验,相似 item 会在短时间内连锁解锁。论文报告相对 MP5、Voyager、JARVIS-1、MrSteve,Echo 达到同等 item-unlocking milestone 约快

2. Idea (核心思想)

核心 insight 是:经验迁移的关键不在于把过去轨迹整体塞进 prompt,而在于把“可迁移性”显式拆成结构、属性、过程、功能、交互五个语义轴,再用这些轴对新旧任务做 analogy matching。这样 agent 可以判断“木镐 → 石镐”迁移的是功能与制作流程,而不是简单地把 oak plank 和 stone 当作词面相似物。

Echo 的关键创新有三点:第一,用五个 transfer dimensions 描述 embodied experience;第二,用 Contextual State Descriptor (CSD) 把视觉、文本、动作、反馈压缩成可比较的语义快照;第三,用 In-Context Analogy Learning (ICAL) 在 CSD memory bank 上检索、组装上下文、诱导新 action sequence,并通过执行验证把成功经验继续写回长期记忆。

与 Voyager / JARVIS-1 的主要区别是:后者更像 memory-augmented planning,retrieve 出来的经验多用于当前目标的 subtask planning;Echo 则强调主动发现可迁移的新任务,即从成功经历中抽象 pattern,再生成并验证“下一批可能能做的任务”。因此它的 memory 不是静态 episode store,而是带有结构化 transfer axes 的 experience generator。

Figure 3 解读:Figure 3a 展示传统 MLLM agent 在复杂环境中遇到的两类问题:不同 state transition / causal relation 让 transfer 很难,open-ended 推理又可能导致 hallucination 和 unstable control。Figure 3b 给出论文的解法:把环境知识写成统一 CSD,并拆成五个显式 transfer dimensions,使 agent 的检索与规划不只依赖整体 embedding 相似度,而能定位到可迁移的语义轴。

3. Method (方法)

3.1 Overall framework

Echo 仍沿用 embodied agent 的闭环:perception layer 接收 visual input 与 environment state,prompt builder 组织 visual caption、当前目标、memory evidence;planner 由 MLLM 生成 plan;pre-checker / verifier 做逻辑与可执行性检查;executor 执行动作并得到 observation;memory layer 同时维护 short-term memory 与 long-term memory bank。不同点在于:每条成功经验都会被转写成 CSD,并被后续 ICAL 用作跨任务迁移的结构化 evidence。

Figure 6 解读:图中三层结构分别对应 perception、decision、execution;memory layer 横跨整个循环。执行成功时,任务进度、动作轨迹、inventory/health/position、screenshots 等会进入 long-term memory,并被 CSD 拆成 meta / struct / attr / proc / func / inter。执行失败时,error recovery 会调用 MLLM 修复 command,但失败也会被记录,作为后续 verifier 与 memory update 的负反馈。

直觉上,Echo 能工作是因为它把“相似经历”从黑盒 embedding matching 变成了可解释的轴向匹配。比如 wooden pickaxe 与 stone pickaxe 在材料词面上不同,但它们共享 crafting table、sticks、tool shape、material-as-head 的功能角色;如果这些信息被拆成 functional / procedural / structural 字段,检索阶段就能找到真正可迁移的旧经历,规划阶段也能只替换材料与前置步骤,而不是重学整条 crafting chain。

3.2 Five explicit transfer dimensions

Echo 把经验迁移拆成五个轴,这五个轴共同回答 embodied agent 迁移时必须理解的三类问题:世界是什么样、世界如何变化、agent 如何行动。

  • Structural Axis — “How the world is organized.” 描述空间布局与层级关系,例如实体如何排列、是否可达、是否形成 crafting / inventory / block interaction 的几何结构。缺少这个轴时,agent 容易把 recipe 结构或多步空间依赖迁错。
  • Attribute Axis — “What physical properties things have.” 描述 object 的颜色、纹理、硬度、材料组成等视觉/物理属性,用于判断替代、支撑、兼容关系。比如不同 wood plank 颜色不同,但都可作为 boat/crafting 材料。
  • Procedural Axis — “How the world changes.” 描述动作如何改变 state,关注 sequence、causal rule 和 dependency,例如 mine → smelt → craft。长程任务最依赖这个轴,因为错误一步会破坏后续 dependency。
  • Functional Axis — “What things do.” 描述物体的用途和任务角色,例如 furnace 是 processing device,oak plank / stone 都可作为工具或建筑材料。它支持跨材料、跨物体的 semantic reuse。
  • Interaction Axis — “How the agent interacts with the world.” 描述 perception-action-feedback loop,即 agent 如何执行、环境如何反馈、动作是否可操作。它把知识连接到可执行命令,避免只在语义层面“看似可迁移”。

3.3 Contextual State Descriptor (CSD)

Figure 4 解读:CSD schema 有一个 meta 字段和五个语义字段:structattrprocfuncintermeta 记录 generation timestamp、source environment、model version 等;五个语义字段既包含 symbolic content,也包含 global embeddings,以支持 fast vector retrieval。图中示例把同一段 “smelting iron” 场景拆成 furnace/ore/charcoal/iron ingot 的结构、功能、属性、过程和交互历史,使后续检索不只靠整段文本相似度。

CSD 的作用是把 heterogeneous multimodal inputs 压缩成统一、可比较、可验证的 semantic snapshot。论文还提到训练阶段会用 instruction fine-tuning 让 MLLM 更稳定地产生格式化 CSD;训练数据由 multimodal task instructions、historical execution traces、verifier feedback 组成,目标是让模型学会 comprehension、structured organization 和 consistency assurance。论文没有公开这部分数据规模和具体 fine-tuning hyperparameters。

3.4 In-Context Analogical Learning (ICAL)

Figure 5 解读:ICAL 的输入来自 long-term memory bank 中的 CSD。系统先选一个代表性任务(最成功或最近学会),抽取完整 CSD;再按五个 CSD components 计算 multi-dimensional semantic similarity,检索 top- 相关任务;随后把这些样例拼成 ICL context,让 MLLM 只输出 potential new tasks as action sequences;最后执行并验证,成功轨迹写回 memory,失败轨迹记录为 failure log。这个流程把“看见旧经验”变成“生成新可执行任务”。

整体形式化可以写成:长期记忆 存储 multimodal trajectories、CSD、plans、validation results 和 execution traces,并同时维护 symbolic graph 与 vector embeddings。迁移空间为 检索算子从当前状态 、记忆 和迁移空间 中取出 个样例: 冻结参数的 instruction-tuned MLLM 根据当前状态、检索样例和 protocol 生成层级计划与自验证断言: Verifier 检查内部逻辑一致性与外部任务可行性: 执行器执行计划并收集轨迹,随后 memory update 同时更新 symbolic 与 vector channel:

3.5 Paper-level pseudocode and released-code status

官方仓库在 main@ee19497f 只有 readme.md,README 明确写着 “code is currently being organized and will be released soon”,并列出计划中的 configs/data/echo/memory/echo/csd/echo/ical/echo/planner/echo/verifier/ 等目录,但这些源码目录在该 commit 未实际发布。因此下面伪代码是基于论文算法流程的 paper-level implementation sketch,不是 released code 的逐行映射;训练配置也不能从仓库 launch config 中核验。

def build_csd(observation, action_trace, verifier_feedback, model):
    """Convert a successful Minecraft interaction into a six-field CSD."""
    visual_caption = model.caption(observation.screenshot)
    metadata = {
        "position": observation.position,
        "world_time": observation.world_time,
        "biome": observation.biome,
        "task": observation.task,
    }
    csd = model.generate_json(
        fields=["struct", "attr", "proc", "func", "inter"],
        inputs={
            "metadata": metadata,
            "visual_caption": visual_caption,
            "inventory": observation.inventory,
            "action_trace": action_trace,
            "verifier_feedback": verifier_feedback,
        },
    )
    csd["embedding"] = encode_axes(csd, axes=["struct", "attr", "proc", "func", "inter"])
    return csd
def retrieve_analogical_examples(query_csd, memory_bank, k):
    """Retrieve examples by multi-axis CSD similarity instead of one holistic score."""
    scored = []
    for item in memory_bank.successful_tasks():
        axis_scores = {
            axis: cosine(query_csd["embedding"][axis], item.csd["embedding"][axis])
            for axis in ["struct", "attr", "proc", "func", "inter"]
        }
        score = aggregate_axis_scores(axis_scores)
        scored.append((score, axis_scores, item))
    return topk(scored, k=k)
def ical_induce_action_sequences(seed_task, retrieved_examples, planner):
    """Use retrieved CSD examples as in-context analogies to propose executable tasks."""
    context = []
    for _, axis_scores, item in retrieved_examples:
        context.append({
            "task": item.task,
            "csd": item.csd,
            "axis_scores": axis_scores,
            "successful_actions": item.action_sequence,
        })
    proposals = planner.generate(
        protocol="infer transferable Minecraft tasks; output action sequences only",
        seed_task=seed_task,
        demonstrations=context,
    )
    return proposals
def echo_episode(env, memory_bank, planner, verifier, k=4):
    observation = env.observe()
    query_csd = build_csd(observation, [], None, planner)
    examples = retrieve_analogical_examples(query_csd, memory_bank, k=k)
    candidate_plans = ical_induce_action_sequences(observation.task, examples, planner)
 
    for plan in candidate_plans:
        assertions = planner.self_check(plan, observation)
        passed, report = verifier(plan, assertions, observation)
        if not passed:
            memory_bank.log_failure(plan, report)
            continue
        trace = env.execute(plan)
        if trace.success:
            csd = build_csd(trace.final_observation, trace.actions, report, planner)
            memory_bank.write_success(trace, csd)
            return trace
        memory_bank.log_failure(plan, trace.error)
    return None

Code reference: main @ ee19497f (2026-04-07) — official repository was inspected; pseudocode above is paper-level because implementation files are not yet released.

Paper ConceptReleased Source FileKey Class/Function
Official Echo repository statusreadme.mdNo implementation class/function released; README says code will be released soon.
CSD schemareadme.md planned path echo/csd/Not released at main@ee19497f; paper Figure 4 is the source for schema.
ICAL retrieval / analogyreadme.md planned path echo/ical/Not released; paper Figure 5 and §3.2 are the source for workflow.
Memory bank / replayreadme.md planned path echo/memory/Not released; paper §3.3 is the source for update loop.
Planner / verifierreadme.md planned paths echo/planner/, echo/verifier/Not released; paper Figure 6 and Eq. (1) define planner/verifier roles.
Config / training scriptsREADME planned configs/, requirements.txtNot released; no launch script, hardware config, LR, batch size, or checkpoint config available.

论文公式与 released code 实现差异:目前不是公式与代码数值不一致,而是官方仓库尚未发布实现;因此无法核对 CSD generation、retrieval weighting、top-、planner protocol、verifier logic、training/fine-tuning hyperparameters 是否与论文完全一致。

4. Experimental Setup (实验设置)

4.1 Tasks and datasets

论文在 Minecraft 中构造 object unlocking / crafting / utility tasks,并把评测任务分为四组;Table 1 说明结果 averaged over worlds、map variants 和 resource configurations,但没有给出具体 world 数量、map variant 数量或样本总数。

  • Recipe:Bed、Iron Pickaxe、Shield,测试结构与 shape-based recipe transfer。
  • Functional Equivalence:BridgeEq、SmeltEq、WeaponEq,测试当目标物品不可用时,agent 是否能使用功能等价替代物。
  • Crafting Chain:WeaponSet、ToolBench、ArmorSet,测试多步 dependency reasoning,例如 crafting swords / pickaxe-shovel-hoe / full iron armor set。
  • Utility Blocks:CraftGrid、CraftTable、Furnace,测试 agent 是否能正确使用功能 block 完成 short-horizon dependency tasks。

4.2 Baselines and variants

比较对象包括四类已有 Minecraft/embodied agents 及其 component removal variants:Voyager / Self Verification,MrSteve,MP5 / Patroller,JARVIS-1 / SelfCheck。Echo 自身报告 1-shot、2-shot、4-shot、8-shot variants;论文正文强调 2-shot 已经 competitive,但 8-shot 在多数任务上达到最好或接近最好。

4.3 Metrics

  • Success@0→10:从无先验任务知识初始化后,在前 10 个 learning episodes 内的平均成功率。
  • Success@0→30:前 30 个 learning episodes 内的平均成功率。
  • Continuous learning success rate:Figure 8 中 0–30 共 31 个 training episodes 的 success rate 曲线,用于观察 cold-start、中期加速、最终 plateau。
  • Ablation Success%:Figure 7 中删除单轴或仅保留单轴后的相对成功率变化;负值表示性能下降。

4.4 Training / implementation configuration

论文明确给出 episodes 范围(Table 1 的 0→10 / 0→30;Figure 8 的 0–30 共 31 episodes)、任务族、baseline 名称和结果指标;还说明 CSD 生成阶段使用 instruction fine-tuning,训练数据包含 multimodal task instructions、historical execution traces、verifier feedback。但论文未详细说明 base MLLM 名称、temperature、context length、GPU 型号/数量、learning rate、batch size、训练步数、CSD fine-tuning 数据规模。官方仓库 main@ee19497f 也尚未发布 configs/ 或 training/evaluation scripts,因此这些配置不能从 actual launch script 核验。

5. Experimental Results (实验结果)

5.1 From-scratch cross-world learning

Table 1 的主结果显示 Echo 在 cold-start from-scratch 设置下总体优于 memory-enhanced baselines。最强 Echo 8-shot 的逐任务结果为:

  • Recipe:Bed 62.5 / 92.5,Iron Pickaxe 52.5 / 87.5,Shield 55.0 / 87.5
  • Functional Eq.:BridgeEq 50.0 / 80.0,SmeltEq 47.5 / 80.0,WeaponEq 45.0 / 75.0
  • Crafting Chain:WeaponSet 40.0 / 77.5,ToolBench 42.5 / 82.5,ArmorSet 27.5 / 67.5
  • Utility Blocks:CraftGrid 57.5 / 92.5,CraftTable 55.0 / 87.5,Furnace 37.5 / 70.0

与代表性 baseline 对比:JARVIS-1 在 Bed 上为 60.0 / 87.5、Iron Pickaxe 50.0 / 85.0、Shield 50.0 / 80.0、BridgeEq 47.5 / 77.5、CraftGrid 52.5 / 80.0、CraftTable 55.0 / 82.5;MP5 在 Bed 上为 40.0 / 67.5、Iron Pickaxe 37.5 / 65.0、Shield 35.0 / 60.0、BridgeEq 45.0 / 75.0、CraftGrid 42.5 / 72.5、CraftTable 35.0 / 65.0。这些数字说明 Echo 的优势不仅来自最终 30 episode 后的累计成功率,也体现在前 10 episode 的冷启动学习效率。

Echo 的 shot 数也呈现清晰趋势:1-shot 已经在 CraftGrid 达到 55.0 / 92.5,2-shot 在 Bed 达到 62.5 / 90.0,4-shot 在 Bed 达到 62.5 / 92.5,8-shot 在 Functional Eq. 和 Utility Blocks 上进一步提升。这支持论文“2-shot competitive,但更多 analogy context 能提升复杂任务稳定性”的观察。

5.2 Continuous learning

Figure 8 解读:曲线覆盖 0–30 共 31 个 training episodes,并标出 episodes 5–15 的 fast learning phase。Echo 早期不是最快,JARVIS-1 起步更快;但 Echo 在 episode 10 后加速,最终稳定在约 46–48%。论文给出的 episode 30 排名是:Echo 45,MP5 43,JARVIS-1 35,MrSteve 33,Voyager 18。这说明 Echo 的优势主要来自中后期 memory replay 和 transfer axes 触发的持续加速,而不是一开始就更强的 exploration。

5.3 Ablation of explicit transfer axes

Figure 7 解读:左侧 bar charts 比较 Keep-Only 与 Remove 两种 ablation,右侧 heatmap 展示任务结果与 transfer axes 的相关性。删除单个轴的损失明显大于仅保留单轴时的收益,说明 Echo 依赖多轴组合,而不是某一个单独维度。

具体消融结论如下:Attribute axis 对 recipe tasks 最关键,删除后 Recipe 下降 -11%;Structural axis 影响 Functional Eq. 与 Crafting Chain,删除后分别下降 -7%-9%;Procedural axis 对 long-horizon tasks 影响最大,删除后严重退化 -12%;Functional axis 主导 functional equivalence tasks,删除后几乎使相关任务失效,下降 -9%;Interaction axis 影响 short-term utility operations,删除后 Utility Blocks 下降 -7%。这组结果验证了五轴不是装饰性标签,而是不同任务族的 error localization 和 transfer source。

5.4 Case study: wooden pickaxe → stone pickaxe

Figure 9 解读:示例先从 “crafting a wooden pickaxe” 提取经验:oak logs → oak planks → sticks,直接 craft 失败后发现需要 crafting table,再摆放 planks/sticks 得到 wooden pickaxe。检索阶段通过 Func axis 匹配 oak planks 与 stone 的功能相似性:二者都可作为工具/建筑材料。ICAL 随后诱导 “crafting a stone pickaxe”:先用 wooden pickaxe 挖 stone,再复用 sticks 与 crafting table 结构,把 stones/sticks 排列成 stone pickaxe。这个例子说明 Echo 迁移的不是表面物品名,而是材料角色、制作结构和前置动作依赖。

5.5 Limitations and overall conclusion

作者在 conclusion 中强调,Echo 表明 explicit transfer axes + CSD + ICAL 可以提升 long-term learning、cross-task transfer 和 interpretability;但局限也很明显:实验集中在 Minecraft object-unlocking/crafting 场景,真实物理环境会有更强的 causal ambiguity、perception noise 和 action uncertainty;官方实现尚未发布,也限制了复现者核验 retrieval weights、prompt protocol、CSD fine-tuning 与 verifier 细节。整体上,本文最有价值的结论是:multimodal embodied agent 的 memory 不应只服务“回忆过去”,还应服务“发现哪些过去经验可迁移到下一批任务”。