Open SWE: 사내 코딩 에이전트를 위한 오픈소스 프레임워크
GeekNews (AI)
|
|
🔬 연구
#claude
#deep agents
#langgraph
#open swe
#review
#오픈소스
#코딩 에이전트
원문 출처: GeekNews (AI) · Genesis Park에서 요약 및 분석
요약
Stripe, Ramp, Coinbase 등 주요 엔지니어링 조직이 독립적으로 구축한 사내 코딩 에이전트들이 유사한 아키텍처 패턴으로 수렴하고 있으며, 이를 오픈소스로 구현한 프레임워크가 Open SWE Deep Agents
본문
- Stripe, Ramp, Coinbase 등 주요 엔지니어링 조직이 독립적으로 구축한 사내 코딩 에이전트들이 유사한 아키텍처 패턴으로 수렴하고 있으며, 이를 오픈소스로 구현한 프레임워크가 Open SWE - Deep Agents 와 LangGraph 위에 구성되어, 격리된 클라우드 샌드박스·큐레이션된 툴셋·서브에이전트 오케스트레이션·개발자 워크플로 통합 등 핵심 컴포넌트를 제공 - 기존 에이전트를 포크하지 않고 컴포지션 방식으로 구축하여, 기반 프레임워크 업그레이드와 조직별 커스터마이징을 동시에 유지 가능 - 샌드박스 제공자·모델·도구·트리거·시스템 프롬프트·미들웨어 등 모든 주요 컴포넌트가 플러그형으로 교체 가능 - 사내 코딩 에이전트 도입을 검토하는 팀에게 프로덕션 검증된 패턴 기반의 출발점을 MIT 라이선스로 제공 프로덕션 배포에서 발견된 공통 패턴 - Stripe의 Minions, Ramp의 Inspect, Coinbase의 Cloudbot 등 코딩 에이전트들이 독립적으로 개발되었음에도 유사한 아키텍처적 결정으로 수렴 - 격리된 실행 환경: 각 작업이 전용 클라우드 샌드박스에서 실행되며, 엄격한 경계 내에서 전체 권한 부여. 프로덕션 시스템에 대한 실수의 영향 범위를 격리하면서 각 액션마다 승인 프롬프트 없이 명령 실행 가능 - 큐레이션된 툴셋: Stripe 엔지니어링 팀에 따르면 에이전트가 약 500개 도구에 접근하지만, 시간이 지나며 축적된 것이 아니라 신중하게 선별·유지 관리. 도구의 양보다 큐레이션이 더 중요 - Slack 우선 호출: 세 시스템 모두 Slack을 기본 인터페이스로 통합하여, 개발자가 새로운 애플리케이션으로 컨텍스트 전환할 필요 없이 기존 커뮤니케이션 워크플로에서 접근 - 시작 시 풍부한 컨텍스트: Linear 이슈, Slack 스레드, GitHub PR에서 전체 컨텍스트를 끌어와 작업 시작 전에 제공하여, 도구 호출을 통한 요구사항 발견 오버헤드 감소 - 서브에이전트 오케스트레이션: 복잡한 작업을 분해하여 각각 격리된 컨텍스트와 집중된 책임을 가진 전문 자식 에이전트에 위임 Open SWE 아키텍처 - - 기존 에이전트를 포크하거나 처음부터 구축하는 대신 Deep Agents 프레임워크 위에 컴포지션하는 방식. Ramp 팀이 OpenCode 위에 Inspect를 구축한 접근과 유사 - 컴포지션의 두 가지 장점: - 업그레이드 경로: Deep Agents가 개선될 때(더 나은 컨텍스트 관리, 효율적 계획, 최적화된 토큰 사용) 커스터마이징을 다시 구축하지 않고 개선 사항 반영 가능 - 포크 없는 커스터마이징: 조직별 도구·프롬프트·워크플로를 코어 에이전트 로직 수정이 아닌 설정으로 유지 가능 - Deep Agents가 제공하는 인프라: write_todos 를 통한 내장 계획, 파일 기반 컨텍스트 관리, task 도구를 통한 네이티브 서브에이전트 스폰, 결정론적 오케스트레이션을 위한 미들웨어 훅 - 2. 샌드박스: 격리된 클라우드 환경 - 각 작업이 자체 격리된 클라우드 샌드박스에서 실행, 전체 셸 접근이 가능한 원격 Linux 환경 - 레포지토리를 클론하여 에이전트에 전체 권한 부여, 오류는 해당 환경 내에 격리 - 기본 지원 샌드박스 제공자: Modal, Daytona, Runloop, LangSmith. 자체 샌드박스 백엔드 구현도 가능 - 핵심 동작: - 각 대화 스레드마다 퍼시스턴트 샌드박스 부여, 후속 메시지에서 재사용 - 샌드박스가 접근 불가 상태가 되면 자동 재생성 - 여러 작업이 각각 자체 샌드박스에서 병렬 실행 - 3. 도구: 축적이 아닌 큐레이션 - Open SWE는 집중된 툴셋과 함께 Deep Agents 내장 도구( read_file , write_file , edit_file , ls , glob , grep , write_todos , task )를 제공 - 작고 큐레이션된 툴셋이 테스트·유지보수·추론에 더 용이. 조직 내 추가 도구(내부 API, 커스텀 배포 시스템, 특수 테스트 프레임워크)는 명시적으로 추가 가능 - 4. 컨텍스트 엔지니어링: AGENTS.md + 소스 컨텍스트 - 두 가지 소스에서 컨텍스트 수집: - AGENTS.md 파일: 레포지토리 루트에 있으면 샌드박스에서 읽어 시스템 프롬프트에 주입. 컨벤션, 테스트 요구사항, 아키텍처 결정, 팀별 패턴 등을 인코딩 - 소스 컨텍스트: Linear 이슈 전체(제목, 설명, 코멘트) 또는 Slack 스레드 히스토리를 조합하여 에이전트 시작 전 전달, 추가 도구 호출 없이 작업별 컨텍스트 제공 - 레포지토리 전체 지식과 작업별 정보를 균형 있게 결합하는 이중 레이어 접근 - 5. 오케스트레이션: 서브에이전트 + 미들웨어 - 두 가지 메커니즘 결합: - 서브에이전트: task 도구를 통해 자식 에이전트 스폰. 메인 에이전트가 독립적 하위 작업을 각자의 미들웨어 스택·투두 리스트·파일 작업을 가진 격리된 서브에이전트에 위임 - 미들웨어: 에이전트 루프 주변에서 실행되는 결정론적 훅 - check_message_queue_before_model : 에이전트 실행 중 도착한 후속 메시지(Linear 코멘트, Slack 메시지)를 다음 모델 호출 전에 주입. 에이전트 작업 중 사용자 추가 입력 가능 - open_pr_if_needed : 에이전트가 PR 열기를 완료하지 못한 경우 자동으로 커밋·PR 생성하는 안전망 - ToolErrorMiddleware : 도구 오류를 우아하게 포착·처리 - 에이전틱(모델 구동)과 결정론적(미들웨어 구동) 오케스트레이션의 분리를 통해 신뢰성과 유연성의 균형 확보 - 6. 호출: Slack, Linear, GitHub - Slack: 스레드에서 봇 멘션. repo:owner/name 문법으로 작업할 레포지토리 지정. 에이전트가 스레드 내에서 상태 업데이트와 PR 링크 응답 - Linear: 이슈에 @openswe 코멘트. 에이전트가 전체 이슈 컨텍스트를 읽고 👀으로 확인 후 결과를 코멘트로 게시 - GitHub: 에이전트가 생성한 PR의 코멘트에 @openswe 태그로 리뷰 피드백 처리, 같은 브랜치에 수정 사항 푸시 - 각 호출이 결정론적 스레드 ID를 생성하여, 같은 이슈나 스레드의 후속 메시지가 동일한 실행 중인 에이전트로 라우팅 - 7. 검증: 프롬프트 기반 + 안전망 - 에이전트가 커밋 전 린터·포매터·테스트를 실행하도록 지시 - open_pr_if_needed 미들웨어가 백스톱 역할: 에이전트가 PR을 열지 않고 종료하면 미들웨어가 자동 처리 - 결정론적 CI 체크, 비주얼 검증, 리뷰 게이트를 추가 미들웨어로 확장 가능 Deep Agents를 사용하는 이유 - 컨텍스트 관리: 장기 실행 코딩 작업이 생성하는 대량의 중간 데이터(파일 내용, 명령 출력, 검색 결과)를 파일 기반 메모리로 오프로딩하여, 대화 히스토리에 모든 것을 유지하지 않음. 대규모 코드베이스에서 컨텍스트 오버플로 방지에 효과적 - 계획 기본 요소: 내장 write_todos 도구로 복잡한 작업 분해, 진행 추적, 새 정보에 따른 계획 적응을 구조화. 장기간에 걸친 멀티스텝 작업에 특히 유용 - 서브에이전트 격리: 메인 에이전트가 task 도구로 자식 에이전트를 스폰할 때 격리된 컨텍스트 부여. 서로 다른 하위 작업의 대화 히스토리가 오염되지 않아 복잡한 작업에서 더 명확한 추론 가능 - 미들웨어 훅: 에이전트 루프의 특정 지점에 결정론적 로직 주입 가능. 메시지 주입과 자동 PR 생성 등 안정적으로 실행되어야 하는 동작 구현에 활용 - 업그레이드 경로: Deep Agents가 독립 라이브러리로 활발히 개발되므로, 컨텍스트 압축·프롬프트 캐싱·계획 효율성·서브에이전트 오케스트레이션의 개선이 커스터마이징 재구축 없이 Open SWE에 반영 가능 조직별 커스터마이징 - Open SWE는 완성된 제품이 아닌 커스터마이징 가능한 기반으로 설계. 모든 주요 컴포넌트가 플러그형: - 샌드박스 제공자: Modal, Daytona, Runloop, LangSmith 간 교체. 내부 인프라 요구사항에 맞는 자체 샌드박스 백엔드 구현 가능 - 모델: 모든 LLM 제공자 사용 가능. 기본값은 Claude Opus 4이며, 서브태스크별 다른 모델 설정 가능 - 도구: 내부 API·배포 시스템·테스트 프레임워크·모니터링 플랫폼용 도구 추가. 불필요한 도구 제거 가능 - 트리거: Slack·Linear·GitHub 통합 로직 수정. 이메일·웹훅·커스텀 UI 등 새 트리거 표면 추가 가능 - 시스템 프롬프트: 기본 프롬프트와 AGENTS.md 파일 반영 로직 커스터마이징. 조직별 지침·제약·컨벤션 추가 가능 - 미들웨어: 검증·승인 게이트·로깅·안전 체크를 위한 자체 미들웨어 훅 추가 가능 내부 구현과의 비교 - Stripe, Ramp, Coinbase의 내부 시스템과 공개 정보 기반으로 비교 시, 핵심 패턴은 유사 - 차이점은 구현 세부 사항, 내부 통합, 조직별 도구에 존재하며, 이는 프레임워크를 다른 환경에 적응시킬 때 예상되는 차이 시작하기
Genesis Park 편집팀이 AI를 활용하여 작성한 분석입니다. 원문은 출처 링크를 통해 확인할 수 있습니다.
공유