mini SWE-Agent: 100줄로 구현한 GitHub 이슈 해결을 위한 AI 코딩 에이전트 (feat. SWE-Agent)

mini SWE-Agent 소개

AI 기반 개발 도우미, 즉 ‘코딩 에이전트’는 2024년 이후 소프트웨어 개발 자동화의 중심 화두로 떠올랐습니다. 특히 Princeton과 Stanford 연구진이 개발한 SWE-agent는 GitHub 이슈 해결과 같은 실질적인 작업에서 뛰어난 성능을 보이며 많은 관심을 끌었습니다. 그러나 기존 SWE-agent는 다소 무겁고 복잡하다는 비판도 함께 받았습니다. 이런 배경에서 등장한 것이 바로 ‘mini-swe-agent’ 프로젝트입니다.

mini SWE-Agent는 기존 SWE-Agent의 간결한 버전으로, 단 100줄의 Python 코드만으로 간결하게 다시 구현한 경량 에이전트입니다. (+ 설정, 모델, 스크립트 등에 100여줄 추가) 이 프로젝트는 복잡한 설정이나 도구 없이도 GitHub 이슈를 자동으로 분석하고 해결하는 능력을 갖추고 있습니다. 또한, Bash만 사용해 어디서나 쉽게 실행할 수 있어 복잡한 도구 없이도 높은 성능을 유지하면서 연구자와 개발자가 손쉽게 실험하거나 일상적인 개발 업무에 활용할 수 있도록 설계되었습니다.

AI 에이전트 개발의 핵심은 LLM(Large Language Model)과 상호작용하는 구조입니다. 기존 에이전트들은 다양한 도구들과 세션 상태를 유지하며 복잡하게 구현되었지만, mini SWE-Agent는 subprocess를 통해 독립적인 액션을 실행하고, 각 단계의 히스토리를 직렬화된 메시지로 단순하게 전달함으로써 투명하고 디버깅하기 쉬운 구조를 갖추고 있습니다. 이러한 단순성과 범용성은 샌드박스 환경에서의 활용은 물론, 컨테이너 기반 배포에도 최적화된 솔루션을 제공합니다.

기존의 SWE-Agent와의 비교

mini SWE-Agent와 기존의 SWE-agent는 모두 SWE-bench 벤치마크에서 우수한 성능을 보이지만, 설계 철학과 사용 목적에서 차이가 큽니다.

SWE-agent는 다양한 도구와 커스텀 툴 체인을 구성할 수 있는 YAML 기반 설정, 복잡한 히스토리 처리 기능을 포함하고 있어 복잡한 에이전트 환경 실험에 적합합니다. 반면 mini-swe-agent는 최대한 단순하고 독립적인 구성으로, 빠르게 로컬에서 실험하거나 RL, fine-tuning용 에이전트 실험을 진행하려는 경우에 적합합니다.

mini SWE-Agent의 주요 특징

간결한 구조

mini-swe-agent 프로젝트 는 다음 세 가지 주요 구성 요소로 나뉩니다:

  • default.py: 핵심 에이전트 로직 (100줄 내외)
  • local.py: 로컬 실행 환경 (Bash 기반)
  • litellm_model.py: 모델 연결용 인터페이스 (예: Claude Sonnet 4)

전체 코드가 약 300줄 내외로, 코드를 한눈에 이해하고 직접 수정하기에도 용이합니다.

Bash 기반 실행

mini-swe-agent 는 LLM이 Bash 명령어를 활용해 실제 작업을 수행하도록 설계되어 있습니다. 특히, 추가적인 도구 인터페이스가 없어도, LLM이 Shell을 통해 직접 파일 생성, 수정, 테스트 실행 등의 작업을 수행할 수 있습니다.

독립적인 실행 방식

모든 작업은 subprocess.run 을 통해 실행되며, 세션 상태를 유지하지 않습니다. 이는 작업 간 충돌이나 에러를 최소화하고, Docker나 Singularity 등의 컨테이너 환경으로 쉽게 포팅할 수 있도록 도와줍니다.

디버깅과 실험 최적화

에이전트의 각 단계는 직렬화된 메시지 형식으로 LLM에게 전달되며, 히스토리 관리가 간단해 디버깅이나 fine-tuning에도 매우 용이합니다. 또한 RL(강화학습) 환경에서의 실험 시에도 환경 의존성이 낮고, 실행 흐름이 단순해 오버피팅 가능성이 적습니다.

지원 UI 및 기능

  • Simple UI(mini): REPL 스타일의 커맨드라인 기반의 간단한 UI (더 읽어보기)
    mini SWE-Agent UI: mini

  • Visual UI(mini -v): Textual 기반의 시각적 인터페이스 제공 (더 읽어보기)
    mini SWE-Agent UI: mini-v

  • Batch Inference: 여러 이슈를 일괄 처리 (더 읽어보기)
    mini SWE-Agent UI: batch inference

  • Trajectory Browser: 에이전트 히스토리 시각화 도구 (더 읽어보기)
    mini SWE-Agent UI: trajectory browser

  • Python Bindings: 에이전트를 파이썬 코드로 직접 제어 가능 (더 읽어보기)

    agent = DefaultAgent(
        LitellmModel(model_name=...),
        LocalEnvironment(),
    )
    agent.run("Write a sudoku game")
    

라이선스

mini SWE-Agent 프로젝트는 MIT 라이선스로 공개 및 배포되고 있습니다. 상업적 사용이나 수정에도 제한이 없습니다.

:github: mini SWE-Agent 프로젝트 GitHub 저장소

:books: mini SWE-Agent 프로젝트 공식 문서

:github: SWE-Agent 프로젝트 GitHub 저장소

:bar_chart: SWE-Bench 벤치마크 리더보드

:github: SWE-Bench 벤치마크 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: