VideoSeeker: Incentivizing Instance-level Video Understanding via Native Agentic Tool Invocation

Paper: arXiv:2605.16079 Code: gaotiexinqu/VideoSeeker Code reference: main @ 647cbb52 (2026-05-20)

1. Motivation (研究动机)

VideoSeeker 关注的是 instance-level video understanding:给定完整视频、一个视觉提示帧(visual prompt frame)和问题,模型不仅要理解视频整体语义,还要把问题绑定到视觉提示指向的那个具体对象/实例上,再沿时间维度追踪并回答。论文认为现有 LVLM 在这里有两个核心缺口。

第一,主流视频问答仍然依赖文本提示。用户必须用自然语言描述目标对象,例如“第二次出现的穿蓝衣服的人”,这类描述既冗长又容易歧义;如果视频里存在多个外观相似目标,文本 reference 很难提供精确的空间锚点。视觉提示可以直接把目标以框、轮廓、点、箭头、mask 等形式标出来,因此更接近真实交互。

第二,现有方法多是一次性均匀采样视频帧后交给模型被动理解,视觉感知与语言推理被解耦。对于长视频或细粒度定位任务,被动压缩很容易错过关键片段;模型的推理中心也容易转向语言先验,产生 hallucination。VideoSeeker 想解决的不是“视频整体发生了什么”,而是“这个被视觉提示选中的实例在何时何地做了什么”。

这件事值得研究,因为实例级视频理解一旦成立,就能把视频 LVLM 从被动问答推进到主动证据检索:模型可以按需查看 visual prompt、裁剪时间段、反复补充证据,再给出 grounded answer。这也是论文把该方向放进 Tool-Use Agent 范畴的原因:视觉理解不再只是 encoder 的输入问题,而变成一个带环境交互、工具调用、轨迹优化的 agentic 推理问题。

2. Idea (核心思想)

核心 insight 是:把实例级视觉提示当成 agent 的长期视觉锚点,并把视频裁剪/提示查看变成模型原生可调用的 perception tools。模型不是一次性看完整视频后回答,而是在多轮推理中主动调用 view_visual_prompt 保持目标身份,再调用 crop_video 查看局部时间片段。

VideoSeeker 的关键创新有三层:第一,用四阶段自动数据流水线把普通视频 QA 转成 visual-prompt-dependent QA;第二,用大模型 rejection sampling 生成 34.2k 多轮工具调用轨迹做 cold-start SFT;第三,用 GRPO 继续强化模型的 answer correctness、格式可解析性和工具调用效率。

与 Video-R1 / VideoRFT / Video-Thinker 这类主要强化视频 reasoning trace 的方法相比,VideoSeeker 的根本差异是 native tool invocation:工具调用不是外部评估脚本或 prompt wrapper,而是训练目标的一部分,模型输出中显式包含 <tool_call>、工具响应和最终 <answer>,并通过 agentic RL 学会何时调用、调用哪个工具、如何把返回的视觉证据并入后续推理。

3. Method (方法)

3.1 Overall framework: visual prompt + active perception agent

Figure 1 解读:左侧定义了实例级视频理解任务:输入包括视频、视觉提示帧和问题,模型必须把 visual prompt 指向的对象与视频中的同一实例关联起来。右侧展示 VideoSeeker 的整体范式:先通过自动数据流水线构造 visual-prompt-dependent 数据,再用 SFT 学工具调用轨迹,最后用 agentic RL 强化主动感知。图中最重要的转变是,visual prompt 不只是附加图片,而是后续工具调用和视频裁剪的 grounding anchor。

任务形式化为:给定 query 、visual prompt frame 和任意长度视频 ,输出与该实例相关的 grounded answer 。论文定义两个环境交互工具: 其中 view_visual_prompt 返回视觉提示图像,帮助模型重新确认目标外观;crop_video 返回 内的视频片段/帧,帮助模型把长视频压缩成局部证据。每轮 中,模型从当前上下文 采样 ;若输出 <tool_call>,环境执行工具并把结果追加回 ;若输出 <answer>,系统抽取最终答案并终止。

直觉上,这相当于把人类看长视频时的“先浏览,再盯住目标局部细看”显式放进模型策略:visual prompt 解决“看的是谁”,crop_video 解决“何时细看”,多轮工具调用解决“一次采样看不全”的上下文瓶颈。

3.2 Four-stage data construction

Figure 2 解读:这张图对应论文的数据合成流水线。输入是普通视频 QA 数据,输出是必须依赖 visual prompt 才能回答的数据。四个阶段分别负责低成本筛选、视频级唯一性验证、像素级 mask 生成和视觉提示渲染;每个阶段都在减少噪声,使训练样本从“泛视频问答”变成“指定实例问答”。

整体数据变换写作:

Stage 1: Low-cost text filtering

使用 GPT-4o 对纯文本 QA 做快速预筛,删除不适合作为 visual prompt 任务的问题,例如摄像机运动、场景背景、整体活动总结、计数、抽象非视觉问题、环境光/颜色等。形式上: 论文从 LLaVA-Video-178K 中选出 147,245 个 raw video QA samples,经此阶段保留 65,594 个,relative retention 为 44.5%。这一步的作用是避免后续昂贵的视频模型/SAM3 处理大量本来不需要实例定位的样本。

Stage 2: Video-level verification

用 Gemini-3.1-Pro 联合视频和原始 QA 做五步推理:抽取目标、判断目标是否唯一、生成给 SAM3 使用的 semantic tag、定位时间窗口、把原 QA 改写为带 <vp> placeholder 的 QA: 其中 表示内部五步 reasoning pipeline。此阶段保留 48,457 个样本,retention 为 32.9%。如果没有这一步,数据会保留多个相似目标或目标不可见的样本,导致 visual prompt 与答案之间的 grounding 关系不稳定。

Stage 3: Pixel-level mask generation

使用 SAM3 对 semantic tag 做 text-driven video segmentation,并以 1 FPS 采样生成像素级 mask: 其中 是 semantic tag condition, 是视频时长。此阶段保留 41,083 个样本,retention 为 27.9%。它把“目标是什么”转换为可渲染的像素区域,是后续 box/mask/point/arrow 等 prompt 类型的基础。

Stage 4: Visual prompt rendering and QA rewriting

均匀采样 8 类 visual prompt:rectangle、mask contour、ellipse、triangle、scribble、point、arrow、set-of-mark,并把 <vp> 替换为与视觉提示类型对应的自然语言描述: 最终得到 40,929 条 visual-prompt-dependent QA,retention 为 27.8%。这种统一 placeholder 设计的好处是可扩展:未来如果加入新的 visual prompt 类型,只需替换渲染与描述,不需要改训练/推理接口。

3.3 SFT data and RL data curation

基础 VLM 在工具格式、工具选择和多轮交互上很不稳定,因此论文先用强教师模型构造 cold-start 轨迹。具体做法是:用 Preliminary Data Curation 的数据作为输入,让 Qwen3-VL-235B-A22B-Thinking 与视频环境和预定义工具交互;之后用 rule-based discriminator 过滤正确轨迹,得到 34.2k 高质量多轮工具调用样本用于 SFT。RL 阶段再基于 pass-k 筛选 SFT 数据,得到 4.1k 个 GRPO 样本。

3.4 Multi-turn tool invocation algorithm

论文 Algorithm 1 可以概括为以下 PyTorch/Python 风格伪代码;它也与 released code 的 eval/inference/single_inference.py::run_inference 主循环一致:

def interactive_video_inference(model, video, question, visual_prompt_frame, tools, max_tool_rounds=5):
    video_frames = encode_video_frames(video)
    messages = [{
        "role": "user",
        "content": video_frames + [{"type": "text", "text": build_tool_prompt(question, visual_prompt_frame, tools)}],
    }]
    trajectory, history = [], []
 
    for round_idx in range(max_tool_rounds + 1):
        response = model.chat(messages, tools=tools, tool_choice="auto", temperature=0)
        trajectory.append(response.content or "")
 
        if response.finish_reason == "tool_calls" and response.tool_calls:
            messages.append(format_assistant_tool_calls(response.tool_calls, response.content))
            for call in response.tool_calls:
                name = call.function.name
                args = json.loads(call.function.arguments)
                history.append({"name": name, "arguments": args})
                tool_result = execute_tool_local(name, args)
                messages.append({"role": "tool", "tool_call_id": call.id, "content": tool_result})
            continue
 
        break
 
    answer = extract_answer("\n".join(trajectory))
    return {"answer": answer, "trajectory": trajectory, "tool_calls": history}

released code 里的 tool schema 有两个函数:view_visual_prompt(frame_path)crop_video(video_path,start_time,end_time)。推理时,如果 mode=tool 且 tools 非空,OpenAI-compatible client 会把 toolstool_choice="auto" 传给模型;工具返回的图像/时间戳随后作为 role="tool" 的多模态消息追加。

def view_visual_prompt_local(frame_path: str, frames_root: str) -> list[dict]:
    full_path = frame_path if os.path.isabs(frame_path) else os.path.join(frames_root, frame_path)
    if not os.path.exists(full_path):
        raise FileNotFoundError(full_path)
    image_bytes = Path(full_path).read_bytes()
    mime = "image/jpeg" if full_path.lower().endswith((".jpg", ".jpeg")) else "image/png"
    b64 = base64.b64encode(image_bytes).decode("utf-8")
    return [{"type": "image_url", "image_url": {"url": f"data:{mime};base64,{b64}"}}]
 
 
def crop_video_local(video_path: str, start_time: float, end_time: float, media_root: str,
                     max_frames: int = 64, max_pixels: int = 336 * 336) -> list[dict]:
    full_path = video_path if os.path.isabs(video_path) else os.path.join(media_root, video_path)
    duration = read_video_duration(full_path)
    assert 0 <= start_time < end_time <= duration
    frames = fetch_video({
        "type": "video", "video": f"file://{full_path}", "fps": 1,
        "min_frames": 4, "max_frames": max_frames,
        "min_pixels": 28 * 28, "max_pixels": max_pixels,
        "video_start": start_time, "video_end": end_time,
    })
    return interleave_timestamps_and_base64_png(frames, start_time=start_time)

3.5 Training objective: SFT then agentic GRPO

Supervised Fine-Tuning

SFT 目标是让模型先学会基础行为:使用 <think><tool_call><answer> 的格式,按视觉提示定位目标,能够把工具返回的视觉证据接入后续推理。论文写的是标准 autoregressive cross-entropy,可记为: released SFT recipe 位于 LLaMA-Factory/recipe/qwen3vl_full_sft_non_streaming.yaml:base model 为 Qwen/Qwen3-VL-8B-Instructfinetuning_type: full,冻结 vision tower、开放 multi-modal projector 和 language model;cutoff_len=16384image_max_pixels=112896video_fps=1.0per_device_train_batch_size=1gradient_accumulation_steps=2learning_rate=1.0e-5num_train_epochs=1.0、cosine scheduler、warmup_ratio=0.1、bf16。

Agentic GRPO

RL 阶段把模型视为可主动使用工具的 agent。论文使用 GRPO,目标可概括为: 其中 每个问题采样一组 rollout,优势 来自组内相对 reward。论文 reward 有三项: 最终组合为: 论文 Appendix C 给出的 agentic RL 权重是 ;最大 tool rounds 为 5,rollout num 为 8,train batch size 为 32,mini batch size 为 8,micro batch size per GPU 为 1,learning rate 为 ,KL loss coefficient 为 0.001,max prompt length 为 16384,max response length 为 4096,total epochs 为 1,GPU memory utilization 为 0.8。

released RL launch script 位于 verl/recipe/start_train.sh:使用 algorithm.adv_estimator=grpoactor_rollout_ref.rollout.n=8trainer.n_gpus_per_node=8trainer.nnodes=4actor_rollout_ref.rollout.agent.default_agent_loop=tool_agent,并通过 custom_reward_function.path=$PROJECT_DIR/custom_rewards/reward.py 指向自定义 reward。

论文公式与 released code 实现差异:论文 Eq. (12) 与 Appendix C 说 reward 是 ,但 verl/verl/custom_rewards/reward.py 的 docstring 和 vl_agent_v2p.py::compute_score_v2p_bench_rule/llm 实际返回的是 score = 0.8 * acc + 0.2 * format,没有实现 parsimony reward;此外论文 Table 9 写 Video max length=256,released SFT recipe 写 video_maxlen: 128,而 inference code 默认 max_frames=512。因此笔记中的实验表述以论文为准,复现配置应优先检查 released recipe/launch script 的当前值。

def compute_reward_released(solution_str: str, ground_truth: str, question: str, use_llm_judge: bool) -> dict:
    is_format_error, answer_text = check_format(solution_str)
    format_reward = 0.0 if is_format_error else 1.0
 
    if use_llm_judge and answer_text:
        acc_reward = qwen3_vl_235b_judge(answer_text, ground_truth, question)  # returns 1, 0.5, or 0
    else:
        acc_reward = relaxed_rule_match(answer_text, ground_truth)
 
    # Released code: no parsimony term here.
    score = 0.8 * acc_reward + 0.2 * format_reward
    return {
        "score": score,
        "acc_score": acc_reward,
        "format_reward_score": format_reward,
        "predict_str": solution_str,
        "ground_truth": ground_truth,
    }

3.6 Code-to-paper mapping

Code reference: main @ 647cbb52 (2026-05-20) — pseudocode and mapping based on this commit

Paper ConceptSource FileKey Class/Function
Project quickstart / released assetsreadme.md, assets/main.png, assets/data.png, assets/bench.pngREADME sections for setup/evaluation; project figures
SFT launch/configLLaMA-Factory/recipe/qwen3vl_full_sft_non_streaming.yaml, LLaMA-Factory/recipe/start_train.shQwen3-VL-8B full SFT, freeze flags, cutoff/video settings, LR/batch/epoch
Agentic GRPO launch/configverl/recipe/start_train.shverl.trainer.main_ppo, algorithm.adv_estimator=grpo, rollout n=8, tool-agent loop, 4 nodes × 8 GPUs
Tool schemas and local executioneval/inference/single_inference.pyVIEW_VISUAL_PROMPT_TOOL, CROP_VIDEO_TOOL, view_visual_prompt_local, crop_video_local, execute_tool_local
Multi-turn inference loopeval/inference/single_inference.pyrun_inference, OpenAI-compatible chat.completions.create, tool-call parsing and tool-response append
Reward function used by released RL recipeverl/verl/custom_rewards/reward.py, verl/verl/custom_rewards/vl_agent_v2p.pycompute_score, _check_format, _rule_acc, _call_llm_judge, compute_score_v2p_bench_rule/llm
Benchmark/tool-mode configurationeval/inference/benchmarks.jsonV2P-Bench uses view_visual_prompt; Video-MME/LongVideoBench/LongVT use crop_video; mode=tool
Evaluation metrics scriptseval/calu_metrics/eval_all.py, eval/calu_metrics/utils.py, eval/calu_metrics/longvt/run_evaluation.pystrict match / <answer> extraction / tool-mode stats; LongVT LLM judge path

4. Experimental Setup (实验设置)

Datasets and scale

  • Training source:LLaVA-Video-178K,论文描述为 178k videos、约 1.3M instruction samples;VideoSeeker 从其中的 147,245 raw video QA samples 出发,经四阶段过滤后得到 40,929 条 visual-prompt-dependent QA。SFT 使用 34.2k teacher-generated multi-turn trajectories;RL 使用基于 pass-k 再筛出的 4.1k samples。
  • V2P-Bench:实例级 visual-prompt-driven video understanding benchmark,包含 980 videos 和 1,172 QA pairs,覆盖 3 个核心任务、12 个评估维度。
  • Video-MME:约 900 个 manually curated videos、2.7K multiple-choice QA pairs;论文评估时只使用 video modality。
  • LongVideoBench:3,763 diverse web videos、6,678 human-annotated multiple-choice questions,视频长度 8 秒到 60 分钟。
  • LongVT:244 long videos、1,280 QA pairs,平均视频长度约 1,688 秒;71.84% 视频在 15–30 分钟,28.16% 超过 30 分钟。

Baselines

论文比较了 proprietary VLMs:GPT-4o、Gemini-2.5-Pro;open-source VLMs:LLaVA-OV-7B/72B、InternVL3-8B、LLaVA-Video-7B/72B;general video reasoning baselines:Video-R1-7B、VideoRFT-7B、Video-Thinker-7B、LongVT-7B;并比较 Qwen3-VL-4B/8B 在无 agent、prompt agent 和 VideoSeeker 训练后的表现。

Metrics

V2P-Bench 报告 12 个维度和 Avg.:OA、HA、OD、FM、CR、PU、CI、FT、RT、AS、SR、GC。论文没有在正文展开每个缩写的全称,但这些维度共同衡量实例级空间/时间定位、属性、动作和推理能力。Video-MME、LongVideoBench、LongVT 报告 benchmark accuracy/score 与三项平均值。released eval/calu_metrics/eval_all.py 中,direct mode 使用严格匹配;reasoning/tool mode 从 <answer>...</answer> 中提取首个 A/B/C/D;LongVT 另有 LLM-as-judge evaluation 脚本。

Training config and compute

论文 Appendix C 报告:SFT 使用 full finetuning,freeze vision tower=True,freeze multi-modal projector=False,freeze language model=False,cutoff len=16384,image/video max pixels=112896,Video FPS=1.0,Video max length=256,batch size per device=1,gradient accumulation=2,learning rate=,cosine scheduler,warmup ratio=0.1,epochs=1.0。RL 使用 GRPO,max tool rounds=5,agent loop=Tool agent,rollout num=8,train batch size=32,mini batch size=8,micro batch size per GPU=1,learning rate=,KL coefficient=0.001,entropy coefficient=0,max prompt length=16384,max response length=4096,total epochs=1,GPU memory utilization=0.8。

released configs 需要单独注意:LLaMA-Factory/recipe/qwen3vl_full_sft_non_streaming.yamlvideo_maxlen 是 128;verl/recipe/start_train.sh 使用 4 nodes × 8 GPUs、sglang rollout、rollout n=8、tool-agent loop 和 custom reward path。论文 checklist 中没有给出完整训练总 GPU-hours,只说明实验用 NVIDIA A100 与 H100 GPUs。

5. Experimental Results (实验结果)

5.1 Main V2P-Bench results

Table 1 的核心结论是:VideoSeeker-8B 在 V2P-Bench 上达到 74.5 Avg.,比 Qwen3-VL-8B 无 agent 的 60.8 高 +13.7,也超过 Gemini-2.5-Pro 的 69.8 和 GPT-4o 的 65.4。4B 版本达到 70.6 Avg.,比 Qwen3-VL-4B 无 agent 的 59.2 高 +11.4

ModelAgentOAHAODFMCRPUCIFTRTASSRGCAvg.
GPT-4o76.668.941.360.867.073.367.668.170.550.054.048.465.4
Gemini-2.5-Pro84.072.468.271.875.073.322.666.772.747.467.563.669.8
Qwen3-VL-4B73.767.141.258.851.752.951.242.142.263.271.948.659.2
Qwen3-VL-4B73.068.626.752.926.962.541.050.044.567.664.840.557.6
VideoSeeker-4B85.779.460.370.655.659.161.455.656.076.569.266.770.6
Qwen3-VL-8B81.868.141.367.845.458.358.347.438.556.270.551.360.8
Qwen3-VL-8B71.171.239.158.848.341.264.342.151.757.968.459.459.9
VideoSeeker-8B94.379.153.776.556.578.666.862.355.078.878.870.374.5

一个关键观察是:只给 Qwen3-VL 加 agent prompt 不一定有效,4B/8B 的 prompt-agent Avg. 反而从 59.2/60.8 降到 57.6/59.9。说明工具不是靠提示词自然涌现的能力,需要 SFT+RL 把工具调用内化到策略里。

5.2 General video understanding transfer

Table 2 显示 VideoSeeker 的训练数据虽然来自实例级任务,但能力能迁移到一般视频理解 benchmark。

ModelAgentVideo-MMELongVideoBenchLongVTAvg.
GPT-4o77.281.317.458.6
Gemini-2.5 Pro84.8---
Video-R1-7B61.0-27.9-
VideoRFT-7B60.9-26.5-
Video-Thinker-7B61.0-10.4-
LongVT-7B66.1-31.0-
Qwen3-VL-4B65.362.638.555.5
Qwen3-VL-4B61.550.436.949.6
VideoSeeker-4B66.164.245.758.7
Qwen3-VL-8B67.464.639.457.1
Qwen3-VL-8B58.342.911.737.6
VideoSeeker-8B68.166.546.560.4

VideoSeeker-4B 相对 Qwen3-VL-4B 提升 +3.2 Avg.,VideoSeeker-8B 相对 Qwen3-VL-8B 提升 +3.3 Avg.。这支持作者的解释:实例级任务学到的长程视觉检索、多轮推理、主动感知对一般视频理解也有组合式迁移价值。

5.3 Ablations and analysis

Figure 3 解读:横轴是 SFT data scale,纵轴是 accuracy。随着 0k → 34.2k 的数据规模增加,性能持续提升,但边际收益逐步变小。这说明高质量工具轨迹数据是必要的,但不是简单堆数据即可线性提升;接近 34.2k 时模型开始饱和。

Tool ablation (Table 3):Qwen3-VL-8B baseline 是 60.8;只加 visual prompt tool 到 69.4;只加 crop tool 到 63.7;两个工具同时使用到 74.5。两个工具的组合增益明显大于单独工具,说明 view_visual_prompt 负责身份锚定,crop_video 负责局部证据,两者互补。

Reward ablation (Table 4):只用 accuracy reward 得到 65.4;accuracy+format 到 73.1;accuracy+efficiency 到 68.7;三项合并到 74.5。论文把这解释为:format reward 保证可解析工具轨迹,efficiency/parsimony reward 抑制冗长或无效工具调用,三者共同稳定 agentic RL。

Stage ablation (Table 5):Qwen3-VL-8B baseline 60.8;SFT 后 70.4;single-turn RL 62.6;agentic RL 65.9;SFT+agentic RL 达到 74.5。这里 SFT 的 +9.6 是最大单项增益,说明 cold-start 工具轨迹对训练非常关键;agentic RL 进一步带来 +5.1,并且比 single-turn RL 多 +3.3。

Figure 4 解读:作者比较 Qwen3-VL-235B-A22B-Thinking 与 Gemini-3.1-Pro 两个教师。教师自身在 rejection-sampled dataset 上分别达到 78.4% 和 83.8%,但蒸馏到 Qwen3-VL-8B 后学生分别是 70.4% 和 64.7%。更强教师反而可能蒸馏出更弱学生,原因是异构教师与学生的推理/输出模式差异更大,知识不容易被学生吸收。

Reward hacking (Table 6):VideoSeeker-8B SFT 是 70.4;在 multiple-choice (MC) 数据上做 RL 会降到 43.8,因为模型可能学会随机猜选项而不是稳健视频理解;open-ended (OE) + LLM judge 训练达到 74.5,更适合 agentic RL。

Figure 5 解读:该图比较 Agent mode 下生成与工具调用相关的推理成本。VideoSeeker 相比基线减少了生成和 tool-calling 阶段的开销;作者认为原因是训练后的模型不再频繁发起无效工具调用,也不需要冗长 chain-of-thought 才能定位证据。

Figure 6 解读:Appendix E 的 RL training curves 用来检查 agentic RL 是否稳定。结合 Table 4/5 看,曲线的意义不是单纯展示 loss 下降,而是说明多项 reward 与工具轨迹训练可以在长上下文、多轮工具响应下维持可训练信号。

Figure 7 解读:Appendix F 的 case study 展示模型如何先查看 visual prompt 锁定目标,再根据问题裁剪相关视频片段,最后给出答案。这个例子体现的是“实例身份追踪”而不是普通视频摘要:如果没有 visual prompt,模型需要用含糊文本描述去猜目标。

Figure 8 解读:第二个 case study 强调多轮工具调用的局部证据检索:模型可以把问题转化为需要查看的时间段,并把工具返回的图像/帧作为下一轮推理输入。这也是 VideoSeeker 相比 single-pass video encoder 更适合长视频细粒度定位的原因。

5.4 Limitations

论文明确提到两个限制:第一,数据构造 pipeline 依赖 LLaVA-Video 作为 source,因此可能继承该数据集的 domain bias 与 imbalance;第二,和其他视觉模型一样,输出可能反映训练数据偏差,关键场景部署前需要更彻底评估。代码层面的额外限制是:released repo 目前主要提供训练/eval scripts、reward、inference tools 和项目 assets;自动数据构造流水线的完整生成代码没有在顶层 quickstart 中展开,README 的 Prepare Dataset / Start Training 小节也仍是占位状态。

5.5 Overall conclusion

VideoSeeker 的实验支持三个结论:实例级 visual prompt 是比文本 reference 更稳定的 grounding 入口;工具调用能力必须通过 SFT+agentic RL 内化,而不能只靠 prompt 打开;高质量 SFT 轨迹、agentic RL 和多项 reward 共同带来 V2P-Bench 上 74.5 Avg. 的最优结果,并能迁移到 Video-MME、LongVideoBench、LongVT 等一般视频理解任务。