3 minute read

회사에서 하루 종일 바이브 코딩을 시키다가 집에 돌아와 게임을 하는데 문득 든 생각이 있었다고 한다. 일할 때만 지루한 걸 시키면 뭐하나, 놀 때도 대신하게 하자. 그 장난스러운 발상이 9일 뒤 712달러와 2만 번이 넘는 도구 호출로 끝났다.

r/ClaudeCode에 올라온 u/Bogdanilaa의 게시글이 화제다. Claude Opus 5.5가 발두르스 게이트 3(BG3)를 처음부터 엔딩까지, 아무도 컨트롤을 건드리지 않은 채 클리어한 것. 마지막 보스 네더브레인을 12번째 시도에서 처치했고, 엔딩 크레딧이 올라갔다.

쓰레기 게임 하나 깨는 걸 가지고, 싶을 수 있다. 하지만 이 프로젝트의 진짜 재미는 클리어 여부가 아니라 그걸 가능하게 만든 설계에 있다.

게임과 모델 사이에 놓인 것

먼저 하네스부터 보자. Claude Code를 claude -p로 띄우되 내장 도구는 전부 꺼버렸다. 모델이 쓸 수 있는 도구는 직접 파이썬으로 짠 MCP 서버 하나뿐. 이 서버가 TCP로 게임 내부의 Lua 모드와 통신한다.

여기서 눈여겨볼 제약이 하나 있다. 모드는 파티가 지각할 수 있는 정보만 전달한다. 게임 엔진 자체의 시야 판정을 써서, 보이는 것만 보고하는 식이다. 스크린샷은 Vulkan 레이어에서, 클릭 입력은 SDL 심을 거쳐 들어간다. 전장을 god mode로 내려다보는 게 아니라, 플레이어가 앉아서 화면을 보듯이 정보가 흘러들게 만든 셈이다.

게임은 크래시도 했다. 11번. 그때마다 별도의 러너가 알아서 복구했다. 사람이 지켜볼 필요가 없었다는 얘기다.

99개의 세션, 그리고 기억의 층위

이 프로젝트에서 가장 공들인 부분은 따로 있었다. 메모리다.

세션은 매번 새로 시작한다. claude -p를 fresh하게 띄우고, 중앙값 24분짜리 세션을 99번 돌렸는데 컨텍스트 압축은 단 한 번도 없었다고 한다. 그 대신 세션이 끝나기 전에 반드시 HANDOFF.md를 남겨야 한다. 다음 세션은 캐릭터 시트와 플레이 요약, 그리고 그 인계 문서를 읽으며 시작한다.

도구 결과마다 시계를 박아 넣은 것도 재밌는 디테일이다. 모델이 스스로 마무리 타이밍을 잡도록. 세션 종료 시점에는 메모리를 린트하고 git에 커밋하는데, 인계 문서가 빠져 있으면 다시 작업으로 돌려보낸다.

메모리 호출은 총 1,075회. 그중 읽기나 검색은 155회뿐이었다. 훨씬 많이 쓰고, 조금만 읽는 구조라는 얘기인데, 세션 사이사이에 “키퍼 패스”가 돌면서 방대한 로그를 다듬은 결과물로 접어주기 때문에 가능한 일이다. 최종적으로 메모리 저장소에는 157개의 커밋, 약 2만 3천 단어의 정리된 노트가 쌓였고, lessons.md에는 67개의 규칙이 남았다. 형식이 묘하다. “어떤 상황에서: 무슨 일이 있었다 → 그래서 다음엔 이렇게” 식이다. 전투 기록에서 증류해낸 나름의 병법서인 셈이다.

믿음의 도약, 두 번의 건너기

가장 인상적인 대목은 샤의 성소에 나오는 “믿음의 도약(Faith-Leap)” 시련이다. 절벽 사이를 보이지 않는 바닥을 밟고 건너야 하는데, 유일한 힌트는 바닥의 모자이크다. 한 발만 삐끗해도 추락한다.

첫 클리어를 하고 나서 작성자가 감사를 돌려봤더니 문제가 발견됐다. 루트 도구가 숨겨진 통로 정보를 새고 있었던 것. 즉 첫 번째 건너기는 사실 컨닝이었다. 그래서 도구를 고치고 같은 세이브에서 다시 돌렸다. 이번엔 모자이크 사진만 들고.

36분, 674번의 도구 호출, 24달러, 사망 1회, 리로드 11번. 그리고 건넜다. 성공 여부보다 이 과정이 더 많은 걸 말해준다. 자기 시스템의 구멍을 스스로 점검하고, 조건을 동일하게 맞춘 뒤 다시 검증하는 태도는 그냥 재미로 끝내는 프로젝트에서는 안 나온다.

왜 주목할까

비용 구조도 흥미롭다. 전체적으로 캐시된 입력 토큰이 22억 개를 넘는데, 출력은 350만 개 남짓이다. 프롬프트 캐싱이 없었다면 비용은 몇 배로 불었을 거라고 한다. 긴 호흡의 에이전트 작업에서 캐싱이 단순한 절감 장치가 아니라 존속 조건에 가깝다는 걸 보여주는 사례다.

게임 본연의 특성도 벤치마크로서 매력적이다. 코딩 평가와 달리 판정이 누적된다. 지금 쓴 스펠 슬롯은 다음 긴 휴식까지 사라지고, 죽은 동료는 죽은 채로 남는다. 실제로 재이라는 끝까지 살아나오지 못했다. 한 번의 실수가 회복 불가능해지는 세계에서 39시간짜리 플레이를 완주했다는 것 자체가 에이전트의 지속성에 대한 시험이다.

작성자는 여기서 멈추지 않고 이걸 벤치마크로 만들 계획이다. 짧은 시나리오를 MCP 클라이언트라면 누구나 플레이할 수 있게 뽑아내고, 성공 여부와 시도 횟수, 시간, 비용으로 점수를 매긴다. 오프닝인 나우틸로이드 탈출은 이미 9회 중 9회 성공, 회당 1.50달러 수준. Codex와 Gemini도 이미 연결해 놓고 대기 중이라고 한다.

정리

재미로 시작한 실험이 어느새 에이전트 신뢰성 연구처럼 보이는 순간이 온다. 세션을 짧게 쪼개고 인계 문서로 이어 붙이는 구조, 쓰기 위주의 메모리와 별도의 정리 패스, 그리고 자기 하네스의 결함을 찾아내 재검증하는 과정. 어떤 하나를 떼어놓아도 에이전트 워크플로 설계에 그대로 가져다 쓸 수 있는 교훈이다.

LGTM(게임 플레이 관점에서)과 함께, 다음 모델들의 성적표가 궁금해지는 소식이었다.