TL;DR
- SelfBench는 저장소의 병합된 풀 리퀘스트(PR)를 숨겨진 테스트가 있는 작업으로 바꿔 코딩 에이전트와 모델의 정확도 및 비용을 측정하는 비공개 벤치마크임.
- 공개 저장소는 모델·하네스·추론 설정별 작업당 정확도와 비용을 비교하는 실시간 리더보드를 제공하며, 두 지표 모두에서 더 나은 설정이 없는 파레토 프런티어를 표시함.
- 각 작업은 변경 전 커밋을 기반으로 PR 요청을 지시문으로 삼으며, 테스트가 원본 구현에서 통과하고 독립 검토를 통과해야 승인되는 네이티브 Harbor 작업임.
- 웹 앱에서 작업 생성·검토·승인, 모델 실행, 결과 비교와 공개를 진행하며, 모델과 샌드박스는 조직 자체 자격 증명을 사용함.
- 참조 배포는 GCP, Cloud Run, GKE Autopilot, Temporal, KEDA, Cloud SQL, GCS를 사용하며, 대안으로 Cloud Run 워커 풀도 제공함.
SelfBench
- 저장소에 적합한 모델을 찾기 위한 비공개 코딩 에이전트 벤치마크이며, 저장소 자체의 병합 PR로 작업을 구성함.
- 공개 벤치마크가 다른 사람의 코드에서 모델 성능을 측정하는 것과 달리, SelfBench는 해당 저장소의 병합 PR을 숨겨진 테스트가 있는 작업으로 바꾸고 에이전트와 모델을 실행해 정확도와 비용을 그래프로 표시함.
결과
- selfbench.dev에 공개된 각 오픈 소스 저장소에 실시간 리더보드가 제공됨.
- 모델, 하네스, 추론 설정을 작업당 정확도와 비용으로 순위화하고, 두 지표 모두에서 다른 설정에 뒤지지 않는 설정을 파레토 프런티어로 표시함.
- 리더보드 대상 저장소:
vercel/next.js,supabase/supabase,earendil-works/pi,getsentry/sentry,PostHog/posthog,pingdotgg/t3code,vercel/vercel및 전체 저장소 목록임.
작동 방식
- 병합된 각 PR에 대해 변경 직전 커밋에서 작업을 재구성하며, PR 자체의 요청을 지시문으로 사용함.
- 작성 에이전트가 숨겨진 테스트와 참조 솔루션을 작성함.
- 테스트는 솔루션이 없을 때 실패하고 원본 구현에서 통과해야 하며, 재실행에서도 다시 통과하고 독립 검토를 통과해야 작업이 승인됨.
- 승인된 작업은 모두 네이티브 Harbor 작업임.
SelfBench 사용
- 모든 과정은
app.selfbench.dev의 웹 앱에서 진행됨. - GitHub로 로그인하고 저장소를 연결함.
- Batch Generation에서 생성할 쉬움·중간·어려움 작업 수를 선택하거나, 데이터셋 페이지의 Add PRs를 사용해 선택한 각 PR에서 작업 하나씩 생성함. 배치 작업은 몇 시간이 걸릴 수 있으며 페이지를 닫은 뒤에도 계속 실행됨.
- Dataset에서 지시문, 환경, 숨겨진 테스트, 참조 패치, 파이프라인 산출물을 살펴보고 작업을 승인하거나 거부함.
- Run에서 모델, 하네스, 샌드박스를 선택해 승인된 작업을 실행함.
- Results에서 정확도와 비용을 비교하고 각 실행 기록의 대화 내용과 점수를 확인함.
- Releases에서 공개 저장소의 결과를 selfbench.dev에 공개함.
- Credentials에 설정한 조직 자체 키로 모델과 샌드박스를 실행함. 공개 결과는 Public Results API로 읽고, API 키를 사용해 워크스페이스를 자동화할 수 있음.
자체 호스팅
- SelfBench의 참조 배포는 GCP에서 실행됨. Cloud Run이 API를 제공하고, GKE Autopilot이 Temporal 워크플로 워커와 KEDA로 확장되는 Harbor 작업을 실행하며, Cloud SQL과 GCS를 사용함. Cloud Run 워커 풀도 대안으로 이용 가능함.
- GCP 프로젝트, 결제, Terraform 상태 버킷, GitHub Actions Workload Identity Federation을 준비함.
- Terraform 입력값을 설정하고 각 런타임 비밀 값을 별도의 Secret Manager 비밀로 저장함.
- Terraform으로 환경을 적용하거나, 보호된 GitHub dev 및 prod 환경을 설정해 Actions를 통해 배포함.
- 도메인을 프로비저닝된 로드 밸런서에 연결하고 앱 URL에 맞춰 GitHub OAuth를 설정함.
- 사전 요구 사항, 정확한 Terraform 명령, 런타임 구성, GitHub Actions 설정, GKE 워커 설정은 자체 호스팅 및 인프라 가이드에서 확인 가능함.
개발
- Bun 1.3.14 이상과 Compose를 지원하는 Docker가 필요함.
- 의존성을 고정된 잠금 파일 기준으로 설치하고 검증 작업을 실행함.
- 저장소 체크아웃에서 전체 스택을 실행하면 API 앱, 워커, Temporal, Postgres, 로컬 Docker 샌드박스가 함께 구동됨.
.env.example을.env로 복사한 뒤 GitHub OAuth 앱, 세션 비밀 값, 자격 증명 키, 관리형 키를 설정함.- 샌드박스 프로필로 Docker Compose를 빌드·실행하고 API 포트를 확인함.
- Compose는 체크아웃 디렉터리 이름을 프로젝트명으로 사용하고 호스트 포트를 임시 할당하므로 여러 워크트리를 나란히 실행할 수 있음.
- 실행 전에
SELFBENCH_PUBLIC_URL을 브라우저가 여는 터널 또는 리버스 프록시의 출처로 설정하고, OAuth 앱에<origin>/auth/github/callback을 등록함. - 프런트엔드 개발에는
bun run dev:site를 사용하며, API와 Vite가 핫 리로드로 실행됨. 비밀 값은.env.site에 설정하며 자세한 내용은scripts/dev-site.ts에서 확인 가능함.
문서
- Mintlify 문서: 가이드, 공개 결과 API, 워크스페이스 API이며
cd docs && npm ci && npm run dev로 실행함. - 작동 방식: 파이프라인과 작업의 유효성 기준임.
- Public Results API 및 Workspace API임.
- 인프라임.
라이선스
- MIT 라이선스이며 저작권 표기는 © 2026 Mupt AI임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요