일회성 샌드박스 대 지속형 머신: AI 에이전트가 실행 간에 유지하는 것
요약
AI 에이전트의 실행 환경을 '일회성 샌드박스'와 '지속형 머신'으로 구분하여 설명합니다. 일회성 샌드박스는 깨끗한 시작에 적합하지만, 지속형 머신은 브라우저 세션이나 파일 같은 상태를 유지할 수 있어 에이전트의 연속적인 작업 수행에 유리합니다.
핵심 포인트
- 일회성 샌드박스: 신뢰할 수 없는 코드 실행 등 초기화가 필요한 경우 사용.
- 지속형 머신: 로그인된 브라우저 세션, 작성 파일 등 상태 유지가 중요한 에이전트 작업에 적합.
- 진행 상황을 프로세스가 아닌 파일에 저장해야 연속적인 작업을 보장할 수 있다.
- TOTP 비밀 등을 지속형 머신의 볼트에 저장하여 자동화된 로그인을 구현할 수 있다.
일회성 샌드박스 또는 지속형 머신: 간단한 답변
모든 실행이 깨끗하게 시작해야 하는 경우(예: 신뢰할 수 없는 코드 실행, 재현 가능한 테스트, 공유되는 것이 전혀 없는 일회성 작업)에는 일회성 샌드박스를 사용하세요. 반면, 에이전트가 이전 시간의 무언가가 필요한 경우(예: 로그인된 브라우저, 설치된 앱, 작성한 파일, 열어둔 창 등)에는 지속형 머신을 사용해야 합니다.
두 가지를 비교하는 대부분의 내용은 코드 실행에 초점을 맞추며, 이때 유지할 가치가 있는 상태는 복제된 레포지토리와 일부 설치된 패키지에 국한됩니다. 컴퓨터를 사용하는 에이전트는 잃을 것이 더 많으며, 보통 비밀번호와 2FA 코드를 거쳐 얻은 브라우저 세션부터 시작합니다.
각 모델이 유지하는 것
각 모델에서 실행 간에 무엇이 살아남는지 알려드립니다. 지속형(Persistent) 열은 Machines에 문서화된 대로 stop 후 start한 Burrowbox 머신을 설명합니다.
| 상태 | 일회성 샌드박스 (Ephemeral sandbox) | 지속형 머신 (Persistent machine, Burrowbox) |
|---|---|---|
| 에이전트가 작성한 파일 | 사라짐 (Gone) | 유지됨 (Kept) |
| ... |
Burrowbox의 stop은 전체 파일 시스템을 스냅샷하고 열린 창과 탭을 기록하지만, 메모리는 유지하지 않습니다. 루프 중간에 있던 스크립트는 처음부터 다시 시작합니다. 만약 에이전트의 진행 상황이 프로세스에만 의존한다면, 그것을 파일에 작성해야 합니다.
문서에서 가져온 두 가지 추가 세부 사항:
- 머신이 실행되는 동안 30분마다 저장 지점(save point)이 생성됩니다. 머신이 예기치 않게 중지되면
lastStopMode는crashed가 되며 마지막 저장 지점에서 복원합니다. - 기본
light브라우저는 중지 및 시작 시 쿠키를 유지하지만, 라이브 에이전트 업데이트는 로그인 정보를 잊어버리게 만듭니다.full브라우저(Chromium)는 두 경우 모두 쿠키를 유지하므로, 로그인 정보가 중요한 머신에는 `
에이전트는 CRM을 열고 로그인 페이지를 가져온 다음, 비밀번호를 입력하고 나서야 매번 작업을 시작합니다. 지속형 머신(persistent machine)의 경우 브라우저가 어제 쿠키를 유지하므로, 다음 실행 시 종종 로그인 페이지를 건너뜁니다.
도구 체인 재설치
베이스 이미지에서 시작하는 샌드박스는 유용한 작업을 수행하기 전에 PDF 도구를 apt install하고, AppImage를 다운로드하며, 데스크톱 앱을 설정해야 합니다. 이 중 일부는 이미지에 포함(bake)할 수 있지만, 고객별 설정(예: 해당 고객 계정에 로그인된 데스크톱 앱)은 포함할 수 없습니다.
아무도 답할 수 없는 2FA 프롬프트
계정이 인증기 앱을 사용하는 경우, 새로운 샌드박스는 매번 로그인 시 코드가 필요하며, 키보드 앞에 있는 사람이 없습니다. Burrowbox 머신에서는 TOTP(Time-based One-Time Password) 비밀을 해당 머신의 볼트(vault)에 한 번 저장하면, browser_login 도구가 모델이 코드나 어떤 것인지 알지 못한 채 양식과 코드를 자동으로 채워줍니다:
curl -X PUT https://burrowbox.dev/api/machines/$MACHINE_ID/vault/crm \
-H "Authorization: Bearer $BURROWBOX_KEY" -H "Content-Type: application/json" \
-d '{"url": "https://crm.example.com/login", "username": "[email protected]", "password": "…", "totpSecret": "…"}'
이 두 가지를 결합하면, 실행 시 거의 로그인 페이지를 볼 필요가 없습니다. 세션 쿠키가 여전히 존재하며, 만료될 때 에이전트는 browser_login을 호출하여 아무도 코드에 대해 묻지 않고 다시 로그인합니다.
일시적(ephemeral) 샌드박스가 적절한 경우
깨끗한 환경은 여러 경우에서 더 나은 기본값입니다:
- 사용자가 업로드했거나 신뢰하지 않는 파일을 처리하는 코드는 나중에 버릴 수 있는 곳에서 실행되어야 합니다.
- 테스트와 평가는 매번 동일한 상태에서 시작해야 합니다. 이전 실행의 잔여물은 결과 비교를 어렵게 만듭니다.
- 서로 아무 관련이 없는 10가지 연구 작업은 머신을 공유할 필요가 없으며, 분리된 상태를 유지하면 하나가 다른 하나에 영향을 미칠 수 없습니다.
Burrowbox는 이를 [warm pools]을 통해 처리합니다. 클레임된 풀 머신은 완전히 새것이며 다른 고객의 흔적이 전혀 없고, 풀 머신은 한 번 사용 후 재사용되지 않습니다. 이것이 바로 [Manus post]가 기반으로 하는 모델입니다: 작업당 신규 머신을 할당하고, 작업이 끝나면 중지합니다.
하이브리드 방식: 작업을 위한 풀과 고객별 머신
모든 것을 위해 하나의 모델만 고집할 필요는 거의 없습니다. 일반적인 분할은 다음과 같습니다:
- 깨끗한(Clean) 작업은 풀에서 클레임된 머신을 사용하고, 풀의 템플릿으로 설정한 후, 완료되면 중지하거나 삭제합니다.
- 상태를 유지해야 하는(Stateful) 작업은 사용자 또는 고객당 하나의 영구적인 머신에 할당되며, 여기에 로그인 정보, 볼트(vault), 파일 및 앱이 저장됩니다. 이것이 사용자당 컴퓨터 모델입니다.
두 방식은 코드로 보면 비슷해 보입니다. 작업 머신은 풀에서 가져옵니다:
curl -X POST https://burrowbox.dev/api/pools/pool_3fa91c/claim \
-H "Authorization: Bearer $BURROWBOX_KEY" -H "Content-Type: application/json" \
-d '{"externalId": "cus_8f2a", "ttlMinutes": 30}'
고객의 머신은 한 번 생성되고, 해당 ID로 태그가 지정된 후, 각 세션마다 시작 및 중지됩니다:
# 처음 실행 시
curl -X POST https://burrowbox.dev/api/machines \
-H "Authorization: Bearer $BURROWBOX_KEY" -H "Content-Type: application/json" \
...
ttlMinutes를 사용하면 시간이 다 되면 머신이 스스로 꺼집니다. 기본 onExpire 값은 모든 상태를 유지하는 stop입니다. 어느 쪽이든 에이전트는 [quickstart]에서처럼 머신의 mcpUrl과 mcpToken을 사용하여 연결합니다.
머신 유지 비용
영구적인 머신도 중지된 동안에는 비용이 발생하지만, 많이 비싸지는 않습니다. [Billing]에 따르면 사용량은 분 단위로 청구됩니다:
- 실행 중(Running):
tiny의 경우 시간당 $0.07부터large의 경우 시간당 $0.26까지입니다. - 중지 상태(Stopped): 크기에 관계없이 시간당 $0.001 또는 30일당 $0.72입니다.
- 유휴 워밍 풀 머신은 실행 중인 머신과 동일하게 청구됩니다.
상태를 유지하는 데는 중지된 상태의 요금이 발생합니다. 상태를 유지하지 않으면, 매번 실행 시 로그인하고 재설치하는 데 걸리는 분 단위 시간이 소요되며, 이는 실행 중인 요율로 청구됩니다.
핵심 요약 (Key takeaways)
- 에이전트에게 마지막 실행에서 무엇이 필요한지 물어보십시오. 만약 아무것도 필요하지 않다면, 깨끗한 샌드박스를 사용하십시오.
- 컴퓨터 사용 에이전트의 경우, 유지할 가치가 있는 상태는 주로 로그인 정보, 설치된 앱 및 파일입니다.
- Burrowbox에서 중지(stop)하면 디스크, 볼트, 쿠키, 열려 있는 창과 탭은 유지되지만 메모리는 유지되지 않습니다.
- 많은 제품들이 둘 다 필요합니다. 즉, 격리된 작업을 위한 풀 머신과 고객당 영구적인 머신입니다.
FAQ (자주 묻는 질문)
영구적인 머신이 실행 중인 프로세스를 유지하나요?
Burrowbox에서는 그렇지 않습니다. 중지하면 파일 시스템은 유지되고 다음 시작 시 창과 탭을 다시 열지만, 메모리는 유지되지 않으므로 실행 중인 프로그램은 재실행됩니다. 일부 샌드박스는 메모리를 유지합니다: E2B의 일시 정지(pause) 기능은 실행 중인 프로세스를 포함하여 파일 시스템과 메모리를 저장하며, 일시 정지된 샌드박스는 삭제할 때까지 유지됩니다 (E2B docs). Burrowbox는 E2B와 관련이 없습니다.
임시(ephemeral) 샌드박스가 더 안전한가요?
이는 한 번의 실행이 다음 실행에 남길 수 있는 것을 제한합니다. 고객당 영구적인 머신은 실행 간을 분리하는 대신 고객들 사이를 분리합니다: 각 머신은 자체 디스크와 볼트를 가지며, mcpToken은 해당 머신에 범위가 지정됩니다. 신뢰할 수 없는 코드를 사용하려면, 고객이 영구적인 머신을 가지고 있더라도 새 머신을 사용하는 것이 좋습니다.
에이전트가 실행 사이에 로그인 상태를 유지할 수 있나요?
예, 영구적인 머신에서 가능합니다. 중지하면 세션 쿠키를 포함하여 브라우저의 쿠키를 스냅샷으로 찍어 다음 시작 시 사이트가 세션을 만료시키기 전까지는 로그인된 상태로 돌아옵니다. 라이브 에이전트 업데이트가 로그아웃하지 않도록 `
영구적인 머신을 제거하려면 어떻게 해야 하나요?
DELETE /api/machines/{id}를 사용하면 해당 머신의 파일, 앱, 볼트(vault), 브라우저 프로필, 스냅샷, 예약 작업(scheduled jobs) 및 웹훅(webhooks)이 영구적으로 삭제됩니다. 이는 되돌릴 수 없습니다.
계정 생성하기를 하고 상태를 유지하는 머신을 사용해 보세요.
출처 (Sources)
- E2B 문서, 샌드박스 지속성(Sandbox persistence): https://e2b.dev/docs/sandbox/persistence
- Burrowbox 문서, 머신(Machines): https://burrowbox.dev/docs/machines
- Burrowbox 문서, 웜 풀(Warm pools): https://burrowbox.dev/docs/pools
- Burrowbox 문서, 볼트(Vault): https://burrowbox.dev/docs/vault
- Burrowbox 문서, 청구(Billing): https://burrowbox.dev/docs/billing
원래는 Burrowbox 블로그에 게시되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기