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. 解决什么问题
具体到三类痛点:
- "这个 MLLM 到底会不会带人做事?" 现在没有可信答案。文本 bench(MMMU、MMBench)测的是"看图答题",测不出"实时根据人的进度调整指导"。
- "交互式助手的失败模式"缺乏可复现的评测。真人是不可控的——你没法让同一个人每次都走同一条路。仿真里可以。
- "多轮指导"极易退化,但没人量化。论文做了一个相当扫兴的发现: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