Compile Once, Run Cheap: Frozen, Portable Skills for Embodied Agents, and What Recursive Self-Improvement Adds
Organizations: Beijing Ou Rui Ling Shi Technology Co., Ltd. · ChangingTek Robotics Technology (Suzhou) Co., Ltd. · Shanghai Yunfan Intelligent Control Robot Technology Co., Ltd.
Abstract
Embodied AI lacks the data-rich pretraining that gave language models their agents and skills, so new manipulation capability costs demonstrations per task or a frontier model in every episode. We study a third route: a strong general model acts only as an offline author that writes, runs, diagnoses and repairs a manipulation skill in simulation until it passes an exam on layouts drawn after freezing; the frozen skill then runs as code alone or under a cheap caller that reads only its description. We call this skill-level recursive self-improvement Skill-RSI and specify a compile protocol (isolated, audited author; hidden validation layouts; no-feedback and inherit-only controls; tamper-evident ledger) and a reuse protocol that runs the identical files with executors from another model family. On 7 RoboTwin 2.0 tasks with cluttered tables, Claude Code compiled 4 tasks into 7 frozen skills, 5 from a first draft needing only qualification, at USD 4.29-8.22 of author cost each (USD 55 per skill counting the 13 failed campaigns). The other three tasks did not compile in 18 campaigns, including five with GPT-6 and a pre-registered 150-layout run: on the hardest task every campaign scored 78-95 of 100 but had 3-16 safety aborts, failing the gate of 95% success with zero aborts; a 100-episode exam bounds an abort rate only to 3.6%. On hidden layouts, repair that inherits the previous version beat from-scratch rewriting in 8 of 8 controlled campaigns (sign test p = 0.004); an inherit-only lineage attributes most of the gap to inheritance, with development feedback adding a little (3 of 3, p = 0.125). Write-once campaigns found no detectable first-draft effect of practice (minimum detectable effect 14 points). The frozen skills kept 148/150 successes on new layouts with no model and 147/150 with a DeepSeek-flash caller at USD 0.00028-0.00054 per episode; no direct-control baseline was run.
Figures & tables
| System | Evolving object | Runtime model | Cross-family frozen execution | Exam layouts drawn after freezing | Learning vs. selection control |
|---|---|---|---|---|---|
| RoboRSI [ 8 ] | skill tree; code consolidated from stable tool chains | agents remain in loop | – | – | – |
| Zetta [ 9 ] | critics and recovery skills around a frozen policy | frozen VLA | – | – | – |
| SHAPER [ 10 ] | skills and context-code harness | same frozen model | – | – | – |
| ASPIRE [ 11 ] | code-as-policy library | author model | – | – | – |
| Practice [ 13 ] | skill library via a trained learner | frozen executors | several executors | – | – |
| FAEA [ 5 ] | per-task policy through test-time iteration | frontier model, per episode | – | – | – |
| Task | Rep | Ctrl | R0 | Val. base | Rounds | Curve | Cost $ | Hours | Wall h | Exam | 95% CI | Aborts | Outcome | Caller | Audit | |
| phone_stand | 1 | yes | 42/42 | 40/40 | 0 | 42 | 5.46 | 1.6 | 6.3 | 99 | 94.6–99.8 | 0 | -1.0 | frozen | 20/20 | clean |
| phone_stand | 2 | yes | 30/42 | 27/40 | 2 | 30 42 | 8.22 | 2.9 | 13.0 | 96 | 90.2–98.4 | 0 | +28.5 | frozen | 20/20 | clean |
| phone_stand | 3 | – | 42/42 | 39/40 | 0 | 42 | 7.97 | 1.7 | 5.8 | 95 | 88.8–97.8 | 1 | -2.5 | failed exam | – | clean |
| bowls_two | 1 | yes | 47/47 | 41/41 | 0 | 47 | 6.75 | 1.8 | 10.5 | 98 | 93.0–99.4 | 0 | -2.0 | frozen | 19/19 | clean |
| bowls_two | 2 | yes | 41/47 | 39/41 | 1 | 41 46 | 9.29 | 2.6 | 8.3 | 95 | 88.8–97.8 | 2 | -0.1 | failed exam | – | clean |
| bowls_two | 3 | – | 44/47 | 38/41 | 4 | 44 47 | 25.53 | 5.3 | 14.2 | 96 | 90.2–98.4 | 4 | +3.3 | failed exam | – | clean |
| Run | Rounds | Dev best | Val. base | Cost $ (R / C / I) | Wall h | Exam | 95% CI | Aborts | Outcome | Audit | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| j1 | 4 | 120/128 | 39/45 | 26.3 / 16.5 / 18.5 | 47 | 88 | 80.2–93.0 | 8 | +1.3 | not compiled | clean |
| j2 | 6 | 122/128 | 30/45 | 36.0 / 27.6 / 33.6 | 62 | 93 | 86.3–96.6 | 5 | +26.3 | not compiled | review |
| j3 | 8 | 122/128 | 33/45 | 41.5 / 34.2 / 44.0 | 74 | 94 † | 87.5–97.2 | 3 | +20.7 | not compiled | clean |
| Campaign | Exam | Aborts | Success /300 | 95% CI | Aborts | 95% CI |
|---|---|---|---|---|---|---|
| phone_stand 3 | 95 | 1 | 290/300 | 94.0–98.2 | 0 | 0.0–1.2 |
| hanging_mug 1 | 97 | 1 | 290/300 | 94.0–98.2 | 3 | 0.2–2.9 |
| bowls_two 3 | 96 | 4 | 288/300 | 93.1–97.7 | 8 | 1.2–5.2 |
| bowls_two 2 | 95 | 2 | 288/300 | 93.1–97.7 | 11 | 1.8–6.5 |
| Task | Default | Practice only | Write once |
|---|---|---|---|
| phone_stand | 88.3 (3) | 85.0 (2) | 92.5 (1) |
| bowls_two | 95.9 (3) | 96.3 (2) | 97.6 (1) |
| can_pot | 95.5 (3) | 96.6 (2) | 95.5 (1) |
| hanging_mug | 83.7 (1) | 75.6 (2) | 83.7 (1) |
| dual_shoes | 76.9 (3) | – | 86.1 (1) |
| bowls_three | 70.4 (6) | – | 75.6 (1) |
| Task | Run | Start | / | Mean | Best | |
|---|---|---|---|---|---|---|
| bowls_three | c7a1f0 | 33/45 | 3 | 36/27, 33/33, 35/43 | +0.3 | 36 / 43 |
| bowls_three | ef1eb1 | 31/45 | 5 | 40/24, 41/38, 34/37, 42/21, 36/23 | +10.0 | 42 / 38 |
| phone_stand | 4161b3 | 28/40 | 2 | 34/25, 39/38 | +5.0 | 39 / 38 |
| bowls_two | 102fc5 | 38/41 | 1 | 40/34 | +6.0 | 40 / 34 |
| bowls_three | 451bca | 38/45 | 7 | 36/41, 40/26, 38/36, 39/42, 40/39, 39/33, 37/39 | +1.9 | 40 / 42 |
| dual_shoes | 320e4b | 32/36 | 3 | 35/31, 31/25, 32/28 | +4.7 | 35 / 31 |
| Run | Start | R C | I C | R I | |||
|---|---|---|---|---|---|---|---|
| j1 | 39 | 41, 43, 43, 38 | 41, 39, 32, 40 | 29, 4, 34, 35 | +15.8 | +12.5 | +3.2 |
| j2 | 31 | 38, 41, 40, 39, 40, 43 | 40, 40, 39, 37, 39, 40 | 30, 30, 39, 42, 27, 35 | +6.3 | +5.3 | +1.0 |
| j3 | 36 | 38, 39, 43, 42, 43, 39, 40, 40 | 31, 42, 42, 40, 42, 43, 41, 42 | 37, 23, 41, 35, 27, 39, 21, 33 | +8.5 | +8.4 | +0.1 |
| Difference | Measures | Per campaign | Mean | Rounds | Camp. | |
|---|---|---|---|---|---|---|
| repair control | inheritance and feedback together | +15.8, +6.3, +8.5 | +10.2 | 16/1/1 | 3/0 | 0.125 |
| inherit control | inheritance alone | +12.5, +5.3, +8.4 | +8.7 | 14/3/1 | 3/0 | 0.125 |
| repair inherit | feedback alone | +3.2, +1.0, +0.1 | +1.5 | 11/6/1 | 3/0 | 0.125 |
| Skill | Compile $ | Exam | Arm | Success | Wilson 95% (%) | Aborts | Decisions | Model cost / episode $ | At 100 $ | At 1000 $ |
|---|---|---|---|---|---|---|---|---|---|---|
| can_pot | 7.99 | 100/100 | F | 50/50 | 92.9–100.0 | 0 | 0.0 | 0 | 0.080 | 0.0080 |
| O-ds | 50/50 | 92.9–100.0 | 0 | 1.0 | 0.00028 | 0.080 | 0.0083 | |||
| phone_stand | 5.46 | 99/100 | F | 49/50 | 89.5–99.6 | 0 | 0.0 | 0 | 0.055 | 0.0055 |
| O-ds | 49/50 | 89.5–99.6 | 0 | 2.0 | 0.00054 | 0.055 | 0.0060 | |||
| bowls_two | 6.75 | 98/100 | F | 49/50 | 89.5–99.6 | 1 | 0.0 | 0 | 0.068 | 0.0068 |
| O-ds | 48/50 | 86.5–98.9 | 2 | 1.0 | 0.00029 | 0.068 | 0.0070 |
| Published in RoboTwin 2.0 (not measured in this paper; success %) | This paper, clutter tier (measured) | |||||||||||||
| Demonstration-trained policies (their Table 10) | LLM code | Expert | Expert, ours | Exam, of 100: Claude Code formal (frozen/campaigns); | ||||||||||
| Easy | Hard | (their Table 9) | (their Table 11) | (of 10) | GPT-6; 150 development layouts | |||||||||
| Task | RDT | ACT | DP | DP3 | RDT | ACT | DP | DP3 | ||||||
| place_phone_stand | 15 | 35 | 2 | 13 | 44 | 6 | 7 | 0 | 0 | 2 | 0 | 66 | 8 (6) | 99, 96, 95 (2/3) |
| stack_bowls_two | 76 | 91 | 82 | 61 | 83 | 30 | 41 | 0 | 0 | 6 | 30 | 78 | 6–8 (6) | 98, 95, 96 (1/3) |
| move_can_pot | 25 | 58 | 22 | 39 | 70 | 12 | 21 | 4 | 0 | 6 | 30 | 93 | 9 (6) | 98, 99, 100 (3/3) |
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| Primitive | Signature | Returns | Cost |
|---|---|---|---|
| task_spec | () | instruction, roles, criterion source | 0 |
| observe | () | ok, one component per role, table-height estimate | 1 |
| ee_pose | (arm) | 0 | |
| gripper_state | (arm) | commanded, measured, open | 0 |
| move_pose | (arm, pose7) | bool (planned and executed) | 1 |
| gripper | (arm, value in [0,1]) | bool | 1 |
| Parameter | Value | Rationale |
|---|---|---|
| Scene tier | clutter ( demo_clean + up to 10 distractors; fixed lighting; no table-height randomization) | the fully randomized tier was too easy in a pilot (first drafts above 82%); table-height randomization conflicts with absolute-height success predicates |
| R0 drafts | 2 | independent starting points differ more than one lineage’s repairs |
| Development layouts | 50 seeds (70000–70049); 42–47 usable | separates 85% from 95% versions; layouts the generator cannot stabilize are dropped for every version |
| Validation layouts | 50 seeds (71000–71049); 36–46 usable | hidden; used for the baseline, the target check and the held-out re-run; never fed back |
| Development / validation target | / of usable | first integers at or above 95% on 50, one layout of slack against a hidden set |
| Max repair rounds / patience | 10 / 3 | budget bound; three consecutive non-improvements ends R1 |
| Model | Provider | Input | Cached input | Output | Note |
|---|---|---|---|---|---|
| deepseek-flash (V4.1-Flash), peak | DeepSeek | $0.30 | $0.006 | $1.20 | UTC 01–04 and 06–10, weekdays |
| deepseek-flash (V4.1-Flash), off-peak | DeepSeek | $0.15 | $0.003 | $0.60 | all other hours; Chinese public holidays are priced at peak (overstates cost) |
| Author (Claude Code 2.1.284) | Anthropic | product-reported API-equivalent cost | subscription channel; amount as reported by the product per session | ||
| Author (Codex CLI 0.160.0) | OpenAI | not observable | subscription channel; recorded as null, never estimated | ||
Robot Skill Learning
Robot skill learning studies how robots acquire, adapt, and combine reusable behaviors from demonstrations, interaction, and other data.
See all 320 papers