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임.