ReAct 패턴으로 복잡한 태스크를 시키면 중간에 방향을 잃습니다. 한 단계씩 생각하면서 전체 그림을 놓치는 게 구조적 한계입니다. Plan-and-Execute는 이걸 분리해서 해결합니다.
한줄요약: Plan-and-Execute는 강력한 모델이 전체 계획을 먼저 세우고 가벼운 실행자가 단계별로 처리하는 에이전트 아키텍처로, Gemini Deep Research(플래너)와 Antigravity Agent(실행자)를 조합하면 2026년 기준 가장 실용적인 구현이 됩니다.
ReAct와 뭐가 다른가요?
둘 다 자주 언급되는데 레벨이 다릅니다.
ReAct (Reasoning + Acting)
→ 추론 패턴 — 생각하고 행동하는 루프를 한 스텝씩 반복
→ 매 스텝마다 LLM 호출 → 전체 그림 없이 즉흥적
→ 단순·중간 복잡도 태스크에 적합
Plan-and-Execute
→ 아키텍처 패턴 — 계획과 실행을 구조적으로 분리
→ 강력한 모델(플래너) 1번 + 가벼운 모델(실행자) N번
→ 장기 멀티스텝 태스크, 예측 가능성이 중요한 곳에 적합
핵심 장점은 두 가지입니다. 첫째, 전체 계획이 먼저 나오기 때문에 방향 이탈이 적습니다. 둘째, 플래너에는 비싼 모델, 실행자에는 싸고 빠른 모델을 쓸 수 있어 비용이 내려갑니다.
단점도 명확합니다. 실행 도중 예상 못 한 결과가 나와도 초기 계획을 쉽게 수정하지 못합니다. 중간 리플래닝 로직이 없으면 오답 위에 계속 쌓이는 일이 생깁니다.
2026년 구현 조합 — Deep Research + Antigravity
기존에는 플래너와 실행자를 모두 직접 구현해야 했습니다. 지금은 구글이 이 둘을 API로 제공합니다.
플래너: Deep Research API (collaborative_planning=True)
→ 멀티스텝 리서치 계획을 먼저 생성
→ 사람(또는 코드)이 검토·수정 가능
→ 승인 후 실행 트리거
실행자: Antigravity Agent (Managed Agents API)
→ 계획의 각 단계를 자율 실행
→ 코드 작성·파일 관리·웹 탐색 가능한 샌드박스
→ 결과 아티팩트(파일·로그) 반환
이 조합이 강력한 이유는 Deep Research가 "무엇을 어떤 순서로 조사하고 작성할지" 계획을 세우고, Antigravity가 "실제로 코드를 짜고 파일을 만들고 배포까지 처리"하는 역할을 맡기 때문입니다.
기본 구조 코드
import time
from google import genai
from google.genai import types
client = genai.Client()
# ──────────────────────────────────────
# STEP 1. 플래너 — Deep Research로 계획 생성
# ──────────────────────────────────────
def create_plan(objective: str) -> tuple[str, str]:
"""목표를 받아 리서치·실행 계획 반환"""
plan_interaction = client.interactions.create(
agent="deep-research-preview-04-2026",
input=objective,
agent_config={
"type": "deep-research",
"collaborative_planning": True, # 계획만 반환, 실행 안 함
},
background=True,
)
while (result := client.interactions.get(
id=plan_interaction.id
)).status != "completed":
time.sleep(5)
return result.outputs[-1].text, plan_interaction.id
# ──────────────────────────────────────
# STEP 2. 계획 검토 및 수정 (선택)
# ──────────────────────────────────────
def refine_plan(feedback: str, previous_id: str) -> tuple[str, str]:
"""계획에 피드백 반영"""
refined = client.interactions.create(
agent="deep-research-preview-04-2026",
input=feedback,
agent_config={
"type": "deep-research",
"collaborative_planning": True, # 수정 모드 유지
},
previous_interaction_id=previous_id,
background=True,
)
while (result := client.interactions.get(
id=refined.id
)).status != "completed":
time.sleep(5)
return result.outputs[-1].text, refined.id
# ──────────────────────────────────────
# STEP 3. 플래너 실행 — 리서치 리포트 생성
# ──────────────────────────────────────
def execute_research(previous_id: str) -> str:
"""계획 승인 후 실제 리서치 실행"""
report = client.interactions.create(
agent="deep-research-max-preview-04-2026", # Max 버전으로 정확도 높임
input="계획 승인. 지금 바로 실행해줘.",
agent_config={
"type": "deep-research",
"collaborative_planning": False, # ⚠️ 반드시 False로 전환
"visualization": "auto",
},
previous_interaction_id=previous_id,
background=True,
)
while (result := client.interactions.get(
id=report.id
)).status != "completed":
time.sleep(15)
return result.output_text
# ──────────────────────────────────────
# STEP 4. 실행자 — Antigravity로 후속 작업
# ──────────────────────────────────────
def execute_with_antigravity(research_result: str, task: str) -> str:
"""리서치 결과를 기반으로 Antigravity 에이전트가 실제 작업 수행"""
execution = client.interactions.create(
agent="antigravity-preview-05-2026",
input=f"""
다음 리서치 결과를 바탕으로 아래 작업을 수행해줘.
[리서치 결과]
{research_result[:3000]} # 컨텍스트 절약을 위해 앞부분만 전달
[수행할 작업]
{task}
""",
background=True,
)
while (result := client.interactions.get(
id=execution.id
)).status != "completed":
time.sleep(10)
return result.output_text
실전 파이프라인 — 완전 자동화 예시
def plan_and_execute_pipeline(
objective: str,
execution_task: str,
auto_approve: bool = False
):
"""
Plan-and-Execute 전체 파이프라인
Args:
objective: 리서치할 목표
execution_task: 리서치 후 실행할 작업
auto_approve: True면 계획 검토 없이 자동 승인
"""
print("=" * 50)
print("📋 PHASE 1: 계획 수립")
print("=" * 50)
plan_text, plan_id = create_plan(objective)
print(plan_text)
# 자동 승인이 아닌 경우 사람이 검토
if not auto_approve:
feedback = input("\n계획 수정사항 입력 (없으면 Enter): ").strip()
if feedback:
print("\n🔄 계획 수정 중...")
plan_text, plan_id = refine_plan(feedback, plan_id)
print(plan_text)
print("\n" + "=" * 50)
print("🔍 PHASE 2: 리서치 실행 (Deep Research Max)")
print("=" * 50)
research_result = execute_research(plan_id)
print(f"리서치 완료: {len(research_result)} 글자")
print("\n" + "=" * 50)
print("⚙️ PHASE 3: 후속 작업 실행 (Antigravity)")
print("=" * 50)
final_output = execute_with_antigravity(research_result, execution_task)
print(final_output)
return {
"plan": plan_text,
"research": research_result,
"output": final_output,
}
# 실행 예시
result = plan_and_execute_pipeline(
objective="""
2026년 하반기 AI 코딩 도구 시장 분석.
Claude Code·Codex·Grok Build·Cursor·GitHub Copilot의
가격·기능·점유율 비교 포함.
""",
execution_task="""
리서치 결과를 바탕으로:
1. 비교표를 포함한 마크다운 리포트 작성 (report.md)
2. 주요 수치를 시각화한 Python 차트 코드 작성 (chart.py)
3. 경영진 보고용 3줄 요약 작성
""",
auto_approve=False,
)
중간 리플래닝 — 실행 실패 시 계획 수정
순수 Plan-and-Execute의 약점은 실행 도중 오류가 나도 계획을 고치기 어렵다는 점입니다. 다음 패턴으로 보완할 수 있습니다.
def plan_execute_with_replan(objective: str, max_replans: int = 2):
"""실행 실패 시 자동 리플래닝"""
plan_text, plan_id = create_plan(objective)
replan_count = 0
while replan_count <= max_replans:
try:
research_result = execute_research(plan_id)
# 결과 품질 검증
if len(research_result) < 500:
raise ValueError("리서치 결과가 너무 짧습니다. 재계획이 필요합니다.")
return research_result
except Exception as e:
replan_count += 1
if replan_count > max_replans:
raise
print(f"⚠️ 실행 실패 ({replan_count}/{max_replans}): {e}")
print("🔄 자동 리플래닝 중...")
# 실패 원인을 플래너에게 피드백으로 전달
plan_text, plan_id = refine_plan(
f"이전 실행이 다음 이유로 실패했습니다: {e}. "
f"계획을 더 구체적이고 실행 가능하게 수정해줘.",
plan_id
)
ReAct vs Plan-and-Execute vs 조합 — 언제 뭘 써야 하나요?
태스크 유형 추천 패턴
─────────────────────────────────────────────────────────
실시간 도구 호출이 잦은 경우 ReAct
(API 조회, DB 검색, 즉흥 판단)
계획이 먼저 필요한 멀티스텝 작업 Plan-and-Execute
(리서치→분석→보고서, 코드→테스트→배포)
높은 정확도가 필요한 코딩 작업 Reflection 추가
(출력 검토 후 자기 수정 루프)
복잡도가 높고 실패 비용이 큰 경우 P&E + Reflection 조합
(프로덕션 배포, 중요 문서 작성)
2026년 기준 실용 공식은 이렇습니다.
단순 질의·검색 → ReAct (LangGraph ReAct)
리서치·분석·보고서 → Plan-and-Execute (Deep Research + Antigravity)
코드 품질 중요 시 → Reflection 루프 추가
장기 프로젝트 관리 → 세 패턴 조합
thinking_budget과 모델 선택 권장값
단계 모델 thinking_budget
─────────────────────────────────────────────────────────────
계획 수립 deep-research-preview-04-2026 1024
계획 정제 deep-research-preview-04-2026 512
리서치 실행 deep-research-max-preview-04-2026 자동(Max 버전)
후속 실행 antigravity-preview-05-2026 필요시 설정
비용 최적화 팁: 계획 수립에는 preview(빠른 버전), 실제 실행에는 max(정확도 우선) 버전을 분리해서 쓰는 것이 토큰 효율이 좋습니다.
✅ collaborative_planning=True → False 전환이 이 패턴의 핵심 트리거입니다. 플래그를 빠뜨리면 계속 계획 수정 모드로 남아서 실행이 시작되지 않습니다. 실전에서 가장 자주 만나는 버그입니다.
❌ 계획 없이 바로 Antigravity에 복잡한 목표를 던지면 중간에 방향을 잃고 엉뚱한 결과물을 냅니다. 목표가 3단계 이상이면 반드시 플래닝 단계를 거치세요.
'AI Agent' 카테고리의 다른 글
| smolagents 완전 가이드 — 1,000줄 Python으로 에이전트 만드는 법 (0) | 2026.06.15 |
|---|---|
| n8n AI 에이전트 워크플로우 실전 — 코드 없이 에이전트 만드는 법 (0) | 2026.06.10 |
| AI 에이전트 거버넌스 — Workday·OWASP·NIST가 그리는 안전한 에이전트 기준 (0) | 2026.06.05 |
| AI 에이전트 Autopilot Scout 분석 — Microsoft의 장기 실행 에이전트 아키텍처 (0) | 2026.06.05 |
| LangGraph vs PydanticAI vs CrewAI vs Google ADK — 2026년 에이전트 프레임워크 4파전 (0) | 2026.05.29 |