DeltaReplay: Task-Relative Memory Reuse for Mobile GUI Agents
Organizations: Tsinghua University
Abstract
Memory-augmented mobile GUI agents store successful execution trajectories and reuse them in later tasks, but a stored trajectory rarely matches a new task exactly. The new task may use different parameters, share only some of its steps with a stored trajectory, or have no relevant record in memory. Forcing the agent to use irrelevant memory can mislead it, whereas discarding memory that may still be useful deprives it of guidance from past experience. To address this dilemma, we propose DeltaReplay, a step-level memory reuse framework that decides how to use existing memory without modifying it. We observe that the reusable part of a stored record is determined not by the record itself but by its relation to the new task, mainly through two factors: page-level consistency and action-level generality. We therefore store execution trajectories as paths in a transition graph, whose nodes (pages) and edges (actions between pages) capture these two factors. At reuse time, the action on each edge is split into a task-independent operation and task-specific parameters. DeltaReplay then compares each recorded step with the new task and the current screen, and decides whether to follow it, execute it after replacing its parameters, or leave it to the base agent. On AndroidWorld and SPA-Bench, DeltaReplay improves the task success rate over a base agent with the same backbone by up to 10.3 and 25.0 percentage points, respectively. These results indicate that deciding at each step how to use retrieved memory lets agents benefit even from partially matching trajectories.
Figures & tables
| Uses supported | direct | partial | inapplicable | Representative work |
|---|---|---|---|---|
| Prompt only | reasons anyway | guides reasoning | misleads | GUI-explorer ( Xie et al., 2025 ) ; |
| MAGNET ( Sun et al., 2026 ) | ||||
| Execute or discard | executes, fast | predefined arguments only | falls back | AppAgentX ( Jiang et al., 2025 ) ; |
| Darwinian Memory ( Mi et al., 2026 ) | ||||
| Re-ground or discard | re-grounds anyway | on known screens | falls back | UI-KOBE ( Chai et al., 2026 ) |
| DeltaReplay (ours) | Route A: replay | Route B: re-ground (parameters) | Route C: discard | This work |
| Method | Backbone | AndroidWorld-116 | SPA-Bench-60 | ||
|---|---|---|---|---|---|
| SR (%) | Lat. (s) | SR (%) | Lat. (s) | ||
| Base agent | Qwen3-VL-30B | 43.1 | 9.3 | 23.3 | 10.3 |
| Base agent | Qwen3.8-Flash | 49.1 | 24.8 | 41.7 | 21.0 |
| GUI-Owl | GUI-Owl-1.5 | 50.9 | 9.6 | – | – |
| RAG-prompting | Qwen3.8-Flash | 41.4 | 34.8 | – | – |
| GUI-explorer | Qwen3.8-Flash | 47.4 | 19.0 | – | – |
| AndroidWorld-116 | Same task (20) | Same template (22) | Same app (48) | None (26) | |||||
|---|---|---|---|---|---|---|---|---|---|
| Method | Backbone | SR | Lat. | SR | Lat. | SR | Lat. | SR | Lat. |
| Base agent | Qwen3-VL-30B | 70.0 | 8.8 | 63.6 | 7.8 | 31.3 | 10.1 | 26.9 | 9.2 |
| Base agent | Qwen3.8-Flash | 80.0 | 21.7 | 63.6 | 19.5 | 39.6 | 27.9 | 30.8 | 23.1 |
| GUI-Owl | GUI-Owl-1.5 | 75.0 | 7.1 | 81.8 | 10.8 | 37.5 | 9.9 | 30.8 | 9.5 |
| RAG-prompting | Qwen3.8-Flash | 80.0 | 32.2 | 77.3 | 31.8 | 25.0 | 38.0 | 11.5 | 32.8 |
| GUI-explorer | Qwen3.8-Flash | 80.0 | 19.0 | 86.4 | 15.9 | 29.2 | 20.7 | 23.1 | 18.2 |
| Variant | SR (%) | Calls | A/B/C (%) |
|---|---|---|---|
| Same template ( ) | |||
| Base agent | 63.6 | 2.11 | 0/0/100 |
| DeltaReplay (full) | 86.4 | 1.00 | 41/15/44 |
| Naive replay | 9.1 | 0.00 | 100/0/0 |
| w/o Route C (no discard) | 45.5 | 0.17 | 68/32/0 |
| Same app ( of 48) | |||
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| Group | Tasks |
|---|---|
| Same task (20) | BrowserMaze, CameraTakePhoto, CameraTakeVideo, ClockStopWatchPausedVerify, ClockStopWatchRunning, ExpenseDeleteDuplicates, ExpenseDeleteDuplicates2, SystemBluetoothTurnOff, SystemBluetoothTurnOffVerify, SystemBluetoothTurnOn, SystemBluetoothTurnOnVerify, SystemBrightnessMaxVerify, SystemBrightnessMinVerify, SystemWifiTurnOff, SystemWifiTurnOffVerify, SystemWifiTurnOnVerify, TasksCompletedTasksForDate, TasksHighPriorityTasks, TasksIncompleteTasksOnDate, TurnOffWifiAndTurnOnBluetooth |
| Same template (22) | ContactsAddContact, ContactsNewContactDraft, ExpenseAddSingle, ExpenseDeleteMultiple, ExpenseDeleteSingle, MarkorCreateNote, MarkorCreateNoteFromClipboard, NotesIsTodo, NotesRecipeIngredientCount, NotesTodoItemCount, OsmAndFavorite, OsmAndMarker, SimpleCalendarAddOneEvent, SimpleCalendarAddOneEventInTwoWeeks, SimpleCalendarAddRepeatingEvent, SimpleCalendarDeleteOneEvent, SimpleCalendarLocationOfEvent, SimpleSmsReply, SimpleSmsReplyMostRecent, SimpleSmsSend, SportsTrackerActivitiesCountForWeek, TasksHighPriorityTasksDueOnDate |
| Same app (48) | BrowserDraw, BrowserMultiply, ClockTimerEntry, ExpenseAddMultiple, ExpenseAddMultipleFromGallery, ExpenseAddMultipleFromMarkor, ExpenseDeleteMultiple2, MarkorAddNoteHeader, MarkorChangeNoteContent, MarkorCreateFolder, MarkorCreateNoteAndSms, MarkorDeleteAllNotes, MarkorDeleteNewestNote, MarkorDeleteNote, MarkorEditNote, MarkorMergeNotes, MarkorMoveNote, MarkorTranscribeReceipt, MarkorTranscribeVideo, NotesMeetingAttendeeCount, OsmAndTrack, SimpleCalendarAddOneEventRelativeDay, SimpleCalendarAddOneEventTomorrow, SimpleCalendarAnyEventsOnDate, SimpleCalendarDeleteEvents, SimpleCalendarDeleteEventsOnRelativeDay, SimpleCalendarEventOnDateAtTime, SimpleCalendarEventsInNextWeek, SimpleCalendarEventsInTimeRange, SimpleCalendarEventsOnDate, SimpleCalendarFirstEventAfterStartTime, SimpleCalendarNextEvent, SimpleCalendarNextMeetingWithPerson, SimpleSmsResend, SimpleSmsSendClipboardContent, SimpleSmsSendReceivedAddress, SportsTrackerActivitiesOnDate, SportsTrackerActivityDuration, SportsTrackerLongestDistanceActivity, SportsTrackerTotalDistanceForCategoryOverInterval, SportsTrackerTotalDurationForCategoryThisWeek, SystemBrightnessMax, SystemBrightnessMin, SystemCopyToClipboard, SystemWifiTurnOn, TasksDueNextWeek, TasksDueOnDate, TurnOnWifiAndOpenApp |
| None (26) | AudioRecorderRecordAudio, AudioRecorderRecordAudioWithFileName, FilesDeleteFile, FilesMoveFile, OpenAppTaskEval, RecipeAddMultipleRecipes, RecipeAddMultipleRecipesFromImage, RecipeAddMultipleRecipesFromMarkor, RecipeAddMultipleRecipesFromMarkor2, RecipeAddSingleRecipe, RecipeDeleteDuplicateRecipes, RecipeDeleteDuplicateRecipes2, RecipeDeleteDuplicateRecipes3, RecipeDeleteMultipleRecipes, RecipeDeleteMultipleRecipesWithConstraint, RecipeDeleteMultipleRecipesWithNoise, RecipeDeleteSingleRecipe, RecipeDeleteSingleWithRecipeWithNoise, RetroCreatePlaylist, RetroPlayingQueue, RetroPlaylistDuration, RetroSavePlaylist, SaveCopyOfReceiptTaskEval, SimpleDrawProCreateDrawing, VlcCreatePlaylist, VlcCreateTwoPlaylists |
| Group | A (%) | B (%) | C (%) |
|---|---|---|---|
| Same task | 56.1 | 0.0 | 43.9 |
| Same template | 41.5 | 14.8 | 43.7 |
| Same app | 0.0 | 10.1 | 89.9 |
| None | 0.0 | 0.0 | 100.0 |
| All | 13.7 | 8.1 | 78.2 |
| Route | Steps | Corr. | No-op | Harm. | Uncl. | Prec. (%) |
|---|---|---|---|---|---|---|
| A: replay | 50 | 41 | 6 | 2 | 1 | 83.7 |
| B: re-ground | 50 | 39 | 8 | 3 | 0 | 78.0 |
| C: discard | 50 | 37 | 6 | 6 | 1 | 75.5 |
| All | 150 | 117 | 20 | 11 | 2 | 79.1 |