Minecraft 是研究通用智能体最有代表性的开放世界之一。
一个看似简单的任务,例如“制作一把钻石剑”,实际上要求智能体完成一条很长的因果链:理解合成关系、观察当前环境与背包、规划材料依赖、连续执行鼠标和键盘动作、判断子任务是否完成,并在掉入洞穴、资源不足或路线受阻时及时反思和重规划。
因此,在 Minecraft 中构建 Agent,真正困难的并不只是“生成下一步动作”,而是让 Agent 在持续交互中回答三个问题:
我过去学到了什么?
我刚刚做过什么,现在执行到哪里?
面对当前任务,我应该调用哪一种能力,并投入多少推理计算?
围绕这些问题,我们以记忆机制为主线,逐步推进了三项工作:
- Optimus-1:建立长期记忆,让 Agent 积累并检索世界知识与历史经验;
- Optimus-2:建立短期行为记忆,让低层策略理解历史观察—动作序列和当前执行进度;
- Optimus-3:把共享知识和任务能力组织进可路由的专家参数,使同一个端到端模型能够兼顾 System 1 的快速行动与 System 2 的深度推理。
如果把三篇工作放在同一条发展线上,它们对应的是三种不同时间尺度的记忆:
Long-Term Memory → Working Memory → Parametric Memory
也对应 Agent 能力的三次推进:
记住知识与经验 → 记住正在发生的行为 → 在模型内部选择应该调用的能力
需要说明的是,“参数记忆”是我在回顾这条研究路线时使用的统一表述。Optimus-3 论文将其描述为 Dual-Router Aligned Mixture-of-Experts:共享知识专家和任务专家通过参数空间保存不同类型的能力,而路由器负责选择这些能力应当如何被激活。
第一阶段:Optimus-1——让 Agent 从过去的知识与经验出发
论文 · NeurIPS 2024
Optimus-1: Hybrid Multimodal Memory Empowered Agents Excel in Long-Horizon Tasks
为什么长序列任务需要显式记忆?
早期 Minecraft Agent 已经能够借助 LLM 或 MLLM 进行任务规划,也可以调用 STEVE-1 一类策略生成鼠标和键盘动作。但它们在复杂长序列任务中仍然频繁失败。
一个重要原因是:Agent 没有形成可以持续积累和主动调用的长期记忆。
Minecraft 中的世界知识并不是互相独立的事实,而是一个具有严格依赖关系的网络。制作钻石剑不仅需要知道“两颗钻石和一根木棍”,还需要知道必须先制作工作台、木镐、石镐和铁镐,才能到达可以开采钻石的工具等级。
与此同时,环境交互也充满偶然性。Agent 可能在砍树时掉入洞穴,在寻找矿石时进入水中,或者在材料尚未准备好时错误地进入下一步。面对这些情况,仅依靠通用模型的参数知识,很难稳定地产生可执行计划;仅保存成功轨迹,也无法告诉 Agent 怎样识别和避开过去的失败。
Optimus-1 的核心观点是:
长序列任务需要两类长期记忆:描述世界规律的知识记忆,以及记录任务执行过程的经验记忆。
HDKG:把世界知识凝练为层次化有向图
Optimus-1 首先提出 Hierarchical Directed Knowledge Graph(HDKG)。
在 HDKG 中:
- 节点表示 Minecraft 中的物体、工具和材料;
- 有向边表示物体之间的制作或获取依赖;
- 针对目标物体检索相应子图;
- 再通过拓扑排序得到完成任务所需的材料关系与执行顺序。
例如,当任务是制作钻石剑时,HDKG 不只是返回最终配方,而是展开从木材、工作台、基础工具,到铁镐和钻石的完整依赖路径。
这使知识不再隐式地藏在模型参数里,而是成为一个可查询、可更新、可解释的外部结构。
Knowledge-Guided Planner 可以一次性读取目标相关子图,再结合当前游戏画面生成完整的子目标序列。与每执行一步就重新询问下一步相比,这种规划方式更加完整,也更符合长序列任务的层级结构。
AMEP:把成功与失败都凝练为多模态经验
仅有配方知识还不够。相同的计划在不同环境中可能产生完全不同的执行结果。
Optimus-1 因此提出 Abstracted Multimodal Experience Pool(AMEP),用于保存和检索历史任务中的多模态经验。
AMEP 记录的不只是文本计划,还包括:
- 环境与 Agent 状态;
- 当前任务和子目标;
- 关键视频帧;
- 执行前后的视觉变化;
- 成功、继续执行或需要重规划的结果。
为了避免直接保存完整视频带来的存储和检索负担,Optimus-1 对视觉轨迹进行动态摘要:先以固定频率筛选视频帧,再通过滑动图像缓冲区去除重复画面,并利用 MineCLIP 衡量视觉内容与文本子目标之间的相关性。
最终存入 AMEP 的不是冗长录像,而是能够代表任务进展和关键状态变化的经验片段。
更重要的是,AMEP 同时存储成功案例和失败案例。
成功案例告诉 Agent:“类似任务在什么状态下已经完成。”
失败案例则告诉 Agent:“哪些视觉状态意味着当前策略已经失效,需要及时改变计划。”
这使经验不再只是可模仿的范例,也成为可用于诊断错误的参照。
Knowledge-Guided Planning 与 Experience-Driven Reflection
基于 HDKG 和 AMEP,Optimus-1 构建了三个相互配合的模块:
- Knowledge-Guided Planner:结合当前画面和 HDKG,生成长序列子目标;
- Action Controller:使用 STEVE-1 将子目标转化为鼠标与键盘控制;
- Experience-Driven Reflector:周期性检索 AMEP,判断当前子任务状态。
Reflector 将状态划分为三类:
- COMPLETE:当前子目标已完成,可以进入下一步;
- CONTINUE:执行尚未结束,但当前状态仍然合理;
- REPLAN:任务已经陷入失败或危险状态,需要重新规划。
因此,Optimus-1 形成了一个由记忆驱动的闭环:
知识指导计划,经验指导反思,反思再触发重规划。
非参数学习:通过扩展记忆实现自我演化
Optimus-1 还提出了 “free exploration–teacher guidance” 的非参数学习方式。
在自由探索阶段,多个 Agent 在随机环境中执行任务,并共享同一个 HDKG 和 AMEP。环境反馈不断补充新的配方知识、成功经验和失败经验。
在教师指导阶段,Agent 再学习少量更复杂的长序列任务,将新的高阶知识和完整执行过程加入记忆。
整个过程不需要更新 MLLM 参数。Agent 的能力随着外部记忆扩展而逐步增强。
这让 Optimus-1 展示出一种很有吸引力的学习方式:
模型本身可以保持稳定,而 Agent 通过持续积累知识和经验不断成长。
在 67 个长序列任务组成的基准上,Optimus-1 在多个任务组中明显优于已有 Agent;消融实验也表明,规划、反思、知识和经验四个部分共同构成了长序列能力。
Optimus-1 留下的问题
Optimus-1 解决了“过去的知识和经验如何被利用”,但低层执行仍然依赖 STEVE-1。
对于 Action Controller 来说,当前子目标和当前视觉观察仍然是最直接的条件。虽然策略可能具有一定的时间建模能力,它并没有显式地把“历史动作如何改变观察”“任务从开始到现在经历了什么”压缩成可供决策使用的行为状态。
这意味着 Agent 可以知道长远目标,也可以从长期经验中反思,但在每一个动作时刻,它仍可能缺少一种清晰的短期记忆:
我刚才做了什么?这些动作造成了什么变化?当前行为执行到哪个阶段?
这正是 Optimus-2 试图解决的问题。
第二阶段:Optimus-2——让低层策略拥有短期行为记忆
论文 · CVPR 2025
Optimus-2: Multimodal Minecraft Agent with Goal-Observation-Action Conditioned Policy
从“记住任务”走向“记住执行过程”
Optimus-1 中,MLLM 负责高层规划,STEVE-1 负责低层动作。这个层级架构使长序列任务成为可能,但性能瓶颈也逐渐从 Planner 转移到了 Policy。
现有 goal-conditioned policy 通常把目标表示与当前视觉特征结合,再预测下一步动作。但它们没有充分显式建模两个关键关系:
- 动作与观察之间的因果关系。 当前画面是过去动作与环境交互的结果;
- 开放式子目标与完整观察—动作历史之间的关系。 子目标描述的是一段行为,而不是某一帧图像。
如果只根据当前观察预测动作,Agent 很难知道自己已经尝试过什么,也很难区分视觉相似但执行阶段不同的状态。
Optimus-2 因此把研究重点推进到低层控制:
一个可靠的动作策略,不仅要理解目标和当前画面,还要把从任务开始到当前时刻的观察—动作历史组织成行为记忆。
GOAP:Goal、Observation 与 Action 的联合条件策略
Optimus-2 保留了“高层规划器 + 低层控制器”的总体结构。
MLLM-based Planner 首先根据任务和当前画面生成一组子目标,随后由新的 Goal-Observation-Action Conditioned Policy(GOAP) 依次执行。
GOAP 由两个核心部分组成:
- Action-Guided Behavior Encoder:建模历史观察—动作序列;
- MLLM Backbone:将开放式语言子目标与行为 token 对齐,并自回归预测动作。
相较于只把目标 embedding 加到视觉特征上,GOAP 把目标、观察和动作视为一个互相依赖的整体。
Causal Perceiver:让动作解释观察
Action-Guided Behavior Encoder 首先使用 Causal Perceiver 建模同一时刻的观察—动作关系。
它以视觉特征作为 Query,以动作 embedding 作为 Key 和 Value,通过 cross-attention 将动作信息写入视觉表示。
这一步的重要意义是:模型不再把画面视为孤立输入,而是尝试理解:
当前观察中的变化,是由怎样的历史动作造成的?
例如,镜头朝向改变、物体被破坏、方块进入背包,都是动作与环境交互后的结果。只有把动作和观察联系起来,策略才能形成更接近“行为”的表示。
History Aggregator:把完整历史压缩成固定长度行为 token
随后,Optimus-2 使用 History Aggregator 建模时间维度上的长期依赖。
在每个时间步:
- 当前行为 token 与历史行为 token 通过 history-attention 交互;
- 当前观察—动作信息被写入更新后的行为 token;
- Historical Memory Bank 根据相邻特征相似度对历史 token 进行聚合和压缩;
- 最终历史长度保持固定,避免随任务持续执行而无限增长。
这样,固定数量的 behavior tokens 就可以表示从任务开始到当前时刻的观察—动作历史。
这是一种典型的短期或工作记忆:
- 它随每一步交互更新;
- 它服务于当前行为决策;
- 它保留早期关键信息;
- 它把长轨迹压缩为可实时使用的固定长度状态。
MLLM Policy:把语言目标与行为历史对齐
获得 behavior tokens 后,GOAP 将三类信息共同送入 MLLM:
- 当前子目标的文本 token;
- 当前观察的图像 token;
- 历史观察—动作序列形成的 behavior token。
MLLM 对这些信息进行联合建模,并通过 VPT action head 输出鼠标和键盘动作。
因此,Optimus-2 不再只回答“在这张图里应该做什么”,而是回答:
为了完成当前语言目标,结合我从开始到现在的行为历史,下一步应该做什么?
MGOA:为目标—观察—动作联合学习构建数据
为了训练 GOAP,Optimus-2 进一步构建了 Minecraft Goal-Observation-Action(MGOA) 数据集。
MGOA 包含:
- 25,000 段视频;
- 8 类原子任务;
- 约 3,000 万组对齐的 goal-observation-action 数据。
数据通过自动化流程构建,不依赖逐帧人工标注。
实验表明,Optimus-2 在原子任务、长序列任务和开放式子目标任务上都取得了更好的表现。论文报告,相较此前方法,其平均提升分别约为 27%、10% 和 18%。
从长期经验检索到实时行为记忆
Optimus-2 延续了 Optimus-1 的记忆主线,但记忆进入系统的位置发生了变化。
在 Optimus-1 中,memory 主要服务于高层规划与反思:
- HDKG 回答“任务依赖是什么”;
- AMEP 回答“过去遇到类似情况时发生了什么”。
在 Optimus-2 中,memory 开始直接进入动作策略:
- Causal Perceiver 建模动作如何产生当前观察;
- Historical Memory Bank 保存并压缩执行历史;
- behavior tokens 告诉策略当前行为已经发展到什么状态。
因此,记忆从任务级长期记忆进一步延伸为动作级短期记忆。
但 Optimus-2 仍然采用高层 Planner 和低层 Policy 分离的结构。要让 Agent 同时具备 Captioning、Embodied QA、Planning、Grounding、Reflection 和 Action,通常还需要连接多个模块。
更进一步的问题由此出现:
能否用一个统一的端到端模型,同时完成高频低延迟行动和低频深度推理,并让不同任务之间既共享知识又互不干扰?
第三阶段:Optimus-3——让记忆进入专家参数与计算路径
论文 · arXiv 预印本
Optimus-3: Dual-Router Aligned Mixture-of-Experts Agent with Dual-Granularity Reasoning-Aware Policy Optimization
System 1 与 System 2 的结构性冲突
一个真正通用的 Minecraft Agent 需要两种看似矛盾的能力。
System 1 对应高频、快速、反射式的视觉运动控制。动作必须低延迟地产生,否则 Agent 无法顺畅移动、调整视角或操作物体。
System 2 对应低频、深度、审慎的认知过程,包括:
- 长序列规划;
- 视觉定位;
- Embodied QA;
- 任务状态反思;
- 基于当前环境进行主动感知与验证。
现有分层 Agent 可以为这些能力逐个增加模块,但系统会越来越复杂,模块之间的接口也容易产生误差。
端到端 MLLM 虽然能够统一输入输出,却面临另一个问题:所有任务经过相同参数和相同层数。
如果统一采用深层推理,动作生成会太慢;如果统一采用浅层计算,规划和反思又不够充分。与此同时,Action、Grounding 和 Planning 等任务具有不同输出形式,共享同一组稠密参数还会产生梯度干扰。
Optimus-3 的目标因此不再只是增加一种记忆,而是重新组织模型内部的能力:
让不同任务拥有可区分的参数空间,同时让不同认知模式拥有可变化的推理深度。
从 System 1 轨迹生成 System 2 推理数据
在模型架构之前,Optimus-3 首先解决训练数据问题。
Minecraft 中存在大量动作轨迹,但 Planning、Grounding、Reflection 等 System 2 推理轨迹非常稀缺。直接使用通用 MLLM 自动标注,又容易因为缺少 Minecraft 配方、物理规则和环境状态而产生幻觉。
Optimus-3 因此提出 Knowledge-Enhanced Automated Data Generation Pipeline。
这条数据流水线将多个知识来源作为约束:
- 使用领域知识图保证合成路径的拓扑正确性;
- 使用专家策略执行子目标并生成动作轨迹;
- 使用环境反馈验证任务是否成功;
- 使用 Agent 状态、背包和周围物体作为视觉描述的事实依据;
- 使用 Grounding DINO 等专家模型提供精确定位标注;
- 使用环境反馈辅助生成反思状态。
通过这些约束,原始 System 1 交互轨迹被转换为包含 Planning、Captioning、Embodied QA、Grounding、Reflection 和 Action 的多任务数据集 OptimusM4。
这一步延续了 Optimus 系列对知识图和交互经验的使用,只是它们不再只在推理时作为外部 memory 被检索,也开始成为训练参数能力的数据来源。
横向路由:共享知识专家与任务专家
Optimus-3 的第一条路由位于模型的“横向”参数维度。
在每一层中,标准 FFN 被替换为:
- 一个 Shared Knowledge Expert;
- 多个 Task-Specific Experts;
- 一个根据任务类型进行选择的 Task Router。
每个输入都会激活共享知识专家和对应任务专家。
共享专家负责保存跨任务可迁移的视觉与语义知识;任务专家则分别学习 Action、Planning、Grounding、Reflection 等任务特有的表示和输出规律。
与 token-level 的动态软路由不同,Optimus-3 根据任务语义将输入确定性地送入相应参数空间。这种正交解耦能够减少不同任务之间的梯度冲突,同时保留共享知识带来的正迁移。
从记忆视角看,可以把这理解为一种参数记忆:
- 通用经验被压缩进共享专家;
- 任务专属能力被压缩进不同任务专家;
- Task Router 决定当前任务应该检索哪一组参数能力。
这不是论文直接使用的术语,但它解释了 Optimus 系列从外部可检索记忆向模型内部专门化能力的演进。
纵向路由:为 System 1 建立 Fast Path,为 System 2 保留 Deep Path
仅仅选择任务专家还不能解决推理延迟问题,因为 System 1 与 System 2 对网络深度的需求不同。
Optimus-3 因此引入第二条“纵向”路由:Layer Router。
Layer Router 根据任务表示预测每一层的重要性,再通过阈值决定哪些层应该被执行,哪些中间层可以通过残差连接直接跳过。
由此形成两条计算路径:
- Fast Path:面向 Action 等 System 1 任务,只激活必要的感知和控制层,减少延迟;
- Deep Path:面向 Planning、Reflection、Grounding 和 Embodied QA 等 System 2 任务,保留充分的网络深度进行审慎推理。
横向路由决定“调用哪一种能力”,纵向路由决定“为了当前任务应该思考多深”。
二者结合后,同一个端到端模型既不需要让所有任务共享完全相同的参数,也不需要让所有任务承担完全相同的计算成本。
DGRPO:不仅监督答案,也监督思考过程
统一架构仍然需要真正激活 System 2 推理能力。
普通监督微调可以让模型模仿推理样本,但面对 Minecraft 中不断变化的视觉场景,仍然容易产生视觉幻觉或逻辑错误。标准强化学习如果只看最终答案,也无法区分“过程错误但碰巧答对”和“推理过程真正正确”。
Optimus-3 因此提出 Dual-Granularity Reasoning-Aware Policy Optimization(DGRPO)。
训练分为两个阶段:
- Visual-Reasoning Cold Start:使用显式视觉推理模板,让模型先描述和核对画面证据,再给出答案;
- DGRPO 强化学习:在 GRPO 基础上,同时对推理过程和最终结果提供密集反馈。
针对不同任务,DGRPO 设计了两类关键奖励:
- Dependency-Aware Synthesis Reward:利用 Minecraft 合成知识图监督规划链是否符合材料依赖;
- Hallucination-Aware Consistency Reward:根据场景中真实存在的物体,惩罚推理过程和答案中的视觉幻觉。
这使 System 2 不只是生成看起来合理的解释,而是必须让中间推理与领域知识和视觉证据保持一致。
从多模块 Agent 到统一通用 Agent
Optimus-3 在统一架构中整合了多种能力:
- Captioning;
- Embodied QA;
- Planning;
- Action;
- Grounding;
- Reflection。
最新版本的实验显示,它在 System 1、System 2 和开放式任务上都优于已有方法,并在开放式任务上取得 60% 的平均成功率。
但需要注意,参数专家并不等同于完整的终身记忆系统。它们擅长保存训练阶段获得的共享能力与任务能力,却不像 Optimus-1 的 HDKG 和 AMEP 那样可以在推理过程中持续追加新知识和新经验。
因此,Optimus-3 不是对显式长期记忆的替代,而是补上了此前路线中缺少的一层:
除了在模型外存储知识、在控制过程中保存历史,Agent 还需要在参数内部组织不同能力,并按任务需要高效调用。
三种记忆,三个时间尺度
回顾这三篇工作,核心问题始终没有改变:
如何让 Agent 利用过去、理解现在,并为未来的决策调用合适的能力?
但 memory 的载体和作用在不断演化。
Optimus-1:任务级长期记忆
Optimus-1 的记忆存在于模型外部:
- HDKG 保存稳定的语义知识;
- AMEP 保存可检索的情景经验;
- Planner 和 Reflector 在任务级时间尺度上调用记忆。
它主要回答:
我知道哪些世界规则?过去类似任务成功或失败时发生了什么?
Optimus-2:动作级短期行为记忆
Optimus-2 的记忆进入低层策略:
- Causal Perceiver 连接动作与观察;
- Historical Memory Bank 压缩从任务开始到当前的历史;
- behavior tokens 为每一步动作提供执行上下文。
它主要回答:
我刚才做过什么?这些动作带来了什么结果?当前执行处于什么状态?
Optimus-3:模型级参数记忆与计算路由
Optimus-3 把能力组织进模型参数:
- Shared Knowledge Expert 保存跨任务共性;
- Task-Specific Experts 保存任务专属能力;
- Task Router 选择需要调用的参数;
- Layer Router 决定需要经过多少层计算。
它主要回答:
当前任务需要哪一种能力?这是需要快速反应,还是需要深入思考?
因此,三篇工作可以概括为:
External Memory → Behavioral Memory → Routed Parametric Memory
也可以概括为:
Plan and Reflect from Experience → Act with History → Think and Act with Adaptive Compute
结语:记忆不是一个模块,而是 Agent 的组织原则
在开放世界中,真正的智能并不只来自更大的模型。
一个能够长期完成复杂任务的 Agent,需要在多个时间尺度上组织信息:
- 用长期记忆保存稳定知识和可复用经验;
- 用短期记忆维持行为连续性和任务进度;
- 用参数记忆沉淀共享能力与任务能力;
- 用路由机制在不同场景中检索合适的记忆和计算路径。
从 Optimus-1 到 Optimus-2,再到 Optimus-3,我们所探索的并不是三种互相替代的 Agent 架构,而是三层逐渐补全的认知结构。
Optimus-1 让 Agent 拥有过去。
Optimus-2 让 Agent 理解现在。
Optimus-3 让 Agent 知道应该如何调用自己的能力。
下一步更值得探索的问题,是如何把这三层真正统一起来:让端到端通用 Agent 在保持 System 1/2 高效协同的同时,也能够在开放世界中持续写入新知识、积累新经验、扩展新专家,并形成真正可长期成长的记忆系统。
这也是 Memory-Centric Agent 最终希望抵达的方向:
不是让 Agent 每次都重新解决世界,而是让它能够把过去转化为未来的能力。