facebookresearch/InteractiveWorld · 上手攻略

  • 仓库:facebookresearch/InteractiveWorld
  • 链接:https://github.com/facebookresearch/InteractiveWorld
  • 分类:engineering / llm-infra / MLLM 评测环境
  • 作者:spark
  • 更新:2026-10-30

0. 自检清单

项 状态
GitHub URL 已 fetch ✅ README(main 分支)+ API 元数据已拉取
论文 anchor ✅ arXiv:2610.33966(cs.HC),v1 提交于 2026-10-25;项目页 meta-interactiveworld.github.io
README 关键子模块 anchor ✅ Isaac Sim 5.1 / OmniGibson 3.9.0 / BEHAVIOR-1K v3.9.0 / SMPL+H / AMASS ACCAD
仓库元数据 Python;84 stars / 6 forks(API 于 2026-10-30 读取,卡片记 79 → 已增长)
License CC BY-NC 4.0(API 报 NOASSERTION,因非标准 SPDX;README 明确写 CC BY-NC 4.0)
提交基线 最后 push 2026-10-27;仓库创建 2026-10-24(仅 6 天新,1 个 open issue)

⚠️ 版本浮动提示:本文所有命令按仓库 main 分支当前状态撰写,仓库没有 release / tag(API 无 releases 列表),因此"版本"只能锚定 commit。关键版本钉死在依赖上:Isaac Sim 5.1、OmniGibson 3.9.0、BEHAVIOR-1K 3.9.0(prepare_assets.sh 会拒绝其他版本)。

1. 是什么

InteractiveWorld 是 Meta(facebookresearch)发布的一个"以人为中心"的可验证闭环交互环境,配套论文《InteractiveWorld: A Verifiable Human-Centric Environment for Building Better Interactive MLLM Assistants》(arXiv:2610.33966)。

它要解决的评测空白很具体:现在的 AI 助手评测大多在文本问答或机器人仿真里做,但可穿戴设备上的第一人称 AI 助手("你看到什么我看到什么,我告诉你下一步做什么")需要真人参与才能测。真人交互数据又贵又稀缺。论文原话是:

"The expensive and rare real interaction data leaves a key question unanswered: Can today's MLLMs truly help people in physical world?"

它的答案是:用 3D 仿真代替真人,而且判定不看文本、看世界状态。

核心机制是一个闭环:

观察(人眼第一视角)→ 助手说话 → 人去执行 → 世界状态更新 → 新的第一视角帧

与机器人仿真器(Humanoid/ALOHA 等)的关键区别是:助手不直接操作物体,它指导一个"人"去操作。这个"人"由另一个固定的模型扮演——它读懂助手的自然语言指导,然后翻译成仿真器里的原子动作(走路、抓取、放置、坐下…)。这更贴近真实的"AI 指挥人、人来干活"场景。

仓库分两层:

  • InteractiveWorld(模拟器):可复用的 3D 环境,44 个 BEHAVIOR-1K 场景/场馆,36 个动作族。
  • InteractiveBench(基准):在模拟器上冻结了 120 个多轮任务(6 类 × 20),一个模型当助手、另一个模型当人。

可验证这三个字是它的立身之本:目标是对着世界状态判定的,不是让 LLM 打分。任务通过的条件是"最终世界状态里每个 goal 谓词都成立"。

2. 解决什么问题

具体到三类痛点:

  1. "这个 MLLM 到底会不会带人做事?" 现在没有可信答案。文本 bench(MMMU、MMBench)测的是"看图答题",测不出"实时根据人的进度调整指导"。
  2. "交互式助手的失败模式"缺乏可复现的评测。真人是不可控的——你没法让同一个人每次都走同一条路。仿真里可以。
  3. "多轮指导"极易退化,但没人量化。论文做了一个相当扫兴的发现:12 个前沿 MLLM 表现仍然"远不可靠"——最强的模型 Claude Fable 5.1 在长程 Guidance 和 Planning 任务上最高只到 20% 和 25%(原文:"Even the strongest model, Claude Fable 5.1, achieves at most 20% and 25% on long-horizon Guidance and Planning tasks, respectively")。

⚠️ 注意这些数字来自 abstract verbatim,未回查论文正文的 Table(本轮未取 HTML/PDF 正文核对分项数字)。具体是"最高 20%"还是"平均 20%"、哪一列,待补。

3. 快速安装

⚠️ 这是重资产安装。 硬件要求(docs/INSTALL.md 实测配置):

项 要求
OS Linux x86_64(CentOS Stream 9 / Ubuntu 22.04+,后者是 Isaac Sim 参考平台)
GPU NVIDIA A100 80 GB,driver 580;一个模拟器 worker 约占 4 GB 显存
磁盘 约 100 GB(Isaac Sim 环境 ~22 GB + BEHAVIOR-1K 数据集 33 GB + 安装时额外 31 GB zip + 烘焙缓存 3.4 GB)
工具 git、conda、可选 ffmpeg(只有 --video 需要)

Step 1 — Isaac Sim + OmniGibson + BEHAVIOR 数据集(用官方 BEHAVIOR-1K 安装器):

git clone -b v3.9.0 https://github.com/StanfordVL/BEHAVIOR-1K.git
cd BEHAVIOR-1K
./setup.sh --new-env --omnigibson --bddl --dataset \
    --accept-conda-tos --accept-nvidia-eula --accept-dataset-tos
conda activate behavior
cd ..

--new-env 会创建名为 behavior 的 conda 环境(Python 3.11)。数据集从 Hugging Face 的 behavior-1k/zipped-datasets 下载,落到 BEHAVIOR-1K/datasets。想放到别的盘,先 export OMNIGIBSON_DATA_PATH=/big/disk/behavior-data。

Step 2 — InteractiveWorld 本体:

git clone https://github.com/facebookresearch/InteractiveWorld.git
cd InteractiveWorld
pip install -r requirements.txt       # 实际只装 smplx,其余随 OmniGibson
export ISAAC_PYTHON=$(which python)   # behavior 环境的 python
python3 -B validate_release.py        # 静态完整性检查,不需要启动 Isaac Sim

ISAAC_PYTHON 指向 Isaac Sim 的解释器,运行 launch 脚本的 shell 本身不需要在 conda 环境里。

Step 3 — 人体模型文件(需注册下载,且仅限非商业研究、不可再分发):

文件 获取方式 用途
mano_v1_2.zip 在 mano.is.tue.mpg.de 注册 → Downloads → Models & Code 身体与手部网格、蒙皮权重
ACCAD.tar.bz2 在 amass.is.tue.mpg.de 注册 → Downloads → ACCAD → SMPL-X N 走路动捕片段

Step 4 — 烘焙资源:

./launch/prepare_assets.sh \
    --behavior-data ../BEHAVIOR-1K/datasets \
    --smplh ~/Downloads/mano_v1_2.zip \
    --accad ~/Downloads/ACCAD.tar.bz2 \
    --output ~/interactiveworld-assets \
    --workers 8 --gpus 0

source ~/interactiveworld-assets/env.sh
./launch/simulator.sh doctor        # 一切就位时打印 "ok": true

8 worker 约 2 分钟烘焙完。脚本是幂等的:重跑会跳过已完成的部分,也可以只传 --behavior-data / --smplh / --accad 其中之一。

产出结构:

~/interactiveworld-assets/
├── behavior-cache/
│   ├── usd/<category>/<model>.usd     6,831 个解密后去掉物理属性的物体
│   ├── spec/<category>/<model>.json   每个物体的包围盒、质量、role、关节
│   └── materials/*.mdl                OmniGibson MDL 材质(缺了表面会渲染成红色)
├── human/
│   ├── SMPLH_male.pkl                 去掉 chumpy 依赖的 SMPL+H
│   └── ACCAD/Female1Walking_c3d/B3_-_walk1_stageii.npz
└── env.sh                             导出所有环境变量

务必把 source ~/interactiveworld-assets/env.sh 写进 shell profile,否则每次都得手动 source。

4. 核心用法

4.1 先跑一次"人类的第一视角"

./launch/simulator.sh run --scene Rs_int --gpu 0 --frames-per-action 12 \
    --action '[Walk] <can_of_soda> (1)' \
    --action '[Grab] <can_of_soda> (1)' \
    --action '[Walk] <coffee_table_fqluyq_0> (1)' \
    --action '[Put] <can_of_soda> (1) <coffee_table_fqluyq_0> (1)' \
    --action '[Sit] <sofa_mnfbbh_0> (1)' \
    --video first_actions.mp4 > first_actions.json

命令格式是 [Verb] <object_key> (instance_number)。不带 --action 运行即可列出该场景的所有物体 key(initial_observation.objects)。--video 需要 ffmpeg,stdout 的 JSON 报告每个动作的结果。

动作族共 36 个(完整列表见 docs/ACTIONS.md,或运行 ./launch/simulator.sh capabilities):

类别 命令示例
移动 [Walk] <target> (1) · [Run] · [Forward] · [TurnLeft] · [TurnRight] · [TurnAround]
观察 [LookAt] <object> (1) · [LookAround] · [LookScan]
手部 [Grab] <object> (1) · [Put] <object> (1) <surface> (1) · [PutInside] <object> (1) <container> (1) · [Drop]
关节/器械 [Open] · [Close] · [OpenDoor] · [CloseDoor] · [TurnOn] · [TurnOff]
使用工具 [Cut] <target> (1) <tool> (1) · [Stir] · [Pour] · [Wipe] · [Cook] · [UseComputer] · [AnswerPhone]
身体 [Sit] <seat> (1) · [StandUp] · [Squat] · [Wait]

关键点:"人"自己决定站哪、走哪、用什么姿势抓——你只给高层命令。

4.2 快速查询(不启动 Isaac Sim,秒级返回)

./launch/simulator.sh worlds              # 44 个场景
./launch/simulator.sh capabilities        # 36 个动作族
./launch/simulator.sh tasks list          # 120 个内置任务
./launch/simulator.sh tasks show ASK-13000

4.3 Python API

import simulator 是轻量的;Simulator.launch 在独立进程里启动 Isaac Sim,所以你的应用保留自己的 Python 和 CUDA 环境(这点对工程集成很重要):

from simulator import Action, Simulator, SimulatorConfig

config = SimulatorConfig(gpu=0, frames_per_action=8)
with Simulator.launch(scene="Rs_int", config=config) as world:
    print(world.observe().objects)
    for action in (Action.walk("can_of_soda"), Action.grab("can_of_soda")):
        result = world.step(action)
        print(action.to_command(), result.success, result.error_code)
        frames = result.observation.frames_png      # 第一人称 PNG 帧

其他能力:launch/run_sim_server.py + Simulator.connect_unix / Simulator.connect_tcp 可以让模拟器常驻、客户端接入;SimulatorConfig(observation_profile="debug") + world.score() 能读到谓词和原生分数。

4.4 跑基准评测

# 先起一个本地开源模型服务
vllm serve Qwen/Qwen3-VL-8B-Instruct --port 8000

export GEMINI_API_KEY=...

env -u CUDA_VISIBLE_DEVICES ./launch/interactiveworld.sh \
    --assistant-provider openai-compatible \
    --assistant-model Qwen/Qwen3-VL-8B-Instruct \
    --assistant-base-url http://127.0.0.1:8000/v1 \
    --human-provider gemini \
    --human-model gemini-3.1-pro-preview \
    --human-api-key-env GEMINI_API_KEY \
    --category Guidance \
    --num-gpus 2 \
    --video failures \
    --output-dir runs/qwen3-vl-8b-guidance

env -u CUDA_VISIBLE_DEVICES 不是可选的:GPU 选项用物理索引,每个 worker 自己 pin 设备。

主要选项:

类别 选项
角色(助手/人) --{role}-provider(openai-compatible / openai / anthropic / gemini / http-json)、--{role}-model、--{role}-base-url、--{role}-api-key-env
基线 --assistant-control:model(默认)/ oracle-verbal(脚本化的正确指导)/ silent
任务 不给则跑全部 120 个;--category Guidance(可重复)、--task-id ASK-13000(可重复)
GPU --num-gpus N 或 --gpus 1,3;任务 round-robin 分片,每 GPU 一个 Isaac worker
输出 --output-dir、--video off\|failures\|all、--video-captions off\|speaker\|full、--resume
复现 --config my_config.json(模板 benchmark/runner/config.example.json),命令行覆盖文件
预检 --dry-run 打印完整执行计划,不启动 Isaac Sim

⚠️ API key 只能通过环境变量名传(--human-api-key-env GEMINI_API_KEY),不接受命令行直接传 key,也不会写进产物。远程端点必须 HTTPS,只有 loopback 允许明文 HTTP。

4.5 两个分数,别搞混

  • Native TaskPack score:立即可得。strict_success = 最终世界状态所有 goal 谓词成立且流程要求都满足;completion_score = 达成目标的比例。汇总为 strict_pass_rate 和 mean_completion_score。
  • Release rubric score:官方基准数字。benchmark/evaluation/rubric.json 里共 464 条准则、六个协议。运行时会为每个任务在 evidence/pending/ 写模板,用 run_evidence_sha256 绑定到本次运行的证据。你需要人工/模型裁定:把模板复制到 evidence/adjudicated/,逐条填(例如 "atom_01": true),把 "adjudication_status" 设为 "COMPLETE",然后:
./launch/interactiveworld.sh ...same options... --resume \
    --adjudication <output-dir>/evidence/adjudicated

已完成的 task 不会重新仿真,release score 会被加进 report.json。

一个运行被标记为 VALID 的条件是模拟器、Human 和 Assistant 传输层三者都行为正常;无效运行会被报告,但绝不会被算成失败。

4.6 自定义任务(TaskPack)

一个任务就是一个 TaskPack JSON:场景与待放置物体(world)、成功的最终状态(goal)、人提问前做过什么(story.prologue)、人对指导的反应方式(runtime.human_policy)、oracle 解(runtime.oracle_commands)。

# 从内置任务派生一个
python3 examples/05_derive_taskpack.py /tmp/my_task.taskpack.json
# 输出: task_id  MY-ASK-12802-LIVINGROOM   sha256:<digest>

# 用 oracle 解回放验证
./launch/simulator.sh run --taskpack /tmp/my_task.taskpack.json --taskpack-sha256 sha256:<digest> \
    --prepare-task --gpu 0 \
    --action '[Grab] <item_2> (1)' --action '[Walk] <surf_call> (1)' \
    --action '[Put] <item_2> (1) <surf_call> (1)'
# 输出里 "score": {"success": true, ...}

# 在自建任务上评测模型
./launch/run_taskpack.sh --taskpack /tmp/my_task.taskpack.json --taskpack-sha256 sha256:<digest> \
    --assistant model --assistant-provider openai-compatible \
    --assistant-model Qwen/Qwen3-VL-8B-Instruct --assistant-base-url http://127.0.0.1:8000/v1 \
    --human-provider openai-compatible \
    --human-model Qwen/Qwen3-VL-8B-Instruct --human-base-url http://127.0.0.1:8000/v1 \
    --output-dir runs/my-task

5. 典型适用场景

  • 评测可穿戴/第一人称 AI 助手:这是本仓库的正主。想知道你的 MLLM 在"实时指导一个真人"上是否可靠。
  • MLLM 交互能力的回归测试:把 120 个冻结任务接进 CI,用 --resume 做可重启的长跑。
  • 交互式 UI 助手的原型:模拟器提供 44 个家居/场馆场景和 36 个动作族,可以拿来试各种指令理解方案。
  • 研究"人如何理解 AI 指导":固定 Human 模型(论文统一用 Gemini 3.1 Pro),只换 Assistant,就能隔离"指导质量"这一个变量。
  • 构建自己的可验证任务集:TaskPack 格式开放,可以按自己的场景需求造任务。

6. 坑与注意

坑 1:硬件门槛是硬门槛,不是"建议"。 现象:需要 A100 80GB 级 GPU(单 worker 4 GB 显存)、100 GB 磁盘;影响:普通笔记本跑不动;修复:先用 --dry-run 和 simulator.sh worlds / tasks list 这类不启动 Isaac Sim 的命令熟悉流程,再上真机。

坑 2:BEHAVIOR-1K 版本必须精确是 3.9.0。 现象:prepare_assets.sh 直接拒绝其他版本;影响:装完跑不起来;修复:从 v3.9.0 tag 重新 checkout 并重装数据集。

坑 3:SMPLH_male.pkl 校验和不匹配。 现象:转换后的模型 checksum 对不上;影响:烘焙失败;修复:必须用 Models & Code 那个压缩包(不是单独的 SMPL+H 下载),并且用 Isaac Sim 的 Python(Python 3.11、numpy 1.26)跑转换脚本。

坑 4:表面渲染成一片红色。 现象:画面里材质全是红;影响:视觉观察完全失真(对第一人称任务影响尤其大);修复:<cache>/materials 缺失,重跑 prepare_assets.sh --behavior-data … 或设 INTERACTIVEWORLD_MDL_PATH。

坑 5:报 exact scene instance … does not resolve uniquely。 现象:场景实例解析不唯一;影响:模拟器无法启动;修复:缓存是从别的数据集烘焙的,用 BEHAVIOR-1K 3.9.0 重新烘焙。

坑 6:GLIBCXX_3.4.30 not found。 现象:启动 Isaac Sim 报 libstdc++ 版本过低;影响:起不来;修复:export ISAAC_ENV_DIR=$CONDA_PREFIX,让环境自带的 libstdc++ 生效。

坑 7:改了仓库里的文件会导致 release integrity preflight failed。 现象:跑基准时报完整性预检失败;影响:跑不了;修复:把自己的文件放到仓库外,跑 git status 确认干净。TaskPack 也必须放仓库外。

坑 8:Isaac Sim 启动时的 deprecated extension / GLIBC_2.35 警告。 现象:启动刷一堆警告;影响:无;修复:官方文档明确说是无害的,来自 InteractiveWorld 不使用的可选机器人扩展,忽略即可。

坑 9:忘了 source env.sh。 现象:路径相关的变量全空,doctor 报一堆 missing;影响:排查困难;修复:写进 shell profile;doctor 列出 missing 的路径就针对那部分重跑 prepare_assets.sh。

坑 10:忘记 env -u CUDA_VISIBLE_DEVICES。 现象:GPU 索引错乱,worker 抢同一张卡或找不到设备;影响:跑挂或极慢;修复:命令里显式 env -u CUDA_VISIBLE_DEVICES。

坑 11:只在仓库里放了自定义 TaskPack(上面坑 7 的变体)。 现象:同上;修复同坑 7。

坑 12:换了 Human 模型却不改 Human,导致分数不可比。 现象:论文用 Gemini 3.1 Pro 作为所有 Assistant 的固定 Human,保证可比性;影响:你的数字和论文对不上且自己也解释不清;修复:比较不同 Assistant 时把 Human 固定住。

坑 13:把 release rubric score 当成自动产出的分数。 现象:误以为跑完就有官方分;影响:结论口径错;修复:release score 需要逐条裁定 464 条准则,先看 native score;跑完记得按 §4.5 补 adjudication。

坑 14(⚠️ 待补):abstract 关键数字未回查正文。 论文摘要中的 "Claude Fable 5.1 ... at most 20% and 25%"、"12 frontier MLLMs"、"120 tasks across six categories" 均取自 arXiv abstract 原文(已 fetch 核对),但本轮未取论文 PDF/HTML 正文核对这些数字对应的具体表格、分母与统计口径。另 ⚠️ 模型名 "Claude Fable 5.1" 系 abstract verbatim 抄录,本文未在 Anthropic 官方页面独立核实其是否为正式公开模型名——若用于正式引用,请先核实。

坑 15(⚠️ 待补):仓库太新,无 release / 无 tag。 ⚠️ 仓库创建于 2026-10-24,最后 push 2026-10-27,仅 1 个 open issue。没有 release 页面,"安装"实质是 clone main 分支。后续 main 变动没有版本约束,复现前请记录 commit hash。

7. 与同类对比

维度 InteractiveWorld / InteractiveBench BEHAVIOR-1K ALIEnv / TEACh Habitat 机器人 sim(ManiSkill / RoboCasa)
视角 第一人称(人眼) 第一人称 第一人称 第一人称 第三人称 / 机器人视角
被指导者 人(Human 模型扮演) 人 人 导航 agent 机器人本体
判定依据 世界状态谓词 + 可验证奖励 目标达成 任务完成标志 导航成功 任务成功率
任务数 120 冻结多轮任务 大规模程序化生成 数千条(在线生成) 数千条 大规模程序化
场景数 44(BEHAVIOR-1K 场景) BEHAVIOR 全量 ALI/TEACh 自有公寓 数十~数百 数百
成本 高(需 A100 + 100GB) 高 中 中 中
开放性 TaskPack 自定义任务 + 自建任务评测 ✅ 完全开放 ✅ ✅ ✅

与机器人仿真的根本区别:这里被测的模型不产生低层动作,它产生自然语言指导;动作由另一个模型(Human)执行。这测的是"能不能把话说清楚让人做对",而不是"能不能控制机械臂"。这是论文自称 "first verifiable environment for closed-loop interaction between human and AI assistant" 的立意。

与 BEHAVIOR-1K 的关系:BEHAVIOR-1K 是它依赖的上游数据集/场景库(44 个场景来自它),不是竞品。真正的对比对象是 ALIEnv / TEACh 这类同样是人-代理交互的仿真环境——它们更轻、可程序化生成任务,但判定多半依赖任务完成标志而非逐谓词状态校验。

8. 一句话推荐结论

如果你的团队在研究可穿戴/第一人称 AI 助手的真实交互能力,这套东西是目前少见的"判定不看文本看世界状态"的可验证环境,方法论上很扎实;但它要求 A100 级 GPU、100 GB 磁盘、精确到补丁版本的 BEHAVIOR-1K,属于研究级重资产,且仓库仅创建一周、无 release,建议先在 --dry-run 层面验证流程再投入算力。


附:来源清单

  • https://raw.githubusercontent.com/facebookresearch/InteractiveWorld/main/README.md(README 全文,已 fetch)
  • https://raw.githubusercontent.com/facebookresearch/InteractiveWorld/main/docs/INSTALL.md(安装/环境变量/排错表,已 fetch)
  • https://raw.githubusercontent.com/facebookresearch/InteractiveWorld/main/docs/BENCHMARK.md(评测选项/输出/评分机制,已 fetch)
  • https://arxiv.org/abs/2610.33966(摘要原文,含 120 tasks / 6 categories / 12 MLLMs / Claude Fable 5.1 20% 与 25%,已 fetch)
  • https://api.github.com/repos/facebookresearch/InteractiveWorld(元数据:Python / 84 stars / CC BY-NC 4.0 / pushed 2026-10-27)
  • 仓库卡 organized/repo_cards/4748-facebookresearch-interactiveworld.md