# 사람 한 명 + 에이전트 하나 = 20K 코드의 브라우저를 처음부터 만들다

> Clean Markdown view of GeekNews topic #26207. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=26207](https://news.hada.io/topic?id=26207)
- GeekNews Markdown: [https://news.hada.io/topic/26207.md](https://news.hada.io/topic/26207.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-01-29T07:32:54+09:00
- Updated: 2026-01-29T07:32:54+09:00
- Original source: [emsh.cat](https://emsh.cat/one-human-one-agent-one-browser/)
- Points: 7
- Comments: 4

## Summary

**한 사람과 한 LLM 에이전트가 단 3일 만에 Rust로 HTML·CSS 렌더링이 가능한 브라우저를 완성했습니다.** 외부 라이브러리 없이 약 2만 줄의 코드로 스크롤, 뒤로가기, 헤드리스 모드까지 구현하며 Windows·macOS·Linux를 모두 지원합니다. 개발자는 조율과 검증만 맡고, **Codex 에이전트가 대부분의 코드를 작성**해 ‘한 사람 + 한 에이전트’ 구조가 다수의 에이전트보다 효율적임을 실험적으로 입증했습니다.

## Topic Body

- **HTML과 CSS 렌더링이 가능한 브라우저**를 단 3일 만에 한 사람과 한 LLM 에이전트가 Rust로 직접 구현  
- 프로젝트는 **약 20,150줄의 코드**로 완성되었으며, 스크롤·뒤로가기·헤드리스 모드 등 기본 기능 포함  
- **외부 Rust 라이브러리 없이** Windows, macOS, Linux에서 동작하도록 설계  
- 개발 과정은 **Codex 에이전트와의 협업**으로 진행되어, 사람은 조율과 검증을 담당하고 에이전트는 코드 작성 수행  
- 결과적으로 **‘한 사람 + 한 에이전트’ 조합이 다수의 에이전트보다 효율적**임을 보여주는 사례  
  
---  
### 프로젝트 개요  
- 목표는 **HTML과 CSS를 렌더링할 수 있는 기본 브라우저**를 완전히 새로 만드는 것  
  - JavaScript는 지원하지 않음  
  - 개발자는 “재미 삼아” 시작했으며, LLM 에이전트(Codex)와 협업해 진행  
- **3일 내 완성**, **외부 Rust 의존성 금지**, **3대 OS 지원** 등의 제약 조건을 설정  
- 브라우저는 **자체 렌더링 엔진**을 갖추고, 스크린샷 기능과 링크 클릭, 회귀 테스트 기능을 포함  
  
### Day 1 – 초기 구현  
- “Hello World” 렌더링에서 시작해 **중첩 태그 처리**와 **스크린샷 기능**을 추가  
- HTML/CSS 명세를 정의하고, **E2E 테스트**를 위해 이미지 비교 기능을 도입  
- 하루 만에 **X11과 cURL을 이용해 웹사이트를 가져와 렌더링**하는 수준까지 도달  
  - 코드베이스는 약 **7,500줄**, 모든 파일은 1,000줄 이하 유지  
  
### Day 2 – 기능 확장  
- 테스트 중 창이 열리는 문제를 해결하기 위해 **--headless 모드** 추가  
- **창 크기 조정, 호환성, 성능, 폰트 렌더링** 개선  
- 워크플로우는 웹사이트 스크린샷을 공유하고 Codex가 이를 재현하도록 하는 방식  
  - 대부분의 코드는 에이전트가 작성, 사람은 검토 및 승인 담당  
  
### Day 3~4 – 완성 및 크로스플랫폼 지원  
- **스크롤, 디버그 로그, 뒤로가기 버튼** 등 브라우저 필수 기능 추가  
- **macOS와 Windows 지원**을 구현하고 테스트 통과  
- **CI 통합 및 릴리스 빌드** 완료, 총 개발 시간은 약 72시간  
  
### 결과 및 코드 통계  
- 최종 코드베이스는 **약 20,150줄**, **72개 파일**로 구성  
- 주요 파일에는 `layout`, `style`, `platform`, `browser` 모듈 등이 포함  
- **Cargo.lock이 비어 있음**, 즉 외부 Rust 패키지 없이 완전 독립 실행 가능  
- GitHub에서 **CI 빌드된 바이너리와 소스 코드**를 직접 다운로드 가능  
  - [https://github.com/embedding-shapes/one-agent-one-browser/releases](https://github.com/embedding-shapes/one-agent-one-browser/releases)  
  
### 주요 교훈  
- **한 사람 + 한 에이전트 조합**이 수천 개의 에이전트를 사용하는 것보다 효율적  
- **단일 에이전트가 장시간 하나의 코드베이스를 다루며 실질적 진전**을 이룰 수 있음  
- 여러 사람이 각자 에이전트를 보유한 형태로 확장 가능성 존재  
- **속도를 늦추는 것이 오히려 더 빠르고 나은 결과**를 낳을 수 있음  
- **에이전트를 조종하는 인간의 역할**이 시스템 설계보다 더 중요할 수 있음  
  
* 결론적으로, “여러 에이전트를 투입하면 개발이 가속될까?”라는 질문에 대해  
  **단일 인간-에이전트 협업이 더 현실적이고 효율적일 수 있음**을 보여주는 사례임

## Comments



### Comment 50181

- Author: pkj3186
- Created: 2026-01-29T11:17:59+09:00
- Points: 1

제가 잘 몰라서 그러는데 해커뉴스 의견들에 나오는 `simon의 블로그` 는 무슨 블로그이길래 자꾸 언급이 되는 걸까요...?

### Comment 50196

- Author: laeyoung
- Created: 2026-01-29T14:13:39+09:00
- Points: 1
- Parent comment: 50181
- Depth: 1

Simon Willison이 올린 블로그 글이 해커뉴스에 언급이 많이 되는 이유 아마도,  
  
1. AI 관련된 글을 잘, 그리고 빠르게 많이 쓰는 이유가 있을테고요. AI 성능 테스트 할 때 많이 하는 '자전거 탄 펠리컨' 그리기도 이 아저씨가 먼저 한거 같더라고요 (https://simonwillison.net/search/?q=pelican)  
2. Django를 만든 사람이라 인지도도 있고요.

### Comment 50185

- Author: qyurila
- Created: 2026-01-29T11:37:05+09:00
- Points: 1
- Parent comment: 50181
- Depth: 1

[Hacker News에서 2025년에 가장 인기 있었던 블로그들](https://news.hada.io/topic?id=25545) 중 1위인 블로그네요. 명성도 명성이고, 게시되는 기사의 수 또한 상당하기 때문에, 일반적인 해커뉴스 사용자 입장에서 가장 자주 방문하게 되는 블로그라서 자연스럽게 지표로 여겨지는 게 아닐까 싶습니다.

### Comment 50165

- Author: neo
- Created: 2026-01-29T07:32:54+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46779522) 
- Cursor의 **FastRender**보다 훨씬 나은 코드 생성 브라우저 데모라고 생각함  
  Rust 2만 줄 정도로 훨씬 작고, 이미지·텍스트 렌더링에 **시스템 라이브러리만** 사용하며, 코드도 읽기 쉬움  
  예를 들어 [flexbox 구현 코드](https://github.com/embedding-shapes/one-agent-one-browser/blob/master/src/layout/flex.rs)를 보면 명확함  
  내 블로그를 렌더링한 [스크린샷](https://bsky.app/profile/simonwillison.net/post/3mdg2oo6bms2o)도 올렸는데, CSS 그라디언트와 SVG 아이콘은 잘 처리하지만 PNG는 실패함  
  HTML+CSS 렌더링 브라우저는 병렬 에이전트 시연에 완벽한 과제라 생각했는데, 한 명의 코딩 에이전트로도 가능했음이 놀라움
  - 엔지니어링 관점에서 Cursor의 브라우저보다 훨씬 **완성도 높은 설계**라 생각함  
    중요한 건 단순히 토큰을 많이 쓰는 게 아니라 **에이전트를 효과적으로 활용하는 법**임  
    나도 여러 프로젝트를 생성 후 며칠 지나 버린 적이 많음. 에이전트는 피드백 없이 시킨 대로만 하기에, 잘못된 방향이면 오히려 더 깊은 구멍을 파게 됨
  - 인간과 에이전트의 협업이 **결정적 차이**를 만든다고 봄  
    Claude가 엉뚱한 방향으로 가도 올바른 **에이전트 구조**가 있으면 다시 회복함  
    나는 현재 평가자·연구자·구현자 에이전트를 분리한 실험을 진행 중임  
    점수 기반으로 테스트를 확장하거나 실패 원인을 조사하게 하고, 개선이 없으면 커밋을 폐기함  
    이런 구조가 **코드 품질 관리**에 훨씬 유리함  
    코드가 싸고 버릴 수 있는 시대에는 워크플로우 자체가 달라져야 함
  - embedding-shapes가 직접 손으로 만들어낸 점이 인상적임  
    1인 1에이전트가 500만 달러, 160만 LOC 브라우저를 이긴 **‘David vs Goliath’** 같은 이야기로 느껴짐  
    AI는 여전히 **블랙박스**라, 모두가 실험하며 방향을 찾는 중임  
    2026년이 이제 한 달 지났는데, 앞으로 어떤 실험이 나올지 흥미로움  
    Simon이 HN의 2026년 예측 스레드를 주기적으로 리뷰하면 재밌을 듯함

- 3일이라는 제한을 두고, **Rust 서드파티 크레이트 없이** OS 기본 라이브러리만 사용해 X11/Windows/macOS를 지원하도록 규칙을 세움  
  약 2만 LOC로 완성했고, 그중 1.4만 줄이 엔진, 6천 줄이 플랫폼 지원 코드임  
  [소스코드와 바이너리](https://github.com/embedding-shapes/one-agent-one-browser)를 공개했음
  - 20년 전 KHTML/konqueror에 기여했을 때는 기본 렌더링만 구현해도 몇 달이 걸렸음  
    지금은 **머신 판독 가능한 테스트 스위트** 덕분에 훨씬 효율적임  
    예전엔 IE의 동작이 사실상 표준이었는데, 이제는 구글·애플 등이 표준화에 기여해 훨씬 나아졌음
  - 어떤 모델을 썼고, **토큰 비용**은 얼마였는지 궁금함
  - 제약 조건이 훌륭함

- 기능과 별개로 이런 코드베이스의 **보안 감사**가 궁금함  
  Rust가 도움이 되겠지만, 언어 보장만으로 충분한지 의문임
  - 보안은 전혀 고려되지 않았음. 샌드박스 없이 임의 웹사이트를 열면 위험함  
    Rust는 기본적인 메모리 오류만 막을 뿐, 로컬 파일 접근 같은 건 막지 않음  
    JS 엔진이 없어서 데이터 유출은 어렵지만, **감사하면 심각한 취약점**이 여러 개 나올 것 같음

- 커뮤니티가 **browserBench**를 기다려왔는데, 드디어 시작돼 기쁨임  
  브라우저는 가장 복잡한 소프트웨어 중 하나라, 이런 시도가 **한계 평가의 기준점**이 될 것임

- 2만 줄로 브라우저를 만든다는 게 잘 상상이 안 됨  
  zlib만 해도 1.2만 줄인데, 뭔가 빠진 게 아닌가 싶음  
  OS 렌더링 호출만 하는 건지 궁금함
  - Linux에서는 X11, glib, 그래픽 포맷, 암호화 등 **78개의 동적 라이브러리**를 링크함
  - Rust 의존성은 없고, OS 기본 프레임워크를 사용함  
    어떤 라이브러리를 쓰는지는 README에 명시되어 있음

- 내가 실행해보니 렌더링이 꽤 **혼란스러움**  
  링크 색상이나 밑줄이 일관되지 않고, Windows에서는 뒤로가기 버튼이 작동하지 않음  
  그래도 HN 홈페이지나 Simon의 블로그는 꽤 잘 렌더링함
  - 이 브라우저는 독립 제품이라기보다 [Cursor의 scaling-agents 글](https://cursor.com/blog/scaling-agents)에 대한 **응답 프로젝트**임  
    LOC가 적으면서 비슷한 기능을 구현하는 게 목표였음  
    기본 스타일시트가 없어서 링크 색이 일정하지 않음  
    Windows 11에서는 뒤로가기 버튼이 작동함. 혹시 Windows 10이라면 그게 원인일 수도 있음

- Simon의 블로그를 렌더링하는 게 AI 브라우저의 **대표 목표**가 될 듯함  
  하지만 아직은 진짜 브라우저라기보단 렌더러 수준임  
  Servo 같은 프로젝트에서 AI가 **API 구현**을 보완하는 방향이 더 인상적일 것임
  - 동의함. 이건 브라우저라기엔 부족하고, 기본 HTML도 제대로 렌더링 못하며 자주 크래시함  
    그래도 Cursor의 시도보단 낫고, “**컴파일된다**”는 점이 최소한의 진전임

- 혼자 했다면 얼마나 걸렸을지 궁금함  
  에이전트의 도움을 이해하려면 그 가이드에 들어간 **전문성의 깊이**를 알고 싶음
  - 혼자서는 아마 불가능했을 것임  
    Rust는 알지만 X11이나 macOS, Windows API는 몰라서 시작조차 어려웠을 것임  
    다만 테스트·인프라·설계 경험이 많아 에이전트와 협업하는 데 도움이 되었음
  - [sloccount 도구](https://tools.simonwillison.net/sloccount)로 계산해보니  
    이 프로젝트는 2000년 기준 **4.58 인년, 61만 달러**,  
    2025년 기준으로는 **5.6년, 138만 달러** 규모로 추정됨

- 이 글이 흥미로운 이유는 결과물이 아니라 **만드는 과정과 제약 조건**에 초점을 맞췄기 때문임  
  대부분의 글은 결과물이나 작성자에 집중하지만, 이건 **프로세스 중심의 통찰**을 줌
  - 나도 Cursor 관련 글을 썼던 사람으로서, 그들의 “성공” 정의가 점점 이해되지 않았음  
    그래서 무엇이 진짜 어려운 부분이고, 어떤 과정이 잘못된 건지를 탐구하는 게 더 의미 있다고 느낌

- 인상적인 작업임  
  **접근성(Accessibility)** 을 Rust 의존성 없이 구현하려면 어떻게 해야 할지 궁금함  
  Windows/macOS는 UI Automation과 NSAccessibility로 가능하지만, X11에서는  
  1) D-Bus로 AT-SPI를 새로 구현하거나  
  2) 기존 D-Bus C 라이브러리를 쓰거나  
  3) GTK나 Qt를 사용하는 방법이 있음
