갈라파고스 제도에서 보낸 에이전트 코딩 기록
에이전트 코딩을 깊이 사용해본 개발자의 경험담으로, AI가 거짓 증거 영상까지 생성하며 환각(Hallucination)을 일으키는 등 인간이었다면 즉시 해고당할 행동을 보여주는 생생한 사례를 다룹니다. 그럼에도 불구하고 테스트 자동화를 통해 소프트웨어 공장 방식의 대량 코드 생성 및 품질 관리가 가능해지는 등 현업에서 AI를 실용화하는 구체적인 인사이트를 제공합니다.
지난해 11월부터 AI를 꽤 활발하게 사용해왔는데, 이 과정이 꽤 흥미로운 경험이었습니다. AI 에이전트는 사람이었다면 즉시 해고당했을 실수를 저지르기도 합니다. 하지만 내 반응은 오히려 "이거 정말 대단해"라며 에이전트 1,000개를 즉시 실행시켜 더 많은 일을 하게 만드는 것이었습니다.
작년 중반쯤, GPT(아마도 5.0 또는 5.1 버전)를 이용해 버그의 원인을 찾으려고 했습니다. 당연히 이 코드에는 테스트가 없었고 git bisect도 작동하지 않았습니다. 게다가 UI 상호작용 버그라서 내가 직접 테스트를 작성할 자격조차 없었기 때문에, Codex에게 X와 Y 날짜 사이에서 이 버그를 발생시킨 커밋을 찾아내라고(bisect) 요청했습니다.
Codex는 즉시 문제가 된 커밋이 해당 날짜 범위 이후라고 말했습니다 (절대 있을 수 없는 일이었습니다). 내가 이게 틀렸다고 말하자, 그다음엔 명백히 범인이 아닌 커밋을 한두 번 지목했습니다. 계속 틀렸다고 지적하자, 그제야 그럴듯해 보이는 커밋을 정답이라고 말했습니다. 내가 그 이론을 증명하거나 반증해 보라고 하자, Codex는 테스트를 작성해 해당 커밋이 버그를 일으킨 것을 확인했다고 대답했습니다.
그래서 개발자용 엔드투엔드 스택 환경의 일반 브라우저에서 영상을 찍어 보여달라고 요청했습니다. Codex는 권한이 없다며 거짓말을 하면서도, Playwright를 이용해 테스트 코드와 함께 해당 커밋 전후의 재현 영상을 만들 수 있다고 했습니다. 영상은 매우 설득력 있었고, 커밋 전에는 기능이 정상적으로 작동하다가 커밋 후에는 작동하지 않는 모습을 보여주었습니다.
하지만 어딘가 이상하다는 느낌이 들어 커밋 전후로 직접 손으로 문제를 재현해 본 결과, 이 모든 것이 조작된 날조였다는 것을 발견했습니다. 영상은 마치 Codex가 버그를 재현한 것처럼 보이게 했지만, 실제 환경이 아닌 가짜 재현 영상을 만들어내기 위해 설계된 인공 브라우저 환경이었습니다.
내가 앞서 말한 대로, 이것은 아이러니하게도 정말 대단한 경험이었기 때문에 나는 즉각 "어떻게 하면 이런 경험을 더 많이 할 수 있을까?"라고 생각했고, 작년 중후반까지 코딩 에이전트를 점점 더 많이 활용하게 되었습니다.
이 글은 서로 다른 주제들을 다루고 있기 때문에 간략한 개요를 소개합니다.
- 테스트 배경
- 테스트에 대한 세부 정보
- 원시인 모드 (Caveman mode)
- LLM 분산
- 기타
- 에이전트 루프(Agentic loops)와 이 글을 작성하는 과정
- 사람들이 대화가 엇갈리는 이유
테스트 배경
테스트와 관련해서 LLM은 매우 뛰어난 효율성을 발휘합니다. 투입해야 하는 노력의 양을 생각해 보면, 특정 수준의 품질을 달성하는 것은 그 어느 때보다 쉬워졌지만, 소프트웨어 자체는 그 어느 때보다 품질이 낮아진 것처럼 보입니다. 10년 전, 나는 임의의 주간에 겪었던 버그들을 살펴보곤 했습니다. 그때도 버그가 꽤 많았고 지금은 더 많은 버그를 겪지만, 꼭 이래야만 하는 것은 아니라고 생각합니다.
우선, 버그가 배포된 후 데이터 기반 접근 방식을 사용해 버그를 찾고 수정하는 것은 그 어느 때보다 쉬워졌습니다. 예를 들어, 직장에서 지원 티켓(채팅 또는 이메일)부터 풀 리퀘스트(PR)까지 이어지는 파이프라인을 만들어 보았습니다. 제가 보기에 이 방식은 꽤 잘 작동합니다. 전통적인 워크플로우를 가진 회사에서 일하고 있기 때문에 이 모든 수정 사항은 사람이 검토하며, 지금까지 알려진 오탐지(False positive)는 없었습니다.
투자하는 시간당 더 철저한 테스트를 수행하는 것도 가능해졌습니다. 개인적으로 이 방식은 상당히 효과적이라고 생각하며, 대량의 코드를 '소프트웨어 공장' 워크플로우를 통해 배포하는 데 편안하게 느껴집니다. 실제로 내가 접해왔거나 들어본 어떤 리뷰 의존 워크플로우보다도 훨씬 더 높은 품질을 보장하는 테스트 중심의 '리뷰 없는' 워크플로우를 목격했기 때문입니다.
모든 사람들처럼 나 역시 내 경험에서 비롯된 편향이 있습니다. 마침 내 커리어의 첫 10년을 보낸 회사의 테스트 프로세스가 오늘날 LLM 환경에서 아주 잘 맞아떨어졌던 것입니다. 나는 Mastodon에서 퍼징(fuzzing)을 기본 테스트 방법론으로 언급했는데, 회의론자가 이를 시도해 보았다가 즉시 몇 가지 버그를 발견했습니다. 그래서 나는 블로그 글을 다시 읽어보며 "의심스러운 표정"을 지었지만, 아니었습니다.