Open SWE
TMThttps://blog.langchain.com/introducing-open-swe-an-open-source-asynchronous-coding-agent/
AI의 소프트웨어 엔지니어링 활용은 지난 2년간 진화해왔습니다. 처음에는 자동완성 기능으로 시작했고, 이후 IDE의 코파일럿으로 발전했으며, 최근 몇 달 사이에는 클라우드에서 비동기적으로 실행되는 장기적이고 더 엔드 투 엔드(end-to-end) 에이전트로 변화했습니다.
우리는 앞으로 모든 에이전트가 이와 같은 형태로 발전할 것이라고 믿습니다. 즉, 장기적으로 실행되고, 비동기적이며, 더 자율적으로 동작할 것입니다. 구체적으로, 이러한 에이전트는 다음과 같은 특징을 갖게 될 것입니다:
- 클라우드에서 비동기적으로 실행됨
- 사용자의 툴과 직접 통합됨
- 환경에 대한 충분한 컨텍스트를 가지고 장기적인 시간 범위에 걸쳐 작업을 계획함
- 작업을 완료하기 전에 스스로 작업을 검토하고 문제를 수정함
지난 몇 달 동안 소프트웨어 엔지니어링이 이러한 비전이 가장 먼저 실현되는 분야임이 분명해졌습니다. 하지만 이러한 특징을 모두 담은 오픈소스 프로젝트는 존재하지 않았습니다.
그래서 우리는 Open SWE를 만들었습니다. 이것은 최초의 오픈소스, 비동기, 클라우드 호스팅 코딩 에이전트입니다. Open SWE는 GitHub 저장소에 직접 연결되어 GitHub 이슈나 커스텀 UI에서 작업을 위임할 수 있습니다. Open SWE는 팀의 또 다른 엔지니어처럼 동작합니다. 코드베이스를 조사하고, 상세한 실행 계획을 세우고, 코드를 작성하며, 테스트를 실행하고, 스스로 작업을 검토한 뒤, 작업이 끝나면 풀 리퀘스트를 생성합니다.
우리는 내부적으로 LangGraph와 Open SWE 저장소 같은 프로젝트 개발을 가속화하기 위해 Open SWE를 사용해왔으며, 이미 주요 기여자 중 하나입니다.
오늘, 우리는 이를 커뮤니티에 공개하게 되어 매우 기쁩니다.
사용 방법
Open SWE의 호스팅 버전을 몇 분 만에 시작할 수 있습니다. 필요한 것은 Anthropic API 키뿐입니다.
- swe.langchain.com에 방문하세요.
- GitHub 계정을 연결하고 Open SWE가 접근할 저장소를 선택하세요.
- 설정에서 Anthropic API 키를 입력하세요.
- 새 작업을 시작하고 진행 상황을 지켜보세요!
시작점을 찾고 있다면, 문서의 예시 페이지를 확인해보세요.
왜 Open SWE인가?
오픈소스 코딩 프로젝트는 많습니다. 왜 새로운 프로젝트를 만들었을까요? 우리는 프롬프트와 도구뿐만 아니라, 그 외의 측면에도 주목하고 싶었습니다. 특히, 이러한 에이전트와 신뢰성 있게 상호작용할 수 있도록 전체적인 흐름과 UX(사용자 경험)를 강조하고 싶었습니다.
UI/UX는 에이전트 구축에서 가장 덜 탐구된 영역 중 하나라고 생각합니다. 애플리케이션의 전체 상호작용 패턴은 사용 빈도에 큰 영향을 미칠 수 있습니다. 비동기 에이전트가 새로운 개념인 만큼, 여기서 탐구할 흥미로운 패턴이 많다고 봅니다. 두 가지 주요 포인트는 더 많은 제어와 깊은 통합입니다.
제어: Open SWE에는 실행 중인 코딩 에이전트를 더 잘 제어할 수 있는 두 가지 주요 기능이 있습니다. 작업을 검토하거나 방향을 수정하고 싶을 때 에이전트를 중단할 수 있습니다.
- 휴먼 인 더 루프: Open SWE가 계획을 생성하면 중단되어 사용자가 계획을 승인, 편집, 삭제하거나 변경을 요청할 수 있습니다. 무언가 빠졌다면 계속 조사하라고 지시하면 작업 계획 수립을 다시 시작합니다.
- 이중 텍스팅: 대부분의 코딩 에이전트는 실행 중에 새로운 요청이나 피드백을 받을 수 없습니다. Open SWE는 이러한 제약이 없습니다. 제품 사양을 변경하거나 새로운 기능을 추가하고 싶거나, 진행 방향이 잘못된 것 같으면 메시지를 보내면 활성 세션에 그 내용을 매끄럽게 통합합니다.
깊은 통합: Open SWE는 GitHub 계정과 저장소에 직접 통합되어 다른 개발자처럼 작업을 할당하고 코드에 대한 컨텍스트를 제공합니다. 개발자는 이미 GitHub에서 작업하므로 새로운 제품을 배울 필요가 없습니다. Open SWE에서는 모든 새 작업에 추적 이슈가 생성됩니다. 이 이슈는 세션 내내 상태 업데이트, 실행 계획 등으로 갱신됩니다. 작업이 완료되면 풀 리퀘스트가 자동으로 생성되고 추적 이슈에 연결됩니다.
GitHub에서 직접 실행을 트리거할 수도 있습니다:
- GitHub 이슈에 라벨(예:
open-swe-auto
)을 추가하면 Open SWE가 작업을 시작합니다. 작업이 끝나면 풀 리퀘스트가 생성되어 검토를 기다립니다. 기존 프로세스에 자연스럽게 녹아들어 실제 팀원처럼 동작합니다.
이 두 가지 핵심 요소 외에도, Open SWE의 실행 방식과 작업 처리에 초점을 맞춘 두 가지 추가 요소가 있습니다.
- 격리된 샌드박스에서 실행: 모든 작업은 안전하고 격리된 Daytona 샌드박스에서 실행됩니다. 각 Open SWE 세션마다 별도의 샌드박스가 제공되므로 악의적인 명령에 대해 걱정할 필요 없이 Open SWE가 원하는 모든 셸 명령을 실행할 수 있습니다. 덕분에 모든 명령에 대해 사람의 승인을 받을 필요 없이 더 빠르게 움직일 수 있습니다.
- 클라우드에서 비동기적으로 실행: 클라우드 네이티브 아키텍처 덕분에 Open SWE는 여러 작업을 병렬로 처리하면서 로컬 자원을 소모하지 않습니다. 아침에 작업 목록을 할당하고 오후에 여러 개의 PR을 확인할 수 있습니다.
- 커밋 전에 계획 및 검토: 많은 에이전트가 바로 코드를 작성해 CI 파이프라인을 깨뜨리는 실수를 저지릅니다. Open SWE는 Planner와 Reviewer로 구성된 멀티 에이전트 아키텍처를 사용합니다. Planner는 먼저 코드베이스를 조사해 견고한 전략을 세웁니다. 코드가 작성된 후 Reviewer가 일반적인 오류를 확인하고, 테스트와 포매터를 실행하며, 변경 사항을 반영합니다. PR을 열기 전에 이러한 과정을 거치므로, 더 적은 리뷰 사이클로 더 완성도 높은 코드를 작성할 수 있습니다.
고려사항: Open SWE는 복잡하고 장기적인 작업에 적합합니다. 하지만 한 줄짜리 버그 수정이나 간단한 스타일 업데이트 같은 작은 작업에는 이 아키텍처가 최적이 아닙니다. 이런 작업에는 계획 및 검토 단계를 건너뛰고 바로 실행에 들어가는 에이전트가 필요합니다. 현재 이러한 기능을 갖춘 Open SWE 버전을 개발 중입니다. 이 버전은 CLI를 통해 로컬에서 실행되며, 더 에이전트적(agentic)으로 동작해 계획이나 코드 검토가 필요한지 스스로 판단할 수 있습니다. 완성되면 Open SWE는 간단한 스타일 수정부터 완전한 제품 구현까지 모든 엔지니어링 작업을 위한 진정한 원스톱 솔루션이 될 것입니다.
작동 방식: 에이전트 아키텍처
Open SWE는 순차적으로 동작하는 세 개의 LangGraph 전문 에이전트(Manager, Planner, Programmer/Reviewer)를 사용합니다.
- Manager: 이 그래프는 진입점입니다. 사용자 상호작용을 처리하고 작업을 라우팅합니다. 사용자가 작업을 생성하면 상태를 초기화하고 Planner에 제어를 넘깁니다.
- Planner: 코드가 한 줄도 작성되기 전에 Planner는 요청을 분석하고, 파일을 조회하거나 검색을 실행해 코드베이스를 조사하며, 단계별 실행 계획을 만듭니다. 기본적으로 이 단계에서는 사용자가 계획을 수동으로 검토하고 편집, 승인, 피드백을 제공할 수 있습니다. 대담하게 진행하고 싶다면 이 단계를 건너뛸 수도 있습니다.
- Programmer & Reviewer: 계획이 승인되면 Programmer가 샌드박스에서 각 단계를 실행합니다. 코드 작성, 테스트 실행, 웹에서 문서 검색 등이 포함됩니다. Programmer가 작업을 완료하면 Reviewer에게 넘기고, Reviewer는 생성된 코드의 품질, 정확성, 완성도를 분석합니다. 문제가 발견되면 피드백과 함께 작업을 Programmer에게 다시 보내 또 한 번 반복합니다. 이 실행-검토 루프는 코드가 완벽해질 때까지 계속됩니다.
Reviewer가 작업을 승인하면 Open SWE는 최종 결론을 생성하고, 풀 리퀘스트를 열며, 작업을 완료로 표시합니다.
사용 기술: LangGraph 및 LangGraph Platform
Open SWE는 LangGraph를 기반으로 구축되어 워크플로우의 각 단계를 더 세밀하게 제어할 수 있습니다. Open SWE는 네 개의 에이전트가 각각 고유한 상태와 입력/출력을 가지고 동작합니다. LangGraph를 사용함으로써 모든 에이전트 호출을 쉽게 오케스트레이션하고, 언제든지 상태를 관리하며, 에러 케이스도 처리할 수 있습니다. LangGraph 프레임워크 외에도 Open SWE는 LangGraph Platform(LGP)에 배포되어 있습니다. LGP는 장기 실행 에이전트에 특화되어 있으며(이 에이전트는 한 번에 한 시간 이상 실행될 수 있습니다), 내장된 영속성(휴먼 인 더 루프 기능 지원)과 오토스케일링(수백 개의 에이전트 실행 가능)을 제공합니다.
LangSmith로 정제
Open SWE는 복잡한 멀티 에이전트 시스템입니다. 이 시스템을 실제로 유용하게 만들기 위해 가장 큰 과제는 결과의 정확성을 확보하는 것이었습니다. 가장 큰 난관은 컨텍스트 엔지니어링이었습니다. 도구 사용법에 대한 올바른 지침이 있었는가? 올바른 컨텍스트를 가져오고 있는가? 지침을 변경하면 성능이 어떻게 달라지는가? 컨텍스트 엔지니어링을 먼저 디버깅하고, 이후 변경 사항을 평가하기 위해 우리는 LangSmith(최고의 AI 관측 및 평가 플랫폼)를 사용했습니다.
오픈소스 및 확장성
Open SWE는 기본적으로 강력한 도구로 설계되었지만, 커뮤니티의 기반으로서의 잠재력에 더 큰 기대를 가지고 있습니다. 전체 프로젝트는 오픈소스이며, LangGraph 기반으로 구축되어 확장할 수 있도록 설계되었습니다.
저장소를 포크해 프롬프트를 커스터마이즈하거나, 내부 API용 새 도구를 추가하거나, 팀의 요구에 맞게 에이전트의 핵심 로직을 수정할 수 있습니다. 개발자 문서에는 자체 버전 설정 및 배포를 위한 상세 가이드가 제공됩니다.
우리는 미래의 소프트웨어 개발이 인간과 에이전트의 협업이 될 것이라고 믿습니다. Open SWE는 그 미래를 오픈소스에서 실현하기 위한 우리의 첫 번째 큰 걸음입니다.