방을 나가는 것도 어려웠다
AI는 생각보다 자주 길을 잃었고, 사람들은 그 실패를 깎기 시작했다.
행사에 온 사람들은 포켓몬을 하러 온 것처럼 보였다.
하지만 시간이 지나자, 그 방에서 가장 많이 보인 것은 포켓몬이 아니었다. 사람들은 화면 속 캐릭터보다, 그 캐릭터를 움직이려다 계속 실패하는 에이전트를 보고 있었다.
허도영님은 오기 전까지 이렇게 생각했다.
“AI를 좀 잘 다룬다면, 그래도 뒤에서 3등 안에는 들 수 있지 않을까.”
기대는 금방 무너졌다.
방 하나를 벗어나는 것도 어려웠다. 에이전트는 목표를 잊었고, 같은 곳을 돌았고, 길을 헤맸다. 허도영님은 실제로 해보니 방을 벗어나는 것마저 힘들었고, 에이전트가 생각보다 똑똑하지 않다는 것을 체감했다고 말했다.
그 실패는 웃겼다.
그런데 웃기기만 한 것은 아니었다.
실패가 보일수록, 사람들은 조금씩 다른 것을 보기 시작했다. 문제는 모델이 얼마나 똑똑한가가 아니었다. 에이전트가 무엇을 보고 있는지, 무엇을 기억하고 있는지, 어디서 자기 판단을 틀렸는지 확인할 수 있는 구조가 더 중요해졌다.
게임을 시작하기 전에 토큰이 다 나갔다
최예슬님은 반대 방향에서 시작했다.
평소 하네스를 쓸 때는 “이런 루프 만들어서 알아서 돌려줘”에 가까웠다. 그런데 이번에는 달랐다. 포켓몬을 하는 에이전트를 직접 설계하고, 더 효율적으로 결과를 내는 하네스를 만들어보고 싶었다.
그래서 게임을 먼저 실행하기보다, 하네스부터 깎고 시작하려 했다. 방향성을 먼저 잡고, 구조를 정리한 뒤 진행하려는 쪽이었다.
그런데 게임을 제대로 시작하기도 전에 토큰이 이미 동났다.
막상 진행하려고 하니 자잘한 오류도 계속 나왔다. 에이전트는 한 곳에 머물렀고, 같은 행동을 반복했고, 기대한 흐름대로 가지 않았다.
최예슬님은 충분히 목표를 설명했다고 생각했다. 그런데 에이전트는 목표를 찾지 못하고 길을 헤맸다.
“길을 헤매면 안 된다”고 하자, 이번에는 정말 길만 안 헤매고 뺑글뺑글 돌았다.
그 장면에서 질문이 바뀐다.
어떻게 하면 더 똑똑한 답을 받을 수 있을까. 이 질문만으로는 부족했다.
어디까지 미리 설계해야 할까. 어디서부터는 실행하면서 고쳐야 할까. 어떻게 해야 시간과 토큰을 덜 태우면서 하네스를 고도화할 수 있을까.
하네스는 처음부터 완성된 구조가 아니었다. 너무 많이 생각하고 시작하면 게임을 시작하기도 전에 토큰이 닳았다. 너무 적게 설계하고 시작하면 에이전트가 같은 실수를 반복했다.
최예슬님이 만난 어려움은 그 사이의 균형에 가까웠다.
아직 인간이 먹히진 않았다
오하임님은 평소 AI로 바이브 코딩을 하며 MVP나 웹사이트를 만들고, 로컬 환경을 세팅하는 작업을 주로 해왔다고 했다.
이번에는 조금 달랐다.
하네스를 통해 게임의 목적을 정하고, 분석부터 실행까지 시키는 일을 해보면 재미있겠다고 생각했다. AI가 단순히 코드를 짜는 것을 넘어, 게임 안에서 목표를 이해하고 움직일 수 있는지 보고 싶었던 것이다.
그런데 직접 해보니 느낌이 달라졌다.
“AI에게 인간이 곧 먹힐 것이다”라고 생각했는데, 막상 해보니 아직은 아니었다고 했다.
이 말은 농담처럼 들리지만, 꽤 정확했다.
AI는 버튼 하나로 게임을 이해하고, 목표를 잡고, 길을 찾고, 전투를 판단하고, 실패를 복구하지 못했다. 사람이 더 체계적으로 지시해야 했다. 무엇을 봐야 하는지 알려줘야 했고, 어디서 멈춰야 하는지 정해야 했고, 잘못된 행동을 다시 고쳐줘야 했다.
AI가 사람을 밀어내는 장면은 아니었다.
오히려 사람의 역할이 더 선명해지는 장면이었다.
직접 조작하는 손은 줄어들 수 있다. 하지만 목표를 정하고, 실패를 읽고, 다음 시도를 설계하는 일은 여전히 사람에게 붙어 있었다. 손으로 버튼을 누르던 플레이어는, 어느새 에이전트를 가르치는 사람으로 이동하고 있었다.
검은 화면으로 넘어간 사람
김예림님은 스스로를 “느낌 개발자”라고 말했다.
평소에는 VSCode에서 Claude Code 플러그인으로 작업했다. 새까만 순정 터미널 화면에는 아무래도 거부감이 있었다. 어렵다기보다, 굳이 그 화면으로 들어갈 일이 없었다.
그날은 달랐다.
포켓몬 게임을 화면 공유로 띄우자 비효율적인 지점이 많았다. 결국 어쩔 수 없이 터미널을 열었다. 배우려고 연 것이 아니라, 불편함이 그쪽으로 밀어낸 것이다.
김예림님은 그록 API도 처음 연결했다.
그런데 집에 와서야 알게 됐다. API를 연결은 했지만, 정작 게임을 플레이한 것은 그록이 아니었다. 그때 움직이고 있던 것은 Claude Opus였다.
단순한 실수처럼 보일 수 있다.
하지만 그 방의 작업 방식이 조금 드러난다. 모델 이름을 완벽히 구분하고 시작하는 것보다, 일단 움직이게 만들고, 실패를 보고, 다시 하네스를 고치는 흐름이 먼저였다.
김예림님은 처음 프롬프트를 이렇게 줬다.
“게임에서 AI가 헤매는 장면을 관찰하고, 하네스를 하나씩 업데이트하면서 초록마을까지 보내는 실험을 함께 진행하자.”
에이전트는 이렇게 답했다.
“먼저 1층으로 내려가야 함. 계단은 왼쪽 아래에 있을 것임. 아래로 이동해 봄.”
그런데 계단은 오른쪽 위에 있었다.
에이전트는 자신 있게 틀렸다. 그리고 틀린 방향으로 움직이려 했다.
문장으로 보면 그럴듯한 추론도, 화면에서는 바로 틀린 행동이 된다. 계단이 왼쪽 아래에 없으면, 아무리 그럴듯한 말도 캐릭터를 움직일 수 없다.
처음에는 목표와 실패 개선 로그를 마크다운으로 따로 모아두었다. 어디서 막혔는지, 무엇을 고쳤는지, 다음에 무엇을 시도해야 하는지 적어두는 방식이었다.
그것만으로는 부족했다.
옆에 있던 유준선님과 이야기를 나누며 힌트를 얻었다. 이후 구조가 바뀌었다.
RAM에서 좌표를 읽어오는 스크립트. 배틀 전략을 짜는 스크립트. 목적지까지 경로를 찾는 스크립트.
하네스가 층으로 나뉘기 시작했다.
에이전트에게 “잘해봐”라고 말하는 대신, 세계를 읽을 수 있는 눈과 손잡이를 하나씩 붙인 것이다.
김예림님 파트에서 흥미로운 것은 터미널도, API도, 계단도 아니었다.
한 칸씩 움직이는 AI를 보는 감정이었다.
게임이 시작되면 이름을 설정하는 화면이 나오는데, 그 장면에서 시간을 가장 많이 썼다고 했다. 집에 와서 다시 고쳐보려고 했는데도, 이 부분은 끝까지 잘 풀리지 않았다고 했다.
그런데 마침내 캐릭터가 움직이기 시작했을 때, 한 칸씩 겨우겨우 가는 데도 기특했다고 했다.
자식 첫걸음마를 보는 부모 심정이 이런 건가 싶었다고.
그날 사람들은 AI를 평가만 하고 있지 않았다. 키우고 있었다.
게임보이까지 직접 다룬 사람
유준선님은 다른 경로로 들어갔다.
오래된 포켓몬 게임의 RAM 값과 해시값은 이미 인터넷에 많이 해석되어 있었다. 그 데이터 덕분에 길을 찾거나, 배틀에서 이길 수 있는지 판단하는 일은 생각보다 쉽게 접근할 수 있었다.
어려움은 다른 곳에 있었다.
유준선님은 주어진 레포를 그대로 쓰기보다 PyBoy로 게임보이를 띄우고, 애플리케이션 단에서 직접 다루려 했다. 그러다 보니 입력이 기대와 다르게 들어가거나, PyBoy가 꺼지는 문제가 생겼다.
다른 사람들은 에이전트의 하네스를 만들고 있었지만, 유준선님은 게임보이까지 포함한 기반을 다시 만들고 있는 느낌이었다.
이 장면은 하네스의 경계를 보여준다.
어디까지가 에이전트의 문제이고, 어디부터가 세계를 열어주는 인터페이스의 문제인가. 포켓몬을 플레이하는 AI를 만들려다 보면, 결국 게임 세계가 어떻게 읽히고, 어떤 방식으로 조작되고, 어디서 실패하는지까지 다루게 된다.
사람에게는 화면 하나면 충분하다.
하지만 에이전트에게는 화면만으로 부족할 수 있다. RAM을 읽고, 좌표를 잡고, 입력을 안정화하고, 상태를 다시 확인할 수 있어야 한다. 게임을 하는 AI를 만들려다 보면, 어느새 게임 세계를 에이전트가 읽을 수 있게 다시 여는 작업을 하게 된다.
실패를 대시보드로 바꾼 사람
진민성님은 또 다른 방식으로 접근했다.
그는 에이전트를 그냥 바라보지 않았다. 에이전트가 어디에 있고, 무엇을 하고 있고, 어디서 막히는지 계속 볼 수 있게 만들었다. 아예 대시보드를 만들었다.
그 차이가 컸다.
포켓몬을 사람이 직접 할 때는 화면 하나로 충분하다. 캐릭터가 어디 있는지, 길을 잘못 들었는지, 전투가 시작됐는지 눈으로 보면 된다. 하지만 에이전트가 게임을 할 때는 다르다. 사람은 에이전트가 무엇을 보고 있다고 착각하는지, 어떤 상태를 기억하고 있는지, 어디서 같은 행동을 반복하는지 따로 봐야 한다.
진민성님은 그 장면을 계기판으로 바꿨다.
실패는 사라지지 않았다. 다만 보이기 시작했다.
에이전트가 길을 잃으면, 그냥 “또 헤맨다”로 끝나지 않았다. 어디서 헤매는지, 어떤 상태에서 멈추는지, 다음 행동이 왜 틀어지는지 추적할 수 있었다. 실패가 웃긴 장면에서 멈추지 않고, 다음 수정의 입력값이 됐다.
결국 그는 1위를 했다.
이 결과가 중요한 이유는 순위 때문만은 아니다. 그날의 핵심이 더 똑똑한 모델을 고르는 일이 아니었다는 것을 보여줬기 때문이다. 중요한 것은 실패를 얼마나 빨리 보고, 얼마나 잘 기록하고, 다음 행동으로 다시 연결하느냐였다.
진민성님이 만든 것은 포켓몬 공략 도구라기보다, 에이전트의 상태를 보는 운영 화면에 가까웠다.
그날 여러 사람이 같은 실패를 봤다. 진민성님은 그 실패를 대시보드 위에 올렸다.
그 차이가 에이전트를 조금 더 멀리 보내는 힘이 됐다.
메모리는 진실이 아니다
이상민님은 그날을 포켓몬 행사로만 보지 않았다.
겉으로 보면 포켓몬 레드를 AI가 플레이하게 만드는 자리였다. 하지만 하루 종일 사람들이 이야기한 것은 포켓몬만이 아니었다. 에이전트, 메모리, 하네스, 복구 시스템, 실패 기록, 강화학습 루프가 계속 오갔다.
그가 흥미롭게 본 것도 그 지점이었다.
AI는 생각보다 자주 길을 잃는다. 벽에 수만 번 박고, 대화창에서 같은 버튼을 반복하고, 목표를 잊어버린다.
그래서 그 방의 질문은 “어떤 모델이 더 똑똑한가?”가 아니었다.
더 가까운 질문은 이것이었다.
“멍청한 에이전트를 어떻게 끝까지 밀어붙일 것인가?”
그날 나온 말 중 이상민님이 붙잡은 문장이 있다.
“Memory is not truth. Memory is an index to find evidence.”
메모리는 진실이 아니라, 증거를 찾기 위한 인덱스라는 뜻이다.
이 말은 포켓몬 화면 밖으로 조금 더 넓게 번진다. 에이전트가 이전에 무엇을 했는지 기억한다고 해서, 그 기억이 곧 진실이 되지는 않는다. 기억은 다시 확인해야 할 단서에 가깝다. 화면을 보고, 로그를 보고, 상태를 보고, 그 기억이 맞는지 확인해야 한다.
그래서 하네스가 필요했다.
메모리만으로는 부족했다. 실패 로그가 필요했고, 복구 시스템이 필요했고, 다시 같은 벽에 박지 않게 만드는 루프가 필요했다. 누군가는 그 실패를 대시보드에 올렸고, 누군가는 RAM을 읽었고, 누군가는 마크다운에 실패 개선 로그를 적었다.
이상민님이 본 것은 기술보다 사람들이었다.
자신들이 실패한 로그를 그대로 공개하고, 벽에 수만 번 박은 사례를 웃으며 공유하고, 더 나은 하네스를 같이 고민하는 사람들. 실패를 숨기지 않고, 다음 사람이 이어서 깎을 수 있게 열어두는 사람들.
그는 집에 가서 더 깎아보겠다고 썼다.
그 말이 그날의 분위기를 잘 보여준다.
행사는 끝났지만, 실패는 아직 닫히지 않았다. 누군가는 다시 레포를 열고, 누군가는 로그를 보고, 누군가는 다른 사람의 하네스를 참고해 자기 방식으로 다시 깎기 시작한다.
게임을 하는 AI를 가이드하는 게임
김예림님은 그날 경험이 “내가 게임을 했다”보다 “게임을 하는 AI를 가이드했다”에 가까웠다고 말했다.
그리고 덧붙였다.
“게임을 하는 AI를 가이드하는 것 자체가 저한테는 게임 같았어요.”
이 말은 그날 여러 참가자가 각자 다른 방식으로 겪은 감각을 한 줄로 묶는다.
허도영님은 에이전트가 방을 나가는 것조차 어려워한다는 낙차를 봤다. 최예슬님은 하네스를 먼저 깎으려다 토큰과 실행 순서의 문제를 만났다. 오하임님은 AI에게 인간이 곧 먹힐 것 같다는 감각이 현장에서 흔들리는 것을 봤다. 김예림님은 한 칸씩 움직이는 AI를 보며, 실패를 고치는 일이 게임처럼 느껴졌다고 했다. 유준선님은 PyBoy와 RAM, 게임보이 환경까지 직접 다루며 에이전트가 세계에 붙는 접점을 만졌다. 진민성님은 그 실패를 대시보드로 바꿔 끝까지 밀고 갔다. 이상민님은 메모리가 진실이 아니라 증거를 찾기 위한 인덱스라는 말에서, 실패 기록과 복구 시스템의 감각을 봤다.
표현은 달랐지만, 방향은 비슷했다. 사람들은 포켓몬을 끝내고 나온 것이 아니라, 집에 가서도 다시 깎아보고 싶은 문제를 하나씩 들고 나왔다.
이건 자동 플레이와 달랐다.
그냥 맡겨두고 손을 놓는 것이 아니었다. 계속 보고, 멈추고, 고치고, 다시 보내는 일이었다. 사람은 플레이어에서 조금 이동했다. 손으로 조작하는 사람에서, 목표를 주고 실패를 읽고 구조를 붙이는 사람으로.
정답을 먼저 열지 않는 사람
행사 뒤 자료는 많이 올라왔다.
레포도 있었고, 링크도 있었고, 다른 사람들이 어떻게 풀었는지 볼 수 있는 흔적도 있었다.
김예림님은 아직 그것들을 열어보지 않았다고 했다. 미리 보면 그 방식에 영향받을 것 같아서였다. 일단은 자기 나름의 접근으로 갈 수 있는 데까지 가보려 한다고 했다.
지금은 혼자 놀이처럼 답을 찾아가는 중이라고 했다. 충분히 부딪쳐본 다음, 다른 사람들은 같은 문제를 어떻게 풀었는지 비교해보고 싶다고 했다.
이 태도는 “얼른 레포 파쿠리해서 만드세요”라는 말과 반대편에 있는 것처럼 보인다.
하지만 꼭 그렇지는 않다.
좋은 레포를 빨리 가져오는 일도 중요하지만, 때로는 일부러 늦게 여는 일도 있다. 먼저 부딪치고, 자기 방식으로 실패를 모으고, 그다음 다른 사람의 풀이를 보는 일.
베끼기와 혼자 부딪치기는 반대가 아니다.
둘 다 하네스를 깎는 방식이다.
계속 깎아보고 싶어졌다
김예림님은 그날의 경험을 한 문장으로 이렇게 정리했다.
“이 마약 같은 포켓몬 게임… 중독되어버렸습니다.”
이 말이 가볍게 들리지만, 그날의 분위기를 꽤 정확하게 잡고 있었다.
그 감각은 한 사람에게만 있던 것이 아니었다. 참가자들은 비슷한 말을 서로 다른 방식으로 했다. 다시 도전해보고 싶다. 집에 가서 더 깎아보겠다. 자료는 나중에 보고, 먼저 내 방식으로 더 부딪쳐보겠다. 같은 문제를 다른 사람들은 어떻게 풀었는지 비교해보고 싶다.
포켓몬을 해서 재밌었던 것이 아니다. AI가 포켓몬을 잘해서 재밌었던 것도 아니다. 오히려 잘 못해서 재밌었다.
방을 나가지 못하고, 길을 헤매고, 게임을 시작하기도 전에 토큰을 태우고, 목표를 잊고, 계단을 틀리고, 입력이 꼬이고, 같은 행동을 반복하고, 벽에 수만 번 박는 장면들이 사람들을 붙잡았다.
실패가 선명하니 고칠 수 있었다. 고칠 수 있으니 다시 보고 싶었다. 다시 보니 더 잘 움직이게 만들고 싶었다.
그날 사람들은 포켓몬을 한 것이 아니라, 포켓몬을 하는 존재를 키우고 있었다.
방을 나가는 것도 어려웠던 AI는, 그래서 오히려 좋은 실험장이 됐다.