世界模型正在从“看视频、续视频”走向“理解动作、响应动作、保持世界一致”。美团 LongCat 团队提出并开源的 WBench,把评测目标对准了这个更难的问题:交互式视频世界模型在多轮交互里到底哪里掉链子。它不像只看单段生成质量的打分表,更像一台“CT 扫描仪”,把模型从被动观看到主动交互的能力拆开检查。
为什么多轮交互比单次生成更难
普通视频生成评测通常关心一段视频是否清晰、是否符合文本、动作是否自然。但交互式世界模型要面对的是连续决策:用户给一个动作,模型生成后续状态;下一轮动作又要建立在上一轮生成的世界上。
这会引入几个更棘手的问题:
- 状态记忆:上一轮出现的物体、空间布局、角色位置,下一轮不能突然消失或漂移。
- 动作因果:输入动作应该改变世界,而不是只改变画面风格。
- 长程一致性:多轮之后,场景仍要像同一个世界,而不是一段段拼接的视频。
- 可诊断性:模型失败时,开发者需要知道是动作理解错了、物理延续断了,还是视觉质量崩了。
WBench 的价值就在这里。根据来源摘要,它是首个面向交互式视频世界模型的系统性多轮评测基准,重点不是给一个漂亮总分,而是定位模型从“被动观看”迈向“主动交互”时的边界。
“CT 扫描仪”式评测意味着什么
如果只看最终视频,人很容易把问题混在一起:画面糊、动作不对、时序乱、对象变形,最后都变成一句“效果不好”。对研发来说,这种反馈不够用。
更有用的评测应该把一次交互拆成轨迹:
- 初始场景是什么。
- 第 1 轮用户动作是什么。
- 模型生成了什么结果。
- 第 2 轮动作是否基于上一轮状态继续生效。
- 多轮之后,世界是否仍然保持可解释的连续性。
这类评测会逼着模型暴露真实短板。一个模型可能擅长生成“月球漫步”这种单段视觉效果,却在多轮动作后丢失地形和人物位置;也可能能渲染“赛博都市”的复杂视觉,但无法让用户输入的转向、靠近、拾取等动作稳定改变场景。
WBench 把焦点放在交互式视频世界模型上,说明行业正在从“生成看起来像真的视频”推进到“生成一个能被操作的动态世界”。这一步对游戏、机器人仿真、具身智能和交互内容生产都更关键。
可以这样实践:搭一个最小多轮评测骨架
下面的例子不是 WBench 官方接口,假设你已经能把某个世界模型的多轮输出导出成 JSONL。它演示如何用一个可改造的小脚本检查多轮轨迹,并为后续接入 WBench 或内部评测打底。
运行前需要改的地方:把 predictions 和 references 换成你自己的视频帧目录或视频文件路径;这里为了可复制运行,用文本文件模拟每一轮输出。
mkdir -p wbench_demo
cd wbench_demo
cat > sample.jsonl <<'EOF'
{"case_id":"moon_walk_001","prompt":"astronaut walking on the moon","turns":[{"action":"walk forward"},{"action":"turn left"},{"action":"pick up a rock"}],"predictions":["pred_t1.txt","pred_t2.txt","pred_t3.txt"],"references":["ref_t1.txt","ref_t2.txt","ref_t3.txt"]}
EOF
cat > pred_t1.txt <<'EOF'
astronaut moves forward on moon surface, crater remains on right
EOF
cat > pred_t2.txt <<'EOF'
astronaut turns left, crater remains on right, earth visible in sky
EOF
cat > pred_t3.txt <<'EOF'
astronaut picks up a rock, crater remains on right, earth visible in sky
EOF
cat > ref_t1.txt <<'EOF'
astronaut moves forward on moon surface, crater remains on right
EOF
cat > ref_t2.txt <<'EOF'
astronaut turns left, crater remains on right, earth visible in sky
EOF
cat > ref_t3.txt <<'EOF'
astronaut picks up a rock, crater remains on right, earth visible in sky
EOF
cat > eval_multiturn.py <<'PY'
import json
from difflib import SequenceMatcher
from pathlib import Path
def similarity(a: str, b: str) -> float:
return SequenceMatcher(None, a, b).ratio()
def load_text(path: str) -> str:
return Path(path).read_text(encoding='utf-8').strip().lower()
def evaluate_case(case: dict) -> dict:
turn_scores = []
previous_pred = ''
for idx, (pred_path, ref_path) in enumerate(zip(case['predictions'], case['references']), start=1):
pred = load_text(pred_path)
ref = load_text(ref_path)
ref_match = similarity(pred, ref)
# 一个很粗的连续性检查:上一轮的关键词是否仍保留。
# 真实视频评测可替换为对象检测、CLIP/视频嵌入、轨迹跟踪或人工标注指标。
continuity = 1.0 if not previous_pred else similarity(pred, previous_pred)
turn_scores.append({
'turn': idx,
'action': case['turns'][idx - 1]['action'],
'reference_match': round(ref_match, 3),
'continuity': round(continuity, 3),
})
previous_pred = pred
avg_ref = sum(t['reference_match'] for t in turn_scores) / len(turn_scores)
avg_continuity = sum(t['continuity'] for t in turn_scores) / len(turn_scores)
return {
'case_id': case['case_id'],
'avg_reference_match': round(avg_ref, 3),
'avg_continuity': round(avg_continuity, 3),
'turn_scores': turn_scores,
}
with open('sample.jsonl', encoding='utf-8') as f:
for line in f:
result = evaluate_case(json.loads(line))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY
python eval_multiturn.py
这段脚本刻意简单,但结构是有用的:它把评测单位从“一个视频”改成“一个 case 的多轮轨迹”。真实项目里可以把 similarity() 替换成视频质量模型、动作识别模型、对象一致性检查或人工评分聚合。关键不是这个 toy metric 本身,而是把数据结构设计成能记录每一轮动作、输出和连续性。
接入这类基准时要看哪些风险
WBench 这类多轮评测会让问题更透明,但也会带来工程上的取舍。
评测成本会升高。多轮视频生成比单段生成更耗时,评测集越系统,推理和存储成本越明显。团队需要先选代表性任务,而不是一开始就把所有场景塞进去。
指标解释要谨慎。世界模型的“好”不只等于画面质量,动作服从、物体持久性、空间一致性都可能互相拉扯。一个总分适合看趋势,但定位问题时必须回到分项和样例。
数据格式要提前统一。每轮动作、初始条件、模型输出、参考答案、人工标注都应该有稳定 schema。否则后面接入新模型、新指标时,会把大量时间浪费在转换脚本上。
采用建议:先把评测变成研发循环
如果你正在做交互式视频世界模型,可以按这个顺序落地:
- 先选 20 到 50 个高价值多轮场景,覆盖移动、转向、交互、遮挡、物体保持等常见失败点。
- 为每个 case 固定动作序列,保存每轮输出,避免只看最终视频。
- 把评测结果按轮次展开,优先定位“第几轮开始崩”。
- 总分只用于版本比较,模型调试时重点看分项和失败样例。
- 保留人工复核入口,尤其是复杂物理和语义交互场景。
WBench 的信号很明确:交互式视频世界模型不能再只靠单段样片证明能力。能被连续操作、能保持世界状态、能解释失败位置,才是下一阶段评测该盯住的东西。