FIT-MAC: A Closed-Loop Multi-Agent Framework for Robust Vision-Language-Action Models
Organizations: Lanzhou University · Northwest Normal University · Sun Yat-sen University · Zhejiang University ·
Abstract
Vision-language-action (VLA) models have achieved strong performance on standard robotic manipulation benchmarks. However, their reliability can degrade substantially when task conditions deviate from the nominal setting. Perturbations in object positions and task instructions may lead to complete task failure. Existing VLA policies generally lack an explicit runtime mechanism for distinguishing these failure modes and selecting an appropriate recovery strategy. To systematically mitigate this issue, we propose FIT-MAC, a failure-aware, closed-loop multi-agent control framework for improving the robustness of VLA policies at inference time. FIT-MAC augments a VLA policy with an inference-time control layer. First, the Planner Agent parses the language instruction into a structured task specification that captures the manipulation goal and spatial constraints, and the Grounder Agent resolves each instruction-level reference to a visual target. Next, the Verifier Agent tracks phase-specific execution progress, distinguishes target-binding errors from local execution failures, and determines whether intervention is warranted. The Correction Agent then routes permitted interventions to target rebinding or bounded grasping or placement recovery, depending on the failure type. When no intervention is required, the pretrained VLA remains the default action generator. Extensive experiments on LIBERO-PRO demonstrate that FIT-MAC improves robustness across multiple VLA backbones, consistently increasing success rates and achieving state-of-the-art performance under diverse perturbations.
Figures & tables
| Method | LIBERO-Object | LIBERO-Spatial | Avg. | ||||||||
| Obj. | Pos. | Sem. | Task | Env. | Obj. | Pos. | Sem. | Task | Env. | ||
| MolmoAct Lee et al. (2025) | 92.0 | 6.0 | 96.0 | 0.0 | – | 90.0 | 0.0 | 88.0 | 0.0 | – | – |
| NORA Hung et al. (2025) | 86.0 | 0.0 | 92.0 | 0.0 | – | 92.0 | 0.0 | 91.0 | 0.0 | – | – |
| X-VLA Zheng et al. (2026) | 89.0 | 2.0 | 98.0 | 8.0 | – | 97.0 | 0.0 | 96.0 | 0.0 | – | – |
| AtomVLA Sun et al. (2026) | 93.0 | 10.0 | 99.0 | 0.0 | – | 95.0 | 16.0 | 95.0 | 1.0 | – | – |
| CaP-Agent 0 Fu et al. (2026) | – | 22.0 | – | 18.0 | – | – | 12.0 | – | 14.0 | – | – |
| LIBERO-Object | LIBERO-Spatial | |||||
| Perturbation | SR. (%) | IR. (%) | RSR. (%) | SR. (%) | IR. (%) | RSR. (%) |
| Obj. | 99.0 | 99.8 | 99.3 | 97.2 | 37.8 | 97.9 |
| Pos. | 93.4 | 99.5 | 93.8 | 40.2 | 87.6 | 41.3 |
| Sem. | 98.8 | 98.9 | 99.6 | 86.8 | 42.8 | 98.6 |
| Task | 87.2 | 100.0 | 87.1 | 37.8 | 90.6 | 35.5 |
| Env. | 48.8 | 50.4 | 97.5 | 97.8 | 21.2 | 99.1 |
| Configuration | Success Rate (%) | SR | |||
| Object | Spatial | Avg. | Object | Spatial | |
| FIT-MAC | 85.4 | 72.0 | 78.7 | 0.0 | 0.0 |
| w/o target correction | 77.2 | 69.8 | 73.5 | -8.2 | -2.2 |
| w/o execution correction | 47.0 | 62.4 | 54.7 | -38.4 | -9.6 |
| w/o hard pick | 50.2 | 70.0 | 60.1 | -35.2 | -2.0 |
| w/o hard place | 63.2 | 64.0 | 63.6 | -22.2 | -8.0 |
| Parameter | Values | Object | Spatial | Avg. |
| Failure threshold | 2 / 3 / 4 | 85.4 / 85.4 / 85.4 | 70.8 / 70.6 / 70.6 | 78.1 / 78.0 / 78.0 |
| Confidence threshold | 0.10 / 0.12 / 0.18 | 85.4 / 85.4 / 85.4 | 71.0 / 70.6 / 71.0 | 78.2 / 78.0 / 78.2 |
| Minimum rescue step | 8 / 12 / 16 | 85.4 / 85.4 / 85.4 | 71.2 / 70.6 / 71.0 | 78.3 / 78.0 / 78.2 |
| Execution horizon | 1 / 2 / 3 | 68.0 / 85.4 / 87.4 | 72.0 / 70.0 / 69.8 | 70.0 / 77.7 / 78.6 |
Appendix figures & tables18 assets
Supplementary material from the paper’s appendix.
Appendix
| Benchmark | Condition | OpenVLA | OpenVLA + FIT-MAC | 0 | 0 + FIT-MAC | 0.5 | 0.5 + FIT-MAC |
| LIBERO-Object | Task | 0.0/–/– | 87.3/100.0/87.1 | 0.0/–/– | 84.0/98.0/85.7 | 1.0/–/– | 80.0/100.0/80.0 |
| Pos | 0.0/–/– | 93.1/99.5/93.8 | 0.0/–/– | 67.0/100.0/67.0 | 17.0/–/– | 67.0/99.0/67.7 | |
| Obj | 98.0/–/– | 99.0/99.8/99.3 | 94.0/–/– | 89.0/100.0/89.0 | 98.0/–/– | 92.0/100.0/92.0 | |
| Sem | 98.0/–/– | 98.8/98.9/99.6 | 90.0/–/– | 87.0/97.0/89.7 | 96.0/–/– | 89.0/97.0/91.8 | |
| Env | 0.0/–/– | 48.8/50.4/97.5 | 29.0/–/– | 65.0/78.0/82.1 | 73.0/–/– | 69.0/79.0/86.1 | |
| LIBERO-Spatial | Task | 0.0/–/– | 37.8/90.6/35.5 | 0.0/–/– | 27.0/100.0/27.0 | 1.0/–/– | 25.0/100.0/25.0 |
| Benchmark | Method | OpenVLA | ||
| LIBERO-Object | Backbone only | 39.2 | 42.6 | 57.0 |
| FIT-MAC | 85.4 | 78.4 | 79.4 | |
| +46.2 | +35.8 | +22.4 | ||
| LIBERO-Spatial | Backbone only | 52.6 | 50.8 | 52.2 |
| FIT-MAC | 72.0 | 67.4 | 69.2 | |
| +19.4 | +16.6 | +17.0 |
| Method | Seed | Obj. | Pos. | Sem. | Task | Env. |
| OpenVLA + FIT-MAC | 7 | 100.0/100.0/100.0 | 93.0/100.0/93.0 | 98.0/98.0/100.0 | 87.0/100.0/87.0 | 49.0/49.0/100.0 |
| 11 | 100.0/100.0/100.0 | 94.0/99.0/94.9 | 97.0/97.0/100.0 | 86.0/100.0/86.0 | 49.0/49.0/100.0 | |
| 13 | 100.0/100.0/100.0 | 93.0/100.0/93.0 | 98.0/98.0/100.0 | 87.0/100.0/87.0 | 49.0/49.0/100.0 | |
| 17 | 100.0/100.0/100.0 | 94.0/99.0/94.9 | 98.0/98.0/100.0 | 86.0/100.0/86.0 | 49.0/49.0/100.0 | |
| 23 | 100.0/100.0/100.0 | 94.0/100.0/94.0 | 98.0/98.0/100.0 | 87.0/100.0/87.0 | 48.0/48.0/100.0 |
| Method | Seed | Obj. | Pos. | Sem. | Task | Env. |
| OpenVLA + FIT-MAC | 7 | 97.0/36.0/100.0 | 38.0/89.0/40.4 | 86.0/42.0/95.2 | 40.0/96.0/39.6 | 99.0/28.0/100.0 |
| 11 | 96.0/39.0/100.0 | 34.0/87.0/36.8 | 88.0/41.0/100.0 | 40.0/95.0/38.9 | 96.0/24.0/100.0 | |
| 13 | 98.0/37.0/97.3 | 41.0/90.0/40.0 | 88.0/38.0/97.4 | 35.0/95.0/32.6 | 97.0/19.0/100.0 | |
| 17 | 100.0/37.0/100.0 | 41.0/91.0/40.7 | 88.0/44.0/95.5 | 38.0/94.0/38.3 | 99.0/24.0/100.0 | |
| 23 | 98.0/32.0/100.0 | 36.0/91.0/38.5 | 85.0/45.0/95.6 | 38.0/90.0/35.6 | 97.0/27.0/96.3 |
| Backbone | Configuration | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | Baseline | 0.0/–/– | 0.0/–/– | 98.0/–/– | 98.0/–/– | 0.0/–/– |
| Full FIT-MAC | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| w/o target_corrector | 69.0/80.0/86.3 | 70.0/75.0/93.3 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| w/o execution_corrector | 0.0/0.0/– | 4.0/0.0/– | 100.0/0.0/– | 97.0/0.0/– | 34.0/0.0/– | |
| w/o hard_pick | 0.0/0.0/– | 4.0/4.0/100.0 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| w/o hard_place | 25.0/100.0/25.0 | 60.0/96.0/58.3 | 100.0/0.0/– | 97.0/0.0/– | 34.0/0.0/– |
| Backbone | Configuration | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | Baseline | 0.0/–/– | 0.0/–/– | 97.0/–/– | 77.0/–/– | 89.0/–/– |
| Full FIT-MAC | 38.0/94.0/38.3 | 41.0/88.0/40.9 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 | |
| w/o target_corrector | 41.0/79.0/36.7 | 25.0/78.0/25.6 | 98.0/26.0/100.0 | 86.0/33.0/100.0 | 99.0/12.0/100.0 | |
| w/o execution_corrector | 28.0/0.0/– | 5.0/0.0/– | 95.0/0.0/– | 86.0/0.0/– | 98.0/0.0/– | |
| w/o hard_pick | 28.0/40.0/35.0 | 41.0/37.0/97.3 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 | |
| w/o hard_place | 36.0/80.0/26.3 | 5.0/70.0/0.0 | 95.0/0.0/– | 86.0/0.0/– | 98.0/0.0/– |
| Backbone | Setting | Value | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | FIT-MAC | – | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 |
| failures | 2 | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| failures | 3 | 86.0/100.0/86.0 | 94.0/100.0/94.0 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| failures | 4 | 86.0/100.0/86.0 | 94.0/100.0/94.0 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| 0.5 | FIT-MAC | – | 80.0/100.0/80.0 | 67.0/99.0/67.7 | 92.0/100.0/92.0 | 89.0/97.0/91.8 | 69.0/79.0/86.1 |
| failures | 2 | 66.0/84.0/78.6 | 71.0/95.0/74.7 | 91.0/99.0/91.9 | 85.0/99.0/85.9 | 81.0/84.0/96.4 |
| Backbone | Setting | Value | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | FIT-MAC | – | 38.0/94.0/38.3 | 41.0/88.0/40.9 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 |
| failures | 2 | 36.0/95.0/35.8 | 39.0/89.0/41.6 | 97.0/31.0/100.0 | 85.0/46.0/97.8 | 97.0/27.0/100.0 | |
| failures | 3 | 31.0/94.0/30.9 | 41.0/88.0/40.9 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 | |
| failures | 4 | 31.0/94.0/30.9 | 41.0/88.0/40.9 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 | |
| 0.5 | FIT-MAC | – | 25.0/100.0/25.0 | 37.0/98.0/37.8 | 97.0/52.0/100.0 | 93.0/63.0/88.9 | 94.0/41.0/97.6 |
| failures | 2 | 39.0/100.0/39.0 | 51.0/97.0/49.5 | 95.0/52.0/94.2 | 94.0/62.0/91.9 | 95.0/42.0/95.2 |
| Backbone | Setting | Value | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | FIT-MAC | – | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 |
| confidence | 0.10 | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| confidence | 0.12 | 86.0/100.0/86.0 | 94.0/100.0/94.0 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| confidence | 0.18 | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| 0.5 | FIT-MAC | – | 80.0/100.0/80.0 | 67.0/99.0/67.7 | 92.0/100.0/92.0 | 89.0/97.0/91.8 | 69.0/79.0/86.1 |
| confidence | 0.10 | 69.0/85.0/81.2 | 71.0/95.0/74.7 | 91.0/100.0/91.0 | 88.0/100.0/88.0 | 83.0/86.0/95.3 |
| Backbone | Setting | Value | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | FIT-MAC | – | 38.0/94.0/38.3 | 41.0/88.0/40.9 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 |
| confidence | 0.10 | 37.0/95.0/36.8 | 39.0/90.0/41.1 | 97.0/31.0/100.0 | 85.0/46.0/97.8 | 97.0/27.0/100.0 | |
| confidence | 0.12 | 31.0/94.0/30.9 | 41.0/88.0/40.9 | 97.0/33.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 | |
| confidence | 0.18 | 36.0/95.0/35.8 | 39.0/90.0/41.1 | 98.0/32.0/100.0 | 85.0/46.0/97.8 | 97.0/27.0/100.0 | |
| 0.5 | FIT-MAC | – | 25.0/100.0/25.0 | 37.0/98.0/37.8 | 97.0/52.0/100.0 | 93.0/63.0/88.9 | 94.0/41.0/97.6 |
| confidence | 0.10 | 41.0/100.0/41.0 | 44.0/89.0/37.1 | 96.0/52.0/98.1 | 93.0/64.0/90.6 | 96.0/42.0/97.6 |
| Backbone | Setting | Value | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | FIT-MAC | – | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 |
| rescue_min_step | 8 | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| rescue_min_step | 12 | 86.0/100.0/86.0 | 94.0/100.0/94.0 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| rescue_min_step | 16 | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| 0.5 | FIT-MAC | – | 80.0/100.0/80.0 | 67.0/99.0/67.7 | 92.0/100.0/92.0 | 89.0/97.0/91.8 | 69.0/79.0/86.1 |
| rescue_min_step | 8 | 68.0/85.0/80.0 | 75.0/95.0/78.9 | 91.0/99.0/91.9 | 85.0/99.0/85.9 | 64.0/75.0/84.0 |
| Backbone | Setting | Value | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | FIT-MAC | – | 38.0/94.0/38.3 | 41.0/88.0/40.9 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 |
| rescue_min_step | 8 | 37.0/95.0/36.8 | 39.0/90.0/41.1 | 97.0/31.0/100.0 | 86.0/47.0/97.9 | 97.0/27.0/100.0 | |
| rescue_min_step | 12 | 31.0/94.0/30.9 | 41.0/88.0/40.9 | 97.0/31.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 | |
| rescue_min_step | 16 | 36.0/95.0/35.8 | 39.0/90.0/41.1 | 97.0/31.0/100.0 | 86.0/47.0/97.9 | 97.0/27.0/100.0 | |
| 0.5 | FIT-MAC | – | 25.0/100.0/25.0 | 37.0/98.0/37.8 | 97.0/52.0/100.0 | 93.0/63.0/88.9 | 94.0/41.0/97.6 |
| rescue_min_step | 8 | 36.0/100.0/36.0 | 41.0/90.0/34.4 | 97.0/52.0/98.1 | 95.0/63.0/92.1 | 95.0/42.0/95.2 |
| Backbone | Setting | Value | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | FIT-MAC | – | 86.0/100.0/86.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 |
| exec_horizon | 1 | 36.0/100.0/36.0 | 58.0/100.0/58.0 | 100.0/100.0/100.0 | 97.0/98.0/99.0 | 49.0/49.0/100.0 | |
| exec_horizon | 2 | 86.0/100.0/86.0 | 94.0/100.0/94.0 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| exec_horizon | 3 | 96.0/100.0/96.0 | 94.0/99.0/94.9 | 100.0/100.0/100.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| exec_horizon | 4 | 77.0/100.0/77.0 | 79.0/99.0/79.8 | 99.0/100.0/99.0 | 98.0/98.0/100.0 | 49.0/49.0/100.0 | |
| 0.5 | FIT-MAC | – | 80.0/100.0/80.0 | 67.0/99.0/67.7 | 92.0/100.0/92.0 | 89.0/97.0/91.8 | 69.0/79.0/86.1 |
| Backbone | Setting | Value | Task | Pos. | Obj. | Sem. | Env. |
| OpenVLA | FIT-MAC | – | 38.0/94.0/38.3 | 41.0/88.0/40.9 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 |
| exec_horizon | 1 | 38.0/94.0/38.3 | 40.0/88.0/39.8 | 97.0/34.0/100.0 | 86.0/45.0/97.8 | 99.0/24.0/100.0 | |
| exec_horizon | 2 | 28.0/94.0/27.7 | 41.0/88.0/40.9 | 97.0/34.0/100.0 | 85.0/44.0/97.7 | 99.0/24.0/100.0 | |
| exec_horizon | 3 | 31.0/95.0/30.5 | 39.0/90.0/41.1 | 97.0/31.0/100.0 | 85.0/46.0/97.8 | 97.0/27.0/100.0 | |
| exec_horizon | 4 | 29.0/95.0/28.4 | 39.0/90.0/41.1 | 97.0/31.0/100.0 | 84.0/46.0/95.7 | 97.0/27.0/100.0 | |
| 0.5 | FIT-MAC | – | 25.0/100.0/25.0 | 37.0/98.0/37.8 | 97.0/52.0/100.0 | 93.0/63.0/88.9 | 94.0/41.0/97.6 |
| Query | Step | Phase | Event / evidence | Diagnosis and route | Controller state |
| 1 | 10 | Pick approach | Two bowl candidates are detected. Grounding resolves the spatial relation and selects the black bowl[1] with VLM confidence . | Target grounding; target correction completed. | Target-instance lock established; base policy starts execution. |
| 5 | 42 | Pick approach | The robot continues approaching the resolved target. | None; baseline execution. | Base policy continues with an eight-action chunk. |
| 6 | 50 | Pick approach | The monitor reports a wrong-target approach. | Execution failure; execution correction activated. | Hard-pick correction starts in approach-hover phase. |
| 7 | 51 | Pick approach | The correction state remains pending. | Execution failure; correction remains active. | Hard-pick controller continues with one corrective action. |
| 30 | 74 | Place transport | The pick attempt transitions successfully to placement. The object is reported as lifted and carried. | Successful pick-to-place transition. | Destination-locked place correction starts in lift-carry phase. |
| 31 | 75 | Place transport | The monitor reports insufficient placement progress and a placement stall. | Execution failure; correction remains active. | Destination is locked to the plate_1. |