AI 에이전트가 인간 메인테이너를 추월했다 — Bun × Claude Code 라이브 코딩 세션 해부
개요
| 항목 | 내용 |
|---|---|
| 주제 | JavaScript 런타임 Bun 리포지토리에 실제 적용된 AI 에이전트 자동화 개발 파이프라인 |
| 발표자 | Boris Cherny(Anthropic, Head of Claude Code) · Jarred Sumner(Bun Creator) |
| 형식 | 개발자 컨퍼런스 라이브 코딩 세션 (약 32분, Claude 채널) |
| 핵심 관점 | "AI가 코드를 잘 쓰는가"가 아니라 "AI가 쓴 코드를 누가, 무엇을 근거로 병합하는가" |
| 핵심 키워드 | Robo Bun · 적대적 코드 리뷰(Adversarial Code Review) · 복합 공학(Compound Engineering) · CLAUDE.md · Auto Mode · Hill Climbing |
한 문장 요약: 이 글을 읽으면 오픈소스 프로젝트에서 AI 에이전트 100개를 밤새 돌리는 팀이 실제로 어떤 구조를 만들어냈고, 그 구조의 병목이 어디로 이동했는지를 이해할 수 있습니다.
핵심 메시지 3가지
① 봇이 메인테이너보다 많이 커밋하는 시대가 왔다
Bun 리포지토리의 main 브랜치 기여자 통계에서 자동화 봇 robobun이 창시자 본인 Jarred Sumner의 커밋 수를 추월했습니다. 화면에 잡은 시점 기준으로 robobun 435회 vs Jarred-Sumner 247회, 세션 후반 집계에서는 robobun 626회 vs Jarred-Sumner 377회로 나타납니다. 병합되지 않은 PR이 다수라는 단서가 붙지만, "AI 기여량이 인간 1인분을 넘었다"는 장면 자체가 무대 위에서 데이터로 확인된 셈입니다.
② 자동화의 전제 조건은 모델이 아니라 문서다
Jarred Sumner은 이 파이프라인이 성립하는 첫 단추로 CLAUDE.md를 지목합니다. 반복되는 지식을 문서화하지 않으면 에이전트는 "합치기 애매한 PR"만 양산합니다.
"매번 무언가를 반복하고 있다는 걸 발견한다면, 그것은 아마 CLAUDE.md에 들어가야 한다."
③ 병목은 사라지지 않고 이동했다
코드 작성과 테스트 실행은 병목 목록에서 내려왔습니다. 남은 병목은 검증(이걸 병합해도 되는가) 와 계획(무엇을 할 것인가) 입니다.
1. Robo Bun 파이프라인 — 이슈가 PR이 되는 경로
GitHub에 이슈가 올라오면 사람이 보기 전에 봇이 먼저 손을 댑니다.
① 이슈 생성
↓
② Robo Bun 자동 재현(reproduce) — 이슈 트래커의 모든 신규 이슈 대상
↓
③ 테스트 코드 작성 — PR 제출의 필수 하드 요구사항
↓
④ 이중 검증 루프 — 이전 버전에서 테스트 실패 + 현재 디버그 브랜치에서 통과
↓
⑤ PR 자동 제출 — 위 조건을 만족해야만 제출 자체가 불가능
↓
⑥ 코드 리뷰 봇 상호 검증 (2장 참조)
↓
⑦ CI 모니터링 및 자율 수정 — 실패 로그를 에이전트가 직접 읽고 재작업
↓
⑧ 인간 리뷰어에게 전달 —到达 시점에 이미 높은 신뢰도 상태
검증 루프의 핵심 조건
| 조건 | 의미 | 왜 중요한가 |
|---|---|---|
| 이전 버전에서 테스트 실패 | 버그가 실제로 존재함을 증명 | 없는 버그를 고친 "가짜 PR" 차단 |
| 수정 브랜치에서 테스트 통과 | 수정이 실제로 작동함을 증명 | 조건 미충족 시 PR 제출 자체가 불가 |
이 구조가 만드는 변화는 작업의 성격 자체입니다. Jarred Sumner의 표현을 빌리면 과제가 "이슈를 디버깅하고 고치는가" 에서 "이걸 병합하는 게 맞는가" 로 이동합니다. Bun이 특히 유리했던 이유는 시스템 코드 + CLI 도구라는 특성상 브라우저 없이 테스트 재현이 가능했기 때문입니다.
일반화 포인트: 오픈소스가 아닌 대부분의 회사에서는 출발점이 이슈가 아니라 고객 지원 티켓이 됩니다. 티켓 → 재현 → PR → 코드 리뷰 루프를 걸면 효과는 더 커진다는 것이 Boris Cherny의 설명입니다.
2. 적대적 코드 리뷰 — 봇 두 팀을 붙인다
리뷰 단계에서는 서로 다른 강점을 가진 두 봇을 상호작용시킵니다. 한 PR에서 30개 이상의 댓글이 오가며, 해결된 댓글은 봇이 스스로 resolved 처리합니다.
| 봇 | 특화 영역 | 대표 사례 |
|---|---|---|
| Code Rabbit | 스타일 가이드 / CLAUDE.md 준수 여부 등 형식적 오류 | 네이밍·레이블·컨벤션 위반 |
| Claude Code Review | 전체 컨텍스트를 파악해야 보이는 미묘한 엣지 케이스 | diff에 없는 코드까지 제어 흐름 추적 |
Claude Code Review의 가치는 "diff 안에 있지 않은 문제"를 잡는 데 있습니다. 사람이 30분간 코드를 읽고 전체 컨텍스트를 머릿속에 담아야 발견할 버그를 찾아냅니다. 신호 대 잡음비(SNR)도 이전 코드 리뷰 제품들과 비교해 실질적으로 개선됐습니다 — 예전에는 대부분을 무시해야 했지만, 지금은 대략 10% 정도만 오답이라는 평가입니다.
왜 이 패턴이 필수인가: 리뷰 댓글에 답하는 작업은 전통적으로 가장 비용이 큰 구간이었습니다. 브랜치 체크아웃 → 린트 오류 수정 → 로컬 린터 실행 → 재푸시의 전환 비용(switching cost) 이 PR 병합을 지연시켰고, 바로 이 지점이 LLM이 가장 강하게 효율을 내는 곳입니다.
3. CLAUDE.md — 복합 공학의 인프라
"에이전트를 많이 돌릴 수 있게 만드는 것"은 프롬프트가 아니라 문서화된 지식입니다.
| 문서화 항목 | 실제 내용 예시 | 효과 |
|---|---|---|
| 빌드 명령 | 인자를 전달하며 빌드+실행을 동시에 하는 특수 커맨드 | 낡은 디버그 빌드로 검증하는 사고 방지 |
| 테스트 위치 규칙 | test/regression/issue/${issueNumber}.test.ts는 실제 회귀 버그 전용 |
이슈 번호가 있어도 과거에 정상 동작하지 않았다면 회귀가 아님 → 기존 모듈 테스트 파일로 |
| 테스트 작성 방식 | Jest 호환 러너, 단일 파일은 -e 플래그, 다중 파일은 tempDir + Bun.spawn |
에이전트가 매번 같은 스타일로 작성 |
| 검증 코드 패턴 | bunExec 실행, stdout/stderr 처리, toMatchInlineSnapshot, exitCode 확인 |
첫 시도부터 통과하는 테스트 |
| 아키텍처 지도 | src/js/bindings(JavaScriptCore 바인딩), src/runtime(HTTP 서버·FFI·암호화), Node.js 호환 계층, Web API(fetch·streams) |
코드베이스 구조 정확 이해 |
| CI 디버깅 도구 | BuildKite CLI(bk), bun run ci:errors / ci:logs / ci:find |
실패 로그를 에이전트가 직접 해석 |
| 에이전트 수칙 | 메모리 관리, 크로스 플랫폼, claude/ 접두사 브랜치명 |
무대 시연 PR도 컨벤션 준수 |
여기서 한 걸음 더 나아간 원칙이 있습니다. 도구 자체를 고쳐서라도 정확성을 유지하라 — scripts/find-build.ts를 직접 수정하라는 안내가 그 예입니다. 또한 "무대 라이브 코딩 중이므로 빠르게 생각해야 한다"는 주의문과 디버그 빌드 사용 시 CRITICAL 경고가 CLAUDE.md에 명시되어 있어, 에이전트가 환경 선택을 잘못하는 사고를 미리 막습니다.
실패 패턴 → 문서화 루프: 테스트를 시켰는데 결과가 나쁘면, 1~2회 반복을 확인한 뒤 "CLAUDE.md에 추가하라"고 지시합니다. 다음부터는 첫 시도부터 올바르게 동작합니다. 이것이 Boris Cherny가 명명한 compound engineering입니다.
4. 실측 결과 — 무엇을 고쳤고, 얼마나 빨라졌나
4-1. 무대에서 실제로 생성·병합된 PR
| 이슈/PR | 문제 | 에이전트의 진단과 수정 |
|---|---|---|
| #30320 → #30322 | Windows에서 sideEffects glob 패턴이 어댑터를 tree-shaking으로 누락 (prebid.js@10.29.0 실제 영향) |
normalizePathForGlob 등 수정, 빌드 경로와 런타임 C:\proj\... 경로 불일치 근본 원인 해결 |
| #25422 → #30328 | instanceof File 실패 |
src/js/bindings/JSDOMFile.cpp의 customHasInstance가 프로토타입 체인 순회를 생략한 것이 원인 → JSObject::defaultHasInstance로 폴백 |
| #30314 | bunfig.toml CA 스토어 선택 지원 |
CLI flag > 환경 변수 > bunfig.toml 우선순위 구현, TLS trust-store 로직은 인간 리뷰어 확인을 요청 |
| #30330 | console.group() 들여쓰기 오류 |
WHATWG Console 스펙대로 그룹 중첩 수준 반영, Zig ConsoleObject.zig 수정 |
| #30331 | Bun.deflateSync가 windowBits를 무시 |
gzipOrDeflateSync에서 옵션이 파싱만 되고 압축기에 전달되지 않음이 원인 → node:zlib.deflateSync와 바이트 단위 일치, 테스트 17개 통과 |
| #3521 | expect.any / toMatchObject가 수신 객체를 변경(mutate) |
2023년 7월 보고, 참여자 10명, 2023년 11월에도 재현 신고가 있던 장수 이슈를 matcherSentinel 도입으로 해결 |
claude 태그가 붙은 PR 목록은 69페이지까지 쌓여 있었고, 시연 약 25분 만에 PR 3개가 생성됐습니다. 하나의 프롬프트로 30분간 백그라운드 실행해 업보트 20개 이상 이슈의 PR을 만들어내는 것도 확인했습니다.
4-2. Bun.Image — AI가 작성한 대규모 기능 (PR #30032)
이미지 처리 파이프라인(jpeg/png/webp, resize, rotate, modulate)을 Bun에 내장한 사례로, Claude가 작성했습니다.
| 지표 | 수치 |
|---|---|
| 병합 커밋 수 | 85 commits (main 병합 완료) |
| 총 테스트 케이스 | 204개 / 4개 스위트 |
├ image.test.ts |
약 80 (happy path) |
├ image-adversarial.test.ts |
약 58 (포맷 혼동) |
├ image-kernels.test.ts |
약 38 (알고리즘 고정) |
└ image-vs-sharp.test.ts |
29 (Sharp/libvips 교차 검증) |
| 1080p PNG 리사이즈 | Sharp 대비 1.38배 빠름 |
| 4K JPEG 처리 | Sharp 대비 1.27배 빠름 |
목표("Sharp보다 빠르게")와 측정 수단(벤치마크)만 주면 모델이 스스로 JavaScriptCore 코드를 분석해 Typed Array 클로닝을 최적화하고 반복 벤치마크를 돌렸습니다. Jarred Sumner는 이 패턴을 Hill Climbing(언덕 오르기) 으로 정의합니다. 리뷰 댓글 자동 처리까지 붙으면서 본인은 이 작업에 10%만 집중하고 나머지를 병행했다고 합니다.
남은 후속 과제(Known follow-ups): x64 libjpeg-turbo NASM SIMD, new Response(image) 인코딩, Integer pre-shrink.
4-3. 코드 리뷰 봇이 잡아낸 품질 이슈
Image.ErrorCode 유니온에 ERR_OUT_OF_MEMORY가 누락되어 tsc 경고가 발생하는 문제, placeholder()의 크기 계약 위반 — claude Bot이 지적하고 수정을 제안했습니다. 생성뿐 아니라 정밀 품질 관리도 같은 루프 안에서 일어납니다.
5. 병목의 이동 — 무엇이 병목 목록에서 내려왔나
| 구간 | 과거 | 현재 |
|---|---|---|
| 코드 작성 | 병목 | 병목 아님 |
| 테스트 실행 | 병목 | 병목 아님 |
| 리뷰 댓글 대응(전환 비용) | 병목 | 자동 처리 |
| 변경 사항에 대한 확신(Confidence) | 부차적 문제 | 핵심 병목 |
| 계획 수립 — 무엇을 할 것인가 | 인간의 강점 | 남은 병목 |
과거에는 코드 품질 자체가 낮았지만, 파이프라인이 성숙하면서 병목이 "정확한가" 로 이동했습니다. 완전한 자동화(Closed Loop)를 위해 필요한 두 조건은 명확합니다.
- 변경 사항 검증 시간 단축
- 롤백 용이성 확보
그래서 단순 이슈는 CI 통과 후 즉시 병합해야 한다는 결론에 도달합니다. AI 생성 PR은 인간 동료의 작업과 달리 "안 합치면 미안한" 심리적 부담이 없어 병합 기준을 더 엄격하게 잡을 수 있다는 지적도 같은 맥락입니다.
현실 체크: 무대 청중 대상 설문에서 절반 이상이 여전히 터미널 창·데스크톱 탭에 이슈를 붙여넣는 수동 워크플로우에 머물러 있었습니다. Robo Bun 수준의 루프 폐쇄는 "다음 단계 추상화"로 소개됐습니다. Boris Cherny는 이 비전을 처음 들었을 때 이해하지 못했던 "수백 개 에이전트 병렬 실행"을 이제 매밤에 실행 중이라고 말했습니다.
6. 운영 팁 — Auto Mode와 No Flicker Mode
| 기능 | 동작 | 추천 이유 |
|---|---|---|
| Auto Mode | 권한 요청 중단 없이 수 시간 백그라운드 실행 | dangerously skip permissions보다 안전하고 효율적 |
| No Flicker Mode | 가상화 스크롤링으로 메모리/CPU 사용량 일정 유지 | 장시간 다중 에이전트 구동 환경에 필수 |
시연 화면에는 auto mode on 상태바와 함께 셸 명령 실행 로그, 회귀 테스트 통과 확인, 시스템 Bun에서의 실패 검증, 전체 toMatchObject·스냅샷 테스트 실행이 순차로 흘렀습니다. Buildkite 대시보드에서는 286개 잡 중 28개 완료(33개 running) 상태가 실시간 확인됐습니다.
git 커밋 메시지에는 Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>이 명시되어, 1M 컨텍스트 윈도우 모델이 시스템 레벨·런타임 버그 다수를 해결하는 데 사용됐음이 기록으로 남았습니다.
관점 포인트
- PR 제출 자격 조건을 코드로 강제하라. "테스트 포함 + 이전 버전 실패/수정 버전 통과"를 만족 못 하면 제출 자체가 안 되게 만드는 것이 자동화의 안전장치입니다.
- 리뷰는 한 봇이 아니라 두 봇을 붙이세요. 형식 검증과 컨텍스트 검증의 실패 패턴이 다릅니다.
- CLAUDE.md는 문서가 아니라 인프라입니다. 같은 실패가 1~2회 반복되면 즉시 문서에 반영 — 이게 compound engineering의 작동 방식입니다.
- CI 로그 접근권을 에이전트에게 주라. 사람이 리뷰하는 시점에 이미 "병합해도 된다는 명확한 신호"가 붙어 있어야 합니다.
- CLI 도구는 검증이 쉽습니다. 브라우저가 필요한 프론트엔드는 스크린샷·비디오 캡처로 대체해야 한다는 단서도 함께 제시됐습니다.
- 기능 요청(Feature Request)은 아직 미완입니다. Robo Bun은 버그 재현·수정에 집중되어 있고, Discord/Slack 멘션 경유로 구현을 시도하는 단계입니다.
- 도구 정확성은 직접 고쳐서 유지합니다.
scripts/find-build.ts수정 권장처럼, 에이전트 주변 인프라까지 팀 소유로 보는 관점입니다.
최종 핵심 정리
확인해야 할 핵심 질문
- 우리 리포지토리의 CLAUDE.md(또는 에이전트용 지식 파일)는 빌드·테스트·배치 규칙을 어디까지 명시하고 있는가?
- AI가 만든 PR에 "이전 버전 실패 / 수정 버전 통과"를 강제하는 게이트가 있는가?
- 코드 리뷰는 형식 검증과 컨텍스트 검증을 분리해 수행하는가?
- 에이전트가 CI 실패 로그를 직접 읽고 재작업하는가, 아니면 사람이 복사해 주는가?
- 지금 우리 팀의 진짜 병목은 작성인가, 검증인가, 계획인가?
- 권한 승인 대기 시간을 줄이기 위해 Auto Mode를 켰는가?
한 줄 요약: AI 에이전트를 많이 돌리는 비결은 더 똑똑한 모델이 아니라, 반복되는 지식을 문서화하고(복합 공학) 봇끼리 싸우게 하고(적대적 리뷰) 검증 루프를 코드로 강제하는 인프라 설계다.
이미지 분석:

분석: ## 이미지 분석 결과
1. 추출된 모든 텍스트
- 중앙 텍스트 (2줄):
- 1줄:
Code w/(산세리프 폰트, 흰색) - 2줄:
Claude(세리프 폰트, 흰색, 더 큰 크기) - 우측 상단 로고:
AI(Anthropic 로고 스타일)
2. 표(Table)
- 없음.
3. 그래프/차트
- 없음.
4. 다이어그램
- 없음.
5. 질문 관련 정보
질문에서 나열된 항목(Bun 리포지토리 기여자 통계, GitHub PR 페이지, Bun.Image 성능 벤치마크 표, CLAUDE.md 파일, Claude Code 터미널 시연 화면) 중 어떤 것도 이 이미지에는 포함되어 있지 않습니다.
다만 이미지 중앙의 Code w/ Claude 텍스트와 우측 상단의 Anthropic(AI) 로고는, 이 화면이 Claude Code 시연 영상/데모의 타이틀(오프닝) 화면 또는 썸네일임을 강하게 시사합니다. 즉, 질문에서 언급된 "Claude Code 터미널 시연 화면"과 주제적으로 연결되지만, 실제 터미널 인터페이스나 코드 실행 내용은 보이지 않습니다.
6. 이미지 성격 요약
- 종류: 텍스트가 포함된 타이틀/썸네일 화면 (사진/로고만 있는 이미지는 아님)
- 배경: 단색 검은색
- 구성: 중앙 정렬된 흰색 텍스트 2줄 + 우측 상단 로고 1개
- 의미: Anthropic의 "Claude와 함께 코딩하기(Code with Claude)" 콘텐츠의 도입부 화면
결론
이 이미지는 질문에서 요구한 통계·PR·벤치마크·CLAUDE.md·터미널 시연 등의 세부 데이터가 전혀 없는 단순 타이틀 화면입니다. 따라서 Bun 기여자 수, PR 정보, 벤치마크 수치, CLAUDE.md 내용, 터미널 출력 등은 이 이미지로부터 추출할 수 없으며, 해당 정보들을 확인하려면 실제 시연 화면이나 문서 이미지가 추가로 필요합니다.

분석: # 이미지 분석 결과
1. 추출된 모든 텍스트
| 위치 | 텍스트 내용 |
|---|---|
| 좌측 상단 (라벨) | Code w/ / Claude |
| 우측 상단 (로고) | AI (Anthropic 로고) |
| 중앙 우측 (주 제목) | Live coding with Bun and Claude Code |
| 발표자 1 (이름) | Boris Cherny |
| 발표자 1 (직함) | Head of Claude Code |
| 발표자 2 (이름) | Jarred Sumner |
| 발표자 2 (직함) | Creator of Bun |
2. 표(Table)
→ 이 이미지에는 데이터 표가 없습니다.
3. 그래프/차트
→ 이 이미지에는 그래프 또는 차트가 없습니다.
4. 다이어그램
→ 기술적 다이어그램은 없으며, 좌측에 장식용 기하학적 도형(검은색 사각형, 팔각형, 분자/노드 연결형 아이콘)만 배치되어 있습니다.
5. 질문과 관련된 정보 (중요)
질문에서 언급된 다음 항목들은 이 이미지에는 전혀 포함되어 있지 않습니다:
- ❌ Bun 리포지토리 기여자 통계 / robobun 커밋 수
- ❌ GitHub PR 페이지
- ❌ Bun.Image 성능 벤치마크 표
- ❌ CLAUDE.md 파일 내용
- ❌ Claude Code 터미널 시연 화면
이 이미지는 위 주제들을 다루는 프레젠테이션의 타이틀(도입) 슬라이드일 뿐입니다. 다만 질문의 주제와 간접적으로 연결되는 맥락은 다음과 같습니다: - Jarred Sumner (Creator of Bun) → Bun 리포지토리 및 기여자 통계(robobun 등)와 직접 관련된 인물. - Boris Cherny (Head of Claude Code) → Claude Code 터미널 시연 화면과 직접 관련된 인물. - 제목 "Live coding with Bun and Claude Code" → 질문에서 나열된 벤치마크·PR·CLAUDE.md·터미널 시연 등이 이 세션의 본문 슬라이드에서 다뤄질 것임을 시사합니다.
6. 이미지 요약 설명
주황색(테라코타) 배경의 라이브 코딩 세션 타이틀 슬라이드입니다. Anthropic의 "Code w/ Claude" 시리즈 중 하나로, Bun의 제작자 Jarred Sumner와 Claude Code 책임자 Boris Cherny가 함께 진행하는 "Bun과 Claude Code로 라이브 코딩하기" 발표의 첫 화면입니다. 구체적인 통계·벤치마크·코드 화면 데이터는 이 슬라이드에 나타나지 않습니다.

분석: ## 이미지 분석 결과
추출된 텍스트
- 오른쪽 상단 모서리: "AI" (로고/워터마크)
이미지 내용 설명
이 이미지는 질문에서 요구한 Bun 리포지토리 기여자 통계, GitHub PR 페이지, Bun.Image 성능 벤치마크 표, CLAUDE.md 파일, Claude Code 터미널 시연 화면과는 관련이 없는 사진입니다.
이미지에 포함된 실제 내용은 다음과 같습니다: - 무대 위를 걷고 있는 두 명의 남성 (왼쪽: 검은색 반팔 셔츠 + 올리브색 바지, 오른쪽: 회색 셔츠 + 흰색 티셔츠 + 검은색 바지) - 배경의 나무 책장과 그 위에 걸린 추상 아트 포스터 (검은색 원과 선이 방사형으로 배치된 패턴) - 책장 선반 위의 장식품 (도자기, 조각상 등) - 오른쪽 하단의 베이지색 안락의자 - 오른쪽 상단의 "AI" 로고 (발표/컨퍼런스 영상 캡처임을 시사)
표 / 그래프 / 차트 / 다이어그램
- 없음.
질문 관련 정보
- 없음. 이미지에는 robobun 커밋 수, PR 통계, 벤치마크 수치, CLAUDE.md 내용, 터미널 출력 등 질문과 연관된 데이터나 텍스트가 전혀 포함되어 있지 않습니다.
결론
이 이미지는 텍스트가 없는 사진(무대 발표 장면) 이므로, 지침 6에 따라 위와 같이 짧게 설명합니다. 질문에서 요구하는 Bun/Claude Code 관련 통계나 화면을 분석하려면 해당 데이터가 실제로 표시된 다른 이미지가 필요합니다.
댓글 0
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요.