Blolabel
← Notes
analysis 8 min read

Phone agents learn where buttons are from fine-tuning and how tasks go from the prompt: splitting experience beat both on MobileGym and AndroidWorld

Three small mobile agents, two Android-style environments, one pool of their own experience split four ways. Where a button sits belongs in the weights; what a task usually does next, and what must be true before an action works, belong in the prompt. A prompt-only phone agent such as phoneshell can only use half of that, and currently stores less than half.

Where a button sits is learned better by fine-tuning; what a task usually does next is used better from the prompt. Pooled over three 7 to 8 billion parameter backbones on MobileGym, element locators from the agents' own trajectories gained 6.7 points of success when trained into the weights and 1.8 when written into the prompt, while recurring procedures gained 5.2 in the prompt and 1.0 in the weights (Wu, Ding and Huang, arXiv:2610.01787, 1 October 2026). Sending each kind to its better destination beat putting everything in either one.

Abstract technical illustration of a stream of small geometric tokens splitting at a fork into two channels, one flowing into a dense layered block and the other into an open stack of thin sheets

The paper splits a trajectory into four kinds of experience

Beining Wu, Zihao Ding and Jun Huang (South Dakota State University) start from a disagreement in the self-improvement literature: some studies find that fine-tuning on an agent's own trajectories beats retrieving them into the prompt, others find the reverse. Their explanation is that a trajectory bundles items with different properties, so the answer depends on the mix. They split the pool into locators (a named element and where it sits), procedures (a run of three action targets that recurs within a task family), state facts (a precondition that must hold before an action succeeds, taken from a failed and a successful attempt at the same target) and lessons (an action that failed in a state, paired with the one that later worked there). On MobileGym that is 9,907 locators, 51,052 procedures, 3,980 state facts and 24,651 lessons.

The environments are MobileGym, a simulated phone with 20 Chinese-language apps and 416 task templates, and AndroidWorld, 116 tasks on 20 apps in an emulator, with apps held out for testing in both. The backbones are GUI-Owl-1.5-8B, ScaleCUA-7B and Qwen3-VL-8B, three seeds each, with paired bootstrap intervals. Training is LoRA rank 16, with preference pairs for lessons and supervised fine-tuning for the rest. Code and data are not yet released.

Held-out success, %MobileGym: GUI-Owl / Qwen3-VL / ScaleCUAAndroidWorld: GUI-Owl / Qwen3-VL / ScaleCUASource
Base agent, no experience21.6 / 16.7 / 19.223.6 / 17.8 / 24.0Table 2
All experience in the prompt29.6 / 27.3 / 28.733.6 / 28.0 / 29.0Table 2
All experience in the weights28.6 / 28.0 / 27.329.0 / 28.2 / 29.5Table 2
Routed by component34.8 / 30.5 / 34.333.3 / 33.2 / 32.6Table 2
Routed the wrong way round25.2 / 24.4 / 23.227.7 / 23.4 / 27.9Table 2

Against the better single destination for each backbone, routing adds 5.2, 2.5 and 5.6 points on MobileGym and minus 0.3, 5.0 and 3.2 on AndroidWorld, our subtraction from Table 2; the mean is the abstract's +3.5. The one cell where routing does not help, GUI-Owl on AndroidWorld, has an interval of minus 2.6 to plus 2.0. Routing the wrong way round is worse than either single destination in every cell, which is the strongest sign that the split is real rather than a tuning artefact.

Weights minus prompt, by kind of experience, MobileGym, pooled over 3 backbones, points weights gain minus prompt gain -6 -4 -2 0 2 4 6 points (positive: weights win) +4.9 locators +1.5 lessons -4.1 state facts -4.2 procedures Source: Wu, Ding, Huang (South Dakota State University), arXiv:2610.01787 v1, Section 4.1 and Figure 4c.

Two numbers measured before training predict the destination

The rule uses two properties of each component, both measured on the pool before any training. Recurrence is the share of unrelated tasks in the same app whose episodes contain the item. State-conditionality is how much the item's content changes when the screen state changes. The fitted score is 11.29 times recurrence minus 5.73 times state-conditionality minus 1.28; positive goes to the weights. Fitted on two backbone families and tested on the third, it recovered the destination in 24 of 24 cells, 19 of them with intervals clear of zero. Lessons are the soft spot: the abstract says they win in the weights, but 3 of their 6 cells have intervals that include zero.

The routing rule: recurrent and state-free goes to the weights score = 11.29 r - 5.73 k - 1.28 (full fit); above the line: weights, below: prompt 00.20.40.60.800.10.20.30.40.5 boundary, score = 0 weights side prompt side locators (r 0.39, k 0.1), score +2.52procedures (r 0.05, k 0.66), score -4.45state facts (r 0.32, k 0.56), score -0.89lessons (r 0.45, k 0.53), score +0.74 recurrence r: share of unrelated tasks in the same app whose episodes contain the item state-conditionality k Source: arXiv:2610.01787 v1, Section 5.1 and Appendix D. Held-out backbone family: 24 of 24 cells, 19 with intervals clear of zero.

Training also changes what the prompt is worth afterwards. Before fine-tuning, adding a note changed the agent's action on 42% of probed steps. After the same items were trained in, the rate fell to 16% for locators, 15% for lessons and 22% for procedures, and it fell most for the items that recur most (Spearman minus 0.92). The prompt route is cheap: 14.2k against 13.2k prompt tokens per episode, a ratio of 1.07. The weights route for everything cost 15.4 H100 hours; the routed version 6.1.

What it means for a prompt-only phone agent

phoneshell drives API models, so the weights route does not exist for it. Everything phoneshell/memory.py learns goes to the prompt through hint(): how many times the agent has been on this screen, up to eight lines of the form "control led to that screen, N times", and one free-text note per screen. The stored record (ScreenMemory) holds a layout fingerprint, controls with their outcomes, and the screen's measured settle time.

Mapped onto the paper, that is a one-step version of procedures, no state facts and no lessons. Locators are mostly moot for us: the accessibility tree gives every element an index on every step, and the docstring says a remembered control is resolved against the live tree before it is tapped. Our judgement is that the paper's largest weights win, locators, is the component a tree-reading agent needs least, because the paper's agents act by coordinates on screenshots. The component the paper finds best served by the prompt and that phoneshell does not store at all is state facts, which gained 4.6 to 5.4 points in the prompt across the three backbones on MobileGym (Table 1). A state fact is cheap to capture from data phoneshell already has: the same target tried twice on one screen, failed then succeeded, with whatever differed between the two attempts.

The paper's four components against phoneshell/memory.py component (paper's example)best route in the paperphoneshell today Locator: 'City management' at (770, 84)weights, +4.9not needed as positions:the tree gives element indexes each step Procedure: after A and B, next is Cprompt, -4.2 if trainedone-step only: control to screen,with counts, up to 8 lines per screen State fact: field must hold X before Submitprompt, -4.1 if trainednot stored Lesson: here, not 'Fair' but 'Submit answer'weights, +1.5 (3 of 6 cells span 0)not stored(one free-text note field per screen) phoneshell drives API models, so the weights route does not exist for it. Everything it learns goes to the prompt, which in the paper is the right home for procedures (+5.1 to +5.3) and state facts (+4.6 to +5.4), Table 1, and phoneshell stores the first in a shorter form and the second not at all. Sources: arXiv:2610.01787 v1, Section 3, Table 1, Table D.2; phoneshell/memory.py ScreenMemory and hint() (read 3 October 2026).

Two caveats limit how far this travels. The environments are Android-style and one is simulated, the backbones are 8 billion parameters or smaller, and the absolute success rates are 17 to 35%; a frontier API model on a real iPhone starts far higher, and phoneshell's board sits at 89.7 to 96.6%. A prompt gain measured from a base of 20% may not survive a base of 90%. And the information gap result in Section 6.1 says prompt notes help most when the producer knew something the consumer did not (context gain rising from +0.2 to +11.3 across sixths of the gap), which favours notes written by a stronger model or a human over notes an agent writes for itself.

Check it yourself

What would prove this wrong

Two predictions, dated 31 March 2027. When the code is released, a replication with a fourth backbone family on AndroidWorld will put locators in the weights and procedures in the prompt (the two large effects, route gains of +4.9 and minus 4.2), while lessons will come out on the prompt side in at least one of three seeds. And on phoneshell: we will add state-fact notes (target, screen, what differed between the failed and the successful attempt) and run the 58 public tasks three times with and without them on one model. Because the board starts above 89%, we predict the pass rate moves by less than 3 points, and turns per task fall by at least 10% on tasks where a state fact fired. If turns do not fall, prompt-side state facts do not carry over from a 20% base to a 90% one.

Sources

  1. Wu, Ding, Huang (South Dakota State University), Not All Experience Belongs in the Weights: Component Routing for Self-Improving GUI Agents, arXiv:2610.01787, 1 October 2026
  2. HTML edition: Tables 1, 2, A.1, D.1 to D.4, E.4, H.1; Sections 3 to 6
  3. Blolabel, Six frontier models scored 89.7% to 96.6% on 58 paired iPhone tasks; no pair separates
  4. phoneshell source: phoneshell/memory.py (read 3 October 2026)