Part I: 기초 — LLM이 로봇을 만나다

Chapter 3: Code as Policies — 코드로 로봇을 제어하다

집필일: 2026-04-08 최종수정일: 2026-04-08

요약

자연어 계획의 한계가 드러나자, 연구자들은 코드에 주목했습니다. 코드는 정밀한 수치 표현, 제어 흐름, 외부 라이브러리 활용, 실행·검증 가능성을 제공합니다. Code as Policies(2022)가 이 패러다임을 명명하고 확립한 이래, "코드 = API 접착제"에서 "코드 = 추론 도구"로, 다시 "에이전틱 코드 시스템"으로 진화해 왔습니다. 이 흐름은 Agentic Coding과 가장 직접적으로 대응되는 로봇 패러다임입니다.

3.1 도입: 왜 코드인가

Chapter 2에서 살펴본 LLM Planner의 출력은 자연어입니다. "컵을 테이블 왼쪽에 놓아"라는 계획은 인간에게 직관적이지만, 로봇에게는 모호합니다. "왼쪽"이 정확히 어디인가? 테이블 가장자리에서 몇 센티미터인가? 컵을 어떤 각도로 놓아야 하는가?

코드는 이 모호성을 제거합니다. place(cup, position=(0.3, -0.1, 0.8), orientation=(0, 0, 0))처럼 정확한 수치를 지정할 수 있습니다. 조건문(if obj.color == "red")과 반복문(for obj in objects)으로 제어 흐름을 표현할 수 있습니다. NumPy나 Shapely 같은 라이브러리로 공간-기하학적 추론을 수행할 수 있습니다. 그리고 결정적으로, 코드는 실행하여 결과를 관찰할 수 있습니다.

이 통찰이 Code as Policies 패러다임의 핵심이며, 동시에 Agentic Coding과 Agentic Robotics가 가장 가까워지는 접점입니다.

3.2 Code as Policies: 패러다임의 명명

Figure 3.1: Code as Policies 개요. LLM이 자연어 명령을 받아 perception API와 control primitive를 조합하는 로봇 정책 코드를 생성한다. 계층적 코드 생성으로 복잡한 조작을 수행한다. 출처: Liang et al. (2022), Fig. 1
Figure 3.1: Code as Policies 개요. LLM이 자연어 명령을 받아 perception API와 control primitive를 조합하는 로봇 정책 코드를 생성한다. 계층적 코드 생성으로 복잡한 조작을 수행한다. 출처: Liang et al. (2022), Fig. 1

[Liang et al., 2022]의 CaP는 LLM을 재활용하여 자연어 명령에서 로봇 정책 코드를 직접 생성하는 패러다임을 확립했습니다. LLM(코드 완성용으로 학습된)에게 자연어 명령과 대응하는 정책 코드 예시를 few-shot으로 제공하면, 새로운 명령에 대해 object detector 출력을 처리하고 제어 primitive API를 파라미터화하는 코드를 생성합니다.

핵심 설계 원칙은 계층적 코드 생성(hierarchical code generation)입니다. 복잡한 작업을 함수 호출 계층으로 분해하여, 각 레벨에서 적절한 추상화를 유지합니다. 또한 NumPy, Shapely 등의 서드파티 라이브러리를 참조하여 공간-기하학적 추론을 수행합니다.

시뮬레이션에서 본 적 있는 지시/속성에 대해 90% 이상의 성공률을 보였고, 처음 보는 지시에서도 supervised IL baseline을 상회했습니다. 실제 로봇 데모에서는 모바일 로봇 주방 내비게이션, 로봇팔 도형 그리기, pick-and-place, tabletop 조작을 선보였습니다.

그러나 CaP의 한계도 명확했습니다. 추상 수준 불일치 — 프롬프트와 새 명령의 추상 수준이 다르면 성능이 저하됩니다. Error recovery 부재 — 생성된 코드가 실행 시 실패하면 자동 수정 메커니즘이 없습니다. 사전 정의된 API 의존 — perception/control primitive API가 사전에 설계되어야 합니다. 이 세 한계는 모두 "에이전틱 루프의 부재"로 귀결됩니다. 코드를 생성하지만, 실행 결과를 관찰하고 수정하는 루프가 없었던 것입니다.

3.3 Code-as-Symbolic-Planner: 코드가 추론한다

[Chen et al., 2025]은 CaP의 "코드 = API 호출"에서 "코드 = 추론 도구"로 패러다임을 확장했습니다. LLM이 코드를 단순한 API 접착제가 아니라 solver, planner, checker로 사용하도록 유도합니다.

핵심 아이디어는 텍스트 추론(common sense)과 코드 생성(symbolic computing)의 결합입니다. LLM이 최적화 코드를 생성하여 제약 조건 하의 계획 문제를 풀고, 생성된 코드가 제약 검증(checker) 역할도 수행하여 자기 검증 루프를 형성합니다.

결과는 최고 baseline 대비 평균 24.1% 성공률 향상이었으며, 복잡도가 높은 작업에서 특히 스케일러빌리티가 우수했습니다. 이는 AutoTAMP [Chen et al., 2023]의 "LLM을 translator+checker로 쓴다"는 아이디어와 합류하는 것이기도 합니다 (→ Chapter 5).

이 진화는 Agentic Coding에서 이미 일상적입니다. LLM이 정규식을 생성하여 패턴을 검증하거나, 스크립트를 작성하여 데이터를 분석하는 것은 "코드를 사고의 도구로 사용"하는 전형적 사례입니다. Code-as-Symbolic-Planner는 이 동일한 패턴을 로봇 TAMP에 적용한 것입니다.

3.4 CaP-X: 에이전틱 코딩 에이전트가 로봇을 만나다

Figure 3.2: CaP-Agent0 아키텍처. 태스크 기술과 API 문서를 입력받아 병렬 코딩 에이전트가 후보 코드를 생성하고, Visual Differencing Model(VDM)의 환경 피드백과 스킬 라이브러리를 활용하여 Python 샌드박스에서 실행한다. 출처: Fu et al. (2026), Fig. 7
Figure 3.2: CaP-Agent0 아키텍처. 태스크 기술과 API 문서를 입력받아 병렬 코딩 에이전트가 후보 코드를 생성하고, Visual Differencing Model(VDM)의 환경 피드백과 스킬 라이브러리를 활용하여 Python 샌드박스에서 실행한다. 출처: Fu et al. (2026), Fig. 7
Figure 3.3: CaP-Bench 9가지 평가 카테고리. Embodied Reasoning, Cross-Embodiment, Loco-Manipulation 등 다양한 로봇 조작 태스크에서 12개 모델을 체계적으로 벤치마킹한다. 출처: Fu et al. (2026)
Figure 3.3: CaP-Bench 9가지 평가 카테고리. Embodied Reasoning, Cross-Embodiment, Loco-Manipulation 등 다양한 로봇 조작 태스크에서 12개 모델을 체계적으로 벤치마킹한다. 출처: Fu et al. (2026)

[Fu et al., 2026]의 CaP-X는 Code-as-Policy 에이전트를 체계적으로 연구하고 벤치마킹하는 오픈소스 프레임워크입니다. 이 분야에서 가장 포괄적인 평가 체계를 제공하며, Agentic Coding과 Agentic Robotics 사이의 가장 직접적인 다리입니다.

CaP-X는 네 가지 구성요소로 이루어져 있습니다:

CaP-Gym은 RoboSuite, LIBERO-PRO, BEHAVIOR 등에서 187개 작업을 통합한 인터랙티브 환경입니다. CaP-Bench는 세 가지 축 — 추상화 수준(human-crafted macro에서 atomic primitive까지), 시간적 상호작용(zero-shot vs multi-turn), 지각적 접지(시각 피드백 모달리티) — 으로 에이전트를 평가합니다. CaP-Agent0는 학습 없이 여러 조작 작업에서 인간 수준의 신뢰성을 달성한 에이전트입니다. CaP-RL은 검증 가능한 보상을 활용한 RL로 성공률을 향상시킵니다.

12개 모델을 평가한 CaP-X의 핵심 발견은 이 분야에서 가장 중요한 통찰 중 하나입니다: 성능은 human-crafted abstraction과 함께 향상되지만, 이 사전 정의된 추상화가 제거되면 성능이 급격히 저하됩니다. 그리고 이 격차는 에이전틱 스캐폴딩으로 해소 가능합니다 — multi-turn interaction, structured execution feedback, visual differencing, automatic skill synthesis, ensembled reasoning을 통해 low-level primitive에서도 성능을 회복할 수 있었습니다.

3.5 코드와 자연어, 그리고 직접 행동: 세 갈래의 비교

이 시점에서 로봇 제어의 세 가지 접근을 비교할 필요가 있습니다.

차원 Code as Policy Natural Language VLA (직접 행동)
정밀도 높음 (수치 지정) 중간 높음 (연속 행동)
일반화 높음 (새 API 조합) 높음 (언어 유연성) 낮음 (학습 데이터 의존)
해석 가능성 매우 높음 높음 낮음
실시간 반응 낮음 (생성+실행) 낮음 높음
새 환경 적응 API만 있으면 가능 설명만 있으면 가능 재학습 필요

RL-GPT [2024]는 이 세 갈래를 하이브리드로 결합하려 시도했습니다. 코드 기반 "느린 에이전트"와 RL 기반 "빠른 에이전트"의 2단계 계층 프레임워크로, 코딩 가능한 고수준 행동은 코드로, 정밀 제어가 필요한 저수준 행동은 RL로 처리합니다. Minecraft에서 단일 GPU로 1일 내 다이아몬드를 획득하는 효율을 보였지만, 실제 로봇으로의 전이는 미검증입니다.

Natural Language as Policies (NLaP) [Mikami et al., 2024]는 반대 방향의 시도입니다. 코드 대신 자연어 자체를 좌표 수준 제어 명령으로 사용합니다. 정밀 제어에서는 코드 기반 접근에 미치지 못하지만, "코드가 필요 없는" 경로의 가능성을 탐색했습니다.

3.6 Agentic Coding과의 대비: 실행 환경의 근본적 차이

Code as Policies는 Agentic Coding과 가장 직접적으로 대응되는 로봇 패러다임입니다. Claude Code가 bash/python 코드를 생성하고 실행하여 결과를 관찰하는 것처럼, CaP는 LLM이 로봇 제어 코드를 생성하고 실행합니다. 그러나 이 구조적 유사성 아래에 근본적 차이가 놓여 있습니다.

차원 Agentic Coding Code as Policy (Robotics)
실행 환경 결정론적 (컴퓨터) 확률적 (물리 세계)
에러 피드백 명확 (스택 트레이스) 모호 (센서 노이즈, 부분 관찰)
실행 비용 거의 무료, 즉시 높음, 시간 소요, 안전 위험
되돌리기 git revert, undo 가능 불가역 (물건 파손, 충돌)
API 설계 풍부한 에코시스템 수동 설계 필요
테스트 단위/통합 테스트 즉시 sim2real gap 존재

CaP-X의 핵심 발견이 이 차이를 정량적으로 드러냅니다. Human-crafted abstraction 없이는 성능이 급락하지만, 에이전틱 스캐폴딩으로 회복 가능하다는 패턴은 Agentic Coding에서도 관찰됩니다. 잘 설계된 API/SDK 없이 raw system call만으로 코딩하면 어렵지만, 에이전트가 반복적으로 시도하고 피드백을 받으면 결국 해결 가능합니다.

이것이 의미하는 바는 심오합니다. 에이전틱 test-time computation이 human-crafted abstraction을 대체할 수 있다는 것입니다. 장기적으로, 사전 설계된 API나 스킬 라이브러리 대신, 에이전트가 반복적 시행착오를 통해 스스로 추상화를 발견하고 구축하는 경로가 열린다는 뜻입니다. 다만 물리 세계에서 이 시행착오의 비용이 디지털 세계보다 몇 자릿수나 높다는 것이 핵심 장벽입니다.

3.7 미해결 문제와 전망

Code as Policy 패러다임이 직면한 핵심 미해결 문제는 에이전틱 루프의 물리적 비용입니다.

Agentic Coding에서 코드 생성 → 실행 → 에러 분석 → 수정의 루프는 수초 단위로 사실상 무한 반복 가능합니다. CaP-X가 보여준 에이전틱 스캐폴딩도 본질적으로 이 무한 반복에 의존합니다. 그러나 로봇 환경에서 매 반복은 물리적 시간(분 단위), 에너지 소비, 안전 위험, 그리고 비가역적 환경 변화를 수반합니다.

이 문제의 해결 방향은 세 갈래입니다:

첫째, 시뮬레이션 내 에이전틱 루프입니다. CaP-RL이 보여준 것처럼, 시뮬레이션에서 에이전틱 루프를 수행하고 결과를 실세계로 전이하는 접근입니다. Sim2real gap이 병목이지만, SIMPLER [Li et al., 2024]와 Natural Language Sim2Real [2024]이 이 간극을 줄이고 있습니다 (→ Chapter 9).

둘째, 코드 수준 검증의 강화입니다. Code-as-Symbolic-Planner가 보여준 "코드가 checker 역할을 한다"는 접근은, 물리 실행 전에 코드 수준에서 계획의 타당성을 검증합니다. AutoTAMP의 형식 검증과 결합하면, 실패 확률이 높은 계획을 사전에 필터링할 수 있습니다 (→ Chapter 5).

셋째, 점진적 추상화 구축입니다. CaP-X가 발견한 "에이전틱 스캐폴딩이 human-crafted abstraction을 대체할 수 있다"는 통찰은, 로봇이 반복적 경험을 통해 스스로 스킬 라이브러리를 구축하는 방향을 시사합니다. PragmaBot [2025]의 경험 기반 학습이 이 방향의 초기 시도입니다 (→ Chapter 8).

Code as Policy는 Agentic Coding의 성공 공식을 로봇에 이식하려는 가장 직접적인 시도입니다. 이 이식이 완성되려면, 물리 세계의 비용 구조에 맞는 효율적 에이전틱 루프의 설계가 필수적입니다.

참고문헌

  1. Liang, J. et al., "Code as Policies: Language Model Programs for Embodied Control," arXiv:2209.07753, 2022. scholar
  2. Chen, Y. et al., "Code-as-Symbolic-Planner: Foundation Model-Based Robot Planning via Symbolic Code Generation via Symbolic Computing," arXiv:2503.01700, 2025. scholar
  3. Fu, M. et al., "CaP-X: A Framework for Benchmarking and Improving Coding Agents for Robot Manipulation," arXiv:2603.22435, 2026. scholar
  4. Chen, Y. et al., "AutoTAMP: Autoregressive Task and Motion Planning with LLMs as Translators and Checkers," arXiv:2306.06531, 2023. scholar
  5. Li, X. et al., "Evaluating Real-World Robot Manipulation Policies in Simulation (SIMPLER)," arXiv:2405.05941, 2024. scholar
  6. RL-GPT, "Integrating Reinforcement Learning and Code-as-Policy," arXiv:2402.19299, 2024. scholar
  7. Mikami, Y. et al., "Natural Language as Policies: Reasoning for Coordinate-Level Embodied Control with LLMs," arXiv:2403.13801, 2024. scholar
  8. Lang4Sim2Real, "Natural Language Can Help Bridge the Sim2Real Gap," arXiv:2405.10020, 2024. scholar
  9. Huang, W. et al., "Language Models as Zero-Shot Planners," arXiv:2201.07207, 2022. scholar
  10. Ahn, M. et al., "Do As I Can, Not As I Say: Grounding Language in Robotic Affordances," arXiv:2204.01691, 2022. scholar
  11. Chi, C. et al., "Diffusion Policy: Visuomotor Policy Learning via Action Diffusion," arXiv:2303.04137, 2023. scholar