본문 바로가기

AI Development

OpenAI Agents SDK 대규모 업데이트 — Claude Code Routines 나온 지 3일 만에 맞불

반응형

2026년 4월 14일, Anthropic이 Claude Code Routines를 출시했어요. 3일 뒤인 4월 16일, OpenAI가 Agents SDK를 대규모 업데이트했어요.

타이밍이 우연이 아닌 것 같은 이유:
Claude Code Routines: 노트북 꺼도 클라우드에서 에이전트 실행
OpenAI Agents SDK:    샌드박스에서 에이전트 안전하게 장기 실행

→ 에이전트 인프라 전쟁 시작

뭐가 바뀌었나

기존 Agents SDK의 한계가 있었어요.

기존 문제:
범용 프레임워크 → 유연하지만 GPT 최적화 안 됨
모델 프로바이더 SDK → 모델에 가깝지만 가시성 부족
관리형 에이전트 API → 배포 쉽지만 실행 환경 제한

→ 프로토타입은 쉬운데 프로덕션이 힘들었음

이번 업데이트의 핵심 3가지예요.


1. 네이티브 샌드박스 실행

에이전트가 코드를 실행하고 파일을 다룰 때 격리된 환경에서 안전하게 처리해요.

from agents import Agent, Runner
from agents.sandbox import SandboxConfig

# 샌드박스 설정
sandbox = SandboxConfig(
    provider="e2b",          # E2B, Cloudflare, Vercel, Blaxel 등
    workspace="/workspace",
    allowed_tools=["shell", "file_edit", "code_interpreter"]
)

agent = Agent(
    name="코드 분석 에이전트",
    instructions="""
    주어진 코드베이스를 분석하고 버그를 찾아줘.
    파일을 읽고, 테스트를 실행하고, 수정 사항을 제안해줘.
    """,
    sandbox=sandbox
)

# 에이전트가 샌드박스 안에서만 파일 접근, 코드 실행
result = await Runner.run(
    agent,
    "이 레포지토리에서 보안 취약점 찾아줘",
    context={"repo_path": "/workspace/myproject"}
)

지원 샌드박스 프로바이더:

Blaxel     - 엔터프라이즈 특화
Cloudflare - 엣지 실행
Daytona    - 개발 환경
E2B        - 코드 실행 특화
Modal      - 서버리스
Runloop    - 장기 실행
Vercel     - 프론트엔드 통합

2. 새 하네스 — 장기 실행 에이전트

하네스(Harness)는 모델, 툴, 데이터 간의 상호작용을 조율하는 레이어예요.

from agents import Agent, Runner
from agents.harness import HarnessConfig
from agents.memory import SQLiteMemory

# 설정 가능한 메모리
memory = SQLiteMemory(db_path="./agent_memory.db")

# 장기 실행 하네스 설정
harness = HarnessConfig(
    memory=memory,
    max_turns=200,           # 장기 실행 지원
    snapshot_interval=10,    # 10턴마다 스냅샷
    resume_on_failure=True   # 실패 시 재개
)

agent = Agent(
    name="장기 리서치 에이전트",
    instructions="주어진 주제를 깊이 분석해줘",
    harness=harness,
    tools=[web_search, file_read, code_interpreter]
)

# 중간에 환경이 죽어도 스냅샷에서 재개
result = await Runner.run(
    agent,
    "GPT-5.4 vs Claude Opus 4.6 성능 비교 분석서 작성해줘"
)

스냅샷과 재개 기능이 핵심이에요.

기존:
에이전트 실행 중 컨테이너 죽으면 → 처음부터 다시

업데이트:
10턴마다 상태 저장 → 죽으면 마지막 체크포인트에서 재개
→ 수십 분짜리 장기 작업 가능

3. 포터블 워크스페이스 — Manifest

로컬에서 개발한 에이전트를 프로덕션에 그대로 올려요.

from agents.manifest import WorkspaceManifest

# 에이전트 워크스페이스 정의
manifest = WorkspaceManifest(
    name="data-analysis-agent",
    version="1.0.0",

    # 마운트할 파일/디렉토리
    mounts=[
        {"source": "./data", "target": "/workspace/data"},
        {"source": "./config", "target": "/workspace/config"}
    ],

    # 출력 디렉토리
    outputs=["/workspace/results"],

    # 스토리지 연동
    storage={
        "provider": "aws_s3",
        "bucket": "my-agent-outputs",
        "prefix": "analysis/"
    },

    # 의존성
    dependencies=["pandas", "numpy", "matplotlib"]
)

# 로컬과 프로덕션 동일한 코드
agent = Agent(
    name="데이터 분석",
    manifest=manifest,
    sandbox_provider="e2b"  # 프로덕션에서만 변경
)
이전:
로컬 개발 → 프로덕션 배포 시 환경 재구성 필요
경로, 의존성, 스토리지 연결 전부 다시 설정

이후:
Manifest 한 번 정의 → 로컬, 스테이징, 프로덕션 동일하게 동작

AGENTS.md — 에이전트 커스텀 지시사항

CLAUDE.md처럼 레포지토리 수준의 에이전트 지시사항이에요.

# AGENTS.md

## 프로젝트 컨텍스트
이 레포는 Python 3.11 기반 FastAPI 서버입니다.
테스트는 pytest를 사용합니다.

## 코딩 규칙
- 모든 함수에 타입 힌트 필수
- 에러 처리는 커스텀 Exception 클래스 사용
- 커밋 메시지는 Conventional Commits 형식

## 금지 사항
- 프로덕션 DB 직접 수정 금지
- .env 파일 수정 금지
- main 브랜치 직접 push 금지

## 테스트
새 기능 추가 시 반드시 단위 테스트 작성
커버리지 80% 이상 유지
CLAUDE.md vs AGENTS.md:
Claude Code → CLAUDE.md 읽음
OpenAI Codex/Agents SDK → AGENTS.md 읽음
둘 다 → 각자 읽음 (표준화 진행 중)

실제로 Linux Foundation 산하 Agentic AI Foundation이 두 형식의 통합 표준화를 논의 중이에요.


실전 사용 예시

장기 코드 리뷰 에이전트

from agents import Agent, Runner
from agents.harness import HarnessConfig
from agents.sandbox import SandboxConfig

async def create_code_review_agent():
    sandbox = SandboxConfig(provider="e2b")
    harness = HarnessConfig(
        memory=SQLiteMemory("./reviews.db"),
        snapshot_interval=5
    )

    agent = Agent(
        name="코드 리뷰어",
        instructions="""
        PR을 분석해서 다음을 체크해줘:
        1. 보안 취약점 (OWASP Top 10 기준)
        2. 성능 병목
        3. 테스트 커버리지
        4. 코딩 컨벤션
        각 이슈마다 심각도(critical/warning/info)와 수정 방법 제시
        """,
        sandbox=sandbox,
        harness=harness,
        tools=[read_file, run_tests, search_docs]
    )

    return agent

# GitHub Action에서 PR 트리거 시 실행
agent = await create_code_review_agent()
review = await Runner.run(
    agent,
    f"PR #{pr_number} 리뷰해줘",
    context={"repo": repo_url, "pr": pr_diff}
)

멀티 에이전트 데이터 파이프라인

from agents import Agent, Runner

# 수집 에이전트
collector = Agent(
    name="데이터 수집",
    instructions="API에서 데이터 수집하고 정제해줘",
    tools=[fetch_api, clean_data]
)

# 분석 에이전트
analyzer = Agent(
    name="데이터 분석",
    instructions="수집된 데이터를 분석하고 인사이트 도출해줘",
    tools=[run_analysis, create_chart]
)

# 보고서 에이전트
reporter = Agent(
    name="보고서 작성",
    instructions="분석 결과를 경영진 보고서로 작성해줘",
    tools=[write_report, send_email]
)

# 핸드오프 체인
collector.add_handoff(analyzer)
analyzer.add_handoff(reporter)

# 실행
result = await Runner.run(
    collector,
    "지난 달 매출 데이터 분석 보고서 만들어줘"
)

Claude Code Routines vs OpenAI Agents SDK 비교

Claude Code Routines:
→ 출시: 2026년 4월 14일
→ 실행: Anthropic 클라우드 인프라
→ 트리거: 스케줄, API, GitHub 이벤트
→ 설정: 자연어 프롬프트
→ 노트북 불필요: 완전 클라우드 실행
→ 플랜 한도: Pro 5개/일, Max 15개/일

OpenAI Agents SDK:
→ 업데이트: 2026년 4월 16일
→ 실행: 개발자가 선택한 샌드박스
→ 트리거: 코드로 직접 제어
→ 설정: Python 코드 + AGENTS.md
→ 인프라: 직접 관리 또는 프로바이더 선택
→ 요금: API 표준 가격

무엇을 쓸지 기준:

Claude Code Routines:
✅ GitHub 이벤트 기반 자동화
✅ 빠른 설정, 관리 부담 없음
✅ 일일 루틴, 백로그 관리
✅ 비개발자도 설정 가능

OpenAI Agents SDK:
✅ 복잡한 멀티 에이전트 파이프라인
✅ 커스텀 샌드박스 환경 필요
✅ 장기 실행 (수십 분 이상)
✅ 스토리지/인프라 직접 제어 필요
✅ OpenAI 모델 스택 이미 사용 중

 

반응형