같은 클로드인데 $9짜리는 게임이 안 된다 | DAKER 커뮤니티
한 줄 프롬프트로 레트로 게임 메이커를 만들라고 했다. 솔로 에이전트는 20분, 9달러. 화면은 그럴듯했다. 플레이를 누르니 캐릭터가 움직이지 않았다.
같은 모델을 하네스에 넣으니 6시간, 200달러. 기획자가 한 줄을 16개 기능으로 키웠고, 만드는 자와 채점하는 자를 갈랐다. 이번엔 움직였다.
차이는 모델이 아니다. 구조다. 더 센 클로드를 기다리는 동안, 이미 있는 클로드의 빈칸을 바깥에 빼는 쪽이 먼저다.
퀀텀점프클럽이 Anthropic 엔지니어링 노트 Harness design for long-running application development(2026년 3월 24일, Prithvi Rajasekaran)를 30분에 압축한 영상을 바탕으로 쓴다. 방송용 요약이 아니라, 오늘 세션에 바로 심을 실험 노트다.
9달러짜리 결과물은 왜 죽었나
프롬프트는 한 줄이었다. 레벨 에디터, 스프라이트 에디터, 엔티티 행동, 플레이 테스트가 있는 2D 레트로 게임 메이커를 만들라는 것. 솔로 런은 그 기대를 화면으로 먼저 보여준다. 패널이 있고, 캔버스가 있고, 플레이 버튼이 있다. 그래서 처음 10초는 된 것처럼 보인다.
클릭하면 빈 곳이 드러난다. 고정 높이 패널이 뷰포트를 낭비하고, 스프라이트와 엔티티를 먼저 만들라는 순서가 UI에 없다. 엔티티는 화면에 뜨지만 입력에 반응하지 않는다. 코드 안을 보면 엔티티 정의와 게임 런타임의 배선이 끊겨 있다. 겉은 앱이고 속은 더미다. 이 실패는 모델이 멍청해서가 아니라, 자기 작업을 후하게 채점하고 창이 차면 일을 일찍 접기 때문에 생긴다.
하네스 런은 같은 한 줄에서 출발했다. 플래너가 10개 스프린트, 16개 기능 스펙을 썼다. 스프라이트 애니메이션, 행동 템플릿, 효과음과 음악, AI 스프라이트·레벨 생성, 공유 링크 내보내기까지 올라갔다. 플래너에게 프론트 디자인 스킬을 읽게 하니, 스펙 안에 시각 언어가 먼저 붙었다. 캔버스가 화면을 채웠고, 패널 비율이 맞아졌고, 플레이 모드에서 캐릭터가 움직였다.
완벽한 게임은 아니었다. 점프가 플랫폼에 겹치는 거친 물리, 넘지 못하는 벽, 작업 순서가 여전히 안 보이는 UX가 남았다. 그래도 된다와 안 된다의 차이다. 비용은 20배가 넘는다. 품질 차이는 가격표보다 먼저 눈에 들어온다.
모델이 혼자 못 하는 실패는 두 개다
Context Anxiety. 창이 차면 일을 일찍 접는다. 모델은 창의 끝을 느끼면 남은 기능을 대충 닫고 완료를 선언한다. 컴팩션은 앞부분을 요약해 같은 세션을 이어 가므로, 불안의 원인이 창 안에 남는다. 리셋은 창을 비우고 인수인계 문서로 다음 에이전트를 붙인다. 연속성은 파일에 두고, 머리는 비운다. Sonnet 4.5에서는 이 리셋이 필수였다. 창을 줄이는 것과 판을 갈리는 것은 다른 일이다. 대가는 있다. 오케스트레이션, 토큰, 지연이 늘어난다. 인수인계 파일에 다음 할 일과 현재 상태가 부족하면 리셋은 그냥 기억상실이다.
Self-Evaluation Bias. 자기가 만든 작업을 후하게 채점한다. 디자인은 정답이 없으니 특히 심하다. 테스트가 있는 코드에서도 큰일 아니라며 통과시킨다. 만드는 자와 채점하는 자를 가르면, 채점자를 깐깐하게 튜닝하는 일이 가능해진다. 한 몸으로는 그 튜닝이 거의 안 된다. 평가자도 LLM이라 관대한 성향은 남는다. 다만 관대한 생성기를 고치는 것보다, 회의적인 평가기를 키우는 편이 훨씬 쉽다. 바깥 피드백이 생기면 생성기는 비로소 맞설 대상이 생긴다.
플래너, 생성기, 평가기
이 구조는 GAN에서 왔다. 생성과 판정을 한 모델에 맡기지 않는다. 프론트 실험에서 먼저 검증하고, 그다음 풀스택 장시간 코딩으로 옮겼다.
플래너는 1~4문장을 제품 스펙으로 키운다. 구현 디테일은 적지 않는다. 틀린 스펙이 아래로 흘러가면 전체가 죽는다. 무엇을 납품할지만 잠그고, 경로는 만들면서 찾게 한다. 예전 하네스는 사람이 상세 스펙을 미리 써야 했다. 플래너는 그 입구를 자동화한다. 범위를 야심 있게 잡되, 제품 맥락과 상위 설계만 적는다.
생성기는 한 기능씩 만든다. 예전 하네스는 스프린트로 잘랐다. 매 스프린트 전에 평가기와 계약을 맺는다. 무엇이 완료인지, 무엇으로 시험할지를 코드보다 먼저 적는다. 스펙이 일부러 높기 때문에, 이 계약이 유저 스토리와 시험 가능한 구현 사이를 잇는다. 생성기가 제안하고 평가기가 검토한다. 합의될 때까지 파일을 주고받는다.
평가기는 Playwright로 화면을 직접 클릭한다. 스크린샷만 보지 않는다. UI, API, DB 상태를 사용자처럼 두드린다. 스프린트 계약의 기준을 하나하나 때리고, 하나라도 임계값 아래면 스프린트는 실패다. 3번 스프린트 레벨 에디터만 기준이 27개였다. 사각형 채우기가 시작과 끝점만 찍는 버그, 삭제 키 조건이 어긋난 버그, FastAPI가 reorder를 frame_id로 먹은 422. 로그가 이 정도로 구체적이어야 고치는 비용이 안 든다.
처음부터 평가기는 약했다. 문제를 찾고도 괜찮다고 승인했다. 표면만 훑고 가장자리 버그를 놓쳤다. 사람 판단과 어긋난 로그를 프롬프트에 되먹이는 일을 여러 번 하고 나서야 QA가 일을 했다. 그래도 더 깊은 기능, 직관에 어긋나는 인터랙션, 작은 레이아웃은 남았다. 솔로 런의 핵심 기능이 아예 안 되던 것과 비교하면 리프트는 분명하다.
프론트 실험에서는 미를 점수로 바꿨다. 디자인 품질, 독창성, 크래프트, 기능. 클로드는 크래프트와 기능은 기본으로 한다. 독창성과 품질을 무겁게 두고, 보라색 그라데이션과 흰 카드 같은 슬롭을 감점하니 방향이 바뀌었다. 네덜란드 미술관 사이트는 아홉 번째까지 평범한 다크 랜딩이었고, 열 번째에 CSS 원근의 3D 전시실로 뒤집혔다. 한 번에 나오지 않는다. 다섯에서 열다섯 번 돌린다. 점수는 대체로 오르지만, 가운데 회차를 더 좋아하는 경우도 있었다. 기준 문장 하나가 결과의 성격을 민다. 박물관 급이라는 한 줄이 시각을 한쪽으로 모았다.
부탁과 강제를 한 파일에 두지 마라
CLAUDE.md는 요청이다. 읽고 따르라는 메모는 부탁이다. 위험한 동작은 훅으로 자른다. 부탁은 무시될 수 있고, 훅은 우회가 없다. 영상에서 51개 에이전트, 85개 넘는 스킬, 21개 보안 훅, 90개 규칙은 자랑이 아니라 메운 흔적이다. 못 하는 게 없으면 하네스를 얹지 마라.
오늘 할 일은 그 숫자를 복제하는 게 아니다. 모델이 반복해서 실패하는 구멍 하나를 고르고, 그걸 파일·훅·평가자 중 하나로 바깥에 빼는 일이다.
- 문서 첫 세 줄에 목표, 금지 경로, 완료 증거를 쓴다. 이 세 줄이 없으면 클로드코드는 같은 자리에서 다시 넘어진다.
- 평가자가 브라우저로 눌러볼 한 문장을 계약에 넣는다. 화면이 있다와 동작한다를 같은 기준으로 보지 않는다.
- 자기 채점은 기록으로만 남기고, 통과 권한은 바깥 평가자에게 준다.
- 막히는 지점이 두 번 반복되면 그 지점을 훅으로 승격한다. 규칙은 부탁, 훅은 강제다.
- 인수인계 파일에는 다음 할 일, 현재 상태, 실패한 가설을 남긴다. 창을 비울 때 이 파일이 기억이다.
그다음 배송한다. 배포가 제출이다. 화면이 예쁜 상태로 멈추지 말고, 다른 사람이 링크를 열어 한 번 성공하는 지점까지 간다.
모델이 세지면 하네스를 걷어라
모든 부품은 모델이 이걸 혼자 못 한다는 가정이다. 가정이 틀렸거나 모델이 커지면 비계는 비용이 된다. 한 번에 크게 줄이면 무엇이 하중을 받는지 안 보인다. 부품을 하나씩 떼고 결과를 보는 쪽이 맞다.
Opus 4.5는 컨텍스트 리셋과 스프린트가 필요했다. Opus 4.6이 더 오래, 더 큰 코드베이스에서 버티자 스프린트를 걷고, 평가를 마지막 한 번으로 옮겼다. 플래너와 평가기는 남겼다. 플래너가 없으면 생성기는 범위를 작게 잡고 시작한다. 평가기는 모델이 혼자 잘하는 구간에서는 오버헤드고, 가장자리 작업에서는 여전히 리프트다. 고정 스위치가 아니다.
검증은 브라우저 DAW였다. 한 줄로 웹 오디오 기반의 풀 기능을 만들라는 것. 약 4시간, 125달러. 빌더가 두 시간 넘게 한 세션으로 버텼다. 평가기는 1라운드에서 클립 드래그, 신스 패널, EQ 커브가 디스플레이만 있다고 적었고, 2라운드에서 마이크 녹음 스텁, 클립 분할, 그래픽 이펙터를 다시 집어냈다. 생성기는 혼자 두면 핵심을 껍데기로 남겨 둔다. 마지막 마일을 잡는 쪽이 평가기다.
결과물은 프로툴스가 아니다. 클로드는 소리를 듣지 못하므로 음악적 취향의 피드백 루프는 약하다. 그래도 편곡 뷰, 믹서, 트랜스포트가 브라우저에서 움직였고, 에이전트가 템포와 키를 정하고 멜로디와 드럼을 깔고 리버브를 넣을 수 있었다. 솔로 게임 메이커가 입력을 먹통으로 끝낸 자리와 비교하면, 이 차이는 모델 업데이트가 아니라 판정 위치의 차이다.
더 센 모델을 기다리지 말고, 모델이 스스로 못 하는 판정을 구조로 빼라. 새 모델이 오면 구조를 다시 저울질해라. 흥미로운 하네스 조합은 줄어들지 않는다. 자리가 옮겨갈 뿐이다.
오늘 세션에 심는 순서
새 에이전트부터 51개를 깔지 마라. 지금 쓰는 클로드코드 창 하나에, 아래 네 칸만 넣는다.
- 한 줄 목표. 오늘 배포 링크에서 다른 사람이 성공해야 하는 동작 하나.
- 금지 경로. 예전에 실패했거나 더 이상 쓰지 않는 파일, API, 폴더.
- 완료 증거. 평가자가 브라우저에서 클릭해 확인할 문장 하나. 화면이 있다와 동작한다를 나눠 적는다.
- 실패 승격. 같은 구멍이 두 번 나오면 그 구멍을 훅으로 옮긴다. 세 번째에 또 부탁하지 않는다.
이 네 칸이 갖춰지면 그때 플래너와 평가기를 붙인다. 칸이 비어 있으면 에이전트를 늘려도 같은 더미가 나온다.
원문 영상: 이것이 격차를 만듭니다. 클로드코드 하네스 엔지니어링 — 퀀텀점프클럽(QJC)
원문 노트: Anthropic — Harness design for long-running application development