← Back to Interactive Model Experiments
SW

Sliding-Window Streaming VLMs on Wearable AI

completed videostreaminginteractionrecurrent memorylatency

Qwen3.8-27B and Muse Glimmer 30B with an 8-frame sliding window and a self-written memory on all 2,100 Wearable AI validation sessions (EgoLongQA, EgoConv, EgoProactive), run and scored with the official starter kit, with and without the leaderboard's 300 s per-sample rule; EgoProactive is also run under the Pro2Bench paper's protocol.

Setup and Protocol

Models, sliding window, memory, serving and the latency study are shared by both benchmarks: see the overview page.

Data and memory refresh

Wearable AI evaluation protocol (official starter kit)

Prompts

Wearable AI (official starter kit)

What precedes the first user message our wrapper, in place of the starter kit's sampled frames
Most recent frames (8), oldest first:
[frame at 121.0s] <image> … [frame at 128.0s] <image>
Your memory of earlier footage (written by you):
{"observed_facts": [...], "completed_steps": [...], "current_state": "...", "pending_commitments": [...], "uncertainties": [...]}
EgoLongQA: user message starter kit, verbatim; no system prompt
Watch the video and answer the following multiple-choice question.

Question: {question}

Options:
{mcq_options}

Answer with ONLY the single letter of the correct option (A, B, C, or D). Do not include any other text.
EgoConv: system prompt starter kit, verbatim; then questions 1…i with the model's own earlier answers
You are a helpful assistant answering questions about a video the user is watching. Answer directly and concisely based on what you see in the video. Do not start your response with phrases like "Sure!", "Of course!", "The answer is", or similar preambles. Just provide the answer.
EgoProactive: system prompt starter kit, verbatim; then the query and the last 4 gold dialogue turns
You are a proactive AI assistant watching a first-person video of the user performing a procedural task. The user has issued a single high-level query. As the video unfolds you observe a series of short (~8s) chunks; after each chunk you decide whether to speak or stay silent.

Output format (single line, no preamble):
  - If you should speak: start with the literal token `$interrupt$` followed by your suggestion or answer in plain text.
  - If you should stay silent: output the single literal token `$silent$` and nothing else.

Speak when the user asks you something, when an earlier action needs correction, or when you have useful, timely guidance for the next step. Stay silent when nothing useful needs to be said.
Memory update ours, a separate call; [context] = no question yet / turns so far / the user's query
You are watching a live first-person video but only ever see the most recent frames (each labeled with its time in seconds) plus a short written memory that you yourself wrote on the previous update. Nothing else about earlier footage survives, so the memory must carry everything you may need later: what the person did and where, objects and their locations, text you saw, counts, the current state, and what was said.
Context so far: [context]
Hard limits: observed_facts at most 8 entries, completed_steps at most 6, pending_commitments at most 3, uncertainties at most 3; every entry at most 15 words and prefixed with its time (e.g. "12s: ..."); current_state at most 40 words. Merge or drop older entries instead of exceeding these limits. Describe only what the frames support.
Reply with ONE JSON object and nothing else, in exactly this shape:
{"observed_facts": [...], "completed_steps": [...], "current_state": "...", "pending_commitments": [...], "uncertainties": [...]}

EgoProactive (Pro2Bench paper protocol)

System prompt App. G.2, verbatim
You are a helpful, proactive AI assistant guiding a user through a step-by-step procedural task. You observe the user’s activity through egocentric video from their perspective.

Your responsibilities:
1. Track which step the user is currently performing.
2. Detect when a step is completed and proactively announce the next step.
3. Detect mistakes or deviations from the expected procedure:
 - Skipped steps
 - Wrong step ordering
 - Technique errors
 - Substitutions or improvisations
4. When a deviation is detected, suggest a recovery action.
5. If no guidance is needed (user is progressing normally), stay silent.

Output format:
- If the user needs guidance (step completed, mistake detected, or question asked), respond with: $interrupt$ followed by your guidance.
- If no guidance is needed, respond with exactly: $silent$

Be concise. Focus on what the user should do next, not what they just did.
User message after the chunk's 8 frames; No-Plan duplex template, visual summary = our memory
Here is the summary of the recent visual context: {visual_summary}
Here is the most recent conversation between the user and the assistant:
User: {user_utterance}
Assistant: {assistant_response}

Quantitative Results

Highlighted: our method (8-frame sliding window + self-written memory). Other rows are reference results from the benchmark papers. ↑ higher is better · ↓ lower is better · (count) descriptive, neither.

Wearable AI · validation split · official starter-kit protocol (all 2,100 sessions per model)

Task · metricOurs · Qwen3.8-27BOurs · Muse Glimmer 30BStatus
EgoLongQA · MCQ accuracy↑, no time limit0.6590.520official
EgoLongQA · MCQ accuracy↑, 300 s/sample rule0.4110.001official
EgoConv · BLEU-4↑, no time limit0.0630.048official
EgoConv · BLEU-4↑, 300 s/sample rule0.0400.015official
EgoConv · LLM judge↑ (Llama-4-Maverick)––pending (judge jobs queued)
EgoProactive · macro F1↑ / G-mean F1↑, no time limit0.487 / 0.4860.364 / 0.150official
EgoProactive · interrupt / silent recall↑0.40 / 0.590.98 / 0.02official
EgoProactive · macro F1↑, 300 s/sample rule0.2430.014official
Samples over 300 s↓ (LongQA / Conv / Proactive, of 700 each)256 / 275 / 280699 / 487 / 667isolated-latency estimate

Official prompts, decision points and scorers from the starter kit; our 8-frame window plus self-written memory is the only change; 4,096-token output budget. Over-time samples are scored as empty under the 300 s rule. Qwen's 95 failed EgoConv turns are empty answers (first token was end-of-turn). Val leaderboard reference (large division): LongQA best 0.96, zero-shot Qwen2.5-VL-7B 0.59–0.69; EgoConv judge best 0.59.

EgoProactive · Pro2Bench paper protocol (arXiv 2606.04970)

ModelG-mean F1↑Interrupt / silent recall↑
Ours · Muse Glimmer 30B (greedy)0.5330.76 / 0.35
Ours · Qwen3.8-27B (greedy)0.2600.06 / 0.98
Claude Opus 4.6 (paper)0.57–
Qwen3-VL-235B (paper)0.57–
Llama 4 Maverick (paper)0.49–
Gemini 3.1 Pro (paper)0.46–
Qwen3.6-VL-27B (paper)0.28–
GPT-5.2 (paper)0.00–

Paper baselines are zero-shot, best of 3 prompt variants; the fine-tuned PWR model reaches 0.68. PQS (needs an LLM judge) is not computed; judge inputs are exported.

Visualization

Six sessions picked at random with a fixed seed (2 per subtask), not chosen for outcome. Each clip shows both models: segments around gold events, decision points and model utterances, with the media time stamped top-left. Clips come from the official starter-kit run. 480p, no audio.

task / questiongoldQwen3.8-27BMuse Glimmer 30B

Official starter-kit run. EgoProactive: one $interrupt$/$silent$ decision per chunk end · EgoConv: answer each user question · EgoLongQA: question revealed at the end.

a433344e EgoConv60 s of highlights · 1.8 MB
5 questions during a Sports conversation; only the listed intervals are visible
Qwen answered 3/5 · Muse answered 5/5
373a639c EgoConv99 s of highlights · 2.6 MB
9 questions during a Cooking conversation; only the listed intervals are visible
Qwen answered 9/9 · Muse answered 9/9
2fc07122 EgoLongQA46 s of highlights · 1.1 MB
10-min clip streamed, question revealed at the end: “What did I do with the white-backed puzzle piece that I first saw among the tiger-striped pieces?”
Gold C · Qwen A · Muse C
4fa2d523 EgoLongQA46 s of highlights · 2.1 MB
10-min clip streamed, question revealed at the end: “Early in the video I saw a blue neon X in the background. Later, I noticed a different neon sign on what seemed to be an upper level. What was the text of that sign and what did it indicate?”
Gold C · Qwen C · Muse A
42273b36 EgoProactive99 s of highlights · 2.2 MB
“How do I make turkey, cheese, and spinach roll-ups?” · 22 chunks, gold interrupts in 11
Qwen interrupted 5 · Muse interrupted 22
8b21e980 EgoProactive72 s of highlights · 1.7 MB
“How do I split a bill evenly?” · 12 chunks, gold interrupts in 6
Qwen interrupted 2 · Muse interrupted 11

Observations

Reproduction

Code: jxb1st/glimmer_qwen_streaming_baseline-code, config configs/full_klone.yaml. On a SLURM cluster with the vLLM Muse Glimmer image:

# Wearable AI with the official starter-kit protocol (all 2,100 rows); Pro2Bench: configs/wearable_pro2bench_klone.yaml
python tools/prepare_wearable_official.py configs/wearable_official_klone.yaml <validated full_klone run root>
scripts/serve_and_run.sh muse30b 1 32 configs/wearable_official_klone.yaml   # same for qwen27b
python -m streaming_smoke score --config configs/wearable_official_klone.yaml --model muse30b
sbatch --export=ALL,MODEL=muse30b submit_jobs/glimmer_qwen_wai_judge.slurm   # EgoConv LLM judge, 4 x H200