AI Docs

장기 실행 앱을 위한 하네스 설계

Anthropic Labs의 Prithvi Rajasekaran이 공유하는 프론티어 에이전트 코딩의 핵심 — GAN에서 영감을 받은 멀티 에이전트 구조로 프론트엔드 디자인과 장기 자율 소프트웨어 엔지니어링의 한계를 돌파한 실전 하네스 설계 전략.

하네스 설계는 에이전트 코딩 성능의 핵심이다.

모델이 좋아져도 흥미로운 하네스 조합의 공간은 줄어들지 않습니다 — 그것은 이동할 뿐이며, AI 엔지니어의 일은 다음 새로운 조합을 찾는 것입니다.

1. 단순 구현이 실패하는 이유

이전 실험에서 initializer 에이전트로 작업을 분해하고 coding 에이전트가 기능 단위로 구현하는 방식이 효과적이었지만, 복잡한 작업에서는 여전히 두 가지 핵심 실패 모드가 관찰되었습니다.

컨텍스트 일관성 상실

컨텍스트 윈도우가 채워지면 모델의 일관성이 떨어집니다. 일부 모델은 "컨텍스트 불안(context anxiety)"을 보이며, 한계에 가까워졌다고 판단하면 작업을 조기에 마무리하려 합니다. Compaction(요약)만으로는 불충분하며, 컨텍스트 리셋(완전히 새로운 에이전트 + 구조화된 핸드오프)이 필수적입니다.

자기 평가의 관대함 편향

에이전트에게 자신의 작업을 평가하라고 하면, 품질이 뻔히 낮아도 자신감 있게 칭찬합니다. 특히 디자인 같은 주관적 작업에서 심각합니다. 생성과 평가를 분리하면, 독립적인 평가자를 회의적으로 튜닝하는 것이 생성자를 자기 비판적으로 만드는 것보다 훨씬 다루기 쉬워집니다.

2. 프론트엔드 디자인: 주관적 품질을 채점 가능하게

GAN(적대적 생성 신경망)에서 영감을 받아, generator와 evaluator 에이전트를 분리한 피드백 루프를 설계했습니다. 핵심 통찰: "이 디자인이 아름다운가?"는 일관되게 답하기 어렵지만, "우리의 디자인 원칙을 따르는가?"는 구체적으로 채점할 수 있습니다.

4가지 채점 기준

높은 가중치

디자인 품질

부분들의 조합이 아닌 하나의 일관된 전체로 느껴지는가? 색상, 타이포그래피, 레이아웃, 이미지가 결합되어 고유한 분위기와 아이덴티티를 만드는지 평가합니다.

높은 가중치

독창성

의도적인 창작 결정이 보이는가? 템플릿 레이아웃, 라이브러리 기본값, "보라색 그래디언트 위 흰색 카드" 같은 AI 생성 패턴은 감점됩니다.

완성도 (Craft)

기술적 실행력 — 타이포그래피 위계, 간격 일관성, 색상 조화, 대비비. 창의성이 아닌 역량 점검입니다. 대부분 기본적으로 잘 하지만, 실패하면 기본기가 부족한 것입니다.

기능성

미학과 독립적인 사용성. 사용자가 인터페이스의 기능을 이해하고, 주요 액션을 찾고, 추측 없이 작업을 완료할 수 있는지 평가합니다.

피드백 루프 구조: Claude Agent SDK 위에 구축. Generator가 HTML/CSS/JS 프론트엔드를 생성하면, Evaluator가 Playwright MCP로 실제 페이지를 직접 탐색하며 스크린샷을 찍고 채점합니다. 이 피드백이 다시 Generator에 입력되어 5~15회 반복합니다. 전체 실행은 최대 4시간.

창발적 도약 사례: 네덜란드 미술관 웹사이트

9번째 반복까지 깔끔한 다크 테마 랜딩 페이지를 만들었지만, 10번째 사이클에서 접근 방식을 완전히 폐기하고 사이트를 공간적 경험으로 재구상했습니다 — CSS perspective로 렌더링된 체크무늬 바닥의 3D 방, 벽에 자유롭게 배치된 작품, 스크롤 대신 문(doorway) 기반 네비게이션. 단일 패스 생성에서는 본 적 없는 종류의 창의적 도약이었습니다.

3. 풀스택 코딩으로 확장: 3-에이전트 아키텍처

프론트엔드 디자인 실험의 GAN 패턴을 풀스택 개발에 적용했습니다. Generator-Evaluator 루프는 소프트웨어 개발 라이프사이클의 코드 리뷰와 QA 역할에 자연스럽게 매핑됩니다.

Planner (계획 에이전트)

1~4문장의 간단한 프롬프트를 받아 완전한 제품 스펙으로 확장합니다. 세부 기술 구현보다 제품 컨텍스트와 상위 기술 설계에 집중하도록 유도합니다. 세부 사항을 미리 지정하면 오류가 하위 구현으로 전파될 수 있기 때문입니다. AI 기능을 스펙에 녹여 넣도록 지시합니다.

Generator (생성 에이전트)

스프린트 단위로 기능을 하나씩 구현합니다. React + Vite + FastAPI + SQLite(후에 PostgreSQL) 스택. 각 스프린트 시작 전에 Evaluator와 스프린트 계약을 협상하여 "완료"의 정의를 합의합니다. 코드 작성 전에 무엇을 만들고 어떻게 검증할지 먼저 정합니다.

Evaluator (평가 에이전트)

Playwright MCP로 실행 중인 앱을 사용자처럼 클릭하며 테스트합니다. UI 기능, API 엔드포인트, DB 상태를 검사하고, 제품 깊이/기능성/시각적 디자인/코드 품질 기준으로 채점합니다. 각 기준에 하드 임계값이 있으며, 하나라도 미달하면 스프린트가 실패하고 구체적인 피드백이 Generator에게 전달됩니다.

Evaluator가 잡아낸 실제 버그 예시

스프린트 계약 기준Evaluator 발견 사항
사각형 채우기 도구로 클릭-드래그하여 영역 채우기FAIL — 도구가 영역을 채우는 대신 드래그 시작/끝 지점에만 타일 배치. fillRectangle 함수가 존재하지만 mouseUp에서 제대로 트리거되지 않음.
배치된 엔티티 스폰 포인트 선택 및 삭제FAIL — Delete 키 핸들러가 selection selectedEntityId 둘 다 설정되어야 하지만, 엔티티 클릭 시 selectedEntityId만 설정됨.
API로 애니메이션 프레임 순서 변경FAIL PUT /frames/reorder 라우트가 /{frame_id} 뒤에 정의되어 FastAPI가 "reorder"를 정수로 파싱하려다 422 에러 반환.

4. Solo vs. 하네스 비교: 레트로 게임 메이커

"레벨 에디터, 스프라이트 에디터, 엔티티 행동, 플레이 가능한 테스트 모드를 포함하는 2D 레트로 게임 메이커를 만들어줘"라는 동일한 한 줄 프롬프트로 Solo 에이전트와 풀 하네스를 비교했습니다.

하네스소요 시간비용
Solo20분$9
풀 하네스6시간$200

Solo 에이전트 결과

  • x레이아웃이 공간을 낭비 (고정 높이 패널)
  • x워크플로우가 경직되고 UI 가이드 부재
  • x핵심 기능인 게임 플레이가 완전히 고장
  • x엔티티와 게임 런타임 간 연결 끊김

풀 하네스 결과

  • +16개 기능 스펙, 10개 스프린트로 체계적 구현
  • +풀 뷰포트 캔버스, 일관된 비주얼 아이덴티티
  • +게임 플레이 실제 작동 (물리엔진 약간 거칠지만)
  • +Claude 통합 AI 기능으로 프롬프트 기반 게임 생성

5. 하네스 반복: Opus 4.6과 단순화

하네스의 모든 구성 요소는 "모델이 혼자 할 수 없는 것"에 대한 가정을 인코딩합니다. 이 가정들은 모델이 개선될 때마다 재검토할 가치가 있습니다.

핵심 원칙: "가능한 가장 단순한 솔루션을 찾고, 필요할 때만 복잡성을 증가시킨다." — Anthropic Building Effective Agents

스프린트 구조 제거

Opus 4.6은 스프린트 분해 없이도 2시간 이상 연속으로 일관된 코딩을 수행했습니다. 더 신중하게 계획하고, 장기 에이전트 작업을 더 오래 유지하며, 더 큰 코드베이스에서 안정적으로 동작합니다. 컨텍스트 리셋도 불필요해져 자동 compaction으로 충분합니다.

Evaluator의 역할 변화

Evaluator를 스프린트마다가 아닌 실행 끝에 한 번만 배치. 모델 역량이 올라가면 Evaluator가 불필요해지는 구간이 늘어나지만, 여전히 모델 역량의 경계에 있는 작업에서는 실질적 가치를 제공합니다. Evaluator는 고정된 예/아니오 결정이 아니라, 작업 복잡도에 따른 가변 결정입니다.

6. 업데이트된 하네스 결과: 브라우저 DAW

"Web Audio API를 사용하여 브라우저에서 완전한 기능의 DAW를 만들어줘"라는 프롬프트로 테스트했습니다. 총 3시간 50분, $124.70.

에이전트 & 단계소요 시간비용
Planner4.7분$0.46
Build (라운드 1)2시간 7분$71.08
QA (라운드 1)8.8분$3.24
Build (라운드 2)1시간 2분$36.89
QA (라운드 2)6.8분$3.09
Build (라운드 3)10.9분$5.88
QA (라운드 3)9.6분$4.06
합계3시간 50분$124.70

최종 앱은 전문 음악 프로덕션 프로그램에는 미치지 못하지만, 작동하는 arrangement view, mixer, transport를 브라우저에서 구현했습니다. 에이전트가 템포와 키를 설정하고, 멜로디와 드럼 트랙을 만들고, 믹서 레벨을 조정하고, 리버브를 추가하는 — 프롬프트만으로 짧은 곡을 만들 수 있었습니다.

QA의 실질적 가치: "앱은 인상적이고 AI 통합도 잘 되지만, 여러 핵심 DAW 기능이 인터랙션 없는 디스플레이 전용이다 — 클립 드래그/이동 불가, 악기 UI 패널(신스 노브, 드럼 패드) 없음, 시각적 이펙트 에디터(EQ 커브, 컴프레서 미터) 없음. 이것은 엣지 케이스가 아니라 DAW를 사용 가능하게 만드는 핵심 인터랙션이다."

7. 핵심 교훈

01

모델 트레이스를 읽고 튜닝하라

대상 모델로 실험하고, 현실적인 문제에서의 트레이스를 읽고, 원하는 결과를 달성하도록 성능을 튜닝하는 것이 항상 좋은 실천입니다.

02

작업을 분해하고 전문 에이전트를 배치하라

복잡한 작업에서는 작업을 분해하고 문제의 각 측면에 특화된 에이전트를 적용하여 개선 여지를 확보할 수 있습니다.

03

새 모델이 나오면 하네스를 재검토하라

새 모델이 나올 때마다 하네스를 재검토하여 더 이상 성능에 기여하지 않는 부분을 제거하고, 이전에는 불가능했던 더 큰 역량을 달성하기 위한 새로운 부분을 추가합니다.

04

흥미로운 하네스 조합의 공간은 줄어들지 않는다

모델이 개선됨에 따라 하네스 조합의 공간은 축소되지 않고 이동합니다. AI 엔지니어의 일은 다음 새로운 조합을 계속 찾는 것입니다.