Blolabel
← Notes
comparison 8 min read

V-Droid swaps the LLM's job from generating a tap to scoring candidate taps and reaches 59.5% on AndroidWorld at 4.3 seconds a step; phoneshell's loop still asks one model to generate the tap

Two different jobs for the same model. Generate the next action from the screen, or score a short list of candidates someone else proposed. V-Droid rebuilt a mobile agent around the second job and reports gains on every benchmark it ran and a 6.1x speedup besides. phoneshell has never tried the swap on iOS.

V-Droid, accepted to MobiCom 2026 and posted on arXiv under the title "Advancing Mobile GUI Agents: A Verifier-Driven Approach to Practical Deployment" (arXiv:2503.15937, Gaole Dai, Shiqi Jiang, Ting Cao, Yuanchun Li, Yuqing Yang, Rui Tan, Mo Li and Lili Qiu, v1 20 March 2025, current v5 21 February 2026), changes which job the language model does. Almost every mobile GUI agent, phoneshell among them, hands a screen to a model and asks it to generate the next action directly: a tap coordinate, an element id, a typed string. V-Droid instead discretizes the screen into a set of candidate actions and asks the model to verify each one, scoring it rather than inventing it, with the highest-scoring candidate executed. The reported numbers: 59.5% on AndroidWorld (5.2 points above the agents it compares against), 38.3% on AndroidLab (2.1 points above), 49% on MobileAgentBench (9 points above), at 4.3 seconds per step, which the paper reports as 6.1 times faster than existing mobile agents. The arXiv abstract names none of those comparison agents, so both the point gains and the speed multiple are the authors' own framing, not independently checked here against a specific baseline.

Abstract technical illustration on a dark background of a single beam splitting into several short parallel paths that each terminate at a small scoring gauge, with one path, lit brighter than the rest, continuing forward alone, cool blues and teals with one amber accent on the selected path

What changed, and when

The mechanism behind V-Droid's numbers has three parts. A discretized action space turns "tap somewhere on this screen" into a short, enumerable list of candidates, which is what makes verifying them tractable at all. A prefilling-only workflow lets the verifier score every candidate in roughly the time a single forward pass takes, rather than generating token by token for each one, which is where the speed comes from rather than from a smaller model. And pairwise progress preference training teaches the verifier to prefer the candidate that moves a task forward, using a scalable human-agent joint annotation scheme to collect the training signal at scale rather than relying only on hand-labelled trajectories. None of the three parts is new in isolation, discretized action spaces and preference training both predate this paper, but combining them into a verifier that replaces the generator, rather than one that merely filters a generator's output after the fact, is the paper's actual claim.

phoneshell has never run this experiment, on either platform it could run it on. Its MCP server exposes 23 tools, observe, tap, type, swipe, 49 named gestures, picker-wheel and popup handling, app launch, and phone_do for chaining several steps, directly to whichever model an MCP client connects. The model reads an accessibility tree and a screenshot and calls a tool. Nothing in that loop proposes several candidates and scores them; the model generates one action and phoneshell executes it, gated only by the 14 label patterns that stop a tap on something that looks irreversible, which is a safety check on the output, not a quality check on the choice. V-Droid's swap, generation to verification, has not been tried against iOS's accessibility tree, which already differs from Android's in ways this site has covered before: cleaner on first-party apps, degraded on some third-party ones.

Two roles for the same model

dimensionV-Droidphoneshellsource
the LLM's job at each stepscore a short list of discretized candidate actions; execute the top scoregenerate one action directly from the screen; execute itarXiv:2503.15937 abstract; README.md MCP tools
action spacediscretized, enumerable per screenunbounded; whatever the model names among 23 tools and their argumentsarXiv:2503.15937 abstract; README.md
training signalpairwise progress preference, human-agent joint annotationnone; off-the-shelf frontier models, no fine-tuningarXiv:2503.15937 abstract; README.md
AndroidWorld result59.5%, +5.2 points over comparison agents (unnamed in the abstract)not tested on AndroidWorld; phoneshell's board is iOS-onlyarXiv:2503.15937 abstract
latency per step4.3 seconds, reported 6.1x faster than comparison agentsphoneshell's own board averages 37.7 to 68.3 seconds per task, not per step, across six modelsarXiv:2503.15937 abstract; results.json
title given at submission vs. at acceptancearXiv: "A Verifier-Driven Approach to Practical Deployment"; MobiCom: "V-Droid: Advancing Mobile GUI Agent Through Generative Verifiers"not applicablearXiv:2503.15937 title field and comments field
Score the candidates, or generate the one action V-Droid: verify discretize screeninto candidate actions LLM verifier scores eachprefilling-only, no generation top-scoring candidateexecutes, 4.3s/step phoneshell: generate read a11y tree +screenshot one LLM call generatesone action, no alternatives scored label-pattern checksafety only, not quality Source: arXiv:2503.15937 abstract; phoneshell README.md, config.py confirm-gate description.
V-Droid's speedup comes from scoring, which needs only a prefilling pass. phoneshell's single generation step is simpler, has never been benchmarked against a verifier variant, and has no step that would catch a plausible-looking wrong action before it executes.
V-Droid's reported numbers, against unnamed comparison agents 59.5% AndroidWorld +5.2 pts 38.3% AndroidLab +2.1 pts 49% MobileAgentBench +9 pts 4.3s / step latency reported 6.1x faster Source: arXiv:2503.15937 abstract. Comparison agents are not named in the abstract.
Three benchmarks, three gains, one speed figure, all against agents the abstract never names. The direction of every number favors V-Droid; the size of the favor is only as checkable as the baseline is identifiable.

What it means for someone building a phone agent's action loop

V-Droid's gains are real numbers against unnamed baselines, which means the honest claim available from the abstract alone is narrower than "verification beats generation." It is "this particular verifier, trained this particular way, beat whatever the authors compared it against, on Android." Whether the architecture generalizes to iOS, where phoneshell's own board already sits at a 89.7%-to-96.6% ceiling on first-party apps with nothing left to discriminate between models, is a separate question the paper does not address and phoneshell has not tested. A verifier only has something to score if the generator side still has meaningful room for error; on a benchmark already near ceiling, there may be little headroom for a verifier to recover, which would make V-Droid's approach look stronger on Android's harder average case than it would on phoneshell's current, saturated iOS task set.

The architectural lesson that does transfer, independent of the specific numbers, is that where a safety or quality check sits in the loop changes what it can catch. phoneshell's 14-pattern confirm gate runs after the model has already committed to one action, checking only whether that action's label looks dangerous; it has no visibility into whether a different, safer, equally task-advancing action was available and skipped. A verifier architecture would, by construction, see every candidate at once and could in principle reject an entire class of actions before any of them execute, not just flag a label pattern after the fact. That is a different failure mode than the ones already documented for phoneshell's confirm gate, and it suggests the next place to look is not just a better pattern list but a different point in the loop for a check to live.

Check it yourself

# V-Droid's abstract, reported numbers, and code
curl -s https://arxiv.org/abs/2503.15937
# https://github.com/V-Droid-Agent/V-Droid

git clone https://github.com/Blomega/phoneshell && cd phoneshell
bin/phoneshell mcp-config          # the 23 tools exposed, one generation call per step
grep -n "confirm\|CONFIRM_PATTERNS" phoneshell/*/config.py

What would prove this wrong

Sources

  1. Dai, Jiang, Cao, Li, Yang, Tan, Li, Qiu, "Advancing Mobile GUI Agents: A Verifier-Driven Approach to Practical Deployment" (V-Droid), arXiv:2503.15937, v1 20 March 2025, v5 21 February 2026, accepted to MobiCom 2026.
  2. V-Droid-Agent/V-Droid, code repository, read 26 October 2026.
  3. Blolabel, README.md, "Use it from an AI assistant" and "Safety" sections, read 26 October 2026.