AI 에이전트에게 격리된 환경(Sandbox)에 대한 액세스 권한을 부여할 때, 에이전트가 작업할 파일을 어떻게 구성해야 하는가에 대한 근본적인 질문이 대두됩니다. Docker Sandbox(sbx로 지칭) 플랫폼은 소스 코드 관리를 위한 세 가지 주요 모델을 제공하며, 각각은 개발자의 워크플로와 에이전트와의 상호 작용에 직접적인 영향을 미칩니다.
1. 직접 마운트 (Shared Mounts)
이 옵션을 사용하면 호스트 기기의 현재 작업 경로를 격리된 환경과 직접 공유할 수 있습니다. 프로젝트 폴더에서 sbx run을 실행하면 폴더가 환경 내의 동일한 절대 경로로 마운트됩니다. 이 모델은 단일 작업에서의 긴밀한 협업에 이상적이며, 개발자는 편집기에서 변경 사항을 즉시 확인할 수 있고 로컬 개발 서버는 핫 리로드(Hot Reload) 기능을 통해 수정 사항을 감지할 수 있습니다.
주의: 종속성 충돌에 주의해야 합니다. 네이티브 바이너리(Native Binaries)가 포함된 패키지는 격리된 Linux 환경에서는 작동하지만 macOS나 Windows에서는 실패할 수 있으므로, 실행 환경을 표준화하거나 종속성 설치를 분리하는 것이 좋습니다.
2. Git 작업 트리 사용 (Git Worktrees)
이 옵션은 여러 작업을 동시에 실행하는 데 적합합니다. 각 작업에 고유한 폴더와 브랜치(Branch)를 할당하여 각 작업 트리를 별도의 격리된 환경에 마운트할 수 있습니다. 여기서의 장점은 완전한 작업 격리이지만, 기술적 제약이 남아 있습니다. .git 파일은 마운트 범위를 벗어난 메타데이터를 가리키므로, 상태 확인(git status)이나 브랜치 전환 등의 작업은 호스트 기기에서 수행해야 합니다.
3. 복제 모드 (Clone Mode)
이 모드에서 sbx 도구는 격리된 환경 내에서 코드의 독립적인 복사본을 생성하고, 호스트 코드는 읽기 전용으로 마운트합니다. 이는 에이전트에게 환경 내에서 Git에 대한 완전한 액세스 권한을 부여하여, 브랜치와 커밋(Commits)을 완전히 독립적으로 관리할 수 있게 합니다. 작업이 완료되면 개발자는 원격 Git 저장소(Remote)를 통해 변경 사항을 가져올 수 있습니다.
이것이 개발자 워크플로를 어떻게 바꾸는가?
올바른 방법을 선택하는 것은 작업의 성격과 직접 개입하려는 의지에 따라 다릅니다.
- 긴밀한 협업: 에이전트의 작업을 실시간으로 모니터링하려면 직접 마운트를 사용하세요.
- 독립성: 로컬 작업 환경에 영향을 주지 않고 에이전트에게 작업 관리 공간을 부여하려면 복제 모드나 완전한 격리 환경(Mountless)을 사용하세요.
- 다중 프로젝트 관리: 워크スペース 관리 도구(Workspace Managers)를 사용하여 여러 저장소를 하나의 환경으로 결합하면, 에이전트가 상호 연결된 프로젝트(예: 프론트엔드와 백엔드)를 더 쉽게 처리할 수 있습니다.
호스트 파일 마운트에 의존하지 않는 격리 환경(Mountless)은 로컬 브라우저에서 개발 서버에 액세스하기 위해 포트(Ports)의 수동 관리가 필요하다는 점을 기억하세요. 이는 격리 보안을 강화하지만 몇 가지 추가 설정 단계를 추가합니다.