
Open SWE 소개: 오픈 소스 비동기 코딩 에이전트
요약
Open SWE는 클라우드 기반의 비동기적이고 자율적인 오픈 소스 코딩 에이전트입니다. 사용자의 GitHub 저장소와 직접 연결되어 코드 조사, 계획 수립, 코드 작성, 테스트 및 풀 리퀘스트 생성까지 엔지니어처럼 수행합니다.
핵심 포인트
- 클라우드에서 비동기적으로 실행되는 장시간 실행형 에이전트 구조를 지향합니다.
- GitHub 이슈나 커스텀 UI를 통해 작업을 위임할 수 있는 깊은 통합을 제공합니다.
- 단순한 프롬프트를 넘어 에이전트의 전반적인 워크플로우와 UX(사용자 경험)에 집중합니다.
- Anthropic API 키만 있으면 몇 분 안에 호스팅 버전을 바로 사용할 수 있습니다.
소프트웨어 엔지니어링(Software Engineering) 분야에서의 AI 활용은 지난 2년 동안 진화해 왔습니다. 처음에는 자동 완성(Autocomplete)으로 시작하여, IDE 내의 코파일럿(Copilot)으로 발전했으며, 최근 몇 달 사이에는 클라우드에서 비동기(Asynchronously)로 실행되는 장시간 실행형의 보다 엔드 투 엔드(End-to-end)인 에이전트로 진화했습니다.
우리는 미래의 모든 에이전트가 이와 유사한 형태, 즉 장시간 실행되고, 비동기적이며, 더 자율적인(Autonomous) 모습이 될 것이라고 믿습니다. 구체적으로, 에이전트들은 다음과 같은 특성을 가질 것이라고 생각합니다:
- 클라우드에서 비동기적으로 실행됨
- 사용자의 툴링(Tooling)과 직접 통합됨
- 더 긴 시간 지평(Time horizons)에 걸쳐 작업을 적절히 계획할 수 있도록 환경에 대한 충분한 컨텍스트(Context)를 보유함
- 작업을 완료하기 전에 자신의 작업물을 검토하고(Review) (발생한 문제를 수정함)
지난 몇 달 동안 소프트웨어 엔지니어링이 이러한 비전이 현실이 될 첫 번째 분야라는 점이 분명해졌습니다. 하지만 이러한 특성을 담아낸 오픈 소스(Open Source) 프로젝트는 없었습니다.
그래서 우리는 최초의 오픈 소스, 비동기, 클라우드 호스팅 코딩 에이전트인 Open SWE를 구축했습니다. Open SWE는 사용자의 GitHub 저장소에 직접 연결되어, GitHub 이슈(Issues)나 우리의 **커스텀 UI(Custom UI)**로부터 작업을 위임할 수 있게 해줍니다. Open SWE는 팀의 또 다른 엔지니어처럼 작동합니다. 코드베이스(Codebase)를 조사하고, 상세한 실행 계획을 수립하며, 코드를 작성하고, 테스트를 실행하며, 오류가 있는지 자신의 작업물을 검토한 뒤, 완료되면 풀 리퀘스트(Pull Request)를 생성합니다.
우리는 LangGraph와 같은 프로젝트와 Open SWE 저장소 자체의 개발을 가속화하기 위해 내부적으로 이를 사용해 왔으며, Open SWE는 이미 해당 저장소의 주요 기여자(Contributor)입니다.
오늘, 우리는 이를 커뮤니티와 공유하게 되어 기쁩니다.
사용 방법
몇 분 안에 Open SWE의 호스팅 버전을 시작할 수 있습니다. 필요한 것은 Anthropic API 키뿐입니다.
- swe.langchain.com을 방문하세요.
- GitHub 계정을 연결하고 Open SWE가 액세스하기를 원하는 저장소를 선택하세요.
- 설정에서 Anthropic API 키를 제공하세요.
- 새로운 작업을 시작하고 진행 과정을 지켜보세요!
시작할 곳을 찾고 있다면, **문서의 예시 페이지(Examples page)**를 확인해 보세요.
왜 Open SWE인가?
수많은 오픈 소스 코딩 프로젝트들이 존재합니다. 그런데 왜 새로운 프로젝트를 만들었을까요? 우리는 단순히 사용되는 프롬프트 (Prompts)나 도구 (Tools) 이외의 측면들에 주의와 초점을 맞추고 싶었습니다. 구체적으로, 이러한 에이전트 (Agents)들을 우리가 신뢰할 수 있는 방식으로 상호작용할 수 있는 단계까지 끌어올리기 위해 필요한 전반적인 흐름 (Flow)과 사용자 경험 (UX)을 더 강조하고 싶었습니다.
우리는 UI/UX가 에이전트 구축에서 종종 미개척 분야로 남아 있는 영역 중 하나라고 생각합니다. 애플리케이션의 전반적인 상호작용 패턴 (Interaction pattern)은 해당 애플리케이션이 얼마나 사용될지를 크게 결정할 수 있습니다. 비동기 에이전트 (Asynchronous agents)라는 개념이 매우 새로운 아이디어인 만큼, 여기서 탐구할 수 있는 흥미로운 패턴이 아주 많다고 생각합니다. 두 가지 주요 핵심은 **더 많은 제어권 (More control)**과 **깊은 통합 (Deep integration)**입니다.
제어권 (Control): Open SWE는 코딩 에이전트가 실행되는 동안 더 많은 제어권을 부여하는 두 가지 주요 기능을 제공합니다. 작업을 검토하고 싶을 때 에이전트를 중단시키거나, 재시작 없이 에이전트가 다시 올바른 방향으로 나아가도록 유도할 수 있습니다.
인간 참여형 (Human in the loop): Open SWE가 계획 (Plan)을 생성할 때, 실행을 중단하고 사용자에게 해당 계획을 수락, 편집, 삭제하거나 변경을 요청할 수 있는 기회를 제공합니다. 무언가 놓쳤나요? 단순히 계속 파헤쳐 보라고 말하면, 에이전트는 사용자의 작업을 위해 계획 프로세스를 다시 시작할 것입니다.
이중 메시지 (Double texting): 대부분의 코딩 에이전트는 실행 중인 상태에서 새로운 요청이나 피드백을 수락하는 기능을 지원하지 않습니다. Open SWE는 그러한 제약 사항을 겪지 않습니다. 제품 사양 (Product spec)에 대해 마음이 바뀌었거나, 새로운 기능을 추가하고 싶거나, 에이전트가 경로를 벗어나는 것을 발견했다면, 단순히 메시지를 보내세요. 그러면 에이전트는 이를 활성 세션 (Active session)에 매끄럽게 통합할 것입니다.
깊은 통합 (Deeply integrated): Open SWE는 사용자의 GitHub 계정 및 리포지토리(Repositories)와 직접 통합되므로, 다른 개발자에게 업무를 할당하듯이 작업을 할당하고 코드에 대한 컨텍스트(Context)를 제공할 수 있습니다. 개발자들은 이미 GitHub 환경에서 활동하고 있는데, 왜 새로운 제품을 배우게 만들어야 할까요? Open SWE를 사용하면 모든 새로운 작업에는 추적용 이슈(Tracking issue)가 부여됩니다. 이 이슈는 세션 동안 상태 업데이트, 실행 계획(Execution plans) 등을 통해 지속적으로 업데이트됩니다. 작업을 완료하면 풀 리퀘스트(Pull request)가 자동으로 생성되며, 추적용 이슈와 다시 연결됩니다.
또한 GitHub에서 직접 실행을 트리거할 수도 있습니다:
- GitHub 이슈에 라벨(예:
open-swe-auto)을 추가하기만 하면 Open SWE가 작업을 시작합니다. 작업이 완료되면 검토(Review)를 위한 풀 리퀘스트를 생성합니다. 이는 마치 인간 팀원처럼 기존 프로세스에 자연스럽게 녹아듭니다.
이 두 가지 핵심 축 외에도 우리가 집중한 두 가지 구성 요소가 더 있습니다. 이들은 인간과 Open SWE 사이의 상호작용 패턴보다는, Open SWE가 어떻게 실행되고 작동하는지에 초점을 맞춥니다.
격리된 샌드박스(Sandbox)에서 실행: 모든 작업은 안전하고 격리된 Daytona 샌드박스에서 실행됩니다. 각 Open SWE 세션에 고유한 샌드박스가 부여되므로, 악성 명령어를 걱정할 필요가 없으며 Open SWE가 원하는 어떤 셸 명령어(Shell command)든 실행하도록 둘 수 있습니다. 이는 Open SWE가 실행하고자 하는 모든 명령어에 대해 인간의 승인을 요구하지 않고도 더 빠르게 움직일 수 있음을 의미합니다.
클라우드에서 비동기적으로 실행: 클라우드 네이티브(Cloud-native) 아키텍처 덕분에 Open SWE는 사용자의 로컬 리소스를 소모하지 않고 여러 작업을 병렬로 처리할 수 있습니다. 아침에 작업 목록을 할당해 두면, 오후에 생성된 일련의 PR(Pull requests)들을 확인할 수 있습니다.
커밋 전 계획 및 검토: 많은 에이전트들이 곧바로 코드로 뛰어들며, 이는 종종 CI 파이프라인을 깨뜨리는 실수로 이어집니다. Open SWE는 전용 Planner(계획가) 및 Reviewer(검토자) 구성 요소를 갖춘 멀티 에이전트 아키텍처(Multi-agent architecture)를 사용합니다. Planner는 먼저 코드베이스를 조사하여 견고한 전략을 수립합니다.
코드가 작성된 후에는 Reviewer (검토자)가 일반적인 오류를 확인하고, 테스트 및 포매터 (formatters)를 실행하며, PR (Pull Request)을 생성하기 전에 변경 사항을 검토(reflect)합니다. 우리는 이 방식이 더 적은 리뷰 사이클로 실행 가능한 코드를 작성하는 데 더 효과적이라는 것을 발견했습니다.
고려 사항: Open SWE는 복잡하고 실행 시간이 긴 작업에 매우 적합합니다. 하지만 한 줄짜리 작은 버그 수정이나 단순한 스타일 업데이트의 경우, 이 아키텍처 (architecture)는 최적화되어 있지 않습니다. 이러한 작업의 경우, 에이전트 (agent)가 계획 및 검토 단계를 건너뛰고 즉시 실행으로 넘어갈 수 있어야 합니다. 현재 우리는 바로 이러한 기능을 수행하는 버전의 Open SWE를 구현하기 위해 노력하고 있습니다. 이 버전은 CLI를 통해 로컬에서 실행되며, 더욱 에이전트 중심적 (agentic)이어서 코드를 계획하거나 검토할 필요가 있는지 여부를 스스로 선택할 수 있습니다. 이것이 완료되면 Open SWE는 단순한 한 줄 스타일 수정부터 처음부터 시작하는 완전한 제품 구현에 이르기까지, 모든 엔지니어링 작업을 위한 진정한 원스톱 숍 (one-stop-shop)이 될 것입니다.
작동 방식: 에이전트 아키텍처 (Agent Architecture)
Open SWE는 순차적으로 작동하는 세 가지 특화된 LangGraph 에이전트 (agents)를 사용하여 운영됩니다: Manager (관리자), Planner (계획가), 그리고 Programmer (프로그래머, 내부에 하위 에이전트인 Reviewer를 포함함)입니다.
Manager (관리자): 이 그래프는 진입점 (entry point) 역할을 합니다. 사용자 상호작용을 처리하고 작업을 라우팅 (routing)합니다. 사용자가 작업을 생성하면, 상태 (state)를 초기화하고 제어권을 Planner (계획가)에게 전달합니다.
Planner (계획가): 단 한 줄의 코드도 작성되기 전에, Planner는 요청을 분석하고, 파일을 열람하거나 검색을 실행하여 코드베이스 (codebase)를 조사하며, 상세한 단계별 실행 계획을 수립합니다. 기본적으로 이 과정에는 사용자가 제안된 계획을 수정, 승인 또는 피드백을 제공할 수 있는 수동 검토 (manual review) 단계가 포함됩니다. 하지만 원한다면 이 단계를 건너뛸 수도 있습니다.
Programmer & Reviewer (프로그래머 및 리뷰어): 계획이 승인되면, Programmer는 샌드박스 (sandbox) 내에서 각 단계를 실행합니다. 여기에는 코드 작성, 테스트 실행, 그리고 문서 검색을 위한 웹 검색이 포함됩니다. Programmer가 작업을 완료하면 Reviewer에게 업무를 인계하며, Reviewer는 생성된 코드의 품질, 정확성 및 완결성을 분석합니다. 만약 문제가 발견되면, Reviewer는 피드백과 함께 작업을 다시 Programmer에게 보내 재반복 (iteration)을 수행하게 합니다. 이 실행-검토 루프 (action-review loop)는 코드가 완벽해질 때까지 계속됩니다.
Reviewer가 작업을 승인하면, Open SWE는 최종 결론을 생성하고, 풀 리퀘스트 (pull request)를 생성하며, 작업을 완료 상태로 표시합니다.
사용된 기술: LangGraph 및 LangGraph Platform
Open SWE는 워크플로 (workflow)의 각 단계에 대해 더 많은 제어권을 가질 수 있게 해주는 LangGraph를 기반으로 구축되었습니다. Open SWE는 각각 고유한 상태 (state)와 입출력 (inputs/outputs)을 가진 네 개의 에이전트 (agents)를 통해 작동합니다. LangGraph를 사용함으로써 우리는 모든 에이전트의 호출을 쉽게 오케스트레이션 (orchestrate)하고, 어느 시점에서든 그들의 상태를 관리하며, 예외적인 에러 케이스 (edge error cases)를 처리할 수 있습니다. LangGraph 프레임워크 외에도, Open SWE는 LangGraph Platform (LGP)에 배포됩니다. LGP는 장시간 실행되는 에이전트 (이러한 에이전트들은 때때로 한 번에 한 시간 동안 실행될 수 있습니다)를 위해 특수 제작되었으며, 내장된 지속성 (persistence, 우리의 Human-in-the-loop 기능을 지원함)과 오토스케일링 (autoscales, 필요한 경우 수백 개의 에이전트 실행을 시작할 수 있도록 함) 기능을 갖추고 있습니다.
LangSmith를 통한 개선
Open SWE는 복잡한 멀티 에이전트 시스템 (multi-agent system)입니다. 이 시스템을 유용하게 만드는 데 있어 가장 큰 과제는 생성된 결과물이 충분히 정확하도록 보장하는 것이었습니다. 이 과정에서 가장 큰 어려움은 컨텍스트 엔지니어링 (context engineering)이었습니다. 도구를 사용하는 방법에 대해 올바른 지침 (instructions)을 가지고 있었는가? 올바른 컨텍스트 (context)를 가져오고 있는가? 만약 그 지침들을 변경한다면 성능이 어떻게 변할 것인가? 컨텍스트 엔지니어링을 먼저 디버깅하고, 이후 컨텍스트 엔지니어링의 변경 사항을 평가하기 위해 우리는 선도적인 AI 관측성 (observability) 및 평가 플랫폼인 LangSmith를 사용했습니다.
오픈 소스 및 확장성
우리는 Open SWE가 즉시 사용할 수 있는 강력한 도구가 되도록 구축했지만, 커뮤니티를 위한 기반으로서의 잠재력에 가장 큰 기대를 걸고 있습니다. 프로젝트 전체는 오픈 소스이며, LangGraph를 기반으로 구축되었고, 확장 가능하도록 설계되었습니다.
저장소 (repository)를 포크 (fork)하여 프롬프트 (prompts)를 커스텀하거나, 내부 API를 위한 새로운 도구를 추가하거나, 팀의 특정 요구 사항에 맞게 에이전트의 핵심 로직 (core logic)을 수정할 수 있습니다. 우리의 **개발자 문서 (developer documentation)**는 자체 버전을 설정하고 배포하기 위한 상세한 가이드를 제공합니다.
우리는 소프트웨어 개발의 미래가 인간과 에이전트 간의 협업이 될 것이라고 믿습니다. Open SWE는 오픈 소스 환경에서 그러한 미래를 구축하기 위한 우리의 첫 번째 큰 발걸음입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 LangChain Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기