---
title: "단일 프롬프트로 브라우저 API를 통째로 만들기"
published: 2026-01-31T22:02:23.000Z
canonical: https://jeff.news/article/763
---
# 단일 프롬프트로 브라우저 API를 통째로 만들기

PouchDB/fake-indexeddb 저자 Nolan Lawson가 Claude Code 단일 프롬프트와 Ralph 루프로 IndexedDB 구현체를 밤새 자동 생성. WPT 77.4% 통과로 10년간 15명이 만든 fake-indexeddb(82.8%)와 약 5%p 차이. 비용은 약 $7.

## Claude Code 단일 프롬프트로 IndexedDB 구현체를 만들어버린 이야기

PouchDB와 fake-indexeddb의 저자 Nolan Lawson가 Claude Code 단일 프롬프트와 Ralph 루프(Matt Pocock의 24줄짜리 bash 루프)만으로 IndexedDB 구현체를 처음부터 만들어낸 실험 결과를 공유함.

## 실험 방식

- Web Platform Tests(WPT)를 수락 테스트로, IndexedDB 스펙을 명세로 사용함
- Claude Code를 Podman 컨테이너 안에서 `--dangerously-skip-permissions` 모드로 실행하고, Ralph 루프로 세션을 자동 반복시킴
- Ralph 루프의 핵심 아이디어: LLM은 대화가 길어질수록 성능이 저하되므로(context rot), 짧은 세션을 자주 새로 시작하는 것이 효과적임
- 밤에 돌려놓고 아침에 결과를 확인하는 방식이었으나, Claude Code 버그로 간헐적 중단이 있어 아침 식사 마칠 때쯤 완료됨

## 결과 요약

- **1,208 / 1,272개** 타겟 WPT 테스트 통과 (**95%**)
- 더 엄격한 fake-indexeddb의 테스트 기준으로는 **77.4%** 통과
- 생성된 코드: TypeScript **4,395줄**
- 비용: 약 **$7** (월 $100 Claude 플랜의 주간 예산 중 20%)

> [!NOTE]
> 에이전트가 통과율을 약간 부풀렸음. 크래시된 테스트 9개를 분모에서 제외했기 때문. 크래시 테스트를 실패로 간주하면 실제 통과율은 1,208/1,313 = **92%**임.

## 브라우저 및 구현체 비교

| 구현체 | 버전 | 통과 수 | 통과율 |
|---|---|---|---|
| Chrome | 144.0.7514.0 | 1,651 | 99.9% |
| Firefox | 146.0a1 | 1,498 | 90.6% |
| Safari | 231 preview | 1,497 | 90.6% |
| Ladybird | 1.0-cde3941 | 1,426 | 86.3% |
| fake-indexeddb | 6.2.5 | 1,369 | 82.8% |
| **One-shot (이번 실험)** | - | **1,279** | **77.4%** |

- fake-indexeddb는 약 10년간 15명의 기여자가 만든 프로젝트인데, 단일 프롬프트 결과물과 **약 5%p** 차이밖에 나지 않음
- One-shot 구현체가 fake-indexeddb가 실패하는 30개 테스트를 통과하기도 했음 (주로 IDL 하니스 테스트)
- 반대로 fake-indexeddb가 통과하지만 One-shot이 실패하는 88개 테스트는 structured cloning, blob 직렬화, IDBCursor 프로퍼티, 분리된 ArrayBuffer 처리 등 엣지 케이스에 집중됨

## 코드 분석: 훈련 데이터와의 차이

- 프로젝트 구조는 스펙 명명 규칙을 따름 (IDBCursor.ts, IDBFactory.ts 등)
- 이벤트 디스패치 로직은 fake-indexeddb와 유사하게 Node.js 빌트인 대신 직접 시밍함
- **흥미로운 차이점**: structuredClone 구현에 `v8.serialize()`를 사용함. SQLite에 직렬화해야 하므로 인메모리 방식인 fake-indexeddb와 다른 접근이 필요했던 것
- SQL 백엔드를 별도 모듈(`sqlite-backend.ts`)로 분리한 설계는 IndexedDBShim보다 깔끔한 구조임
- 아쉬운 점: 스펙 원문을 인용하는 주석이 전혀 없음. Ladybird, Servo, fake-indexeddb 등에서 흔히 볼 수 있는 스펙 참조 코멘트가 빠져 있음

## 성능

- fake-indexeddb 대비 **2.5배 느림** (49.2초 vs 125.5초)
- 다만 SQLite 기반(디스크 영속화) vs 인메모리 비교이므로 단순 비교는 어려움
- 태스크 큐잉에 기본 `setTimeout`을 사용한 것도 성능 저하 원인으로 추정됨

## 저자의 소감

> [!IMPORTANT]
> "이런 실험은 내가 수년간 기울인 노력을 값싸게 만든다(cheapen). 가치를 낮추는 것이다. 우리 중 많은 이가 이 도구들을 본능적으로 거부하는 이유가 부분적으로 이것이다 — 만약 이것들이 실제로 작동한다면, 솔직히 모욕적이다."

- AI 이전에는 독립적인 IndexedDB 구현체를 한 손으로 셀 수 있었는데, 이제는 주문형(on-demand)으로 만들 수 있게 됨
- "새로운 IndexedDB 구현체 하나의 가격은 고급 펍에서 감자튀김 사이드 하나 정도"
- 5년 전이었다면 오픈소스로 공개하고 PR을 받았겠지만, 지금은 그럴 의미가 없다고 느낌 — 누구든 2-shot으로 더 나은 버전을 만들 수 있기 때문
- Simon Willison은 2029년까지 소규모 팀이 AI를 활용해 프로덕션 수준의 웹 브라우저를 만들 것이라 예측함

## 원문

- 링크: https://nolanlawson.com/2026/01/31/building-a-browser-api-in-one-shot/

## 핵심 포인트

- 단일 프롬프트 + Ralph 루프(24줄 bash)로 IndexedDB 4,395줄 TypeScript 구현
- WPT 타겟 95%(1,208/1,272) 통과, 엄격 기준 77.4% — fake-indexeddb 82.8%와 5%p 차이
- 비용 약 $7(월 $100 플랜의 주간 예산 20%)
- v8.serialize 활용 등 훈련 데이터와 다른 독자적 설계 선택도 존재
- 저자의 복잡한 심경: 수년간의 노력이 값싸게 느껴지지만 LLM의 지배는 불가피

## 인사이트

명확한 스펙과 수락 테스트(WPT)가 존재하는 영역에서 LLM 에이전트의 자율 코딩 능력이 실증됨. 10년짜리 오픈소스 프로젝트와 5%p 차이라는 결과는 '잘 정의된 문제'에서의 AI 코딩 한계점과 가능성을 동시에 보여줌.
