FutureSightDrive: Thinking Visually with Spatio-Temporal CoT for Autonomous Driving

Paper: arXiv:2505.17685 Code: MIV-XJTU/FSDrive Code reference: main @ 7e95702 (2026-05-08)

1. Motivation (研究动机)

这篇论文要解决的不是“再做一个 autonomous driving VLM”,而是一个更具体的规划链路问题:现有 Vision-Language-Action (VLA) / MLLM 驾驶模型虽然能把多相机图像、导航指令和 ego 状态映射成未来轨迹,但它们的中间 reasoning 往往仍然是离散文本 Chain-of-Thought。文本 CoT 在通用问答里有用,因为语言可以把推理步骤显式化;但在自动驾驶里,关键证据是连续视觉世界中的车道边界、障碍物位置、可行驶区域、动态物体未来运动和遮挡关系。把这些信息压缩成“前方有车”“右侧有行人”或 bounding box 坐标,本质上会丢掉像素级几何细节和时序连续性。

作者指出,当前 VLA 用 textual CoT 规划时至少有三类瓶颈。第一是 spatio-temporal ambiguity:文字可以描述当前场景,却很难精确表达未来 0.5–3 秒内车道曲率、车辆相对位移、行人穿越趋势和红绿灯路口的几何约束;规划模型看到的是抽象符号,而不是未来物理场景。第二是 fine-grained information loss:图像中的道路纹理、车道线弯曲、车辆朝向、遮挡边缘和远处目标都可能被语言摘要压平,导致下游 trajectory decoder 对碰撞风险估计不足。第三是 modality gap:感知输入是 image/video,CoT 变成 text,最终 action 又是连续坐标;每一次跨模态转换都会引入对齐误差,尤其在 safety-critical driving 中会放大错误。

论文的核心问题因此可以表述为:自动驾驶模型在规划之前,能不能像人类司机一样先“在脑中看见未来场景”,再基于这个未来视觉状态规划,而不是只在语言空间里推理?这和传统 world model 有相似动机,但 FSDrive 的目标更窄:不是训练一个独立的视频生成器,而是在现有 VLA / MLLM 内部加入可生成的视觉 token,让同一个模型先生成一个 unified future frame 作为 visual CoT,再根据当前观察和这个 visual CoT 输出 3 秒未来轨迹。

这个问题值得研究的原因在于,自动驾驶的 planning 不是静态识别任务,而是“当前观测 + 未来想象 + 物理约束 + 控制目标”的组合。若模型只回答当前场景描述,可能在错误导航指令、动态障碍或复杂路口下仍然给出看似合理但危险的轨迹;若模型能显式生成未来车道线、3D boxes 和未来前视图,则中间状态更接近可检查的物理世界假设。FSDrive 想证明:让 VLA 以 image-form spatio-temporal CoT 进行中间推理,既可以降低碰撞,也可以保留 VLM 的 scene understanding 能力,并用较少数据激活视觉生成能力。

2. Idea (核心思想)

Figure 1 解读:上半部分表示离散文本 CoT:模型从当前图像抽取一句语言描述,再生成 planning command,但这种路径没有真正“看见未来”,右侧也只能靠语言 insight 约束 planning。中间的 image-text CoT 虽然加入了图像,但仍把视觉未来和文本感知混在两个模态里,CoT 内部存在 modal inconsistency。下半部分是 FSDrive 的关键:未来场景、车道线、3D object boxes 和下一帧都被统一到 image-form spatio-temporal CoT 中,模型先在视觉空间生成未来,再用同一视觉中间状态规划。

FSDrive 的核心 insight 是:对驾驶规划而言,最有价值的 CoT 不应是解释性文本,而应是一个可视化的未来世界状态。这个状态同时包含空间关系和时间演化:空间关系由未来 lane divider 与 3D detection boxes 表示,告诉模型哪里可行驶、关键物体在哪里;时间关系由 ordinary future frame 表示,告诉模型视觉内容如何随时间变化。把二者合成统一图像后,VLA 的 role 发生变化:第一步像 world model 一样预测未来,第二步像 inverse dynamics model 一样从“当前 + 未来”反推应该走的轨迹。

与 OmniDrive、EMMA、Agent-Driver 等文本/语言式驾驶推理相比,FSDrive 的根本差异不是额外加一句 rationale,而是把 rationale 的 carrier 从 text 换成 image token。与 Doe-1 这类也涉及视觉生成的方案相比,FSDrive 强调用视觉生成作为 planning CoT,并用 progressive visual generation 先学物理结构再学完整未来画面。与 image-text CoT 相比,它避免一部分信息在“图像未来 → 文本描述 → 轨迹”之间来回转换,因而更适合表达碰撞风险、车道约束和未来物体位置。

论文的创新可以压缩成三句话。第一,FSDrive 提出 visual spatio-temporal CoT:未来 frame、未来 lane dividers 和未来 3D boxes 被合成为一个 unified future frame,作为 trajectory planning 的中间推理步骤。第二,作者用 unified pre-training 在同一 MLLM 中兼顾 visual understanding 与 visual generation:保留 VQA 场景理解,同时扩展 vocab 接入 MoVQGAN visual tokens,让 LLM 预测图像 token。第三,作者用 progressive easy-to-hard generation 先生成结构性物理先验,再生成完整未来帧,避免直接自回归生成低分辨率未来图像时违反物理规律。

3. Method (方法)

3.1 整体框架:从当前多视角图像到 future visual CoT,再到 trajectory

Figure 2 解读:左侧是 pre-training 阶段,模型接收当前 surround-view images 与不同任务 prompt,学习四类输出:安全动作文本、未来 lane dividers、未来 3D detection boxes、下一帧图像。中间的 FSDrive f_theta 表示同一个 MLLM 通过 next-token prediction 统一这些任务。右侧是 fine-tuning 阶段:模型在高层指令、ego status、多相机图像和 optional task prompt 条件下先生成 spatio-temporal CoT(图中红色线框/车道线/下一帧),再输出未来 trajectory coordinates。

FSDrive 继承端到端驾驶规划的基本形式。给定 timestep 个 surround-view images: 模型输出未来 BEV waypoints: 传统 VLA 直接学习: 其中 是可选导航命令和 ego status(速度、加速度等)。FSDrive 在中间插入 ,即图像形式的 future visual reasoning state: 直觉上, 是规划前的“未来视觉草稿”。如果当前导航命令有误或当前文本描述遗漏了潜在碰撞,模型仍可利用视觉未来中的可行驶区域和目标框修正 trajectory。这个设计把“解释”从语言空间移到视觉空间,减少对人工符号设计的依赖。

3.2 统一 visual generation 与 understanding:扩展 vocab,而非重训架构

FSDrive 使用现有 MLLM(论文实验中是 Qwen2-VL-2B)作为初始化,不改变原始 ViT-based image encoder 与 LLM 主体结构。它唯一的结构性扩展是把 VQ-VAE / MoVQGAN 的 image codebook token 加入 LLM vocabulary,使 language token 与 visual token 共用自回归 next-token prediction 框架。论文中的图像 tokenizer 将图像像素 量化为离散 token: 再按 raster order 排成 个 token。生成时使用普通 LM loss: 这一步的意义是:FSDrive 不需要从零训练一个 image-generation LLM,也不需要把 VLA 拆成“理解模型 + 独立视频生成模型 + 规划模型”。LLM 只要学会在文本 token 序列里预测 <|0|><|16383|> 这类视觉 code token,就可以让 MoVQGAN detokenizer 把这些 token 还原为 pixel-space future frame。released code 中 configs/pretrain.yamlconfigs/sft.yaml 都显式加入了 16,384 个 new_special_tokens,对应 MoVQGAN codebook 的离散视觉 token。

pre-training 同时包含 understanding 与 generation。理解侧使用 OmniDrive-nuScenes/DriveLM 风格 VQA,让模型回答当前驾驶场景问题: 其中 是多视角图像, 是问题或指令。生成侧则给定 image-instruction pair ,自回归预测 future front-view frame tokens: 论文强调 future frames 在驾驶视频中天然存在,因此相比需要人工标注的 perception labels,它可以利用大量未标注视频数据激活视觉生成能力。这个想法在自动驾驶中很重要:未来帧预测不是为了生成高保真视频本身,而是为了让模型学习道路动态与物理约束,从而改善下游 planning。

3.3 Progressive visual generation:先物理结构,后完整未来帧

直接让 autoregressive MLLM 生成完整未来场景容易出现物理不一致,例如车道线走向不合理、目标框漂移、障碍物与轨迹冲突。FSDrive 因此把 future visual generation 设计成 easy-to-hard curriculum。第一步生成未来 lane divider tokens ,把 drivable region 和道路骨架显式化;第二步生成未来 3D detection box tokens ,把关键动态物体的空间位置和运动趋势显式化;第三步在 条件下生成完整 future frame tokens 这个 progressive 设计的直觉是把“难的像素预测”拆成“先预测物理约束,再补充细节”。车道线是静态约束,决定了车辆不应驶出哪片区域;3D boxes 是动态约束,决定了哪些目标会进入潜在碰撞区;完整 future frame 则补充天气、纹理、遮挡和视觉上下文。最终 fine-tuning 时,为效率起见,论文不再分别生成 lane divider、3D boxes 和 frame,而是把它们合成一个 unified future frame。这个 unified frame 就是实际 trajectory planning 使用的 spatio-temporal CoT。

3.4 训练策略与 released code 对照

两阶段训练策略

论文训练分两阶段。Stage 1 是 unified pre-training:VQA 保留 MLLM 的 semantic understanding;nuScenes 未标注视频提供 future frame prediction;nuScenes annotated data 用于学习 lane divider 与 3D detection 形式的 progressive visual CoT;含 intermediate visual reasoning 的 future frame prediction 让模型学会“先约束、后生成”。Stage 2 是 supervised fine-tuning:scene understanding 使用 DriveLM GVQA;trajectory planning 遵循 VAD/nuScenes 设置,把 holistic future scene、lane dividers 和 3D detection results 整合为单个 future frame 作为中间推理。

Code reference 与实现映射表

Code reference: main @ 7e95702 (2026-05-08) — pseudocode and mapping based on this commit

Paper ConceptSource FileKey Class/Function
MoVQGAN visual token extraction for pretrainingMoVQGAN/pretrain_data.pyget_movqgan_model('270M'), model(img_tensor), output gt_indices_pretrain.json
MoVQGAN visual token extraction for SFTMoVQGAN/sft_data.pyNuScenes, CAM_FRONT, model(img.to('cuda').unsqueeze(0)), output gt_indices_sft.json
Future-frame pretraining conversationcreate_data/pretrain_data.pycurrent CAM_FRONT image → future 0.5s CAM_FRONT visual tokens
Planning SFT conversationcreate_data/sft_data.pysix camera images + history trajectory + mission goal → future image tokens + 6 waypoints
Prompt fieldscreate_data/prompt_message.pygenerate_user_message, generate_assistant_message
Training configconfigs/pretrain.yaml, configs/sft.yamlQwen2-VL-2B, full finetuning, frozen vision tower/projector, 16,384 visual special tokens
InferenceLLaMA-Factory/scripts/vllm_infer.py--dataset val_cot_motion, --max_new_tokens 2048
Prediction/evaluation bridgetools/match.py, tools/evaluation/evaluation.pyJSONL prediction → eval_traj.json; UniAD/ST-P3 L2 and collision
Visual token reconstructionMoVQGAN/vis.pyregex parse `<

YAML 训练配置

训练配置必须看实际 YAML,而不能只看论文文字。configs/pretrain.yaml 指定 model_name_or_path: Qwen/Qwen2-VL-2B-Instructdataset: pretrain_datacutoff_len: 32768max_new_tokens: 2048learning_rate: 5.0e-4num_train_epochs: 32.0per_device_train_batch_size: 16gradient_accumulation_steps: 2stage: sftfinetuning_type: full,并冻结 freeze_vision_towerfreeze_multi_modal_projectorconfigs/sft.yaml 则从 saves/qwen2_vl-2b/pretrain 继续训练,dataset: train_cot_motionlearning_rate: 1.0e-4num_train_epochs: 12.0,其余长上下文和 special-token 设置基本一致。

论文公式与 released code 差异

论文公式与 released code 实现差异:论文方法把 (future lane dividers)、(future 3D detection)与 (future frame)组织为 progressive generation,并在 fine-tuning 中使用包含 lane/box/frame 的 unified future frame;

但当前 released code 中可直接追踪到的 create_data/sft_data.py 只从 gt_indices_sft[next_token]['CAM_FRONT'] 取下一帧 CAM_FRONT visual tokens,并把 traj_only=True 传给 generate_assistant_message,因此 assistant 目标主要是 next_img_token + future waypoints,没有公开展示单独构造 的脚本。prompt_message.py 中还调用了 generate_chain_of_thoughts(data_dict),但该函数在当前仓库未定义;

由于 traj_only=True,这条路径被绕开。也就是说,paper-level 的 progressive visual CoT 概念比当前开源 data-construction 脚本暴露出的实现更完整,复现者需要额外确认作者是否通过缓存数据或未开源脚本注入 lane/3D-box visual priors。

关键组件 pseudocode

基于 released code,可写出三个关键组件的伪代码。第一个是 MoVQGAN token extraction:

def extract_cam_front_visual_tokens(nusc, movqgan, output_json):
    gt_indices = {}
    for sample in nusc.sample:
        sample_token = sample["token"]
        cam_token = sample["data"]["CAM_FRONT"]
        sample_data = nusc.get("sample_data", cam_token)
        image = Image.open(Path(nusc.dataroot) / sample_data["filename"])
        image_tensor = prepare_image(image).to("cuda").unsqueeze(0)
        with torch.no_grad():
            code_ids = movqgan(image_tensor)  # discrete codebook ids
        gt_indices[sample_token] = {"CAM_FRONT": str(code_ids.cpu().tolist())}
    json.dump(gt_indices, open(output_json, "w"), indent=4)

SFT 数据构造

第二个是 SFT 数据构造:

def build_sft_item(data, split_tokens, sft_indices, nusc, token):
    user_message, six_image_paths = generate_user_message(data, token)
    assistant_waypoints = generate_assistant_message(data, token, traj_only=True)
    next_token = nusc.get("sample", token)["next"]
    next_ids = sft_indices[next_token]["CAM_FRONT"]
    numbers = str(next_ids).replace(" ", "").strip("[]").split(",")
    next_img_token = "".join(f"<|{int(x)}|>" for x in numbers if x != "")
    return {
        "id": token,
        "images": six_image_paths,
        "system": SYSTEM_PROMPT,
        "conversations": [
            {"from": "human", "value": SIX_CAMERA_PROMPT + user_message + PLANNING_REQUEST},
            {"from": "gpt", "value": next_img_token + " These are the visual tokens of CAM_FRONT image at the 0.5 second in the future.\n" + assistant_waypoints + " These are the future waypoints.\n <|endoftext|><|im_end|>"},
        ],
    }

预测结果到评测输入

第三个是预测结果到评测输入的桥接:

def convert_predictions_for_eval(pred_jsonl, token_traj_json, output_path):
    pred_rows = [json.loads(line) for line in open(pred_jsonl, encoding="utf-8")]
    token_rows = json.load(open(token_traj_json, encoding="utf-8"))
    eval_traj = {}
    for i, item in enumerate(token_rows):
        eval_traj[item["id"]] = pred_rows[i]["predict"]
    json.dump(eval_traj, open(output_path, "w"), indent=4)

复现风险与结论

这三段代码说明 FSDrive 的工程实现非常依赖数据格式:模型不是输出一个专门的 trajectory head,而是在 LLaMA-Factory conversation target 中连续输出 visual tokens 与 waypoints 文本;评测前再由 tools/match.py 按 token id 对齐预测。优点是可以复用 LLaMA-Factory 的 SFT/inference 生态;代价是 generation token 格式、<|id|> special tokens、JSONL 顺序和 nuScenes token 对齐都成为复现中的脆弱点。

4. Experimental Setup (实验设置)

数据集方面,trajectory planning 与 future frame generation 都在 nuScenes 上评测。论文给出的规模是 1,000 个约 20 秒 scenes,由 32-beam LiDAR 与六个相机提供 360-degree field of view;具体划分为 28,130 train samples、6,019 validation samples、193,082 unannotated samples。NAVSIM 用于真实规划场景的 pseudo closed-loop 评测,强调动态意图变化,排除静态或匀速的简单场景。DriveLM GVQA 用于 scene understanding,覆盖 perception、prediction、planning 等全栈 autonomous driving QA。

评价指标分三类。规划使用 L2 displacement error 和 collision rate;论文同时采用 ST-P3 与 UniAD 两种计算方式,因为 UniAD 在每个 timestep 计算 L2/collision,而 ST-P3/VAD 风格会考虑之前时间步的平均。未来帧生成用 FID 衡量视觉质量;论文为了实时驾驶速度,把生成分辨率设为 。DriveLM GVQA 使用 Accuracy、ChatGPT score、BLEU_1、ROUGE_L、CIDEr、Match 与 Final Score。NAVSIM 使用官方 closed-loop metrics,包括 NC、DAC、TTC、Comfort、EP 与 PDMS。

对比方法覆盖 non-autoregressive planning、autoregressive VLA planning、生成式 world model 和 scene understanding 模型。nuScenes planning 表中包括 ST-P3、VAD、UniAD、BEV-Planner、PreWorld、ELM、FeD、OccWorld、Doe-1、RDA-Driver、EMMA、OmniDrive,以及 FSDrive 的 Qwen2-VL-2B 和 LLaVA-7B 变体。NAVSIM 表比较 VADv2、UniAD、DiffusionDrive-Cam、LTF、PARA-Drive、LAW 与 FSDrive。未来帧生成表比较 DriveGAN、DriveDreamer、Drive-WM、GenAD、GEM、Doe-1 与 FSDrive。DriveLM 表比较 DriveLM baseline、Cube-LLM、TrackingMeetsLMM、SimpleLLM4AD、OmniDrive 与 FSDrive。

训练设置以论文和代码共同为准。论文写明初始化为 Qwen2-VL-2B,pre-train 32 epochs;fine-tuning 在 8 张 NVIDIA RTX A6000 上训练 12 epochs,learning rate 为 、batch size 为 16。代码中 configs/pretrain.yaml 补充了 pre-training learning rate 为 5.0e-4gradient_accumulation_steps: 2cutoff_len: 32768max_new_tokens: 2048,输出到 saves/qwen2_vl-2b/pretrainconfigs/sft.yaml 从这个 pretrain checkpoint 启动,dataset 为 train_cot_motion,输出到 saves/qwen2_vl-2b/sft。两阶段都采用 full finetuning,但冻结 vision tower 与 multi-modal projector,并加入 16,384 个 MoVQGAN visual special tokens。

5. Experimental Results (实验结果)

5.1 主要规划结果:FSDrive 在无 ego status 设置下优先展示竞争力

nuScenes end-to-end trajectory planning 的关键结论是:FSDrive 在不使用 ego status 的主设置下,相比 Doe-1 和 OmniDrive 显著降低 L2 与 collision。论文特别强调与 Doe-1 的比较,因为 Doe-1 也有 vision generation;FSDrive 在 ST-P3 平均 L2 上是 0.53,而 Doe-1 是 0.70;在 UniAD 平均 L2 上是 0.96,而 Doe-1 是 1.26。collision 方面,FSDrive 的 ST-P3 平均 collision 是 0.17,Doe-1 是 0.21;UniAD 平均 collision 是 0.40,Doe-1 是 0.53。使用 ego status 的 FSDrive* 进一步提升:ST-P3 平均 L2 0.28、平均 collision 0.10;UniAD 平均 L2 0.45、平均 collision 0.16。

SettingST-P3 L2 Avg ↓ST-P3 Col. Avg ↓UniAD L2 Avg ↓UniAD Col. Avg ↓LLM
Doe-10.700.211.260.53Lumina-mGPT-7B
OmniDrive0.840.94--LLaVA-7B
FSDrive0.530.170.960.40Qwen2-VL-2B
FSDrive*0.280.100.450.16Qwen2-VL-2B

NAVSIM 结果显示,FSDrive 在 camera-only 条件下 PDMS 达到 85.1,高于 LAW 的 84.6 和 DiffusionDrive-Cam 的 83.6。细项上,FSDrive 的 NC=98.2、DAC=93.8、TTC=93.3、Comfort=99.9、EP=80.1。这里的意义是:visual spatio-temporal CoT 不只在 open-loop nuScenes waypoint 上有效,也能在 NAVSIM pseudo closed-loop metrics 中保持优势。

5.2 生成与理解结果:未来帧生成不是副任务,而是 planning CoT 的质量基础

未来帧生成表中,FSDrive 以 autoregressive 方式在 分辨率下取得 FID=10.1,优于 DriveGAN 73.4、DriveDreamer 52.6、Drive-WM 15.8、GenAD 15.4、Doe-1 15.9,并略优于 GEM 的 10.5。这个结果需要谨慎解读:FID 不等于 driving safety,但它说明用 Qwen2-VL-2B + MoVQGAN visual tokens 激活未来帧生成并不是完全牺牲视觉质量;相反,在较低分辨率和较小模型下仍能接近或超过专门生成模型。

DriveLM GVQA 中,FSDrive Final Score=0.57,高于 OmniDrive 0.56、SimpleLLM4AD 0.53、TrackingMeetsLMM 0.52、Cube-LLM 0.50 和 DriveLM baseline 0.32。FSDrive 的 Accuracy=0.72、BLEU_1=0.76、ROUGE_L=0.74、CIDEr=0.17、Match=0.39、ChatGPT=0.63。这个结果支持作者的 unified pre-training 论点:加入 visual generation 不一定破坏 VLM 的理解能力;如果用 VQA preservation 一起训练,模型可以同时保留 scene understanding。

Figure 3 解读:上排是 wrong instruction 下的轨迹,红色预测轨迹偏离绿色 GT,可能导致 stop/go/turn 场景中的错误行为。中排和下排展示加入 FSDrive CoT 后,即使 planning 阶段仍面对错误指令,模型可通过 observation-based future prediction 修正轨迹:例如识别前方道路、车辆或转向区域后,红色轨迹更贴近绿色 GT。这张图的重点不是画面质量,而是说明 visual CoT 可以作为 inverse-dynamics planning 的纠错中间变量。

5.3 Ablation:collision 改善比 L2 更能体现 visual CoT 的价值

pre-training ablation 使用 UniAD metrics、Qwen2-VL-2B 且不使用 ego status。无任何 pre-training 时,平均 L2=1.22、平均 collision=0.67。只加入 VQA 后为 L2=1.19、collision=0.65,提升很小,说明普通理解任务不足以学到未来物理动态。只加入 future frames 后 L2=1.02、collision=0.60,是主要收益来源之一;只加入 future 3D detection 后 L2=1.17、collision=0.61;只加入 future lane divider 后 L2=1.06、collision=0.65。四类 pre-training 全部加入时达到 L2=0.98、collision=0.58,说明 unified understanding/generation 比单一任务更稳。

不同 CoT 的 ablation 更直接验证 visual spatio-temporal CoT。无 CoT 时平均 L2=0.98、collision=0.58;Text CoT 平均 L2=0.97、collision=0.53;Image-text CoT 平均 L2=0.98、collision=0.50;Spatio-temporal CoT 平均 L2=0.96、collision=0.40。L2 的差异相对小,但 collision 从 0.58 降到 0.40,论文称约 31% improvement。这说明 visual CoT 的主要收益不是把轨迹坐标整体平移得更准,而是更好地识别未来碰撞风险与可行驶区域。

future frame generation ablation 显示数据规模和 progressive method 都重要。无 pre-training 的 FID=29.4;约 100k pre-training data 时 FID=16.2;约 200k 时 FID=12.7;约 200k 加 progressive method 后 FID=10.1。作者特别指出 200k 规模远小于一些从零训练 unified generation/understanding 模型所需的 100M 级数据,说明在已有 MLLM 上扩展 visual vocabulary 是一个 data-efficient 选择。

5.4 局限与复现注意事项

论文没有单独给出系统性 limitations 章节,但从实验和 released code 可以看到几个边界。第一,未来帧生成分辨率是 ,这是为了 real-time driving 的速度权衡;它足以作为 CoT,但不应被理解为高保真 driving video generation。第二,实验主要依赖 nuScenes、NAVSIM 与 DriveLM,且 future visual priors 使用 lane divider/3D detection annotations 或缓存数据;跨城市、长尾天气、罕见交互和真实闭环部署仍未被充分证明。第三,当前开源仓库的 SFT 数据构造暴露的是 CAM_FRONT 0.5 秒未来 visual tokens + 未来 6 个 waypoints,progressive 的完整公开实现不够透明,复现者需要确认作者后续是否补齐脚本或提供缓存。

整体而言,FSDrive 的贡献在于把“CoT 是语言解释”改写成“CoT 是可视化未来世界状态”。实验结果支持这一点:visual spatio-temporal CoT 对 collision rate 的改善尤其明显,说明它确实帮助模型发现未来物理风险;统一 pre-training 让视觉生成和场景理解共存;代码则展示了一条实用路线,即在 Qwen2-VL/LLaMA-Factory 体系内扩展 16,384 个 MoVQGAN visual tokens,用 next-token prediction 同时输出 future image tokens 和 trajectory waypoints。