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 会把 tools 和 tool_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-Instruct,finetuning_type: full,冻结 vision tower、开放 multi-modal projector 和 language model;cutoff_len=16384、image_max_pixels=112896、video_fps=1.0、per_device_train_batch_size=1、gradient_accumulation_steps=2、learning_rate=1.0e-5、num_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=grpo、actor_rollout_ref.rollout.n=8、trainer.n_gpus_per_node=8、trainer.nnodes=4、actor_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 Concept | Source File | Key Class/Function |
|---|---|---|
| Project quickstart / released assets | readme.md, assets/main.png, assets/data.png, assets/bench.png | README sections for setup/evaluation; project figures |
| SFT launch/config | LLaMA-Factory/recipe/qwen3vl_full_sft_non_streaming.yaml, LLaMA-Factory/recipe/start_train.sh | Qwen3-VL-8B full SFT, freeze flags, cutoff/video settings, LR/batch/epoch |
| Agentic GRPO launch/config | verl/recipe/start_train.sh | verl.trainer.main_ppo, algorithm.adv_estimator=grpo, rollout n=8, tool-agent loop, 4 nodes × 8 GPUs |
| Tool schemas and local execution | eval/inference/single_inference.py | VIEW_VISUAL_PROMPT_TOOL, CROP_VIDEO_TOOL, view_visual_prompt_local, crop_video_local, execute_tool_local |
| Multi-turn inference loop | eval/inference/single_inference.py | run_inference, OpenAI-compatible chat.completions.create, tool-call parsing and tool-response append |
| Reward function used by released RL recipe | verl/verl/custom_rewards/reward.py, verl/verl/custom_rewards/vl_agent_v2p.py | compute_score, _check_format, _rule_acc, _call_llm_judge, compute_score_v2p_bench_rule/llm |
| Benchmark/tool-mode configuration | eval/inference/benchmarks.json | V2P-Bench uses view_visual_prompt; Video-MME/LongVideoBench/LongVT use crop_video; mode=tool |
| Evaluation metrics scripts | eval/calu_metrics/eval_all.py, eval/calu_metrics/utils.py, eval/calu_metrics/longvt/run_evaluation.py | strict 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.yaml 的 video_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。
| Model | Agent | OA | HA | OD | FM | CR | PU | CI | FT | RT | AS | SR | GC | Avg. |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GPT-4o | ✗ | 76.6 | 68.9 | 41.3 | 60.8 | 67.0 | 73.3 | 67.6 | 68.1 | 70.5 | 50.0 | 54.0 | 48.4 | 65.4 |
| Gemini-2.5-Pro | ✗ | 84.0 | 72.4 | 68.2 | 71.8 | 75.0 | 73.3 | 22.6 | 66.7 | 72.7 | 47.4 | 67.5 | 63.6 | 69.8 |
| Qwen3-VL-4B | ✗ | 73.7 | 67.1 | 41.2 | 58.8 | 51.7 | 52.9 | 51.2 | 42.1 | 42.2 | 63.2 | 71.9 | 48.6 | 59.2 |
| Qwen3-VL-4B | ✓ | 73.0 | 68.6 | 26.7 | 52.9 | 26.9 | 62.5 | 41.0 | 50.0 | 44.5 | 67.6 | 64.8 | 40.5 | 57.6 |
| VideoSeeker-4B | ✓ | 85.7 | 79.4 | 60.3 | 70.6 | 55.6 | 59.1 | 61.4 | 55.6 | 56.0 | 76.5 | 69.2 | 66.7 | 70.6 |
| Qwen3-VL-8B | ✗ | 81.8 | 68.1 | 41.3 | 67.8 | 45.4 | 58.3 | 58.3 | 47.4 | 38.5 | 56.2 | 70.5 | 51.3 | 60.8 |
| Qwen3-VL-8B | ✓ | 71.1 | 71.2 | 39.1 | 58.8 | 48.3 | 41.2 | 64.3 | 42.1 | 51.7 | 57.9 | 68.4 | 59.4 | 59.9 |
| VideoSeeker-8B | ✓ | 94.3 | 79.1 | 53.7 | 76.5 | 56.5 | 78.6 | 66.8 | 62.3 | 55.0 | 78.8 | 78.8 | 70.3 | 74.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。
| Model | Agent | Video-MME | LongVideoBench | LongVT | Avg. |
|---|---|---|---|---|---|
| GPT-4o | ✗ | 77.2 | 81.3 | 17.4 | 58.6 |
| Gemini-2.5 Pro | ✗ | 84.8 | - | - | - |
| Video-R1-7B | ✗ | 61.0 | - | 27.9 | - |
| VideoRFT-7B | ✗ | 60.9 | - | 26.5 | - |
| Video-Thinker-7B | ✗ | 61.0 | - | 10.4 | - |
| LongVT-7B | ✗ | 66.1 | - | 31.0 | - |
| Qwen3-VL-4B | ✗ | 65.3 | 62.6 | 38.5 | 55.5 |
| Qwen3-VL-4B | ✓ | 61.5 | 50.4 | 36.9 | 49.6 |
| VideoSeeker-4B | ✓ | 66.1 | 64.2 | 45.7 | 58.7 |
| Qwen3-VL-8B | ✗ | 67.4 | 64.6 | 39.4 | 57.1 |
| Qwen3-VL-8B | ✓ | 58.3 | 42.9 | 11.7 | 37.6 |
| VideoSeeker-8B | ✓ | 68.1 | 66.5 | 46.5 | 60.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 等一般视频理解任务。