Daytona

Daytona

Daytona를 자체 호스팅 샌드박스 제공자로 사용하는 방법을 안내하는 가이드예요. 애플리케이션 관리 또는 웹훅 관리 모드로 Daytona 샌드박스를 만들고 executor를 연결하는 방법을 배워요.

출처: 문서

본문

OpenAI Cookbook의 application-managed 및 webhook-managed 예시를 참고하세요.

executor 설정 및 연결 요구 사항은 Self-hosted sandboxes를 참고하세요.

프로비저닝 모드를 선택하세요:

  • Application-managed: 이 가이드를 따라 애플리케이션에서 샌드박스를 시작하고 중지하세요.
  • Webhook-managed: OpenAI 웹훅에서 샌드박스를 시작하거나 다시 연결하는 핸들러를 배포하세요.

두 모드를 비교하려면 Sandbox lifecycle을 참고하세요.

웹훅 관리

OpenAI 웹훅 전달을 검증하고 프로비저닝 작업을 대기열에 넣는 컨트롤러를 사용하세요. 그 컨트롤러를 각 세션의 executor를 실행하는 워커 샌드박스와 분리해 두세요. 엔드포인트와 서명 시크릿을 등록하려면 Deploy and connect a handler를 따르세요.

environment_connection 요청을 처리해 워커를 시작하거나 다시 연결하고, 세션이 실패하면 해제하세요. 워커와 컨트롤러 타임아웃을 명시적으로 설정하세요. 유휴 시 컴퓨팅을 중지하려면 들어오는 작업과 조정하는 정책이 필요해요(Lifecycle behavior 참고).

애플리케이션 관리

시작하기 전에

OpenAI 프로젝트 API 키, Daytona API 키, Codex CLI 패키지가 필요해요.

DAYTONA_API_KEY를 설정하고 애플리케이션 요청에는 OPENAI_API_KEY를 사용하세요. OPENAI_EXECUTOR_API_KEY를 environment key로 설정하고, 그 키만 CODEX_API_KEY로 샌드박스에 전달하세요.

1. Daytona 환경 설정하기

self-hosted session을 만들고 환경 ID를 저장하세요. Daytona SDK 또는 API를 사용해 설정된 작업 디렉토리로 격리된 샌드박스를 만들고, 샌드박스에 Codex CLI를 설치한 뒤 그 환경 ID와 환경 키로 executor를 시작하세요.

executor의 OpenAI 연결은 아웃바운드이고 장기 지속되며, Daytona의 비활동 추적은 이를 관찰하지 않아요. 에이전트가 작업하는 동안 Sandbox가 중지되지 않도록 auto_stop_interval=0을 설정하고, 중단된 실행이 컴퓨팅을 무기한 남기지 않도록 수명 한도를 설정하세요.

정기적인 사용에는 Codex와 ripgrep을 Daytona 스냅샷에 넣어 Sandbox가 더 빨리 연결되게 하세요.

2. 세션 실행하기

Daytona executor가 연결된 뒤 입력을 보내고 결과를 스트리밍하려면 Run and continue sessions의 HTTP 예시를 사용하세요. 작업이 끝나면 세션을 삭제하고 제공자 샌드박스를 별도로 중지하세요.

입력을 제출하기 전에 Sandbox를 시작하세요. 턴은 환경이 연결될 때까지 기다리며, 세션은 이벤트 스트림의 agent.session.environment.connected를 통해 연결을 보고해요.

성공적인 턴을 식별하려면 agent.session.turn.completed를 사용하세요. 실패하거나 취소된 턴 뒤에도 agent.session.idle이 올 수 있으므로, 유휴 세션을 턴 성공의 증거로 취급하지 마세요. 이벤트 직후의 세션 검색은 잠시 이전 상태를 반환할 수 있어요.

참고 자료

더 알아보기 (Learn more)

관련 문서: 자체 호스팅 샌드박스와 샌드박스 수명 주기를 참고하세요.