벤치마크 · agentic

Multi-SWE-bench

0 결과 0 모델

Multi-SWE-bench는 AI 코딩 에이전트가 Python뿐 아니라 여러 저장소와 여러 프로그래밍 언어에 걸친 실제 GitHub 이슈를 해결할 수 있는지를 측정합니다. 핵심 지표는 해결률(resolution rate), 즉 수정으로 숨겨진 테스트 스위트를 통과시키는 작업 인스턴스의 비율입니다.

자세히 보기
예시
대표적인 작업: Java, Go, Rust, TypeScript, JavaScript, C, C++ 같은 언어로 작성된 오픈소스 프로젝트의 실제 버그 리포트나 기능 요청과, 수정 이전 커밋으로 체크아웃된 저장소가 주어지면, 에이전트는 설명된 문제를 해결하는 코드 패치를 생성해야 합니다.
채점 방식
각 인스턴스는 실행을 통해 통과/실패로 채점됩니다. 에이전트의 패치를 저장소에 적용하고 프로젝트 테스트를 실행합니다. 지정된 FAIL_TO_PASS 테스트가 이제 통과하고 모든 PASS_TO_PASS 테스트가 여전히 통과할 때에만 해당 인스턴스는 해결된 것으로 간주됩니다. 보고되는 점수는 해결률(해결된 인스턴스 ÷ 전체)이며, 보통 pass@1 기준이고 언어별 및 전문가가 라벨링한 난이도(easy/medium/hard)별로 분해할 수 있습니다.
검증 방식
수용은 언어 툴체인과 의존성을 정확히 재현하는 인스턴스별 Docker 이미지 안에서 전적으로 실행 기반으로 이루어집니다. 생성된 패치는 충돌 없이 적용되어야 하며, 이후 fail-to-pass 및 pass-to-pass 테스트가 실행됩니다. LLM 판정도, 개발자의 골드 패치와의 텍스트 비교도 없습니다.
왜 중요한가
SWE-bench는 영향력이 컸지만 Python 전용인 반면, 실제 소프트웨어 엔지니어링은 여러 언어에 걸쳐 있습니다. Multi-SWE-bench는 코딩 에이전트가 진짜 이슈에서 언어를 넘나들며 일반화하는지를 전문가 난이도 라벨과 함께 검증하여, 실용적 소프트웨어 엔지니어링 능력에 대해 더 어렵고 현실적이며 덜 포화된 신호를 제공합니다.
예제 풀이
문제
Multi-SWE-bench 형식의 예시 인스턴스 — 언어: Go, 작은 제네릭 컬렉션 라이브러리. problem_statement: 「빈 스택에 대한 Stack.Pop()이 nil 오류와 함께 제로 값을 반환하여 호출자의 버그를 조용히 숨긴다. 대신 센티널 ErrEmpty를 반환해야 한다.」 버그가 있는 베이스 커밋의 저장소와 실패하는 테스트가 주어집니다. FAIL_TO_PASS: TestPopEmptyReturnsError. PASS_TO_PASS: TestPushThenPop, TestLen. 실패하는 테스트를 통과시키되 통과하는 테스트를 깨뜨리지 않는 패치를 제출하세요.
해답
--- a/stack.go
+++ b/stack.go
@@ func (s *Stack[T]) Pop() (T, error) {
+	if len(s.items) == 0 {
+		var zero T
+		return zero, ErrEmpty
+	}
 	n := len(s.items)
 	v := s.items[n-1]
 	s.items = s.items[:n-1]
 	return v, nil
 }
풀이
이 수정은 Pop에 빈 상태 검사를 추가하여 TestPopEmptyReturnsError가 기대하는 대로 센티널 ErrEmpty(타입의 제로 값과 함께)를 반환하는 한편, 일반적인 pop 경로는 그대로 두어 TestPushThenPop과 TestLen이 계속 통과하도록 합니다. 채점은 순수하게 실행 기반입니다. 하니스가 인스턴스의 Docker 이미지에서 패치를 적용하고, FAIL_TO_PASS 테스트가 통과로 바뀌며 어떤 PASS_TO_PASS 테스트도 퇴행하지 않을 때에만 인스턴스를 해결된 것으로 표시합니다.

이 벤치마크에 대해 아직 검증된 점수가 없습니다.