# SWE-agent, GitHub 이슈 해결률 12%의 자동 개발 에이전트

> Clean Markdown view of GeekNews topic #14142. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=14142](https://news.hada.io/topic?id=14142)
- GeekNews Markdown: [https://news.hada.io/topic/14142.md](https://news.hada.io/topic/14142.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-04-04T09:57:13+09:00
- Updated: 2024-04-04T09:57:13+09:00
- Original source: [github.com/princeton-nlp](https://github.com/princeton-nlp/SWE-agent)
- Points: 10
- Comments: 3

## Topic Body

- SWE-agent는 GPT-4와 같은 언어 모델(LMs)을 소프트웨어 엔지니어링 에이전트로 변환하여 실제 GitHub 저장소의 버그와 이슈를 수정  
- SWE-bench 테스트 세트 전체에서 12.29%의 이슈를 해결하여 전체 테스트 세트에서 최고의 성능을 달성  
  
### 에이전트-컴퓨터 인터페이스 (ACI)  
- 에이전트가 저장소를 탐색하고 코드 파일을 보고, 편집하고, 실행하기 쉽도록 LM 중심의 명령과 피드백 형식을 설계함으로써 이러한 결과를 달성함.  
- 이를 에이전트-컴퓨터 인터페이스(ACI)라고 부르며, 저장소 수준의 코딩 에이전트를 위한 ACI 디자인을 쉽게 반복할 수 있도록 SWE-agent 저장소를 구축함.  
- 좋은 ACI 디자인은 에이전트 사용 시 훨씬 나은 결과를 가져옴을 보여줌.  
  
### 설정  
- Docker를 설치하고 로컬에서 Docker를 시작함.  
- Miniconda를 설치하고 `conda env create -f environment.yml`을 사용하여 `swe-agent` 환경을 생성함.  
- `conda activate swe-agent`를 사용하여 활성화함.  
- `./setup.sh`를 실행하여 `swe-agent` 도커 이미지를 생성함.  
- 이 저장소의 루트에 `keys.cfg` 파일을 생성하고 필요한 API 키와 GitHub 토큰을 입력함.  
  
### 사용법  
- SWE-agent 파이프라인에는 두 단계가 있음. 첫 번째는 GitHub 이슈를 입력받아 이를 해결하려는 풀 리퀘스트를 반환하는 추론 단계임.  
- 두 번째 단계는 SWE-bench 벤치마크에 있는 이슈에 대해서만 가능하며, 생성된 풀 리퀘스트가 실제로 이슈를 해결했는지 확인하는 평가 단계임.  
  
### 평가  
- 이 단계는 SWE-bench 세트의 이슈에 대해서만 가능함.  
- 생성된 풀 리퀘스트를 평가하기 위해 `evaluation/` 디렉토리로 이동하고 `./run_eval.sh `를 실행함.  
  
### GN⁺의 의견  
- SWE-agent는 실제 GitHub 이슈를 해결하는 데 언어 모델을 활용하는 혁신적인 접근 방식을 제시함으로써 소프트웨어 개발 과정에서의 자동화 가능성을 확장함.  
- 이 기술은 개발자들이 반복적인 버그 수정 작업에서 벗어나 더 창의적이고 복잡한 문제 해결에 집중할 수 있게 하는 잠재력을 가짐.  
- ACI 디자인의 중요성을 강조함으로써, 기계와 인간 간의 상호작용을 최적화하는 인터페이스 설계의 중요성을 부각시킴.

## Comments



### Comment 24221

- Author: botplaysdice
- Created: 2024-04-05T00:54:39+09:00
- Points: 1

저런 agent 개발자한테 이렇게 질문까지 하면서 일하면 정말 괜찮을것 같네요.  
  
"버그리포트에서 기술하는 재현 방법을 문제점을 재현하는 테스트 코드로 만들어봤어. 내가 이해한게 맞는건지 이 코드좀 볼래?"  
  
"이 디자인보다는 이렇게 이렇게 리팩토링하면 전체에서 프로젝트에서 20312 코드라인을 줄일 수 있을것 같은데, do you approve?"

### Comment 24214

- Author: fastkoder
- Created: 2024-04-04T14:20:17+09:00
- Points: 1

매력적인 오픈소스이네요

### Comment 24204

- Author: neo
- Created: 2024-04-04T09:57:13+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=39907468) 
- 버그 리포트에 대한 댓글:
  - 데모는 행렬 연산에 대한 명확한 버그 리포트를 보여줌.
  - 실제 버그 리포트는 대부분 "X를 클릭했는데 Y가 발생했다"는 식으로 모호함.
  - 버그를 해결하는 어려움은 원인을 파악하는 것에 있음.
  - LLMs가 간단한 결함을 수정할 수 있다는 것을 알지만, 이것이 무엇을 증명하는가에 대한 의문 제기.
  - 논문을 자세히 살펴본 사람이 있는지, 문제들과 차이점이 어떤지 궁금함.

- 프로젝트에 대한 댓글:
  - 매우 멋진 프로젝트라고 평가.
  - 이전에 비슷한 실험을 해봤지만, 종종 혼돈스럽고 비용이 많이 드는 실패로 이어짐.
  - swe-bench에서 12%의 성공률을 보였지만, 나머지 88%는 어떤가에 대한 질문.
  - swe-bench가 해당 그룹에서 만든 것인지, "숙련된 인간 상한선" 점수를 측정해본 적이 있는지 궁금함.
  - 임의로 선택한 swe-bench 작업들이 숙련된 인간에게도 "해결"하기 어려웠다는 경험 공유.

- 사용된 방법론에 대한 댓글:
  - langchain 방법론을 사용한 것으로 보임.
  - 몇 가지 프롬프트를 예로 들며 GitHub 링크 제공.

- AI와 버그 트래커에 대한 댓글:
  - AI가 생성한 풀 리퀘스트가 인기를 얻으면 공개 버그 트래커의 종말을 예상.
  - 버그가 사라지는 것이 아니라, 풀 리퀘스트 검토 비용 대비 프로젝트 이득이 큰 손실이 될 것이라는 의견.

- SWEbench 벤치마크에 대한 댓글:
  - SWEbench 벤치마크가 오직 파이썬 코드 프로젝트만 포함하고 있어 모든 프로그래밍 언어와 프레임워크를 대표하지 않음.
  - 더 일반적인 SWE 작업 평가 프레임워크를 JS, SQL, 파이썬 등을 위해 개발 중이라고 소개.

- 데모 비교에 대한 댓글:
  - 데모가 Devin 프로젝트와 매우 유사하여 확인해봤다는 의견.
  - 데모에 대한 신뢰성에 의문을 제기하며, 제3자의 평가를 듣고 싶어함.

- 리뷰 작업에 대한 댓글:
  - AI가 제안한 수정 사항을 검토하는 데 실제 사람들에게 얼마나 많은 추가 작업이 발생했는지에 대한 질문.

- 유사 프로젝트에 대한 댓글:
  - 비슷한 프로젝트를 진행 중이라고 소개하며 GitHub 링크 제공.
  - 모델이 잘못된 방향으로 가는 것을 다루는 방법에 중점을 둠.
  - 개발자-AI 피드백 루프를 완성하는 것이 진정한 생산성 향상의 열쇠라고 강조.

- 저자들에게 제안하는 댓글:
  - 성공률이 연구자들에게만 의미가 있다고 지적하며, SWE-agent가 통과한 테스트와 통과하지 못한 테스트의 예를 README에 추가할 것을 제안.

- 오픈 소스 프로젝트 기여에 대한 댓글:
  - 초보 개발자로서 오픈 소스 프로젝트에 기여할 방법을 찾는 데 도움이 되는 도구를 원함.
  - 파이썬 패키징 문서가 난해함에도 불구하고, 이를 극복하고 쉽게 할 수 있게 되었다는 경험 공유.
  - 현대화되지 않은 프로젝트를 찾아 개선을 제안하고 구현할 계획을 밝힘.
  - 비슷한 아이디어나 영감을 가진 사람들과 아이디어를 나누고 싶어함.
